Tutto su Java12: nuove funzionalità, sicurezza e dichiarazione di espressione dello switch (esempi)

Pubblicato: 2019-04-07

Java 12 - Tutte le novità - Dettagli di Crunchify

Il 19th March 2019 è stato rilasciato Java12. Come sappiamo Java12 faceva parte del rilascio rapido, è stato rilasciato solo 6 mesi dopo il rilascio di Java11.

In questo tutorial, esamineremo tutte le modifiche e le nuove funzionalità di Java12.

Personalmente sono passato a Java12 per tutto il mio sviluppo ma per il ciclo produttivo è troppo presto. Mantieni questo tutorial tra i preferiti quando vuoi passare a Java12 per tutti i tuoi progetti di produzione.

Cosa c'è di nuovo in Java12? Nuove funzionalità in Java12:

Ci sono alcune funzionalità interne e relative al flusso di lavoro dell'utente in Java12 che sono cambiate. Diamo un'occhiata a cosa c'è dentro Java 12.

Modifica-1) Scaricamento di classi simultanee

Il normale Garbage Collector di solito scarica la variabile non utilizzata durante il ciclo GC e di solito notiamo qualche arresto/pausa nel processo o aumento della CPU durante quel periodo. Di solito non ce ne accorgiamo nemmeno.

Con ZGC (Z Garbage Collector) – Java12 supporta anche lo scarico di classi simultanee. Poiché ciò accade durante il normale ciclo GC, non ci sono pause e non c'è più utilizzo di memoria extra.

Per impostazione predefinita ZGC è abilitato in Java12. Non sono necessarie altre azioni

Come disabilitare ZGC?

  • Basta avviare l'applicazione con l'argomento della riga di comando JVM -XX:-ClassUnloading

Modifica-2) Ottieni maggiori dettagli su JVM Crash

Quando si verifica un errore OOM (memoria insufficiente) o JVM si arresta in modo anomalo, di solito Java crea file di dump con tutti i dettagli.

Con questi parametri JVM, i file Dump verranno creati nella cartella /tmp/crunchify/ in caso di errore OOM.

C'è un'altra opzione aggiunta in Java12:

Verrà creato un nuovo file di registro denominato hs_err<pid>.log con tutti i dettagli sull'arresto anomalo della JVM. Questo è molto utile per l'ambiente di produzione se si verificano frequenti arresti anomali e si desidera eseguire di più il debug.

Per impostazione predefinita è disabilitato, ma puoi abilitare un rapporto di arresto anomalo completo aggiungendo il parametro della riga di comando JVM sopra.

Modifica-3) Formattazione numerica compatta

java.text aggiunge il supporto per il formato numerico compatto. 100o può essere indicato come 1K e 100000 può essere indicato come 100K .

Risultato:

Modifica-4) Miglioramenti alla sicurezza Java

security-libs/java.security cambia:

  • non consentire e consentire Opzioni per java.security.manager
    • se disallow allora System. setSecurityManager non può essere utilizzato per impostare il gestore della sicurezza.
  • Opzione -groupname Aggiunta al keytool Generazione di coppie di chiavi
    • un utente può specificare un gruppo denominato durante la generazione di una coppia di chiavi.
  • Personalizzazione della generazione PKCS12 keystore
    • include algoritmi e parametri per
      • protezione delle chiavi
      • protezione del certificato
      • MacDati
  • Nuovi eventi di sicurezza JFR
    • Che cos'è JFR (Java Flight Recorder)
    • Aggiunti 4 nuovi eventi JFR
      • jdk.X509Certificato
      • jdk.X509Convalida
      • jdk.TLSHandshake
      • jdk.SecurityPropertyModification

Modifica-5) JEP 325: Cambia espressioni

Esercitazione sulle espressioni di commutazione JEP 325 di Crunchify

L' Switch statement avanzata è ora supportata in Java12.

  • case L -> syntax . Qui non c'è nessuna pausa necessaria.
  • Uso dell'espressione Switch
    • questa è un'istruzione switch semplificata
    • se viene trovata una corrispondenza con un'etichetta, viene eseguita solo l'espressione a destra dell'etichetta di una freccia.
    • Non è necessaria alcuna dichiarazione di interruzione.

CrunchifyJava12SwitchExample.java

IntelliJ IDEA Risultato:

Java 12 Switch Statement Tutorial Risultato - Crunchify

Modifica-6) API delle costanti JVM

java.lang.invoke.constant : come forse saprai, la classe Java ha un pool costante che memorizza tutti gli operandi in fase di esecuzione.

Java12 aggiunge l'API per invocare le costanti in fase di esecuzione.

Funzionalità rimosse da Java12:

Funzionalità rimosse da Java12 - Crunchify Tips

Funzionalità deprecate da Java12:

Funzionalità deprecate da Java12 - Crunchify Tips

Fammi sapere se hai qualche tutorial utile su Java12 che vorresti includere qui.