Rilascio di Java SE 26 e OpenJDK 26. Progetto per integrare il supporto di JavaScript e Python nella JVM

Dopo sei mesi di sviluppo, Oracle ha pubblicato la piattaforma Java SE 26 (Java Platform, Standard Edition 26), la cui implementazione di riferimento è basata sul progetto open source OpenJDK. Ad eccezione della rimozione di alcune funzionalità obsolete, Java SE 26 mantiene la compatibilità retroattiva con le versioni precedenti della piattaforma Java: la maggior parte dei progetti Java precedenti funzionerà senza modifiche sulla nuova versione. Le build pronte per l'installazione di Java SE 26 (JDK, JRE e Server JRE) sono disponibili per Linux (x86_64, AArch64), Windows (x86_64) e macOS (x86_64, AArch64). L'implementazione di riferimento di Java SE 26 sviluppata nell'ambito del progetto OpenJDK è completamente open source con licenza GPLv2, con eccezioni GNU ClassPath che consentono il linking dinamico con prodotti commerciali.

Java SE 26 è classificato come una versione con supporto standard, con aggiornamenti previsti fino al prossimo rilascio. Le versioni con supporto a lungo termine (LTS) da utilizzare sono Java SE 25, Java SE 21 o Java SE 17, per le quali gli aggiornamenti verranno rilasciati fino al 2033, 2031 e 2029 rispettivamente (pubblicamente fino a settembre 2030, 2028 e 2026). Il supporto esteso per la branched LTS di Java SE 8 continuerà fino al 2030, mentre Java SE 11 sarà supportato fino al 2032.

Tra le modifiche in Java SE 26 (1, 2, 3, 4):

  • È stato implementato un avviso per l'uso della riflessione profonda per modificare i campi contrassegnati dalla parola chiave «final». In futuro, si prevede di disattivare per impostazione predefinita le funzionalità non sicure del linguaggio e, tra l'altro, rendere i campi contrassegnati come final completamente immutabili, rimuovendo il bypass per la loro modifica tramite riflessione profonda (API Reflection).
  • Rimosso l'API Applet (java.applet.Applet*, javax.swing.JApplet), utilizzato per eseguire applicazioni Java nel browser. Questo API è diventato obsoleto dopo la cessazione del supporto per il plugin Java nei browser ed è stato dichiarato deprecato nel 2021.
  • È stata implementata la possibilità di utilizzare una cache precompilata (AOT – ahead-of-time) con qualsiasi garbage collector, incluso ZGC (Z Garbage Collector). La modifica implica il supporto per il caricamento sequenziale di oggetti Java memorizzati nella cache in memoria, utilizzando un formato universale e indipendente dal garbage collector anziché il mapping diretto in memoria di rappresentazioni specifiche della cache. L'uso della cache AOT riduce i tempi di avvio e accelera l'attualizzazione (warmup) della macchina virtuale HotSpot.
  • Nell'API HTTP Client è stato aggiunto il supporto per il protocollo HTTP/3, che consente a applicazioni e librerie di comunicare con i server tramite HTTP/3 con minime modifiche al codice.
  • Le prestazioni del garbage collector G1 sono state migliorate, grazie alla riduzione dei blocchi per la sincronizzazione dei thread applicativi con i thread del garbage collector.
  • È stata proposta una seconda versione preliminare dell'API per la codifica e decodifica di oggetti contenenti chiavi crittografiche, certificati e elenchi di certificati revocati, utilizzando il formato PEM (Privacy-Enhanced Mail).
  • È stata proposta per il test una sesta versione preliminare dell'API per la concorrenza strutturata (Structured Concurrency), che semplifica lo sviluppo di applicazioni multithread gestendo più attività che vengono eseguite in diversi thread come un unico blocco.
  • È stata aggiunta una seconda versione preliminare dell'API Lazy Constants per lavorare con oggetti che contengono dati immutabili e vengono trattati nella JVM come costanti. A questi oggetti vengono applicate ottimizzazioni delle prestazioni simili ai campi con la parola chiave «final». A differenza di «final», la nuova API separa la creazione di valori costanti dalla loro inizializzazione, garantendo che il valore possa essere inizializzato solo una volta, riducendo i tempi di avvio dei programmi e consentendo di applicare nel codice utente ottimizzazioni di folding costante (constant-folding), precedentemente usate solo nel codice interno del JDK. class Application { // Era: // static final UserService USERS = new UserService(); // Ora è possibile: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • Nel meccanismo di corrispondenza ai modelli è stata proposta una quarta versione preliminare per l'uso di tipi primitivi (int, byte, char e altri tipi base che non sono oggetti) in tutti i tipi di modelli, nell'operatore «instanceof» e nei blocchi «switch». switch (x.getStatus()) { case 0 -> «okay»; case 1 -> «warning»; case 2 -> «error»; case int i -> «stato sconosciuto: » + i; } if (i instanceof byte b) { … b … }
  • È stata proposta undicesima implementazione di test dell'API Vector, che fornisce funzioni per calcoli vettoriali eseguiti utilizzando le istruzioni vettoriali dei processori x86_64 e AArch64 e consente di applicare operazioni a più valori simultaneamente (SIMD). A differenza delle possibilità di autovettorizzazione delle operazioni scalari fornite dal compilatore JIT HotSpot, la nuova API consente di gestire esplicitamente la vettorizzazione per l'elaborazione parallela dei dati.

Inoltre, Oracle ha annunciato il progetto Detroit, che si svilupperà all'interno di OpenJDK e si concentrerà sul miglioramento della portabilità tra Java, JavaScript e Python. Nel quadro del progetto si intende fornire la possibilità di integrazione nel runtime del processo JVM con il motore JavaScript V8 e l'interprete CPython. In passato, Oracle ha già sviluppato il motore JavaScript Nashorn, che funziona sopra la macchina virtuale JVM, ma ha interrotto il progetto a causa delle difficoltà nel sviluppare un'implementazione separata di JavaScript in un contesto in cui l'ecosistema principale è legato al motore V8.

In aggiunta, si segnala la pubblicazione dell'aggiornamento della piattaforma per la creazione di applicazioni con interfaccia grafica JavaFX 26. Nelle prossime ore è previsto anche il rilascio della macchina virtuale universale GraalVM 26, che supporta l'esecuzione di applicazioni in JavaScript (Node.js), Python, Ruby, R, e in qualsiasi linguaggio per JVM (Java, Scala, Clojure, Kotlin) e nei linguaggi per i quali può essere generato bytecode LLVM (C, C++, Rust).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster