JavaRush /Blog Java /Random-MS /Aliran Java pada 2022: JDK 18 dan 19, Project Loom dan Da...

Aliran Java pada 2022: JDK 18 dan 19, Project Loom dan Data mesh

Diterbitkan dalam kumpulan
Nah, 2022 telah bermula. Walaupun kebanyakan orang masih dalam cuti Tahun Baru dengan champagne dan Olivier, kita akan bercakap tentang trend di dunia Jawa. Mungkin ini akan membantu anda menganalisis kerjaya anda, mempelajari teknologi baharu atau membuat rancangan pembangunan untuk tahun akan datang. Aliran Java pada 2022: JDK 18 dan 19, Project Loom dan Data mesh - 1Pakar dan pensyarah bahasa Java Andrey Rodionov, serta arkitek penyelesaian di EPAM dan ketua jawatankuasa program Devoxx Ukraine Oleg Tsal-Tsalko bercakap tentang apa yang menanti Java pada 2022 dan masa depan terdekat.

Apakah prospek untuk Java pada tahun 2022?

Aliran Java pada 2022: JDK 18 dan 19, Project Loom dan Data mesh - 2Tahun ini kami menjangkakan keluaran dua versi seterusnya: JDK 18 (pada bulan Mac) dan JDK 19 (pada bulan September). Perkara yang berpotensi menarik untuk kebanyakan pembangun Java dalam JDK 18 mungkin termasuk:
  • Pelayan Web Mudah Terbina dalam, tanpa sokongan untuk bekas servlet, yang boleh digunakan untuk prototaip dan ujian pantas, serupa dengan pelayan web mini yang serupa dalam Python, Ruby, PHP.
  • Padanan corak terus bertambah baik.
Bagi JDK 19, sudah ada Binaan Akses Awal, tetapi masih tiada senarai rasmi tentang apa yang dirancang untuk dimasukkan ke dalamnya. Saya ingin percaya bahawa JDK 19 sekurang-kurangnya akan menyertakan prototaip stabil pertama Project Loom, yang mana spesifikasi draf telah muncul baru-baru ini dan binaan terbarunya adalah berdasarkan JDK 19. Kami akan bercakap tentang Project Loom dengan lebih terperinci di bawah.

Untuk kawasan apakah Java kekal sebagai satu-satunya penyelesaian, dan di manakah ia lebih baik?

Andrey Rodionov:

Mujurlah, kami tidak boleh mengatakan bahawa tiada alternatif kepada Java untuk mana-mana kawasan, tetapi kami boleh bercakap tentang Java sebagai sejenis cara emas untuk membangunkan aplikasi perusahaan, bahagian belakang dan perkhidmatan mikro. Perlu diperhatikan juga peningkatan bilangan pengedaran JDK berbeza daripada vendor berbeza (kecuali Oracle): Amazon, Microsoft, Alibaba, Red Hat, Bellsoft (diasaskan oleh orang dari Pusat Pembangunan Oracle di St. Petersburg) dan lain-lain. Set penuh pengedaran tersedia di sini . Aliran Java pada 2022: JDK 18 dan 19, Project Loom dan Data mesh - 3Sentiasa ada alternatif, tetapi Java mendapati penggunaan terbesarnya pada bahagian belakang dalam pembangunan perusahaan. Kebanyakan syarikat besar memilih Java untuk sistem mereka yang besar dan kompleks. Sebabnya adalah sama: bilangan pembangun dan kepakaran di pasaran, ekosistem yang besar dan platform JVM yang berkuasa.

Apakah prospek untuk bahasa jvm lain, khususnya Kotlin, berbanding Java?

Andrey Rodionov:

Untuk memahami bahasa JVM yang popular, cuma buka dokumentasi untuk Spring, Micronaut, Vert.x dan lihat dalam bahasa mana contoh kod diberikan - Java dan Kotlin akan menjadi perkara biasa. Tidak boleh dikatakan bahawa terdapat peralihan besar-besaran projek kepada Kotlin, tetapi popularitinya untuk bahagian belakang terus berkembang dan banyak rangka kerja cuba memasukkannya ke dalam ekosistem mereka. Bagi Scala, versi baharu sedang dikeluarkan, dan ia digunakan secara aktif lagi untuk ML, pemprosesan data, dan di mana paradigma pengaturcaraan berfungsi lebih mudah.

Oleg Tsal-Tsalko:

Bahasa JVM lain agak menarik dan pada masa kini adalah perkara biasa untuk projek menggunakan beberapa bahasa pengaturcaraan. Nampaknya kepada saya bahawa sebab mengapa bahasa JVM model baru tidak dapat menggantikan Java adalah seperti berikut:
  • Mereka tidak begitu keren sehingga semua orang hanya akan mengambilnya dan beralih kepada mereka.
  • Ia digunakan dalam segmen yang sama seperti Java.
  • Java sedikit demi sedikit mengambil yang terbaik dari bahasa lain dan menjadi lebih baik.

Adakah terdapat penurunan dalam kualiti Java kerana selang keluaran yang lebih pendek?

Oleg Tsal-Tsalko:

Saya rasa tidak. Sekurang-kurangnya sekarang saya dapat mengenal pasti lebih banyak perkara positif daripada keluaran yang kerap. Kami melihat bahawa ciri hebat baharu muncul lebih kerap. Kini anda tidak perlu menunggu 5 tahun untuk sesuatu yang baharu muncul dalam bahasa tersebut. Sudah tentu, kini anda tidak sepatutnya mengharapkan keluaran hebat seperti Java 8, kerana ciri kini muncul dalam lelaran kecil.

Adakah terdapat ciri dalam versi baharu Java yang amat penting kepada pembangun?

Oleg Tsal-Tsalko:

Versi terbaru Java telah memperkenalkan beberapa ciri menarik seperti Padanan Corak, Kelas Termeterai dan Rekod. Saya akan mengesyorkan melihat keupayaan mereka. Sudah tentu, ciri yang paling serius dan dijangka dirancang dalam Project Loom dan Project Valhalla, tetapi saya fikir ciri dalam projek ini juga akan dikeluarkan secara beransur-ansur.

Rangka kerja musim bunga: adakah ia akan terus mengembangkan ekosistemnya untuk memenuhi pelbagai keperluan?

Andrey Rodionov:

Bagi Rangka Kerja Spring, pembangunannya telah memfokuskan pada menyokong pelbagai ciri Spring Cloud dan keupayaan untuk menyusun Spring Boot menjadi binari asli - projek Spring Native, yang dirancang untuk menjadi sebahagian daripada Spring Core pada masa hadapan. Dalam hal ini, Spring ketinggalan di belakang Micronaut dan Quarkus kerana penggunaan aktif refleksi dan penjanaan kod dinamik. Berkenaan Spring Framework 6, saya menasihati anda untuk menonton laporan Spring 6 and Beyond What's new in Spring Framework 6? dari persidangan Joker (dari Oleg Dokuka dan Alexey Nesterov). Yang penting ialah peralihan kepada JDK 17, pengabaian Konfigurasi XML dan Autowire melalui setter, pembangunan lanjut sokongan Kotlin dan projek Spring Fu.

Oleg Tsal-Tsalko:

Spring, sebagai Java FW yang paling popular pada masa kini, tidak mahu melepaskan tapak tangan. Saya pasti pasukan pembangunan akan memberikan usaha terbaik mereka dalam pembangunan Spring. Musim bunga memenuhi lebih banyak ceruk. Sebagai contoh, Spring telah melakukan banyak perkara dalam kawasan Aliran Reaktif/Pengaturcaraan Reaktif dengan Reaktor Projeknya. Kini mereka mempromosikan protokol RSoket, yang juga kelihatan menjanjikan.

Beritahu kami tentang projek Loom: untuk apa, masalah apa yang diselesaikannya?

Andrey Rodionov:

Project Loom mungkin merupakan inovasi yang paling menarik, yang boleh menjadi anjakan tektonik baharu untuk keseluruhan platform JVM dan semua bahasa di atas JVM. Project Loom mungkin tidak menjejaskan pembangun biasa, tetapi ia pasti akan menjejaskan keseluruhan ekosistem, perpustakaan, rangka kerja dan bahasa JVM lain yang menggunakan multithreading. Project Loom memperkenalkan abstraksi benang baharu - benang maya (serupa dengan coroutine). Jika sebelum ini utas Java terikat secara langsung dengan utas sistem pengendalian (OS), dan penciptaan utas baharu dalam Java membawa kepada penciptaan utas OS baharu, maka dengan utas maya perhubungan satu dengan satu ini terputus. Apabila membuat utas maya baharu, utas OS baharu tidak akan dibuat dan salah satu daripada apa yang dipanggil utas pembawa (sesetengah jenis analog kumpulan utas OS) akan digunakan semula untuk melakukan pengiraan langsung. Oleh itu, beberapa utas maya boleh berjalan di atas satu utas OS. Untuk tugas pengkomputeran, model benang maya ini tidak memberikan sebarang kelebihan, malah melambatkan kelajuan pengiraan, tetapi untuk operasi menyekat, seperti memproses permintaan HTTP, menunggu respons daripada pangkalan data atau daripada perkhidmatan mikro, model ini akan menjadi kelebihan yang ketara. Hakikatnya ialah dengan model benang semasa, menyekat/menunggu pada benang Java membawa kepada benang OS terbiar - ini adalah pembaziran sumber dan memerlukan mencipta lebih banyak benang OS. Dalam model utas maya, menyekat/menunggu pada utas maya akan menyebabkan utas pembawa di atasnya untaian maya itu dilepaskan dan satu lagi utas maya berjalan padanya. Dengan cara ini, benang OS akan digunakan dengan lebih optimum dan lebih sedikit daripadanya akan diperlukan untuk melaksanakan tugas yang serupa. Sehubungan itu, pengeluar perpustakaan, rangka kerja dan bahasa JVM perlu menyesuaikan kod mereka untuk benang maya. Oleh itu, penulisan semula yang besar akan datang untuk mereka :) Selain model benang maya, ia juga merancang untuk memperkenalkan API baharu untuk memudahkan orkestrasi benang - konkurensi berstruktur yang dipanggil. Kini, sebagai contoh, konkurensi berstruktur digunakan secara aktif dalam coroutine Kotlin dan Scala ZIO. Malangnya, versi JDK dan juga tahun keluaran Project Loom masih tidak diketahui. Apabila ditanya mengenai tarikh keluaran, ketua arkitek platform Java, Brian Goetz, menjawab dengan frasa falsafah: "Ia akan siap, apabila ia akan siap." Oleh itu, kami sedang menunggu dan boleh mencuba binaan eksperimen Project Loom .

Oleg Tsal-Tsalko:

Loom ialah projek payung yang besar, di mana pasukan OpenJDK dan Oracle sedang mengusahakan inovasi Concurrency dalam Java dan JVM: benang maya, gentian dan kesinambungan. Kemungkinan besar, pelepasan ciri ini akan beransur-ansur. Pada masa ini hanya terdapat binaan Akses Awal untuk sokongan benang Maya. Secara khusus bercakap tentang benang maya, matlamat utamanya adalah untuk memudahkan model pembangunan berbilang benang di Jawa dengan menggunakan berjuta-juta benang ringan dengan semantik yang sama seperti benang platform biasa. Di bawah tudung, benang ini akan diuruskan di dalam ForkJoinPool dan digunakan semula oleh benang platform.

Apakah ramalan untuk pembangunan Java dalam dunia trend global - perkhidmatan mikro, seni bina awan, rantaian blok, AI?

Andrey Rodionov:

Jika kita bercakap tentang trend global, ia tidak banyak berubah. Seperti sebelum ini, trend utama terus Kubernetes dan infrastruktur di sekelilingnya dalam bentuk mesh Perkhidmatan . Data mesh juga semakin popular sebagai sejenis abstraksi untuk mengurus sumber dan storan data yang diedarkan.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION