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:
- Lebih sedikit boilerplate pada Generics. Kode
Map<String, String> myMap = new HashMap<String, String>();
dapat dikurangi menjadi Map<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.
- String bekerja dalam pernyataan switch sekarang , menggunakan semantik dari
.equals()
metode, bukan ==
.
- Manajemen sumber daya otomatis menggunakan coba-dengan-sumber daya. Ini membuat kode lebih bersih, tetapi juga memiliki keunggulan dibandingkan kode coba / akhirnya berbasis gaya lama. Jika pengecualian dilemparkan dalam pernyataan coba, dan kemudian yang lain dilemparkan saat menutup, kode yang menggunakan pernyataan try / akhirnya tradisional akan benar-benar kehilangan pengecualian asli, dan hanya melewatkan yang dilemparkan di blok akhirnya. Dalam pernyataan coba-dengan-sumber daya, runtime akan menekan pengecualian yang ditutup oleh () panggilan dilemparkan, dan menggelembungkan pengecualian asli di atas tumpukan, dengan asumsi bahwa pengecualian asli ini adalah salah satu yang menyebabkan semua masalah di pertama tempat. Selain itu, alih-alih meninggalkan pengecualian lain ke pengumpul sampah, penindasan ini memungkinkan pengecualian yang dilemparkan dengan menggunakan
Throwable.getSuppressed
.
- Literal angka dapat dibuat lebih mudah dibaca. Semua literal numerik memungkinkan garis bawah , sehingga hal-hal seperti
int n = 1000000000
dapat dibuat menjadi lebih mudah dibaca int 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 bentuk 0b10110101
, membuat kode yang berfungsi dengan bit-bidang sedikit lebih baik untuk dibaca.
- Menangani beberapa tipe pengecualian ke pernyataan tangkap yang sama dapat dilakukan, mengurangi kode duplikasi, dan berpotensi membuatnya lebih mudah untuk refactor nanti.
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:
- Dari segi keamanan , beberapa metode enkripsi telah ditambahkan / tidak digunakan lagi, karena crypto selalu bergerak maju.
- File IO telah diubah, ( ini mungkin tautan yang lebih baik ) menambahkan beberapa abstraksi yang lebih baik di sejumlah tempat. Saya belum secara pribadi menyelidiki hal-hal IO baru, tetapi sepertinya perbaikan yang sangat berguna, membuatnya lebih mudah untuk bekerja dengan sistem file tanpa banyak rasa sakit.
- Dukungan Unicode hingga Unicode 6.0, bersama dengan sejumlah peningkatan internasionalisasi lainnya.
- Java2D , yang Anda sebutkan dalam pertanyaan Anda, telah ditingkatkan. Dukungan font Linux yang lebih baik, rendering X11 yang lebih baik pada mesin modern, dan penanganan skrip Tibet.