OpenJDK-proposal brengt universele generics naar Java

About

OpenJDK-proposal brengt universele generics naar Java

Met universele generieke methoden kunnen variabelen van het Java-type variëren over primitieve en referentietypen, waardoor het gemakkelijker wordt om code uit te breiden of opnieuw te gebruiken voor verschillende typen.

Java zou universal generics krijgen onder OpenJDK-proposals die bedoeld zijn om de taal gebruiksvriendelijker te maken, hoewel het plan zelf jaren zou duren om tot wasdom te komen.

Universele generics zouden in eerste instantie worden geleverd via drie voorstellen die in de OpenJDK-gemeenschap drijven. Samen zouden de voorstellen de Java-taal en de JVM drastisch veranderen, door de flexibiliteit van klassen en de prestaties van primitieven te combineren, aldus Oracle. Alles, ook de primitieven, zou een object worden. Maar in plaats van primitieven minder performant te maken, zou het gekozen pad klassen net zo performant maken als primitieven.

Elk van de drie JDK Enhancement Proposals (JEP) levert verschillende functionaliteiten, maar ze zijn alle drie nodig om de verwachte voordelen te behalen. De belangrijkste hiervan is een JEP-concept, gemaakt in februari en bijgewerkt op 29 oktober, waarin wordt opgeroepen om de behandeling van referentie- en primitieve waardetypen in generieke code te verenigen door Java-typevariabelen over beide soorten typen te laten variëren. Er zouden nieuwe waarschuwingen worden opgesteld om de veiligheidsgaranties van generieke code te handhaven.

Een tweede JEP, om het Java-objectmodel te verbeteren met door de gebruiker gedeclareerde primitieve objecten, zou als voorwaarde dienen. Verwacht wordt dat ook een derde JEP, om elementaire primitieven met objecten te verenigen, zal doorgaan. Er zouden aanvullende GEP’s volgen om standaardbibliotheken bij te werken, null-waarschuwingen aan te pakken en bibliotheken gereed te maken voor specialisatie, en om runtime-specialisatie van generieke API’s in de JVM te introduceren.

Het universele generieke plan promoot het hebben van generieke API’s die primitieve waardetypen direct ondersteunen, om direct te werken op op maat gedefinieerde primitieven. Referentietypes zouden ook worden ondersteund. Dit zou idealiter het standaardgedrag van Java’s generics moeten zijn, zodat primitieve waardetypes volledig kunnen deelnemen aan het Java-ecosysteem, stelt het voorstel. Er is momenteel geen datum vastgesteld waarop universele generics op Java zullen verschijnen, maar het zou meerdere jaren vergen om tot bloei te komen.

Universele generics zouden de bestaande generieke mogelijkheden in het platform uitbreiden. Java 2 Platform, Standard Edition 5.0, geïntroduceerd in 2004, bracht generieke versies naar de taal en het platform, waardoor ontwikkelaars konden bepalen wat ze in een verzameling wilden opslaan en iterators veilig konden typen. Maar met de 2004-iteratie van generics konden ontwikkelaars alleen over referentietypen genereren. Door primitieven met referenties te verenigen, zou een volgende stap kunnen worden gezet waarmee typeparameters over alle typen kunnen worden verdeeld.

Java is tegenwoordig niet de enige taal die op zoek is naar generieke mogelijkheden. De Go-taal van Google zal binnenkort generics toevoegen.

 

Share
December 2024
January 2025
No event found!

Related Topics