Προγραμματισμός

JDK 14: Οι νέες δυνατότητες στο Java 14

Το Java Development Kit (JDK) 14 έχει φτάσει στο GA, φτάνοντας σε μια έκδοση γενικής διαθεσιμότητας για ανάπτυξη παραγωγής. Η αναβάθμιση σε τυπική Java περιλαμβάνει νέες δυνατότητες, όπως ροή συμβάντων JDK Flight Recorder, αντιστοίχιση μοτίβων και εναλλαγή εκφράσεων.

Το JDK 14 είναι μια έκδοση χαρακτηριστικών της Java, παρά μια μακροπρόθεσμη έκδοση υποστήριξης (LTS), μετά το εξάμηνο σετ ρυθμού κυκλοφορίας για την Java. Το JDK 14 θα λάβει ενημερώσεις ασφαλείας τον Απρίλιο και τον Ιούλιο προτού αντικατασταθεί από το JDK 15, επίσης μια κυκλοφορία χωρίς LTS, η οποία αναμένεται τον Σεπτέμβριο. Η τρέχουσα έκδοση LTS είναι JDK 11.

Οι νέες δυνατότητες και βελτιώσεις στο JDK 14 περιλαμβάνουν:

  • Το JFR Event Streaming παρέχει ένα API για τη συνεχή κατανάλωση δεδομένων JFR τόσο από εφαρμογές όσο και εκτός διεργασίας. Το JFR είναι ένα εργαλείο για τη συλλογή προφίλ και διαγνωστικά δεδομένα σχετικά με μια εφαρμογή Java και το JVM καθώς εκτελούνται. Η πρόταση ροής συμβάντων καταγράφει το ίδιο σύνολο συμβάντων όπως και για την περίπτωση μη ροής, με γενικά έξοδα μικρότερα από ένα τοις εκατό, εάν είναι δυνατόν. Η ροή συμβάντων πρέπει να συνυπάρχει με εγγραφές χωρίς ροή, τόσο βάσει δίσκου όσο και βάσει μνήμης. Το κίνητρο αυτής της πρότασης είναι μια κατάσταση στην οποία το HotSpot VM εκπέμπει περισσότερα από 500 σημεία δεδομένων χρησιμοποιώντας JFR, τα περισσότερα από αυτά διατίθενται μόνο με ανάλυση αρχείων καταγραφής. Προς το παρόν, ένας χρήστης πρέπει να ξεκινήσει μια εγγραφή, να τη σταματήσει, να πετάξει τα περιεχόμενα στο δίσκο και μετά να αναλύσει το αρχείο εγγραφής. Αυτό λειτουργεί καλά για το προφίλ εφαρμογών, αλλά όχι για σκοπούς παρακολούθησης. Ένα παράδειγμα παρακολούθησης της χρήσης είναι ένας πίνακας ελέγχου που εμφανίζει δυναμικές ενημερώσεις δεδομένων. Υπάρχει γενικά με τη δημιουργία μιας εγγραφής, όπως η αντιγραφή δεδομένων από το αποθετήριο δίσκου σε ξεχωριστό αρχείο εγγραφής. Εάν υπήρχε ένας τρόπος ανάγνωσης δεδομένων που εγγράφονται από το αποθετήριο δίσκου χωρίς να δημιουργηθεί νέο αρχείο εγγραφής, μεγάλο μέρος των γενικών εξόδων θα μπορούσε να αποφευχθεί.
  • Η προγραμματισμένη βελτίωση σεNullPointerExceptions αφορά στη βελτίωση της χρηστικότητας των εξαιρέσεων που δημιουργούνται από το JVM, περιγράφοντας ακριβώς ποια μεταβλητή ήταν μηδενική. Οι συγγραφείς της πρότασης επιδιώκουν να παρέχουν χρήσιμες πληροφορίες στους προγραμματιστές και στο προσωπικό υποστήριξης σχετικά με τον πρόωρο τερματισμό ενός προγράμματος και να βελτιώσουν την κατανόηση του προγράμματος συνδέοντας σαφέστερα μια δυναμική εξαίρεση με τον στατικό κώδικα προγράμματος. Ένας στόχος είναι να μειωθεί η σύγχυση και οι ανησυχίες που έχουν οι προγραμματιστές NullPointerExceptions.
  • Τα μη πτητικά αντιστοιχισμένα byte buffer θα προσθέσουν νέους τρόπους αντιστοίχισης αρχείων ειδικά για JDK που επιτρέπουν τη χρήση του API FileChannel για τη δημιουργία MappedByteBuffer περιπτώσεις που αναφέρονται σε μη πτητική μνήμη (NVM). Το NVM επιτρέπει στους προγραμματιστές να δημιουργούν και να ενημερώνουν την κατάσταση του προγράμματος σε όλες τις εκτελέσεις του προγράμματος χωρίς να επιβαρύνονται με το σημαντικό κόστος αντιγραφής ή μετάφρασης που συνήθως απαιτούν οι λειτουργίες εισόδου και εξόδου. Αυτό είναι ιδιαίτερα σημαντικό για προγράμματα συναλλαγών. Έτσι, ο κύριος στόχος αυτής της πρότασης βελτίωσης JDK είναι να διασφαλίσει ότι οι πελάτες μπορούν να έχουν πρόσβαση και να ενημερώνουν το NVM από ένα πρόγραμμα Java με συνεκτικό και αποτελεσματικό τρόπο. Ένας δευτερεύων στόχος είναι η εφαρμογή αυτής της συμπεριφοράς δέσμευσης χρησιμοποιώντας ένα περιορισμένο, JDK-εσωτερικό API που ορίζεται στην κλάση Επισφαλής, ώστε να μπορεί να επαναχρησιμοποιηθεί από άλλες κατηγορίες εκτός από MappedByteBuffer που μπορεί να χρειαστεί να δεσμευτείτε στο NVM. Ένας άλλος στόχος είναι να επιτρέπεται η παρακολούθηση των buffer που έχουν χαρτογραφηθεί μέσω NVM από υπάρχοντα API για παρακολούθηση και διαχείριση. Οι πλατφόρμες προορισμού OS / CPU περιλαμβάνουν Linux / x64 και Linux / AArch64.
  • Η εναλλαγή εκφράσεων απλοποιεί την κωδικοποίηση επεκτείνονταςδιακόπτης έτσι ώστε να μπορεί να χρησιμοποιηθεί είτε ως δήλωση είτε ως έκφραση. Οι εκφράσεις διακόπτη αναμένεται να είναι μόνιμο χαρακτηριστικό στο JDK 14, μετά την προεπισκόπηση τόσο στο JDK 12 όσο και στο JDK 13. Οι εκφράσεις εναλλαγής προετοιμάζονται επίσης για τη χρήση αντιστοίχισης μοτίβων σε διακόπτης. Η αντιστοίχιση μοτίβων επιτρέπει στους προγραμματιστές να εξαγάγουν υπό όρους στοιχεία από αντικείμενα πιο συνοπτικά και με ασφάλεια.
  • NUMA κατανομή μνήμης για τον συλλέκτη απορριμμάτων G1, με σκοπό τη βελτίωση της απόδοσης G1 σε μεγάλα μηχανήματα.
  • Αφαίρεση του συλλέκτη απορριμμάτων ταυτόχρονης σήμανσης (CMS), ο οποίος στο παρελθόν είχε καταργηθεί και σχεδιάστηκε για αφαίρεση. Έχουν προκύψει διάδοχοι CMS, συμπεριλαμβανομένων των ZGC και Shenandoah.
  • Μεταφορά του ZGC σε MacOS. Έχει υποστηριχθεί μόνο στο Linux μέχρι στιγμής.
  • Κατάργηση των εργαλείων pack200 και unpack200 και του API Pack200 στο java.util.jar πακέτο. Όλα αυτά καταργήθηκαν στο Java SE 11 με σκοπό την κατάργησή τους στο μέλλον. Το Pack200 είναι ένα σχήμα συμπίεσης για αρχεία JAR.
  • Εγγραφές, οι οποίες θα παρέχουν μια συμπαγή σύνταξη για τη δήλωση τάξεων που είναι διαφανείς κάτοχοι για ρηχά αμετάβλητα δεδομένα. Οι εγγραφές διευκολύνουν τη δημιουργία τάξεων που είναι ουσιαστικά φορείς δεδομένων χωρίς να χρειάζεται να γράψετε πολλά boilerplate. Η πρόταση αναφέρει ότι θα πρέπει να είναι εύκολο και συνοπτικό να δηλώνεται ρητά αμετάβλητο, καλής συμπεριφοράς, ονομαστικά συγκεντρωτικά δεδομένα.
  • Ένα εργαλείο συσκευασίας, σε φάση ανάπτυξης του επωαστήρα, για τη συσκευασία αυτόνομων εφαρμογών Java. Το εργαλείο θα βασίζεται στο JavaFX javapackager. Ένα τέτοιο εργαλείο είχε συμπεριληφθεί στην Java αλλά κόπηκε από το JDK 11 ως μέρος της αφαίρεσης του JavaFX.
  • Βελτιώστε τη γλώσσα με ταίριασμα μοτίβου για το παράδειγμα χειριστής. Αυτό θα ήταν ένα χαρακτηριστικό προεπισκόπησης στο JDK 14. Η αντιστοίχιση μοτίβων επιτρέπει την κοινή λογική σε ένα πρόγραμμα, κυρίως την υπό όρους εξαγωγή στοιχείων από αντικείμενα, να εκφράζεται με μεγαλύτερη ακρίβεια και ασφάλεια. Ο κωδικός μπορεί να γίνει σύντομος και ασφαλής για τον τύπο.
  • Μια δεύτερη προεπισκόπηση των μπλοκ κειμένου, μια κυριολεκτική συμβολοσειρά πολλαπλών γραμμών που αποφεύγει την ανάγκη για τις περισσότερες ακολουθίες διαφυγής και μορφοποιεί αυτόματα τη συμβολοσειρά με προβλέψιμο τρόπο. Τα μπλοκ κειμένου θα δώσουν στον προγραμματιστή τον έλεγχο της μορφής όταν είναι επιθυμητό, ​​θα απλοποιήσει τη σύνταξη προγραμμάτων Java και θα βελτιώσει την αναγνωσιμότητα των συμβολοσειρών. Τα μπλοκ κειμένου προεπισκόπησαν στο JDK 13. Η επανάληψη JDK 14 θα προσθέσει ακολουθίες διαφυγής για τη διαχείριση ρητών λευκών κενών και ελέγχου νέας γραμμής.
  • Κατάργηση του συνδυασμού των αλγορίθμων Parallel Scavenge και Serial Old. Οι συντηρητές Java πιστεύουν ότι αυτός ο συνδυασμός χρησιμοποιείται πολύ λίγο, αλλά απαιτεί πολλή συντήρηση.
  • Μεταφορά του ZGC (Z Garbage Collector) στα Windows. Αυτό το χαρακτηριστικό μεταφέρθηκε για άλλη μια φορά στη λίστα επίσημα στοχευμένων, αφού επανήλθε στη λίστα προτεινόμενων για στόχευση.
  • API πρόσβασης σε ξένη μνήμη, με την εισαγωγή ενός API για προγράμματα Java για ασφαλή και αποτελεσματική πρόσβαση σε ξένη μνήμη εκτός του σωρού Java. Αυτό το API πρέπει να χρησιμεύσει ως εναλλακτική λύση για τους κύριους δρόμους με τους οποίους τα προγράμματα Java έχουν πρόσβαση στη μνήμη, συμπεριλαμβανομένης της nio.ByteBuffer και sun.misc.Usafe. Το νέο API θα πρέπει να μπορεί να λειτουργεί σε διάφορα είδη μνήμης, συμπεριλαμβανομένης της εγγενούς, μόνιμης μνήμης και του διαχειριζόμενου σωρού. Δεν πρέπει να είναι δυνατό το API να υπονομεύει την ασφάλεια του JVM. Η αφαίρεση μνήμης πρέπει να είναι ρητή στον πηγαίο κώδικα. Το API αναμένεται να βοηθήσει στην ανάπτυξη της εγγενούς υποστήριξης διαλειτουργικότητας που είναι ο στόχος του Project Panama.
  • Κατάργηση των θυρών Solaris / Sparc, Solaris / x64 και Linux / Sparc, με σκοπό την κατάργησή τους σε μελλοντική έκδοση. Η διακοπή της υποστήριξης για αυτές τις θύρες θα επιτρέψει στους συνεργάτες του OpenJDK να επιταχύνουν την ανάπτυξη νέων λειτουργιών. Παρόλο που οι Solaris και Sparc ήταν τεχνολογίες linchpin στο Sun Microsystems, ο αρχικός δημιουργός της Java, έχουν αντικατασταθεί στον τεχνολογικό χώρο τα τελευταία χρόνια από τους επεξεργαστές Linux OS και Intel.

Πού να κατεβάσετε το JDK 14

Μπορείτε να πραγματοποιήσετε λήψη του ανοιχτού κώδικα JDK 14 από το jdk.java.net για Linux, Windows και macOS. Μπορείτε να πραγματοποιήσετε λήψη των λήψεων της εμπορικής Java SE 14 της Oracle από το Oracle.com.

$config[zx-auto] not found$config[zx-overlay] not found