Keluaran Java SE 20

Selepas enam bulan pembangunan, Oracle mengeluarkan Java SE 20 (Platform Java, Edisi Standard 20), yang menggunakan projek OpenJDK sumber terbuka sebagai pelaksanaan rujukan. Dengan pengecualian penyingkiran beberapa ciri usang, Java SE 20 mengekalkan keserasian ke belakang dengan keluaran platform Java sebelumnya - kebanyakan projek Java yang ditulis sebelum ini akan berfungsi tanpa perubahan apabila dijalankan di bawah versi baharu. Binaan Java SE 20 (JDK, JRE dan Server JRE) sedia untuk dipasang disediakan untuk Linux (x86_64, AArch64), Windows (x86_64) dan macOS (x86_64, AArch64). Dibangunkan oleh projek OpenJDK, pelaksanaan rujukan Java 20 adalah sumber terbuka sepenuhnya di bawah lesen GPLv2, dengan pengecualian GNU ClassPath membenarkan pautan dinamik dengan produk komersial.

Java SE 20 diklasifikasikan sebagai keluaran sokongan biasa dan akan terus menerima kemas kini sehingga keluaran seterusnya. Cawangan Sokongan Jangka Panjang (LTS) mestilah Java SE 17, yang akan terus menerima kemas kini sehingga 2029. Biar kami mengingatkan anda bahawa bermula dengan keluaran Java 10, projek itu bertukar kepada proses pembangunan baharu, membayangkan kitaran yang lebih pendek untuk pembentukan keluaran baharu. Kefungsian baharu kini dibangunkan dalam satu cawangan induk yang sentiasa dikemas kini, termasuk perubahan sedia dibuat dan cawangan mana yang bercabang setiap enam bulan untuk menstabilkan keluaran baharu.

Ciri baharu dalam Java 20 termasuk:

  • Terdapat sokongan awal untuk Scoped Values, membenarkan data tidak berubah untuk dikongsi merentasi urutan dan data ditukar dengan cekap antara thread anak (nilai diwarisi). Nilai Skop sedang dibangunkan untuk menggantikan mekanisme pembolehubah setempat-benang dan lebih cekap apabila menggunakan bilangan benang maya yang sangat besar (beribu-ribu atau berjuta-juta benang). Perbezaan utama antara Nilai Skop dan pembolehubah setempat-benang ialah yang pertama ditulis sekali, tidak boleh diubah pada masa hadapan dan kekal tersedia hanya untuk tempoh pelaksanaan utas. class Server { ScopedValue statik akhir CURRENT_USER = ScopedValue(); void serve(Request request, Response response) { var level = (request. isAuthorized()? ADMIN : GUEST); var user = new User(level); ScopedValue.where(CURRENT_USER, pengguna).run(() -> Application.handle(permintaan, respons)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); jika (!user.canOpen()) buang InvalidUserException(); kembalikan DBConnection(...); } }
  • Pratonton kedua corak rekod telah ditambah, memanjangkan ciri padanan corak yang diperkenalkan dalam Java 16 untuk menghuraikan nilai kelas rekod. Contohnya: rekod Point(int x, int y) {} statik void printSum(Object obj) { if (obj instanceof Point p) { int x = px(); int y = py(); System.out.println(x+y); } }
  • Pelaksanaan awal keempat padanan corak dalam pernyataan "suis" telah ditambahkan, membenarkan label "huruf besar" menggunakan bukan nilai yang tepat, tetapi corak fleksibel yang merangkumi satu siri nilai sekaligus, yang sebelum ini ia perlu menggunakan yang menyusahkan rangkaian ungkapan β€œjika...lain”. String formatterPatternSwitch(Object obj) { return switch (obj) { case Integer i -> String.format("int %d", i); kes Panjang l -> String.format("panjang %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); lalai -> o.toString(); }; }
  • Pelaksanaan awal kedua API FFM (Foreign Function & Memory) telah ditambah, yang membolehkan anda mengatur interaksi program Java dengan kod dan data luaran melalui fungsi panggilan daripada perpustakaan luaran dan mengakses memori di luar JVM.
  • Pratonton kedua bagi utas maya telah ditambahkan, iaitu utas ringan yang sangat memudahkan penulisan dan mengekalkan aplikasi berbilang benang berprestasi tinggi.
  • Menambahkan API percubaan kedua untuk keselarian berstruktur, yang memudahkan pembangunan aplikasi berbilang benang dengan merawat berbilang tugas yang dijalankan dalam urutan berbeza sebagai satu blok.
  • Pratonton kelima Vector API telah ditambah, menyediakan fungsi untuk pengiraan vektor yang dilakukan menggunakan arahan vektor pada pemproses x86_64 dan AArch64 dan membenarkan operasi digunakan secara serentak pada berbilang nilai (SIMD). Tidak seperti keupayaan yang disediakan dalam pengkompil JIT HotSpot untuk auto-vektorisasi operasi skalar, API baharu memungkinkan untuk mengawal vektorisasi secara eksplisit untuk pemprosesan data selari.

Sumber: opennet.ru

Tambah komen