Top 5 nieuwe Java-functies om te leren in 2021

Op 16 maart 2021 begon Oracle met het aanbieden van open source Java 16 (Java SE 16) en Java 16 Development Kit (JDK 16) aan alle ontwikkelaars en ondernemingen, wat de zevende feature release is als onderdeel van de Oracle-cadans. .

Volgens Oracle’s Critical Patch Update Schedule krijgt JDK 16 minstens twee driemaandelijkse updates voordat Oracle JDK 17 (bron) uitbrengt. Dankzij deze hoge mate van voorspelbaarheid zullen Java-ontwikkelaars zich gemakkelijk aanpassen aan innovatie.

Top 5 nieuwe Java-functies van Java 16 / JDK 16

Java 16 gaf ons veel coole functies om uit te proberen. Dit is waarom je Java moet leren als je geïnteresseerd bent in programmeren. En CodeGym is er om u te helpen Java online te leren en deze updates te begrijpen.

  

Nieuwe taalfuncties

Patroon passend bij EP 394, bijvoorbeeld

Dit werd aanvankelijk geïntroduceerd als een voorbeeldfunctie in Java 14 en Java 15. U kunt de Java-programmeertaal verbeteren met patroonovereenkomst voor de instanceof-operator.

U zult in staat zijn om eenvoudige logica in een programma uit te drukken, dat wil zeggen, de voorwaardelijke extractie van componenten uit objecten, beknopt en veilig dankzij patroonherkenning.

JEP 395: Records

Net als 394 zagen we JEP 395 als een voorbeeldfunctie in Java 14 en Java 15. Registers bieden een compacte syntaxis die u kunt gebruiken om klassen te declareren die transparante wrappers zijn voor losse gegevens. Dit zal de woordenstroom van deze klassen aanzienlijk verminderen. Het maakt uw code ook leesbaarder en gemakkelijker te onderhouden.

JVM-verbeteringen

JEP 376: ZGC: Gelijktijdige verwerking van draadstapels

JEP 376 wordt gebruikt om ZGC-threadstackverwerking van veilige punten naar een gelijktijdige fase te manoeuvreren. Het maakt ook pauzes van minder dan een milliseconde mogelijk binnen GS-beveiligingspunten, zelfs in grote stapels. Dit helpt ons de laatste bron van latentie binnen de ZGC-vuilniscollector weg te werken, wat op zijn beurt de prestaties en efficiëntie van applicaties aanzienlijk zal verbeteren tijdens deze release en daarna.

JEP 387: elastische metaruimte

We gebruiken deze functie om ongebruikt metadatageheugen van HotSpot VM-klasse (ook bekend als metaspace) zeer snel terug te sturen naar het besturingssysteem, waardoor de voetafdruk van metadata aanzienlijk wordt verkleind. Hierdoor kunnen applicaties met veel upload- en downloadactiviteit in de klas tonnen ongebruikte ruimte krijgen.

Deze nieuwe methode wijst geheugen in kleinere brokken toe, wat fragmentatie en classloader-overhead helpt verminderen. Retourneert ongebruikt metaspace-geheugen naar het besturingssysteem, wat de veerkracht verbetert en resulteert in hogere applicatieprestaties en lager geheugengebruik.

Nieuwe tools en bibliotheken

JEP 380: Unix-domein socketkanalen

Unix-domeinsockets zijn al lange tijd een kenmerk van de meeste Unix-platforms. Ze worden momenteel ook ondersteund op Windows 10 en Windows Server 2019. Deze nieuwe functie voegt ondersteuning voor Unix-domeinsocket (AF_UNIX) toe aan de socketkanaal- en serversocketkanaal-API’s binnen het java.nio.channels-pakket. Hierdoor kan het legacy-kanaalmechanisme Unix-domein-socket-kanalen en server-socket-kanalen uitbreiden en ondersteunen.

We gebruiken Unix-domeinsockets voor communicatie tussen processen op een gelijkwaardige host. Ze bevatten veel overeenkomsten met TCP/IP-sockets, maar worden geadresseerd met padnamen van het bestandssysteem in plaats van Internet Protocol-adressen en poortnummers. Unix-domeinsockets zijn veiliger en efficiënter dan TCP/IP-loopback-verbindingen voor lokale communicatie tussen processen.

JEP 392: Inpakgereedschap

We zagen deze functie voor het eerst als een incubatormodule in Java 14. Deze tool wordt gebruikt om stand-alone Java-applicaties te verpakken. Het biedt eindgebruikers een natuurlijke installatie-ervaring door ondersteuning van native verpakkingsformaten zoals msi en exe voor Windows, pkg en dmg voor macOS en deb en rpm voor Linux. We specificeren de starttijdparameters en u roept ze rechtstreeks aan met behulp van de instructie of programmatisch met behulp van de ToolProvider-API.

Deze functie verklaart primitieve wrapper-klassen als waardegebaseerd en kan het verwijderen van hun constructors afkeuren, wat resulteert in nieuwe afschaffingswaarschuwingen. Geeft waarschuwingen over onjuiste pogingen om te synchroniseren op instanties van een op waarden gebaseerde klasse binnen het Java-platform.

Je werk voorbereiden op de toekomst

JEP 390: Waarschuwingen voor op waarden gebaseerde klassen

Verschillende populaire open source-projecten hebben al wrapper-constructoraanroepen verwijderd. En vanwege deze nieuwe functie kunt u verwachten dat er meer zullen volgen.

JEP 396: Standaard JDK-internals sterk inkapselen

Deze functie helpt het OpenJDK-ontwikkelteam sneller te werken. Het kapselt standaard alle interne JDK-onderdelen sterk in, met uitzondering van kritieke interne API’s zoals sun.misc.Unsafe. Hiermee kunnen eindgebruikers kiezen tussen sterke en ontspannen inkapseling, wat de standaard is sinds JDK 9.

Het doel is om de beveiliging te verbeteren en het, als onderdeel van Project Jigsaw, gemakkelijk te maken voor ontwikkelaars om over te stappen van het gebruik van internals naar een eenvoudige API, waardoor zowel ontwikkelaars als eindgebruikers kunnen upgraden naar toekomstige versies van Java. Er zijn risico’s, net zoals de huidige Java-code mogelijk niet draait. Er wordt voorgesteld om de jdeps-tool te gebruiken om code te detecteren die afhankelijk is van JDK-internals. Het zal overschakelen naar eenvoudige vervangingen als deze beschikbaar zijn (bron).

Incubator-functies

JEP 338: Vector-API

Biedt een eerste iteratie van een API voor nauwkeurige vectorberekeningen. U zult geloven dat ze tijdens runtime worden gecompileerd voor optimale vectorhardware-instructies op compatibele CPU-architecturen en om betere prestaties te bereiken dan equivalente scalaire berekeningen.

Het belangrijkste doel is om een ​​transparante en beknopte API te maken die een goede variëteit aan vectorberekeningen uitdrukt. De API mag niet architectuurgebonden zijn en ondersteunt implementatie over meerdere CPU-fabrics.

Als je een platform zonder vectoren hebt, zal er een sierlijke degradatie plaatsvinden, wat kan leiden tot competitieve code met handmatig uitgerolde lussen. Er is echter een kans dat het waarschuwingen geeft als een vectorberekening niet lang genoeg kan worden gecompileerd voor vectorhardware-instructies.

JEP 389: Externe Linker-API

Deze API zal beschikbaar zijn binnen de incubatorfase van JDK 16. Deze API kan de methode vereenvoudigen of linken naar een native bibliotheek die voorheen complex en foutgevoelig was.

Het doel is om JNI uit te wisselen met een puur Java-ontwikkelingsmodel om het gebruiksvriendelijk te maken. Dit project heeft tot doel volledig geïntegreerde, hoogwaardige interoperabiliteit te bieden met C-bibliotheken op x64- en Aarch64-platforms. Java-ontwikkelaars kunnen nu elke native bibliotheek gebruiken die nodig is voor een specifieke taak.

JEP 393: API voor externe toegang

Dit werd geïntroduceerd als een incubator-API in Java 14 en bleef in Java 15. Hiermee kunnen programma’s veilig op verschillende soorten extern geheugen worden uitgevoerd. De External Access API biedt ook de inspiratie voor de External Linker API.

voorbeeldfuncties

JEP 397: Verzegelde klassen (tweede voorbeeld)

Deze functie zorgt ervoor dat verzegelde klassen en interfaces beperken wat andere klassen of interfaces kunnen uitbreiden of implementeren. De auteur van de categorie of interface kan bepalen welke code verantwoordelijk is voor de implementatie ervan. Het ondersteunt ook toekomstige richtingen in patroonafstemming door uitgebreide patroonanalyse te versterken.

Tot slot

Java blijft de meest gebruikte en aanbevolen programmeertaal door softwareprogrammeurs. Door te kijken naar de verbeteringen die Java in één klap heeft opgeleverd, kunnen we erop vertrouwen dat het Java-platform goed gepositioneerd is voor verdere ontwikkeling en groei in de cloud. Als je softwareontwikkelaar wilt worden, moet je dus Java leren om bij te blijven met nieuwe ontwikkelingen.

0 Shares:
You May Also Like