Il più grande cambiamento del linguaggio Java in un decennio sta finalmente arrivando. Ci sono volute 197.000 righe di codice.

Il più grande cambiamento del linguaggio Java in un decennio sta finalmente arrivando. Ci sono volute 197.000 righe di codice.

      TL;DRLe classi valore di Project Valhalla stanno arrivando in JDK 28, un cambiamento di 197.000 righe che riscrive il modo in cui Java gestisce l'identità degli oggetti. L'ingegnere software di Oracle Lois Foltan ha confermato che la Proposta di Miglioramento di Java 401, che introduce classi valore e oggetti nel linguaggio, sarà integrata nella mainline di OpenJDK all'inizio del mese prossimo, puntando a JDK 28. Il cambiamento fa parte del Project Valhalla, uno sforzo di lunga data per affrontare una delle più antiche limitazioni delle prestazioni di Java. La richiesta di pull aggiunge più di 197.000 righe di codice in 1.816 file modificati, secondo The Register. Foltan l'ha descritta come un "cambiamento estremamente grande" in un post alla mailing list di OpenJDK e ha chiesto ad altri committers di evitare grandi commit durante la finestra di integrazione. L'attuale Java Development Kit è la versione 26, con JDK 27 previsto per settembre 2026 e JDK 28 a marzo 2027. JEP 401 arriverà come funzionalità in anteprima, il che significa che gli sviluppatori possono scegliere di partecipare, ma non sarà abilitato per impostazione predefinita. Il problema che JEP 401 affronta è fondamentale per il funzionamento di Java. Al di fuori di un piccolo insieme di primitivi come int, char e double, ogni tipo in Java è un tipo di riferimento. Ciò significa che ogni oggetto ottiene la propria identità unica in memoria, anche quando due oggetti contengono dati identici. La classe LocalDate di Java, ad esempio, memorizza valori di data, ma due istanze che rappresentano la stessa data restituiranno false quando confrontate con l'operatore == perché sono oggetti diversi in memoria. La classe wrapper Integer rende tutto questo ancora più confuso. Java memorizza internamente le istanze di Integer per valori inferiori a 128, quindi due oggetti Integer con lo stesso piccolo valore possono essere confrontati come uguali con ==. Per valori più grandi, == restituisce sempre false anche quando i numeri sottostanti corrispondono. JEP 401 descrive questo comportamento come "complessità indesiderata", e gli editor di Java generalmente avvertono contro l'uso di == con Integer come risultato. Le classi valore eliminano questo problema creando oggetti che mancano completamente di identità. Un oggetto valore è distinto esclusivamente dai valori dei suoi campi, non da dove si trova in memoria. Questo dà alla JVM la libertà di memorizzare gli oggetti valore in modi che riducono l'overhead di memoria e migliorano la località della cache. Iterare su tipi valore è più efficiente perché il runtime non deve dereferenziare i puntatori per raggiungere i dati effettivi. JEP 401 migrerà alcune classi JDK esistenti, inclusa Integer, a classi valore. Si prevede che il numero di classi migrate cresca gradualmente nei successivi rilasci. Gli sviluppatori potranno anche dichiarare le proprie classi valore per tipi di dominio che rappresentano dati puri, cose come coordinate, importi di valuta o timestamp. Il Project Valhalla è in sviluppo dal 2014, rendendolo uno degli sforzi più lunghi nella storia di Java. La complessità di cambiare il modo in cui funziona l'identità degli oggetti a livello di JVM, mantenendo la compatibilità con miliardi di righe di codice Java esistente, spiega la tempistica. Alcuni osservatori hanno scherzato sul raggiungere Valhalla stessa, il regno dell'aldilà nella mitologia norrena, prima che il progetto venga rilasciato. L'architetto del linguaggio Java di Oracle Brian Goetz ha avvertito su Reddit che JEP 401 è "solo la prima parte di Valhalla". Ha detto che rimuovere l'identità è la prima barriera, che espone nuove ottimizzazioni, specialmente per oggetti più piccoli. Ma trattare completamente gli oggetti con semantica valore richiede di rinunciare a di più, inclusa la nullabilità e ciò che Goetz ha definito "atomicità-sicurezza-sotto-concorrenza". Ha confrontato la traiettoria con le strutture C#, notando che altri linguaggi stanno lavorando su capacità simili. Goetz ha anche avvertito che Valhalla introdurrà cambiamenti deliberati. Il codice che si sincronizza su oggetti Integer, ad esempio, fallirà con un'eccezione una volta che Integer diventa una classe valore. Ha detto che JEP 401 sarà probabilmente ancora in anteprima nel prossimo rilascio di supporto a lungo termine del JDK, che dovrebbe essere JDK 29 a settembre 2027. "Sperare che esca dall'anteprima per il 29 sembra... ottimista", ha scritto. Il tempismo arriva mentre Oracle si ristruttura in modo aggressivo, tagliando fino a 30.000 dipendenti per finanziare il suo pivot verso l'infrastruttura AI. Ma il team della piattaforma Java sembra essere in gran parte isolato da questi tagli, e il Project Valhalla rappresenta il tipo di lavoro profondo sul linguaggio che non può essere accelerato semplicemente aumentando il numero di ingegneri. Java ha guadagnato più di otto milioni di nuovi sviluppatori tra il 2021 e il 2023, e la sua rilevanza per il cloud computing e i sistemi aziendali significa che qualsiasi miglioramento fondamentale delle prestazioni si ripercuote su un vasto ecosistema. Per i milioni di sviluppatori Java che hanno aspettato dodici anni per i tipi valore, l'anteprima in JDK 28 è un traguardo. Per il resto di Valhalla, il messaggio di Goetz è chiaro: non trattenere il respiro.

Altri articoli

Questa nuova app per Mac tiene in ostaggio il tuo schermo finché non bevi acqua. Questa nuova app per Mac tiene in ostaggio il tuo schermo finché non bevi acqua. Hydration Hostage blocca lo schermo del tuo Mac secondo un programma e si sblocca solo dopo che la verifica della fotocamera del dispositivo conferma che hai effettivamente bevuto acqua. La tua CPU Ryzen era utilizzata per crittografare la tua RAM. Un aggiornamento del firmware ha silenziosamente disattivato questa funzione. La tua CPU Ryzen era utilizzata per crittografare la tua RAM. Un aggiornamento del firmware ha silenziosamente disattivato questa funzione. AMD ha disabilitato silenziosamente la crittografia della memoria TSME sui chip Ryzen per consumatori tramite un aggiornamento del firmware. La funzione continua a funzionare sui processori Pro. AMD non dirà perché. Il Galaxy Book6 Edge di Samsung da 2.100 dollari sarà disponibile con 16 GB di RAM nel 2026. Il Galaxy Book6 Edge di Samsung da 2.100 dollari sarà disponibile con 16 GB di RAM nel 2026. Samsung ha lanciato il Galaxy Book6 Edge con il Snapdragon X2 Elite di Qualcomm e un NPU da 80 TOPS, ma la sua configurazione da 2.100 dollari USA viene fornita con solo 16GB di RAM saldata. La scommessa di Polymarket da 345 milioni di dollari sulla pace in Iran è bloccata perché nessuno riesce a mettersi d'accordo su cosa La scommessa di Polymarket da 345 milioni di dollari sulla pace in Iran è bloccata perché nessuno riesce a mettersi d'accordo su cosa Il mercato del contratto di pace dell'Iran da 345 milioni di dollari di Polymarket è in disputa dopo che un accordo provvisorio potrebbe non soddisfare il requisito di "pace permanente" del contratto. Airalo e l'Ascesa del Viaggio eSIM: Un Modo Più Intelligente per Rimanere Connessi all'Estero Airalo e l'Ascesa del Viaggio eSIM: Un Modo Più Intelligente per Rimanere Connessi all'Estero I viaggi internazionali dipendono dalla connettività più che mai. Dalla navigazione in città sconosciute alla gestione delle prenotazioni e al mantenimento dei contatti con la famiglia a casa, i dati mobili affidabili sono diventati essenziali. Ecco come Airalo sta aiutando i viaggiatori a rimanere connessi in oltre 200 paesi e regioni grazie alla comodità della tecnologia eSIM. La purga dell'AI di YouTube sta punendo i creatori umani che non hanno mai mostrato il loro volto. La purga dell'AI di YouTube sta punendo i creatori umani che non hanno mai mostrato il loro volto. YouTube ha chiuso 16 canali con 4,7 miliardi di visualizzazioni e sta testando sondaggi tra gli spettatori per segnalare contenuti di bassa qualità generati da AI, ma i creatori senza volto affermano che la repressione penalizza anche loro.

Il più grande cambiamento del linguaggio Java in un decennio sta finalmente arrivando. Ci sono volute 197.000 righe di codice.

Il JEP 401 del Progetto Valhalla porterà le classi valore nel JDK 28, rimuovendo l'identità degli oggetti dai tipi Java in una modifica di 197.000 righe che ha richiesto dodici anni per essere realizzata.