Segala sesuatu tentang Java12 – Fitur Baru, Keamanan, dan Pernyataan Ekspresi Switch (Contoh)
Diterbitkan: 2019-04-07 Pada 19th March 2019
Java12 dirilis. Seperti yang kita ketahui Java12
adalah bagian dari rilis cepat, dirilis hanya dalam 6 bulan setelah rilis Java11.
Dalam tutorial ini, kita akan membahas semua perubahan dan fitur baru tentang Java12.
Secara pribadi saya beralih ke Java12 untuk semua pengembangan saya tetapi untuk siklus produksi itu terlalu dini. Simpan tutorial ini di bookmark saat Anda ingin beralih ke Java12 untuk semua proyek produksi Anda.
Apa yang baru di Java12? Fitur baru di Java12:
Ada beberapa fitur terkait alur kerja internal dan pengguna di Java12 yang berubah. Mari kita lihat apa saja yang ada di dalam Java 12.
Ubah-1) Pembongkaran Kelas Serentak
Pengumpul Sampah Normal biasanya membongkar variabel yang tidak digunakan selama siklus GC dan kami biasanya melihat beberapa penghentian/jeda dalam proses, atau peningkatan CPU selama waktu itu. Biasanya kita bahkan tidak menyadarinya.
Dengan ZGC
(Z Garbage Collector) – Java12 juga mendukung pembongkaran Kelas secara bersamaan. Karena ini terjadi selama siklus GC normal, tidak ada jeda dan tidak ada lagi penggunaan memori tambahan juga.
Secara default, ZGC diaktifkan di Java12. Tidak perlu tindakan lagi
Bagaimana cara menonaktifkan ZGC?
- Mulai saja aplikasi Anda dengan argumen baris perintah JVM
-XX:-ClassUnloading
Ubah-2) Dapatkan detail lebih lanjut tentang JVM Crash
Ketika ada kesalahan OOM (Out Of Memory) atau JVM crash, biasanya Java membuat file dump dengan semua detailnya.
1 |
- XX : HeapDumpPath =/ tmp / crunchify / - XX : + HeapDumpOnOutOfMemoryError |
Dengan parameter JVM ini, file Dump akan dibuat di bawah folder /tmp/crunchify/
pada kesalahan OOM.
Ada satu opsi lagi yang ditambahkan di Java12:
1 |
- XX : + ExtensiveErrorReports |
File log baru akan dibuat bernama hs_err<pid>.log
dengan semua detail tentang crash JVM. Ini sangat membantu untuk lingkungan produksi Anda jika Anda sering melihat crash dan ingin men-debug lebih banyak.
Secara default dinonaktifkan tetapi Anda dapat mengaktifkan laporan kerusakan ekstensif dengan menambahkan parameter baris perintah JVM di atas.
Ubah-3) Pemformatan Angka Ringkas
java.text menambahkan dukungan untuk format Number yang ringkas. 100o
dapat disebut sebagai 1K
dan 100000
dapat disebut sebagai 100K
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package crunchify . com . tutorials ; import java . text . NumberFormat ; import java . util . Locale ; /** * @author Crunchify.com * Java12 Compact Number format example * */ public class CrunchifyJava12CompactNumber { public static void main ( String args [ ] ) { // NumberFormat is the abstract base class for all number formats. // This class provides the interface for formatting and parsing numbers. NumberFormat also provides methods for determining which locales have number formats, and what their names are. NumberFormat crunchifyFormat = NumberFormat . getCompactNumberInstance ( Locale . US , NumberFormat . Style . SHORT ) ; // getCompactNumberInstance returns a compact number format for the specified locale and formatStyle. String crunchifyResult = crunchifyFormat . format ( 100000 ) ; System . out . println ( "NumberFormat.Style.SHORT Result: " + crunchifyResult ) ; } } |
Hasil:
1 |
NumberFormat . Style . SHORT Result : 100K |
Ubah-4) Peningkatan Keamanan Java
security-libs/java.security
perubahan:
- larang dan izinkan Opsi untuk java.security.manager
- jika
disallow
maka System.setSecurityManager
tidak dapat digunakan untuk mengatur manajer keamanan.
- jika
- Opsi -groupname Ditambahkan ke keytool Key Pair Generation
- pengguna dapat menentukan grup bernama saat membuat pasangan kunci.
- Menyesuaikan Generasi
PKCS12 keystore
- termasuk algoritma dan parameter untuk
- perlindungan kunci
- perlindungan sertifikat
- MacData
- termasuk algoritma dan parameter untuk
- Acara Keamanan JFR Baru
- Apa itu JFR (Java Flight Recorder)
- 4 acara JFR baru ditambahkan
- jdk.X509Sertifikat
- jdk.X509Validasi
- jdk.TLSHjabat tangan
- jdk.SecurityPropertyModification
Ubah-5) JEP 325: Beralih Ekspresi
Switch statement
Disempurnakan sekarang didukung di Java12.
-
case L -> syntax
. Di sini tidak ada istirahat yang diperlukan. - Penggunaan Ekspresi Beralih
- ini adalah pernyataan sakelar yang disederhanakan
- jika label cocok, maka hanya ekspresi di sebelah kanan label panah yang dieksekusi.
- Tidak diperlukan pernyataan break.
CrunchifyJava12SwitchExample.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
package crunchify . com . tutorials ; import java . util . Scanner ; /** * @author Crunchify.com * What's new in Java12 Switch statement? * */ public class CrunchifyJava12SwitchExample { public static void main ( String [ ] args ) { Scanner crunchifyObj = new Scanner ( System . in ) ; log ( "Enter company name from: Google, Facebook, PayPal, eBay, Twitter, LinkedIn, Apple" ) ; String company = crunchifyObj . nextLine ( ) ; log ( "Selected Company: " + company ) ; // Pre-Java12 Switch statement switch ( company ) { case "Google" : case "Facebook" : case "PayPal" : case "eBay" : case "Twitter" : log ( "Pre-Java12: This switch is for companies Google, Facebook, PayPal, eBay & Twitter" ) ; break ; case "" : case "Apple" : case "LinkedIn" : log ( "Pre-Java12: This switch is for companies Apple & LinkedIn" ) ; break ; default : log ( "Pre-Java12: Oops... Invalid company" ) ; } /** * Java 12 based case L -> syntax operation. * Here there isn't any break necessary. */ switch ( company ) { case "Google" , "Facebook" , "PayPal" , "eBay" , "Twitter" - > log ( "Java12: This switch is for companies Google, Facebook, PayPal, eBay & Twitter" ) ; case "Apple" , "LinkedIn" - > log ( "Java12: This switch is for companies Apple & LinkedIn" ) ; default - > { log ( "Java12: Oops... Invalid company" ) ; } } /** * This is switch expression */ final String companyName ; companyName = switch ( company ) { case "Google" , "Facebook" , "PayPal" , "eBay" , "Twitter" - > ( "Java12 Expression: This switch is for companies Google, Facebook, PayPal, eBay & Twitter" ) ; case "Apple" , "LinkedIn" - > ( "Java12 Expression: This switch is for companies Apple & LinkedIn" ) ; /** * it's also possible to do switch operation without a block and break */ default - > { break "Java12 Expression: Oops... Invalid company" ; } } ; log ( companyName ) ; } public static void log ( String result ) { System . out . println ( result ) ; } } |

Hasil IntelliJ IDEA:
1 2 3 4 5 6 7 8 |
Enter company name from : Google , Facebook , PayPal , eBay , Twitter , LinkedIn , Apple Twitter Selected Company : Twitter Pre - Java12 : This switch is for companies Google , Facebook , PayPal , eBay & Twitter Java12 : This switch is for companies Google , Facebook , PayPal , eBay & Twitter Java12 Expression : This switch is for companies Google , Facebook , PayPal , eBay & Twitter |
Ubah-6) JVM Constants API
java.lang.invoke.constant
: Seperti yang Anda ketahui, kelas Java memiliki kumpulan konstanta yang menyimpan semua operan saat runtime.
Java12 menambahkan API untuk memanggil konstanta saat runtime.
Fitur yang dihapus dari Java12:
Fitur usang dari Java12:
Beri tahu saya jika Anda memiliki tutorial praktis tentang Java12 yang ingin Anda sertakan di sini.