Projektin Valhalla mullistaa kaiken – tyyppiturvallisuus kohtaa suorituskyvyn

Projektin Valhalla mullistaa kaiken – tyyppiturvallisuus kohtaa suorituskyvyn

Tou 19, 2026 java project valhalla value classes domain-driven design performance optimization type safety cloud development

Valuetyyppien voima: Domain Driven Design ja Java 27

Oletko koskaan yrittänyt rakentaa Java-sovellusta, jossa jokainen arvo noudattaa tiukkoja sääntöjä? Haluat, että koodi ei voi koskaan tallentaa negatiivista määrää. Haluat, että tyyppi itsessään kertoo, mikä on sallittua.

Ongelma syntyy, kun suorituskykyvaatimukset kiristyvät. Perinteiset wrapper-luokat aiheuttavat ylikustannuksia miljoonien tapahtumien käsittelyssä. Muistinkäyttö kasvaa, välimuistit täyttyvät ja suoritusnopeus kärsii. Siksi monet kehittäjät ovat joutuneet luopumaan tyyppiturvallisuudesta kriittisissä osissa koodia.

Project Valhalla muuttaa tämän asetelman.

Miksi wrapperit ovat kalliita

Kun luot PositiveInt-tyypin, joka sisältää vain int-arvon, jokainen olio vie 16 tavua muistia. Objektin otsikko vie 12 tavua ja arvo neljä. Kun näitä ladataan miljoonia arrayhin, viittaukset osoittavat hajallaan oleviin muistipaikkoihin. Jokainen käyttö vaatii osoitteenpurun ja usein myös välimuistin virheennoston.

Tämän takia kehittäjät ovat perinteisesti pitäneet hienostuneet tyypit vain rajapinnoilla. Sisäisessä käsittelyssä on siirrytty suoraan primitiiveihin. Se on toiminut,但 ei optimoinut molempia tavoitteita samalla kertaa.

Value classes tuovat uuden vaihtoehdon

Java 27 Early Access tuo mukanaan value keywordin. Näiden luokkien avulla JVM voi käsitellä arvoja identiteettivapaasti. Ne eivät vaadi erillistä heap-allokaatiota. JVM voi sijoittaa ne suoraan arrayhin, objektien kenttiin tai rekistereihin.

Esimerkiksi PositiveInt-tyypin voi nyt kirjoittaa näin:

public value class PositiveInt {
    private final int value;

    public PositiveInt(int value) {
        if (value <= 0) {
            throw new IllegalArgumentException("must be positive: " + value);
        }
        this.value = value;
    }

    public int value() { 
        return value; 
    }
}

Validaatio tapahtuu edelleen. Tyyppiturvallisuus säilyy. Mutta JVM voi flattaa arvon 4 tavuun ilman objektin otsikkoja tai indirectionia.

Monimutkaisempien tyyppien mahdollisuudet

Value classes toimivat myös monimutkaisemmista arvoista. Esimerkiksi Coordinate-tyyppi sisältää Latitude ja Location -tyyppinen arvo. Saatamme luoda Latitude ja Location -tyyppiset arvosolemet.

Kun käyt

tiikasta saamme taustavakin.

Read in other languages:

RU BG EL CS UZ TR SV RO PT PL NB NL HU IT FR ES DE DA ZH-HANS EN