Paglabas ng Java SE 18

Pagkatapos ng anim na buwan ng pag-unlad, inilabas ng Oracle ang platform ng Java SE 18 (Java Platform, Standard Edition 18), na gumagamit ng OpenJDK open source na proyekto bilang isang reference na pagpapatupad. Maliban sa pag-alis ng ilang mga hindi na ginagamit na feature, ang Java SE 18 ay nagpapanatili ng backward compatibility sa mga nakaraang release ng Java platformβ€”ang karamihan sa mga naunang naisulat na mga proyekto sa Java ay gagana pa rin nang walang pagbabago kapag pinapatakbo sa ilalim ng bagong bersyon. Ang mga mai-install na build ng Java SE 18 (JDK, JRE, at Server JRE) ay inihanda para sa Linux (x86_64, AArch64), Windows (x86_64), at macOS (x86_64, AArch64). Binuo ng proyekto ng OpenJDK, ang pagpapatupad ng Java 18 reference ay ganap na open source sa ilalim ng lisensya ng GPLv2 na may mga pagbubukod sa GNU ClassPath upang payagan ang dynamic na pag-link sa mga komersyal na produkto.

Ang Java SE 18 ay ikinategorya bilang isang regular na release ng suporta, na may mga update na ilalabas bago ang susunod na release. Ang sangay ng Long Term Support (LTS) ay dapat na Java SE 17, na makakatanggap ng mga update hanggang 2029. Alalahanin na simula sa paglabas ng Java 10, lumipat ang proyekto sa isang bagong proseso ng pag-unlad, na nagpapahiwatig ng isang mas maikling cycle para sa pagbuo ng mga bagong release. Binubuo na ngayon ang bagong functionality sa isang master branch na patuloy na ina-update, na isinasama ang mga nakumpleto nang pagbabago at kung saan ang mga branch ay sinasanga tuwing anim na buwan upang patatagin ang mga bagong release.

Kasama sa mga bagong feature sa Java 18 ang:

  • Ang default na encoding ay UTF-8. Ang mga Java API na nagpoproseso ng data ng text batay sa pag-encode ng character ay gagamit na ngayon ng UTF-8 bilang default sa lahat ng platform, anuman ang mga setting ng system at mga setting ng lokal. Upang bumalik sa dating gawi, kung saan pinili ang pag-encode batay sa lokal na sistema, maaari mong gamitin ang opsyong "-Dfile.encoding=COMPAT".
  • Kasama sa package ang com.sun.net.httpserver package, na kinabibilangan ng jwebserver utility at library API na may pagpapatupad ng isang simpleng http server para sa paghahatid ng static na content (CGI at servlet-like handler ay hindi suportado). Ang built-in na HTTP server ay hindi na-optimize para sa mga workload at hindi sumusuporta sa access control at authentication, dahil ito ay pangunahing naglalayong gamitin sa proseso ng pagbuo para sa prototyping, pag-debug at pagsubok ng mga proyekto.
  • Nagbibigay ang JavaDoc ng suporta para sa tag na "@snippet" upang i-embed ang mga gumaganang halimbawa at mga snippet ng code sa dokumentasyon ng API, kung saan maaari kang gumamit ng mga tool sa pagpapatunay, pag-highlight ng syntax, at pagsasama ng IDE.
  • Ang pagpapatupad ng java.lang.reflect API (Core Reflection), na idinisenyo upang makakuha ng impormasyon tungkol sa mga pamamaraan, field at constructor ng klase, pati na rin ang access sa panloob na istruktura ng mga klase, ay muling idinisenyo. Ang java.lang.reflect API mismo ay nananatiling hindi nagbabago, ngunit ipinapatupad na ngayon gamit ang mga pamamaraang handle na ibinigay ng java.lang.invoke module, sa halip na gumamit ng mga bytecode generator. Ang pagbabago ay nagbigay-daan sa amin na pag-isahin ang mga pagpapatupad ng java.lang.reflect at java.lang.invoke, at pasimplehin ang kanilang pagpapanatili.
  • Ang ikatlong preview ng Vector API ay iminungkahi, na nagbibigay ng mga function para sa mga kalkulasyon ng vector na isinasagawa gamit ang mga tagubilin ng vector sa x86_64 at AArch64 na mga processor at pinapayagan ang mga operasyon na mailapat nang sabay-sabay sa maramihang mga halaga (SIMD). Hindi tulad ng mga kakayahan na ibinigay sa HotSpot JIT compiler para sa auto-vectorization ng scalar operations, ginagawang posible ng bagong API na tahasang kontrolin ang vectorization para sa parallel na pagproseso ng data.
  • Nagdagdag ng interface ng SPI (interface ng service-provider) para sa paglutas ng mga pangalan ng host at IP address, na nagbibigay-daan sa iyong gumamit ng mga alternatibong solver sa java.net.InetAddress na hindi nakatali sa mga humahawak na inaalok ng operating system.
  • Ang pangalawang preview ng Foreign Function & Memory API ay ibinigay, na nagpapahintulot sa mga application na makipag-ugnayan sa code at data sa labas ng Java runtime. Binibigyang-daan ka ng bagong API na mahusay na tumawag sa mga function na hindi JVM at ma-access ang 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.
  • Ang pangalawang pang-eksperimentong pagpapatupad ng pagtutugma ng pattern sa mga expression na "switch" ay idinagdag, na nagpapahintulot sa paggamit ng mga flexible na pattern sa mga label na "case" sa halip na mga eksaktong halaga, na sumasaklaw sa isang serye ng mga halaga nang sabay-sabay, kung saan kinakailangan na gumamit ng dati. masalimuot na mga kadena ng β€œif...else” expression. Bagay o = 123L; String formatted = switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); default -> o.toString(); };
  • Ang mekanismo ng finalization at ang mga nauugnay na pamamaraan nito gaya ng Object.finalize(), Enum.finalize(), Runtime.runFinalization() at System.runFinalization() ay hindi na ginagamit at idi-disable sa isang release sa hinaharap.
  • Ang ZGC (Z Garbage Collector), SerialGC, at ParallelGC garbage collectors ay sumusuporta sa row deduplication.

Pinagmulan: opennet.ru

Magdagdag ng komento