Lëshimi i Java SE 16

Pas pas gjashtë muajsh zhvillimi, kompania Oracle publikoi platformën Java SE 16 (Java Platform, Standard Edition 16), për realizimin e së cilës përdoret projekti i hapur OpenJDK. Në Java SE 16 ruhet mbështetje prapambetje për versionet e kaluara të platformës Java, të gjitha projektet e mëparshme të Java do të funksionojnë pa ndryshime nën menaxhimin e versionit të ri. Ndërtimet e gatshme për instalim të Java SE 16 (JDK, JRE dhe Server JRE) janë përgatitur për Linux (x86_64, AArch64), Windows dhe macOS. Realizimi referencë i Java 16, i zhvilluar në kuadër të projektit OpenJDK, është plotësisht i hapur nën licencën GPLv2 me përjashtime të GNU ClassPath, të cilat lejojnë lidhje dinamike me produkte komerciale.

Java SE 16 i përket kategorisë së lirimeve me mbështetje standarde, azhurnimet për të cilin do të publikohen deri në lëshimin e ardhshëm. Si një degë me mbështetje të zgjeruar (LTS) rekomandohet Java SE 11, azhurnimet për të cilin do të publikohen deri në vitin 2026. Lirimi i ardhshëm LTS është parashikuar për në shtator 2021. Kujtojmë se që nga lëshimi i Java 10, projekti ka kaluar në një proces të ri zhvillimi, që përfshin një cikël më të shkurtër për formimin e lirimeve të reja. Funksionaliteti i ri tani zhvillohet në një degë master të përhershme të azhurnuar, në të cilën përfshihen ndryshimet e gatshme dhe prej së cilës ndahen degë për stabilizimin e lëshimeve të reja çdo gjashtë muaj.

Në përgatitjen e lëshimit të ri, zhvillimi është transferuar nga sistemi i menaxhimit të versioneve Mercurial në Git dhe platformën e bashkëpunimit GitHub. Pritet që migrimi të rritë performancën e operacioneve me repositorin, të rrisë efikasitetin e ruajtjes, të sigurojë akses në ndryshimet për të gjithë historinë e projektit, të përmirësojë mbështetje për rishikimin e kodit dhe të angazhojë API për automatizimin e proceseve. Për më tepër, përdorimi i Git dhe GitHub e bën projektin më tërheqës për fillestarët dhe zhvilluesit që janë mësuar me Git.

Nga risitë e Java 16, mund të theksohet:

  • Shtohet moduli eksperimental jdk.incubator.vector me implementimin e API Vector, qĂ« ofron funksione pĂ«r llogaritjet vektoriale, tĂ« cilat kryhen duke pĂ«rdorur instrukcionet vektoriale tĂ« pojseve x86_64 dhe AArch64 dhe lejojnĂ« tĂ« aplikohen operacione nĂ« tĂ« njĂ«jtĂ«n kohĂ« mbi disa vlera (SIMD). Ndryshe nga mundĂ«sitĂ« e ofruara nĂ« kompilatorin JIT HotSpot pĂ«r avtokompozimin e operacioneve skalarĂ«, API i ri lejon menaxhimin e qartĂ« tĂ« kompozimit pĂ«r procesimin paralel tĂ« tĂ« dhĂ«nave.
  • NĂ« kodin JDK dhe VM HotSpot, i shkruar nĂ« C++, lejohet pĂ«rdorimi i mundĂ«sive qĂ« shfaqen nĂ« specifikimin C++14. MĂ« parĂ« lejohej pĂ«rdorimi i standardeve C++98/03.
  • NĂ« mbledhĂ«sin e mbeturinave ZGC (Z Garbage Collector), i cili punon nĂ« mod aktiv dhe pĂ«rpiqet tĂ« minimizojĂ« sa mĂ« shumĂ« qĂ« tĂ« jetĂ« e mundur vonesat nga grumbullimi i mbeturinave, Ă«shtĂ« shtuar mundĂ«sia e pĂ«rpunimit paralel tĂ« stekĂ«ve tĂ« threads pa ndĂ«rprerjen e ekzekutimit tĂ« threads tĂ« aplikacionit. NĂ« ZGC tani kanĂ« mbetur vetĂ«m ato qĂ« kĂ«rkojnĂ« ndalimin e punĂ«s, tĂ« cilat kanĂ« vonesa tĂ« qĂ«ndrueshme, zakonisht qĂ« nuk kalojnĂ« disa qindra mikrosekonda.
  • NĂ« klasat SocketChannel, ServerSocketChannel dhe java.nio.channels Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r soketĂ«t Unix (AF_UNIX).
  • ËshtĂ« realizuar njĂ« port pĂ«r distribucionin Linux Alpine me bibliotekĂ«n standarde tĂ« C-sĂ« musl, e cila Ă«shtĂ« e njohur nĂ« mjediset pĂ«r konteinerĂ«, mikroshĂ«rbime, sisteme cloud dhe tĂ« integruara. Porti i propozuar nĂ« kĂ«to mjedise lejon ekzekutimin e programeve nĂ« Java si aplikacione tĂ« zakonshme. PĂ«r mĂ« tepĂ«r, me ndihmĂ«n e jlink, mund tĂ« hiqen tĂ« gjitha modulĂ«t e papĂ«rdorur dhe tĂ« formohet njĂ« mjedis minimal, i mjaftueshĂ«m pĂ«r ekzekutimin e aplikacionit, qĂ« lejon krijimin e imazheve tĂ« kompaktuara specifike pĂ«r aplikacione tĂ« caktuara.
  • Mekanizmi Elastic Metaspace Ă«shtĂ« realizuar, optimizimi i operacioneve tĂ« ndarjes dhe kthimit tĂ« memories, qĂ« zĂ«nĂ« metadatĂ«n e klasave (metaspace) nĂ« JVM HotSpot. PĂ«rdorimi i Elastic Metaspace ul fragmentimin e memories, zvogĂ«lon kostot e ngarkuesit tĂ« klasave, si dhe ndikon pozitivisht nĂ« performancĂ«n e aplikacioneve serverike qĂ« funksionojnĂ« pĂ«r njĂ« kohĂ« tĂ« gjatĂ« pĂ«rmes kthimit mĂ« tĂ« shpejtĂ« tĂ« memories qĂ« zĂ« metadatĂ«n e klasave tĂ« papĂ«rdorura. PĂ«r tĂ« zgjedhur mĂ«nyrĂ«n e lirimit tĂ« memories pas shkarkimit tĂ« klasave, Ă«shtĂ« propozuar opsioni "-XX:MetaspaceReclaimPolicy=(balanced|aggressive|none)".
  • Shtohet njĂ« port JDK pĂ«r sistemet Windows, qĂ« funksionon nĂ« pajisje me procesorĂ« tĂ« bazuar nĂ« arkitekturĂ«n AArch64.
  • ËshtĂ« propozuar njĂ« version i tretĂ« parazgjedhor i API Foreign-Memory Access, i cili i lejon aplikacionet Java tĂ« kenĂ« akses nĂ« mĂ«nyrĂ« tĂ« sigurt dhe efektive nĂ« zonat e memories jashtĂ« heap-it tĂ« Java, duke manipuluar me abstraksionet e reja MemorySegment, MemoryAddress dhe MemoryLayout.
  • ËshtĂ« realizuar njĂ« API eksperimentale Foreign Linker, e cila ofron qasje nga Java nĂ« kodin natyror. SĂ« bashku me API-nĂ« Foreign-Memory, ky ndĂ«rfaqe programimi e bĂ«n ndjeshĂ«m mĂ« tĂ« lehtĂ« krijimin e mbĂ«shtetjeve mbi bibliotekat e zakonshme tĂ« ndara.
  • ËshtĂ« shtuar utiliteti jpackage, qĂ« lejon krijimin e paketave pĂ«r aplikacione Java qĂ« janĂ« tĂ« pavarura (self-contained). Ky utilitet bazohet nĂ« javapackager nga JavaFX dhe lejon formimin e paketave nĂ« formate natyrore pĂ«r platforma tĂ« ndryshme (msi dhe exe pĂ«r Windows, pkg dhe dmg pĂ«r macOS, deb dhe rpm pĂ«r Linux). Paketat pĂ«rfshijnĂ« tĂ« gjitha varĂ«sitĂ« e nevojshme.
  • Inkapacelimi i ashpĂ«r i tĂ« gjithĂ« elementeve tĂ« brendshĂ«m tĂ« JDK u stabilizua si standart, pĂ«rveç API-ve kritike, siç Ă«shtĂ« sun.misc.Unsafe. Vlera e opsionit "—illegal-access" tani Ă«shtĂ« caktuar si "deny" nĂ« vend tĂ« "permit", gjĂ« qĂ« do tĂ« rezultojĂ« nĂ« bllokimin e pĂ«rpjekjeve pĂ«r tĂ« aksesuar shumicĂ«n e klasave, metodave dhe fushave tĂ« brendshme nga kodi. PĂ«r tĂ« anashkaluar kĂ«tĂ« kufizim, duhet tĂ« pĂ«rdoret opsioni "—illegal-access=permit".
  • Stabilizimi i zbatimit tĂ« pĂ«rputhjes me modelin nĂ« operatorin "instanceof" Ă«shtĂ« arritur, i cili lejon tĂ« pĂ«rcaktohet menjĂ«herĂ« njĂ« variabĂ«l lokale pĂ«r qasjen nĂ« vlerĂ«n e verifikuar. PĂ«r shembull, mund tĂ« shkruhet menjĂ«herĂ« "if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" pa pĂ«rcaktimin e qartĂ« "String s = (String) obj". Ishte: if (obj instanceof Group) { Group group = (Group) obj; var entries = group.getEntries(); } Tani mund tĂ« bĂ«het pa pĂ«rcaktimin "Group group = (Group) obj": if (obj instanceof Group group) { var entries = group.getEntries(); }
  • Stabilizimi i fjalĂ«s kyçe "record" Ă«shtĂ« arritur, duke ofruar njĂ« formĂ« kompakte pĂ«r pĂ«rcaktimin e klasave, duke lejuar tĂ« shmangen pĂ«rcaktimet e qarta tĂ« metodave tĂ« ndryshme tĂ« nivelit tĂ« ulĂ«t, siç janĂ« equals(), hashCode() dhe toString(), nĂ« raste kur tĂ« dhĂ«nat ruhten vetĂ«m nĂ« fusha, tĂ« cilat nuk ndryshojnĂ«. Kur klasa pĂ«rdor implementimet tipike tĂ« metodave equals(), hashCode() dhe toString(), Ă«shtĂ« e mundur tĂ« shmangen pĂ«rcaktimet e qarta: public record BankTransaction(LocalDate date, double amount, String description) {}

    Ky shpallje do të çojë në shtimin automatik të implementimeve të metodave equals(), hashCode() dhe toString() përveç konstruktorit dhe metodave që kontrollojnë ndryshimin e të dhënave (getter).

  • ËshtĂ« propozuar njĂ« variant i dytĂ« paraprak i klasave dhe interface-ve tĂ« mbyllura („sealed“) qĂ« nuk mund tĂ« pĂ«rdoren nga klasat dhe interface-t e tjera pĂ«r trashĂ«gim, zgjerim ose ri-implementim. Klasat e mbyllura gjithashtu ofrojnĂ« njĂ« mĂ«nyrĂ« mĂ« deklarative pĂ«r tĂ« kufizuar pĂ«rdorimin e superklasĂ«s sesa modifikatorĂ«t e aksesit, tĂ« bazuar nĂ« listimin e qartĂ« tĂ« nĂ«nklasave tĂ« lejuara pĂ«r zgjerim. package com.example.geometry; public sealed class Shape permits com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {
}

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster