Pagkatapos ng anim na buwan ng pag-unlad, Inilabas ng Oracle ang paglaya ng ang bagong bersyon ng JavaSE 18 (Standard Edition), na gumagamit ng OpenJDK open source na proyekto bilang isang reference na pagpapatupad.
Sa bagong bersyon na ito ng Java SE 18 ay may pagbubukod sa pag-alis ng ilang hindi na ginagamit na feature, nagpapanatili ng compatibility na may mas lumang mga bersyon ng Java platform, at karamihan sa mga proyekto ng Java na nakasulat dati ay patuloy na gagana nang hindi nagbabago kapag tumakbo gamit ang bagong bersyon.
Pangunahing mga bagong tampok ng Java SE 18
Sa bagong release na ito ng Java SE 18 ang default na encoding ay UTF-8. Mga Java API na nagpoproseso ng data ng text na naka-encode ng character gagamit na ngayon ng UTF-8 bilang default sa lahat ng platform, anuman ang mga setting ng system at mga setting ng rehiyon. Upang ibalik ang lumang pag-uugali, kung saan pinili ang pag-encode na isinasaalang-alang ang lokal ng system, maaari mong gamitin ang parameter na "-Dfile.encoding=COMPAT".
Isa pa sa mga pagbabago na namumukod-tangi ay siya muling idinisenyo ang pagpapatupad ng java.lang.reflect API (Core Reflection), na idinisenyo upang makakuha ng impormasyon tungkol sa mga pamamaraan, field at constructor ng mga klase, pati na rin ang access sa panloob na istraktura ng mga klase. ang api java.lang.reflect mismo ay hindi nagbago, ngunit ngayon ay ipinatupad gamit ang mga identifier ng mga pamamaraan na ibinigay ng modyul java.lang.invoke, sa halip na gumamit ng mga bytecode generator. Ang pagbabago ay pinahintulutan na magkaisa at mapadali ang pagpapanatili ng mga pagpapatupad ng java.lang.reflect at java.lang.invoke.
Bilang karagdagan dito, nabanggit din na ang ikatlong paunang pagpapatupad ng Vector API ay iminungkahi, na nagbibigay ng mga function para sa mga kalkulasyon ng vector na ginagawa gamit ang mga tagubilin sa vector ng x86_64 at AArch64 na mga processor at nagbibigay-daan sa iyong maglapat ng mga operasyon nang sabay-sabay sa maraming mga halaga (SIMD). Hindi tulad ng mga kakayahan na ibinigay sa HotSpot JIT compiler para sa awtomatikong vectorization ng scalar operations, ang bagong API nagbibigay-daan sa iyong tahasang kontrolin ang vectorization para sa parallel na pagproseso ng data.
Na-highlight din iyon nagdagdag ng interface ng SPI (interface ng service provider) upang malutas ang mga pangalan ng host at mga IP address, na nagpapahintulot sa iyo na gumamit ng mga alternatibong solver sa java.net.InetAddress na hindi nakatali sa mga driver na ibinigay ng operating system.
Sa kabilang banda, ito ay iminungkahi pangalawang paunang pagpapatupad ng Foreign Function & Memory API, kung saan maaaring makipag-ugnayan ang mga application sa code at data sa labas ng Java runtime. Ang bagong API nagbibigay-daan sa mahusay na pagtawag sa mga function na hindi JVM y access memory na hindi pinamamahalaan ng JVM. Halimbawa, maaari kang tumawag sa mga function mula sa mga external na shared library at ma-access ang data ng proseso nang hindi gumagamit ng JNI.
Idinagdag a pangalawang eksperimental na pagpapatupad ng pagtutugma ng pattern sa mga ekspresyon lumipat, na nagbibigay-daan sa iyong gumamit ng mga flexible na template sa halip na mga eksaktong halaga sa mga tag na "case", na sumasaklaw sa isang bilang ng mga halaga nang sabay-sabay, na dati ay nangangailangan ng masalimuot na mga string ng "if...else" na mga expression.
Kasama ang package com.sun.net.httpserver, na kinabibilangan ng jwebserver utility at API ng aklatan kasama ang pagpapatupad mula sa isang simpleng http server upang maghatid ng static na nilalaman (CGI at servlet-like controllers ay hindi suportado). Ang built-in na http server ay hindi na-optimize para sa mga workload at hindi sumusuporta sa access control o authentication, dahil ito ay pangunahing idinisenyo para sa paggamit sa proseso ng pagbuo ng prototyping, debugging, at pagsubok na mga proyekto.
Sa iba pang mga pagbabago matindi yan:
- Sinusuportahan ng JavaDoc ang tag na "@snippet» upang i-embed ang mga gumaganang halimbawa at mga snippet ng code sa dokumentasyon ng API, na maaaring ma-access gamit ang mga tool sa pagpapatunay, pag-highlight ng syntax, at pagsasama ng IDE.
- Hindi na ginagamit at aalisin sa isang release sa hinaharap, ang mekanismo ng pagkumpleto, pati na rin ang mga kaugnay na pamamaraan tulad ng Object.finalize(), Enum.finalize(), Runtime.runFinalization(), at System.runFinalization().
- ang mga basurero ZGC (Z Garbage Collector), SerialGC at ParallelGC sinusuportahan nila ang string deduplication.
JavaSE 18 ay inuri bilang isang regular na release ng suporta, na may mga update na ilalabas bago ang susunod na bersyon. Ang sangay ng pangmatagalang suporta (LTS) ay dapat na Java SE 17, na makakatanggap ng mga update hanggang 2029.
Mahalagang tandaan na simula sa paglabas ng Java 10, lumipat ang proyekto sa isang bagong proseso ng pag-unlad, na nangangahulugang isang mas maikling cycle para sa pagbuo ng bagong release. Binubuo na ngayon ang bagong functionality sa isang patuloy na ina-update na master branch, na kinabibilangan ng mga pagbabagong nakumpleto na at kung aling mga branch ang lalabas tuwing anim na buwan upang patatagin ang mga bagong release.
Kunin ang Java SE 18
Para sa mga interesadong masubukan ang bagong release na ito, mangyaring malaman na ang mga build ay handa na para sa Linux (x86_64, AArch64), Windows (x86_64), at macOS (x86_64, AArch64) at maaaring makuha mula sa link sa ibaba.