Pertimbangan yang menjalankan versi Java di Produksi

14

Beberapa orang menjalankan teknologi terbaru - memperbarui hari ketika sesuatu diperbarui. Dalam produksi, ini tidak sesuai.

Meneliti tentang apakah versi saat ini (Java 7) siap untuk diproduksi menghasilkan sejumlah besar materi lama yang mungkin tidak benar lagi (pada saat penulisan ini Java 7 telah keluar selama satu setengah tahun yang sepertinya jauh lama) .

Pertimbangan apa yang perlu saya buat untuk menentukan apakah layak untuk meningkatkan lingkungan produksi ke versi Java yang lebih baru?

JohnDoDo
sumber
Bahkan jika itu, setiap perpustakaan / plug-in pihak ketiga yang digunakan (jika ada) dalam aplikasi tersebut perlu OK dengan Java 7, juga (bisnis berisiko).
arin
2
Iya. Satu-satunya masalah yang saya temui adalah saya tidak bisa menginstal Java 7 di Red Hat Enterprise Linux 4, tetapi OS itu sudah usang. Saya telah menggunakannya dalam produksi di tempat lain selama sekitar 6 bulan sekarang tanpa hambatan.
GlenPeterson
@arin: tidak dengan Java, tidak juga. Itu cenderung sangat kompatibel ke bawah.
Michael Borgwardt
@MichaelBorgwardt dalam teori saya setuju dengan Anda, tetapi dalam lingkungan pengujian saya telah melihat perpustakaan pihak ketiga menyebabkan perilaku tidak menentu / crash pada kode pengujian kami bahkan setelah memperbarui ke upgrade versi kecil.
arin
@arin: tentu, itu bisa terjadi. Tetapi dalam pengalaman saya sangat jarang bahwa ada sedikit alasan untuk takut memperbarui Java daripada mengubah hampir apa pun (terutama kode sendiri).
Michael Borgwardt

Jawaban:

11

Pertanyaan pertama yang diajukan adalah "Apakah versi Java didukung pada mesin?" Walaupun memperbarui JRE adalah satu hal, mungkin saja OS yang mendasarinya tidak didukung menjalankan versi Java yang baru (sertifikasi yang didukung dan kontrak dukungan dan sejenisnya yang ingin dimiliki oleh banyak lingkungan perusahaan).

Banyak lingkungan produksi java sebenarnya berjalan di atas server aplikasi . Ini akan menjadi pertimbangan selanjutnya. Perbandingan Wikipedia tentang Java EE App Server menunjukkan versi Java EE yang didukung. Ini dapat dilihat lebih lanjut dalam tinjauan umum kompatibilitas JavaEE Oracle . Konfigurasi yang diuji untuk JBoss Enterprise Application Platform 6 bertentangan dengan Java SE 6.0 pembaruan 6u30. Java SE 6.0 pembaruan 6u30 juga merupakan konfigurasi teruji untuk JBoss Application Server 7.1.0 Final . Ini mungkin berfungsi di Java 7, tetapi itu bukan konfigurasi yang diuji.

Memperluas pada server aplikasi, ada alat analisis kode langsung yang digunakan untuk melakukan debug setelah fakta. Debugger Mahatahu (lihat juga) dan Dynatrace adalah dua contohnya. Aplikasi-aplikasi ini bekerja dengan menginstruksikan (memodifikasi) kode byte langsung dari java running untuk melaporkannya kembali. Karena aplikasi ini bekerja dengan memodifikasi kode byte, jika kode byte berubah dengan cara yang tidak dapat mereka lakukan (seperti dalam JRE baru), mereka tidak akan berfungsi.

Berikutnya adalah kerangka kerja . Salah satu contohnya adalah JAXB yang hadir dengan java dan Spring yang menggunakannya. Mengubah ke Java 7 memperbarui JAXB yang menghasilkan kode yang tidak kompatibel dengan beberapa kerangka kerja (yang mengharuskan mereka diperbarui dan dependensi mereka perlu diperbarui ...).

Bangun alat berikutnya dalam daftar. Kita perlu memastikan bahwa lingkungan build menggunakan versi Java yang tepat. Menulis kode untuk Java 7 tetapi tidak memperbarui versi yang digunakan Maven atau Ant akan menyebabkan masalah. Ada kalanya alat build sendiri sangat terikat pada satu versi dengan plugin tertentu.

Alat uji . Hal-hal seperti PMD, findbugs, dan checkstyle mungkin tidak mengenali struktur baru di versi baru Jawa - ini mungkin menjadi sangat bingung dengan pernyataan pergantian string atau tangkapan majemuk. Alat yang masuk ke instrumentasi seperti cakupan kode mungkin tidak berfungsi di JVM baru. Dalam konteks Java 7, Cobertura dan Emma belum diperbarui ke JRE baru (sekali lagi, aplikasi ini memodifikasi kode byte untuk melihat kode mana yang dijalankan dan mana yang tidak) (lihat perpustakaan kode cakupan open source untuk jdk7 ). Ini bisa memerlukan perubahan pada skrip build untuk beralih dari satu skrip ke skrip lain.

Lalu ada IDE . Orang perlu memperbarui IDE ke versi yang menyadari struktur baru dalam bahasa. Pengumuman Eclipse tentang dukungan untuk Java 7 menunjukkan masalah ini.

Terakhir dan yang pasti adalah pengembang . Terserah pengembang untuk menulis kode baru dan menyadari bagaimana kode dapat direstrukturisasi. Mulai dari Jawa 1.4 ke 1.5, template dan anotasi diperkenalkan dan butuh waktu bagi pengembang untuk masuk ke pola pikir struktur baru yang tersedia. Demikian juga koleksi ulang di 1,2 dan membuat pengembang menjauh dari menggunakan HashTable dan Vector. Memperbarui versi harus disertai dengan sejumlah pelatihan dalam struktur bahasa baru.

Komunitas
sumber