JavaRush /Java Blog /Random-IT /Tendenze Java nel 2022: JDK 18 e 19, Project Loom e Data ...

Tendenze Java nel 2022: JDK 18 e 19, Project Loom e Data mesh

Pubblicato nel gruppo Random-IT
Ebbene, il 2022 è iniziato. Mentre la maggior parte delle persone è ancora in vacanza di Capodanno con champagne e Olivier, parleremo delle tendenze nel mondo di Java. Forse questo ti aiuterà ad analizzare la tua carriera, ad apprendere una nuova tecnologia o a elaborare un piano di sviluppo per il prossimo anno. Tendenze Java nel 2022: JDK 18 e 19, Project Loom e Data mesh - 1Lo specialista del linguaggio Java e docente Andrey Rodionov, nonché solution architect presso EPAM e capo del comitato di programma Devoxx Ucraina Oleg Tsal-Tsalko hanno parlato di ciò che attende Java nel 2022 e nel prossimo futuro.

Quali sono le prospettive di Java nel 2022?

Tendenze Java nel 2022: JDK 18 e 19, Project Loom e Data mesh - 2Quest'anno prevediamo il rilascio delle prossime due versioni: JDK 18 (a marzo) e JDK 19 (a settembre). Potenzialmente interessante per la maggior parte degli sviluppatori Java in JDK 18 potrebbe essere:
  • Server Web semplice integrato, senza supporto per un contenitore servlet, che può essere utilizzato per la prototipazione e il test rapidi, simile a mini server Web simili in Python, Ruby, PHP.
  • La corrispondenza dei modelli continua a migliorare.
Per quanto riguarda JDK 19, esiste già una build ad accesso anticipato, ma non esiste ancora un elenco ufficiale di ciò che si prevede di includere in essa. Mi piacerebbe credere che JDK 19 includerà almeno il primo prototipo stabile di Project Loom, per il quale sono recentemente apparse le bozze delle specifiche e la cui ultima build è basata su JDK 19. Parleremo di Project Loom più in dettaglio di seguito.

Per quali aree Java rimane l'unica soluzione e dove è preferibile?

Andrej Rodionov:

Fortunatamente, non possiamo dire che non esista alternativa a Java in nessuna delle aree, ma possiamo parlare di Java come una sorta di via d'oro per lo sviluppo di applicazioni aziendali, backend e microservizi. Vale anche la pena notare il numero crescente di diverse distribuzioni JDK di diversi fornitori (tranne Oracle): Amazon, Microsoft, Alibaba, Red Hat, Bellsoft (fondata da persone dell'Oracle Development Center di San Pietroburgo) e altri. Il set completo delle distribuzioni è disponibile qui . Tendenze Java nel 2022: JDK 18 e 19, Project Loom e Data mesh - 3Esistono sempre delle alternative, ma Java trova il suo maggiore utilizzo nel backend dello sviluppo aziendale. La maggior parte delle grandi aziende sceglie Java per i propri sistemi grandi e complessi. Le ragioni sono le stesse: il numero di sviluppatori e competenze sul mercato, un enorme ecosistema e una potente piattaforma JVM.

Quali sono le prospettive degli altri linguaggi jvm, in particolare Kotlin, rispetto a Java?

Andrej Rodionov:

Per capire quali linguaggi JVM sono popolari, basta aprire la documentazione di Spring, Micronaut, Vert.x e vedere in quali lingue vengono forniti gli esempi di codice: Java e Kotlin saranno comuni. Non si può dire che ci sia una massiccia transizione di progetti su Kotlin, ma la sua popolarità per il backend continua a crescere e molti framework stanno cercando di includerlo nel loro ecosistema. Per quanto riguarda Scala, vengono rilasciate nuove versioni e viene ulteriormente utilizzata attivamente per ML, elaborazione dati e dove il paradigma di programmazione funzionale è più conveniente.

Oleg Tsal-Tsalko:

Altri linguaggi JVM sono piuttosto attraenti e al giorno d'oggi è abbastanza normale che un progetto utilizzi diversi linguaggi di programmazione. Mi sembra che i motivi per cui i nuovi linguaggi JVM non possano sostituire Java siano i seguenti:
  • Non sono così belli che tutti li prenderanno e passeranno a loro.
  • Sono utilizzati nello stesso segmento di Java.
  • Java a poco a poco prende il meglio dagli altri linguaggi e diventa migliore.

Ci sarà un calo della qualità Java a causa degli intervalli di rilascio più brevi?

Oleg Tsal-Tsalko:

Penso che nessuno. Almeno ora posso identificare cose più positive dai rilasci frequenti. Vediamo che nuove interessanti funzionalità appaiono molto più spesso. Ora non devi aspettare 5 anni perché appaia qualcosa di nuovo nella lingua. Naturalmente, ora non dovresti aspettarti versioni così grandiose come Java 8, perché le funzionalità ora appaiono in piccole iterazioni.

Nelle nuove versioni di Java sono presenti funzionalità particolarmente importanti per gli sviluppatori?

Oleg Tsal-Tsalko:

Le versioni recenti di Java hanno introdotto diverse funzionalità interessanti come Pattern Matching, Sealed Classes e Records. Consiglierei di esaminare le loro capacità. Naturalmente, le funzionalità più serie e attese sono previste all'interno di Project Loom e Project Valhalla, ma penso che anche le funzionalità all'interno di questi progetti verranno rilasciate gradualmente.

Quadro di primavera: continuerà ad espandere il proprio ecosistema per soddisfare le diverse esigenze?

Andrej Rodionov:

Per quanto riguarda Spring Framework, il suo sviluppo si è concentrato sul supporto di varie funzionalità di Spring Cloud e sulla capacità di compilare Spring Boot in binari nativi: il progetto Spring Native, che dovrebbe far parte di Spring Core in futuro. A questo proposito, Spring è rimasta indietro rispetto a Micronaut e Quarkus a causa dell'uso attivo della riflessione e della generazione di codice dinamico. Per quanto riguarda Spring Framework 6, ti consiglio di guardare il report Spring 6 and Beyond Cosa c'è di nuovo in Spring Framework 6? dalla conferenza Joker (da Oleg Dokuka e Alexey Nesterov). I principali sono il passaggio a JDK 17, l'abbandono della configurazione XML e di Autowire tramite setter, l'ulteriore sviluppo del supporto Kotlin e il progetto Spring Fu.

Oleg Tsal-Tsalko:

Spring, come la Java FW più apprezzata al giorno d'oggi, non vuole rinunciare alla palma. Sono sicuro che il team di sviluppo metterà il massimo impegno nello sviluppo primaverile. La primavera riempie sempre più nicchie. Ad esempio, Spring ha fatto molto nell'area Reactive Streams/Reactive Programming con il suo Project Reactor. Ora stanno promuovendo il protocollo RSoket, che sembra anch’esso promettente.

Raccontaci del progetto Loom: a cosa serve, quali problemi risolve?

Andrej Rodionov:

Project Loom è probabilmente l'innovazione più interessante, che potrebbe diventare un nuovo cambiamento epocale per l'intera piattaforma JVM e tutti i linguaggi su di essa. Project Loom potrebbe non influenzare tanto gli sviluppatori ordinari, ma influenzerà sicuramente l'intero ecosistema, le librerie, i framework e altri linguaggi JVM che utilizzano il multithreading. Project Loom introduce una nuova astrazione di thread: thread virtuali (analoghi alle coroutine). Se in precedenza un thread Java era direttamente collegato a un thread del sistema operativo (OS) e la creazione di un nuovo thread in Java portava alla creazione di un nuovo thread del sistema operativo, con i thread virtuali questa relazione uno a uno viene interrotta. Quando si crea un nuovo thread virtuale, non verrà creato un nuovo thread del sistema operativo e uno dei cosiddetti thread portanti (una sorta di analogo di un pool di thread del sistema operativo) verrà riutilizzato per eseguire calcoli diretti. Pertanto, diversi thread virtuali possono essere eseguiti su un thread del sistema operativo. Per le attività di elaborazione, questo modello di thread virtuali non offre alcun vantaggio e rallenta piuttosto la velocità dei calcoli, ma per le operazioni di blocco, come l'elaborazione di richieste HTTP, l'attesa di risposte dal database o dai microservizi, questo modello sarà un vantaggio significativo. Il fatto è che con l'attuale modello di threading, il blocco/l'attesa su un thread Java portava a thread del sistema operativo inattivi: questo era uno spreco di risorse e richiedeva la creazione di più thread del sistema operativo. Nel modello di thread virtuale, il blocco/l'attesa su un thread virtuale causerà il rilascio del thread portante su cui era in esecuzione il thread virtuale e l'esecuzione di un altro thread virtuale su di esso. In questo modo, i thread del sistema operativo verranno utilizzati in modo più ottimale e ne saranno necessari meno per eseguire attività simili. Di conseguenza, i produttori di librerie, framework e linguaggi JVM dovranno adattare il proprio codice ai thread virtuali. Pertanto, per loro è in arrivo una grande riscrittura :) Oltre al modello di thread virtuale, è prevista anche l'introduzione di una nuova API per semplificare l'orchestrazione dei thread: la cosiddetta concorrenza strutturata. Ora, ad esempio, la concorrenza strutturata viene utilizzata attivamente nelle coroutine Kotlin e Scala ZIO. Sfortunatamente, la versione JDK e persino l'anno di uscita di Project Loom sono ancora sconosciuti. Alla domanda sulla data di rilascio, il capo architetto della piattaforma Java, Brian Goetz, risponde con una frase filosofica: "Sarà pronto, quando sarà pronto". Pertanto, stiamo aspettando e possiamo provare build sperimentali di Project Loom .

Oleg Tsal-Tsalko:

Loom è un grande progetto ombrello, all'interno del quale il team OpenJDK e Oracle sta lavorando su innovazioni di concorrenza in Java e JVM: thread virtuali, fibre e continuazioni. Molto probabilmente, il rilascio di queste funzionalità sarà graduale. Al momento sono disponibili solo build ad accesso anticipato per il supporto dei thread virtuali. Parlando specificamente dei thread virtuali, il suo obiettivo principale è semplificare il modello di sviluppo multi-thread in Java utilizzando milioni di thread leggeri con la stessa semantica dei normali thread della piattaforma. Dietro le quinte, questi thread verranno gestiti all'interno di ForkJoinPool e riutilizzati dai thread della piattaforma.

Quali sono le previsioni per lo sviluppo di Java nel mondo delle tendenze globali: microservizi, architettura cloud, blockchain, intelligenza artificiale?

Andrej Rodionov:

Se parliamo di tendenze globali, non sono cambiate molto. Come prima, la tendenza principale continua ad essere Kubernetes e l'infrastruttura che lo circonda sotto forma di Service Mesh . La mesh di dati sta guadagnando popolarità anche come una sorta di astrazione per la gestione di origini dati e archivi distribuiti.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION