Pas pas gjashtĂ« muajsh zhvillimi, kompania Oracle lĂ«shoi platformĂ«n Java SE 18 (Java Platform, Standard Edition 18), e cila pĂ«rdor projektin e hapur OpenJDK si realizimin referues. PĂ«rveç heqjes sĂ« disa funksionaliteteve tĂ« vjetruara, Java SE 18 ruan pĂ«rputhshmĂ«rinĂ« mbrapa me versionet e mĂ«parshme tĂ« platformĂ«s Java â shumica e projekteve tĂ« shkruara mĂ« parĂ« nĂ« Java do tĂ« funksionojnĂ« pa modifikime kur ekzekutohen nĂ«n menaxhimin e kĂ«saj versioni tĂ« ri. NdĂ«rsa janĂ« pĂ«rgatitur ndĂ«rtimet e gatshme pĂ«r instalim tĂ« Java SE 18 (JDK, JRE dhe Server JRE) pĂ«r Linux (x86_64, AArch64), Windows (x86_64) dhe macOS (x86_64, AArch64). Realizimi referues i Java 18 i zhvilluar nĂ« kuadĂ«r tĂ« projektit OpenJDK Ă«shtĂ« plotĂ«sisht i hapur sipas licencĂ«s GPLv2 me pĂ«rjashtime nga GNU ClassPath, qĂ« lejojnĂ« lidhjen dinamike me produkte komerciale.
Java SE 18 është klasifikuar si një lëshim me një periudhë mbështetjeje standarde, me përditësime që do të lëshohen deri në lëshimin e ardhshëm. Si një degë me periudhë të gjatë mbështetjeje (LTS), rekomandohet Java SE 17, me përditësime që do të lëshohen deri në vitin 2029. Kujtojmë se që nga lëshimi i Java 10, projekti kaloi në një proces të ri zhvillimi, që parashikon një cikël më të shkurtër për formimin e lëshimeve të reja. Funksionaliteti i ri tani zhvillohet në një degë master që rifreskohet vazhdimisht, në të cilën përfshihen ndryshimet e gatshme, dhe nga e cila çohen degë për stabilizimin e lëshimeve të reja çdo gjashtë muaj.
Disa nga risitë e Java 18 janë:
- Si parazgjedhje, përdoret kodimi UTF-8. Java API, që përpunojnë të dhëna tekstuale me konsideratë ndaj kodimit të karaktereve, tani do të përdorin si parazgjedhje UTF-8 në të gjitha platformat, pa marrë parasysh konfigurimet sistemike dhe lokalitetin e caktuar. Për të rikthyer sjelljen e vjetër, ku kodimi zgjidhej në përputhje me lokalitetin e sistemit, mund të përdoret parametri "-Dfile.encoding=COMPAT".
- Në përmbajtje përfshihet paketa com.sun.net.httpserver, e cila përmban utilitarin jwebserver dhe API-në e bibliotekës me implementimin e një serveri http të thjeshtë për shërbimin e përmbajtjes statike (nuk mbështeten përpunuesit CGI dhe servlet). Serveri http i integruar nuk është optimizuar për ngarkesa pune dhe nuk mbështet menaxhimin e aksesit dhe autentifikimin, pasi është fokusuar kryesisht në përdorim gjatë zhvillimit për të krijuar prototipa, për debugging dhe përshtatjen e projekteve.
- JavaDoc implementon përkrahjen për tagun "@snippet" për përfshirjen e shembujve funksionalë dhe fragmenteve të kodit në dokumentacionin e API-së, të cilëve mund t'u aplikohen mjete për kontrollin e saktësisë, theksimin e sintaksës dhe integrimin me IDE.
- Realizimi i API-së java.lang.reflect (Core Reflection) është riparë, e cila është e destinuar për të marrë informacione mbi metodat, fushat dhe konstruktoret e klasave, si dhe për aksesin në strukturën e brendshme të klasave. API vetë java.lang.reflect ka mbetur i pandryshuar, por tani është implementuar përmes përdorimit të descriptorëve të metodës (method handles), të ofruar nga moduli java.lang.invoke, në vend të aplikimit të gjeneratorëve të kodit të bajtëve. Ky ndryshim ka lejuar unifikimin e implementimeve të java.lang.reflect dhe java.lang.invoke dhe ka thjeshtuar mbështetje e tyre.
- Sugjerohet një realizim i tretë i projektit për API-në Vector, i cili ofron funksione për llogaritjet vektoriale, të cilat përpunohen duke përdorur instrukcione vektoriale të procesorëve x86_64 dhe AArch64 dhe lejojnë aplikimin e operacioneve njëkohësisht në disa vlera (SIMD). Ndryshe nga funksionalitetet që ofrohen në JIT-komilin e HotSpot për vektorizimin e automatik të operacioneve skalar, API i ri lejon menaxhim të qartë të vektorizimit për përpunimin paralel të të dhënave.
- Shtohet interface SPI (service-provider interface) për zgjidhjen e emrave të hosteve dhe IP-adresave, e cila lejon përdorimin e zgjidhësve alternativë në java.net.InetAddress, të cilat nuk janë të lidhur me përpunuesit që ofrohen nga sistemi operativ.
- Sugjerohet një realizim i dytë i projektit për API-në Foreign Function & Memory, me anë të së cilës aplikacionet mund të ndërveprojnë me kodin dhe të dhënat që ndodhen jashtë Java runtime. API i ri lejon thirrjen efektive të funksioneve që ekzekutohen jashtë JVM dhe qasjen në kujtesën që nuk menaxhohet nga JVM. Për shembull, mund të thirren funksione nga biblioteka të ndara dhe të aksesohen të dhënat e procesit pa përdorur JNI.
- Shtimi i implementimit tĂ« dytĂ« eksperimental tĂ« pĂ«rputhjes mbi modelin nĂ« shprehjet «switch», i cili lejon nĂ« etiketat «case» pĂ«rdorimin e vlerave tĂ« lira, pĂ«rfshirĂ« njĂ« gamĂ« vlerash, pĂ«r tĂ« cilat mĂ« parĂ« duhej tĂ« pĂ«rdornim zinxhirĂ« tĂ« ndĂ«rlikuar shprehjesh «ifâŠelse». Object 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(); };
- Mekanizmi i finalizimit është shpallur i vjetruar dhe do të çaktivizohet në një nga lëshimet e ardhshme, së bashku me metodat përkatëse, si Object.finalize(), Enum.finalize(), Runtime.runFinalization() dhe System.runFinalization().
- Në mbledhësit e mbetjeve ZGC (Z Garbage Collector), SerialGC dhe ParallelGC është implementuar mbështetje për dedupifikimin e vargjeve.
Burimi: opennet.ru
