Seperti yang kita ketahui bahwa versi paling akhir untuk saat ini dari Java adalah Java 8.
Pada Java (sebagai bahasa pemrograman) 8 terdapat cukup banyak fitur baru yang memudahkan hidup kita sebagai programmer, terutama untuk mengurangi verbosity/boilerplate dari code yang kita tulis. Fitur-fitur tersebut antara lain adalah lambda expressions, method reference, dan try with resources.
Pada Java (sebagai bahasa pemrograman) 8 terdapat cukup banyak fitur baru yang memudahkan hidup kita sebagai programmer, terutama untuk mengurangi verbosity/boilerplate dari code yang kita tulis. Fitur-fitur tersebut antara lain adalah lambda expressions, method reference, dan try with resources.
- Lambda expressions (fitur ini dirilis mulai java 8)
Sebagai contoh di swing, apabila kita menambahkan actionlistener pada button adalah sebagai berikutclickButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { System.out.println(event); } });
terlihat bahwa koding yang kita tulis cukup banyak (verbose), namun dengan lambda expressions kita cukup menuliskanclickButton.addActionListener((ActionEvent event) -> { System.out.println(event); });
atau bahkanclickButton.addActionListener(event -> { System.out.println(event); });
- Method reference (fitur ini dirilis mulai java 8)
Sebenarnya method reference merupakan penyederhaan dari lambda expressions jika anonymous object/method tersebut memanggil method yang sudah ada.
Dalam contoh kasus clickButton di atas, lambda expressions bisa kita sederhanakan dengan method reference.clickButton.addActionListener(System.out::println);
note: parameter dari method action performed akan dipassing sebagai parameter method
, ajaib bukan? :)println
- Try with resources (fitur ini dirilis mulai java 7)
Fitur ini memudahkan kita untuk mengakses resources yang butuh diclose setelah selesai digunakan. eg: read file, data cursor untuk jdbc, etc
Sebelum Java 7, kita harus menulis koding berikut untuk mengakses fileString readFirstlineFromFile(String path) throws IOException { BufferedReader reader = new BufferedReader(new FileReader(path)); try { return reader.readLine(); } finally { if (reader != null) reader.close(); } }
Dengan try with resources kita cukup menulisString readFirstlineFromFile(String path) throws IOException { try (BufferedReader reader = new BufferedReader(new FileReader(path))) { return reader.readLine(); } }
Lalu kenapa kita tidak melakukan migrasi agar aplikasi berjalan di JVM 8 saja?
Bisa jadi kita ingin mengadopsi fitur Java 8 tersebut untuk existing app tapi tidak memungkinkan karena sudah dipakai di banyak customer, yang jika dilakukan migrasi membutuhkan ongkos yang besar.
ataupun untuk programmer Android yang ingin mengadopsi fitur Java 8, namun karena Android belum mendukung Java 8 dan kemungkinan akan butuh waktu sebelum Google merilis dukungan Android untuk Java 8.
Dengan retrolambda kebutuhan ini bisa dipenuhi, karena kita bisa koding dengan Java 8 namun hasilnya bisa dieksekusi dengan versi Java (JVM) di bawahnya. Retrolamba akan memodifikasi bytecode hasil kompilasi Java 8 agar bisa dieksekusi di Java 5, 6, 7.
Sebagai informasi tambahan, saat ini retrolambda baru mendukung 3 fitur tersebut di atas.
Belum ada dukungan untuk Stream API dan beberapa fitur Java 8 lainnya.
Cara untuk integrasi ke existing project sangat mudah, karena retrolambda memiliki plugin untuk maven, gradle, maupun kompilasi manual.
May lambda be with you :D
Bisa jadi kita ingin mengadopsi fitur Java 8 tersebut untuk existing app tapi tidak memungkinkan karena sudah dipakai di banyak customer, yang jika dilakukan migrasi membutuhkan ongkos yang besar.
ataupun untuk programmer Android yang ingin mengadopsi fitur Java 8, namun karena Android belum mendukung Java 8 dan kemungkinan akan butuh waktu sebelum Google merilis dukungan Android untuk Java 8.
Dengan retrolambda kebutuhan ini bisa dipenuhi, karena kita bisa koding dengan Java 8 namun hasilnya bisa dieksekusi dengan versi Java (JVM) di bawahnya. Retrolamba akan memodifikasi bytecode hasil kompilasi Java 8 agar bisa dieksekusi di Java 5, 6, 7.
Sebagai informasi tambahan, saat ini retrolambda baru mendukung 3 fitur tersebut di atas.
Belum ada dukungan untuk Stream API dan beberapa fitur Java 8 lainnya.
Cara untuk integrasi ke existing project sangat mudah, karena retrolambda memiliki plugin untuk maven, gradle, maupun kompilasi manual.
May lambda be with you :D
Comments
Post a Comment