Java 9 akhirnya dirilis, dan bagi banyak developer ini adalah berita yang sangat melegakan setelah serangkaian kemunduran terutama karena masalah terkait upaya modularisasi yang ditinggalkan di Java 8.
Oracle memang menawarkan ketersediaan awal bagi mereka yang ingin mendownload dan menguji platform baru ini, namun sekarang versi final telah tersedia.
![]() |
JDK 9, Source : Oracle |
Anda bisa mendownload Java SE Development Kit 9 disini.
Beberapa fitur dan peningkatan pada Java 9 adalah:
- Java 9 REPL (JShell)
- Factory method untuk immutable List, Set, Map dan Map.Entry
- Method private pada interface
- Sistem modul Java 9
- Modular JDK
- Java Modular Source Code
- Modular Run-time Images
- Encapsulate Java Internal APIs
- Sistem Modul Platform Java
- Peningkatan pada Proses API
- java.lang.ProcessHandle
- java.lang.ProcessHandle.Info
- Peningkatan pada try exception handling
- Peningkatan pada CompletableFuture API
- Reactive Streams
- java.util.concurrent.Flow
- java.util.concurrent.Flow.Publisher
- java.util.concurrent.Flow.Subscriber
- java.util.concurrent.Flow.Processor
- Diamond Operator Untuk Inner Class Anonymous
- Method baru pada class java.util.Optional
- Peningkatan pada Stream API
- Penyempurnaan pada anotasi @Deprecated
- HTTP 2 Client
- Multi-Resolution Image API
- Fitur tambahan lainnya
- Peningkatan pada GC (Garbage Collector)
- Stack-Walking API
- Filter pada Serialization Data
- Deprecate pada Applet API
- Indify String Concatenation
- Penyempurnaan pada Method Handles
- Java Platform Logging API and Service
- Compact Strings
- Parser API untuk Nashorn
- Javadoc Search
- HTML5 Javadoc
Oracle Corp telah memperkenalkan sebuah tool baru yang disebut JShell yang merupakan singkatan dari Java Shell dan juga dikenal sebagai REPL (Read Evaluate Print Loop).
Tool ini digunakan untuk mengeksekusi dan menguji Java Constructs seperti class, interface, enum, objek, pernyataan-pernyataan dan sebagainya dengan sangat mudah.
Oracle telah memperkenalkan beberapa factory method yang mudah digunakan untuk membuat objek immutable List, Set, Map, dan Map.Entry. Metode utilitas ini digunakan untuk membuat objek kosong atau tidak kosong dari Collection.
Pada Java SE 8 dan versi sebelumnya method utilitas pada kelas Collection seperti unmodifiableXXX digunakan untuk membuat objek Collection yang immutable. Misalnya, jika ingin membuat immutable List, bisa menggunakan metode Collections.unmodifiableList.
Pada Java 8, implementasi method pada Interface dapat dilakukan dengan menggunakan metode Default dan Static. Namun, method private tidak dapat dibuat di Interface.
Untuk menghindari kode yang berlebihan dan pemakaian yang lebih banyak lagi Oracle memperkenalkan method private pada Java SE 9 Interfaces. Jadi, memungkinkan untuk menulis method private serta private static di interfaces dengan menggunakan keyword ‘private’.
Method private ini seperti metode private class lainnya, jadi tidak ada perbedaan di antara keduanya.
Salah satu perubahan besar atau fitur java 9 adalah Module System. Oracle Corp memperkenalkan fitur berikut sebagai bagian dari Proyek Jigsaw :
Sebelum versi Java SE 9, Monolithic Jars digunakan mengembangkan aplikasi berbasis Java. Namun, arsitektur ini memiliki banyak keterbatasan dan kekurangan. Untuk menghindari semua kekurangan ini, Java SE 9 hadir dengan Modul System.
Java SE 9 hadir dengan beberapa perbaikan dalam Process API, yaitu dengan menambahkan beberapa class dan methode baru untuk memudahkan pengendalian dan pengelolaan proses pada OS.
Dua bagan baru dalam Proses API tersebut adalah:
Java SE 7 telah memperkenalkan konstruksi exception-handling yaitu Try-With-Resources untuk mengelola sumber daya secara otomatis. Tujuan utama dari pernyataan baru ini adalah “Manajemen Resources Otomatis Yang Lebih Baik“.
Java SE 9 akan memberikan beberapa perbaikan pada pernyataan ini untuk menghindari beberapa verbositas lainnya sekaligus memperbaiki tingkat readability.
(adsbygoogle = window.adsbygoogle || []).push({});
Pada Java SE 9, Oracle Corp memperbaiki CompletableFuture API untuk menyelesaikan beberapa permasalahan yang ada di Java SE 8. Mereka menambahkan beberapa delay dan timeout serta beberapa metode utilitas dan sub-classing yang lebih baik.
Oracle Corps juga memperkenalkan API Reactive Streams baru di Java SE 9.
Java SE 9 Reactive Streams API adalah Publish / Subscribe Framework untuk mengimplementasikan aplikasi asynchronous, scalable dan parallel dengan sangat mudah menggunakan bahasa Java.
Java SE 9 telah memperkenalkan API berikut ini untuk mengembangkan Stream Reaktif dalam aplikasi berbasis Java :
Java SE 7 telah memperkenalkan satu fitur baru yaitu Diamond Operator untuk menghindari kode yang tidak efisien dan verbositas yang berlebihan sehingga dapat meningkatkan readability.
Namun di Java SE 8, Oracle telah menemukan beberapa keterbatasan penggunaan operator Diamond dengan Anonymous Inner Class, mereka memperbaiki masalah itu dan akan dirilis sebagai bagian dari Java 9.
Pada Java 9 terdapat method baru yang ditambahkan pada class java.util.Optional
yaitu method stream(). Method ini akan bekerja dengan objek Optional.
Di Java SE 9, Oracle telah menambahkan 4 method baru yang berguna pada interface java.util.Stream.
Semua metode baru yang diimplementasikan adalah metode default. Dua di antara method tersebut sangat penting, yaitu dropWhile dan takeWhile.
Method ini sangat berguna dalam menulis beberapa kode dengan gaya fungsional.
Di Java SE 8 dan versi terdahulu, anotasi @Deprecated hanyalah Marker interface tanpa method apapun dan digunakan untuk menandai Java API yang merupakan kelas, field, method, interface, constructor, enum dan lain-lain.
Di Java SE 9, Oracle telah meningkatkan anotasi @Deprecated untuk memberikan lebih banyak informasi tentang deprecated API dan juga menyediakan tool untuk menganalisis penggunaan aplikasi static API dari deprecated API.
Mereka telah menambahkan dua method ke deprecated interface forRemoval.
Di Java SE 9, Oracle merilis New HTTP 2 Client API untuk mendukung protokol HTTP / 2 dan fitur WebSocket.
Legacy HTTP Client API memiliki banyak masalah (seperti mendukung protokol HTTP / 1.1 namun tidak mendukung protokol HTTP / 2 dan WebSocket, hanya berfungsi dalam mode Blocking dan banyak masalah kinerja lainnya.).
Oleh karena itulah mereka mengganti API HttpURLConnection ini dengan HTTP client yang baru.
Mereka memperkenalkan HTTP Client 2 API baru di package “java.net.http” yang mendukung protokol HTTP / 1.1 dan HTTP / 2.
Selain itu juga HTTP 2 Client ini mendukung Synchronous (Blocking Mode) dan Asynchronous Modes sekaligus mendukung Asynchronous Mode menggunakan WebSocket API.
Pada Java SE 9, Oracle memperkenalkan API Multi-Resolution Image API. Interface penting dalam API ini adalah MultiResolutionImage yang terdapat dalam package java.awt.image.
MultiResolutionImage mengenkapsulasi satu set gambar dengan tinggi dan lebar yang berbeda (resolusi yang berbeda, kemudian kita bisa melakukan query sesuai dengan kebutuhan kita.
Beberapa fitur dan peningkatan lainnya adalah:
(Sumber : journaldev.com)
Leave a Reply