Kami bermigrasi dari Jawa 6 ke Jawa 7 . Proyek ini terlambat dan berisiko dibatalkan, dalam hal ini ia akan terus menggunakan Java 6.
Apa saja perbaikan khusus di Java 7 yang dapat kami gunakan untuk kembali ke manajer kami dan meyakinkannya bahwa penting untuk menggunakan JDK 7? Mencari perbaikan bug yang bisa saya sorot di Oracle Java 7 (sehubungan dengan Java 6). Perbaikan dalam keamanan, kinerja, Java 2D / pencetakan, dll. Akan lebih laku dalam kasus saya. Perbaikan kompiler misalnya, tidak akan banyak digunakan.
[Saya akan menelusuri banyak situs seperti panduan adopsi Oracle , basis data bug, pertanyaan tentang Stack Overflow].
Pembaruan: Terima kasih atas jawabannya. Kami menjadwal ulang pembaruan untuk rilis berikutnya. Yang paling dekat adalah keamanan. Menerima jawaban dengan suara tertinggi.
Jawaban:
Java 6 telah mencapai EOL pada bulan Februari tahun ini dan tidak akan lagi menerima pembaruan publik (termasuk keamanan) kecuali jika Anda membeli dukungan perusahaan yang sangat mahal.
Itu harus menjadi alasan yang dibutuhkan.
Selain itu, banyak bukti menunjukkan bahwa kompatibilitas ke belakang untuk runtime Java sangat baik. Kemungkinannya adalah Anda hanya perlu mengganti instalasi Java 6 dengan Java 7 dan semua aplikasi akan terus bekerja tanpa masalah. Tentu saja ini tidak dijamin dan tes ekstensif disarankan untuk mengkonfirmasi bahwa memang tidak akan ada masalah.
sumber
Secara umum, ada sejumlah perubahan yang cukup luas untuk membuat segalanya lebih mudah pada programmer. Manajer Anda mungkin tidak terlalu peduli tentang hal-hal seperti itu, tetapi membuat programmer menghabiskan lebih sedikit waktu untuk memikirkan kode boilerplate, dan dengan demikian memiliki lebih banyak waktu untuk memikirkan tujuan sebenarnya dari apa yang mereka laksanakan, harus meningkatkan efisiensi, mengurangi bug, dll., yang bisa menjadi argumen yang sangat kuat. Oracle memiliki daftar perubahan yang cukup luas , tetapi agak panjang, jadi saya akan meringkas sebanyak mungkin.
Fitur bahasa termasuk:
Map<String, String> myMap = new HashMap<String, String>();
dapat dikurangi menjadiMap<String, String> myMap = new HashMap<>()
. Kompilator dapat menyimpulkan tipe Generik yang diperlukan di sisi kanan dari kiri, sehingga kode Anda menjadi sedikit lebih pendek dan lebih cepat dibaca..equals()
metode, bukan==
.Throwable.getSuppressed
.int n = 1000000000
dapat dibuat menjadi lebih mudah dibacaint n = 1_000_000_000
, yang jauh lebih mudah untuk diurai menjadi satu miliar, dan lebih sulit untuk mengetik secara salah tanpa memperhatikan. Juga, literal biner diizinkan dalam bentuk0b10110101
, membuat kode yang berfungsi dengan bit-bidang sedikit lebih baik untuk dibaca.Setiap perubahan ini adalah sesuatu yang manajer Anda mungkin tidak peduli secara langsung, tetapi mereka membuatnya sedikit lebih mudah untuk menulis kode yang benar tanpa banyak usaha dan pemikiran, membebaskan pikiran Anda untuk lebih fokus pada logika aktual yang Anda coba untuk mengimplementasikan, dan mereka juga membuatnya sedikit lebih mudah untuk membaca kode nanti, membuat debugging sedikit lebih cepat.
Di sisi API, sejumlah pembaruan API juga terjadi:
sumber
String.equals
metode" (dari dokumen yang Anda tautkan). Pada kenyataannya, kompiler bebas untuk mengoptimalkan sehinggaString.equals
tidak digunakan ... asalkan efek bersihnya sama. (Dan, saya berharap bahwa itu akan digunakan diString.hashcode
atas sejumlah kasus saklar.)try-with-resources adalah fitur yang layak ditingkatkan ke Java 7, semuanya milik sendiri. Kebocoran sumber daya / kebocoran memori adalah risiko besar dalam pengembangan Java dan TWR mengurangi risiko itu secara signifikan.
Saya akan menambahkan abstraksi File NIO.2 baru dan kapabilitas Asynchronous juga layak dipindahkan jika aplikasi Anda memiliki fitur I / O File / Jaringan.
sumber
Mungkin ada alasan mengapa Anda tidak boleh beralih ke Java 7: Jika Anda harus menggunakan VM Oracle dan perangkat lunak Anda berjalan pada perangkat keras yang disematkan atau Anda akan mendistribusikannya dengan perangkat keras yang disematkan: Oracle mengubah lisensi JRE sehingga tidak berlisensi jika di atas kondisi terpenuhi; Anda harus membeli lisensi tertanam Java SE. Lihat Apa yang dimaksud dengan "sistem tujuan umum" untuk Java SE Embedded?
sumber