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

Java JDK 11: Όλες οι νέες δυνατότητες είναι πλέον διαθέσιμες

Το Java Development Kit (JDK) 11 είναι τώρα γενικά διαθέσιμο και έτοιμο για χρήση στην παραγωγή, φέρνοντας βελτιώσεις παραγωγικότητας και ένα API πελάτη HTTP που εφαρμόζει HTTP / 2.

Η έκδοση 11 της Java Standard Edition (SE) έχει 16 σημαντικές αλλαγές χαρακτηριστικών. Το Java 11 χάνει επίσης κάποιες δυνατότητες μέσω της αφαίρεσης των μονάδων CORBA και Java EE (μετονομάστηκε πρόσφατα στο Jakarta EE), καθώς και της αφαίρεσης του JavaFX, το οποίο είναι τώρα διαθέσιμο ως αυτόνομη τεχνολογία.

Στην Java 11, το Oracle έχει διαμορφώσει το αποθετήριο mainline, jdk / jdk, στο αποθετήριο σταθεροποίησης jdk / jdk11. Οι αλλαγές που έχουν προωθηθεί στο jdk / jdk ή jdk / client επισημαίνονται τώρα για το JDK 12. Το αποθετήριο σταθεροποίησης μπορεί να δεχτεί επιλεγμένες διορθώσεις σφαλμάτων και, εάν εγκριθεί, καθυστερημένες βελτιώσεις σύμφωνα με τη Διαδικασία έκδοσης JDK.

Η τελευταία έκδοση της εφαρμογής της τυπικής Java από την Oracle είναι μια έκδοση Long Term Support (LTS), η οποία θα έχει εμπορική υποστήριξη από την Oracle για τουλάχιστον οκτώ χρόνια. Οι διορθώσεις σφαλμάτων και οι ενημερώσεις ασφαλείας θα προσφέρονται έως το 2026. Οι νέες κυκλοφορίες LTS αναμένεται κάθε τρία χρόνια, με το JDK 17, το 2021, να είναι η επόμενη έκδοση του LTS. Οι ενδιάμεσες κυκλοφορίες θα έρχονται κάθε έξι μήνες.

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

Μπορείτε να πραγματοποιήσετε λήψη του JDK 11 από το Oracle Technology Network.

Νέες δυνατότητες στο Java 11 JDK

Το JDK 11 έχει 16 νέες δυνατότητες:

  • Βελτίωση της εγγενούς Aarch64, με την εφαρμογή νέων εγγενών για τοlang.Math sin, cos και log, σε επεξεργαστές Aarch64. Αυτή η πρόταση δίνει έμφαση σε εξειδικευμένα μοτίβα κώδικα για συγκεκριμένη αρχιτεκτονική CPU που βελτιώνουν την απόδοση της εφαρμογής και του δείκτη αναφοράς
  • Ο έλεγχος πρόσβασης με βάση το Nest εισάγει φωλιές, ένα πλαίσιο ελέγχου πρόσβασης που ευθυγραμμίζεται με την έννοια των ένθετων τύπων στη γλώσσα Java. Οι φωλιές επιτρέπουν κλάσεις που είναι λογικά μέρος της ίδιας οντότητας κώδικα, αλλά έχουν μεταγλωττιστεί σε ξεχωριστά αρχεία κλάσης για πρόσβαση στα ιδιωτικά μέλη του άλλου, χωρίς να χρειάζονται μεταγλωττιστές για την εισαγωγή μεθόδων γέφυρας που διευρύνουν την προσβασιμότητα.
  • Transport Layer Security (TLS) 1.3, στην οποία αυτή η αναθεώρηση του πρωτοκόλλου TLS θα ενσωματωθεί στο JDK 11, προσφέροντας σημαντικά οφέλη ασφάλειας και απόδοσης. Ωστόσο, δεν υπάρχει στόχος να υποστηρίξουμε κάθε δυνατότητα του TLS 1.3. Για την ελαχιστοποίηση των κινδύνων ασυμβατότητας, το TLS 1.3 θα εφαρμόσει από προεπιλογή τη λειτουργία συμβατότητας προς τα πίσω. Οι εφαρμογές μπορούν να απενεργοποιήσουν ή να ενεργοποιήσουν αυτήν τη λειτουργία όπως επιθυμείτε.
  • Κατάργηση της μηχανής Nashorn JavaScript, μαζί με το εργαλείο JJS, με σκοπό την κατάργησή τους στο μέλλον. Η Oracle βρήκε ότι ο Nashorn δυσκολεύεται να διατηρήσει, δεδομένου του γρήγορου ρυθμού με τον οποίο έχουν προσαρμοστεί και τροποποιηθεί τα δομή και τα API του ECMAScript.
  • HTTP Client (Standard), το οποίο τυποποιεί τον πελάτη HTTP API που επωάστηκε που εισήχθη στο JDK 9 και ενημερώθηκε στο JDK 10. Το API προσφέρει σημασιολογία αιτήματος και απόκρισης χωρίς αποκλεισμό μέσω Συμπληρώσιμα μελλοντικά, η οποία μπορεί να συνδεθεί με ενεργοποίηση εξαρτώμενων ενεργειών. Η υλοποίηση, τώρα ασύγχρονη, έχει σχεδόν ξαναγραφεί, μετά την επώαση στα JDKs 9 και 10. Η ιδέα RX Flow έχει προωθηθεί στην εφαρμογή, εξαλείφοντας πολλές προσαρμοσμένες έννοιες που απαιτούνται για την υποστήριξη του HTTP / 2. Η ροή δεδομένων μπορεί πλέον να εντοπιστεί πιο εύκολα, από εκδότες αιτήματος σε επίπεδο χρήστη και εκδότες απόκρισης έως την υποκείμενη υποδοχή. Αυτό μειώνει την πολυπλοκότητα και μεγιστοποιεί την πιθανότητα επαναχρησιμοποίησης μεταξύ HTTP / 1 και HTTP / 2.
  • Ο συλλέκτης σκουπιδιών Epsilon, που χρεώνεται ως συλλέκτης "no-op", θα χειριστεί την κατανομή μνήμης χωρίς να εφαρμόσει πραγματικούς μηχανισμούς ανάκτησης μνήμης. Οι περιπτώσεις χρήσης του Epsilon περιλαμβάνουν δοκιμή απόδοσης, πίεση μνήμης και διεπαφή εικονικής μηχανής. Θα μπορούσε επίσης να χρησιμοποιηθεί για δουλειές μικρής διάρκειας.
  • Μια τοπική-μεταβλητή σύνταξη για lambda παραμέτρους θα πρέπει να ευθυγραμμίσει τη σύνταξη μιας τυπικής δήλωσης παραμέτρων σε μια σιωπηρά δακτυλογραφημένη έκφραση με τη σύνταξη μιας τοπικής μεταβλητής δήλωσης. Αυτό θα επέτρεπε var για χρήση κατά τη δήλωση τυπικών παραμέτρων μιας σιωπηρά δακτυλογραφημένης έκφρασης λάμδα.
  • Η μορφή Java class-file θα επεκταθεί για να υποστηρίξει μια νέα σταθερή φόρμα συγκέντρωσης, CONSTANT_Δυναμικό. Ο στόχος είναι να μειωθεί το κόστος και η αναστάτωση της ανάπτυξης νέων μορφών υλοποιήσιμων περιορισμών κατηγορίας αρχείων.
  • Η βασική συμφωνία με την κρυπτογράφηση Curve25519 και Curve448 θα πρέπει να είναι πιο αποτελεσματική και ασφαλής από την υπάρχουσα ελλειπτική καμπύλη Diffie-Hellman. Οι δύο ελλειπτικές καμπύλες, οι καμπύλες Curve25510 και Curve448, προσφέρονται για εφαρμογή σε σταθερό χρόνο και χωρίς κλιμακωτό πολλαπλασιασμό που είναι πιο ανθεκτικός σε μια σειρά επιθέσεων πλευρικού καναλιού, συμπεριλαμβανομένων επιθέσεων συγχρονισμού και προσωρινής μνήμης, σύμφωνα με το IETF. Οι στόχοι της πρότασης περιλαμβάνουν ένα API και την εφαρμογή του βασικού σχήματος συμφωνίας, καθώς και την ανάπτυξη μιας ανεξάρτητης από την πλατφόρμα, ολοκληρωμένης εφαρμογής Java. Ωστόσο, υπάρχει κίνδυνος στην πολυπλοκότητα και την λεπτότητα της αρθρωτικής αριθμητικής εφαρμογής που εμφανίζεται ως μέρος της πρότασης.
  • Το Flight Recorder θα παρέχει ένα πλαίσιο συλλογής δεδομένων χαμηλού κόστους για την αντιμετώπιση προβλημάτων τόσο των εφαρμογών Java όσο και του HotSpot JVM. Το Flight Recorder ήταν ένα χαρακτηριστικό του εμπορικού JDK της Oracle, αλλά ο πηγαίος κώδικας του θα μεταφερθεί σε ένα ανοιχτό αποθετήριο για να κάνει τη λειτουργία γενικά διαθέσιμη. Το Iclouded θα είναι τα API για την παραγωγή και την κατανάλωση δεδομένων ως συμβάντων, παρέχοντας έναν μηχανισμό προσωρινής αποθήκευσης και δυαδική μορφή δεδομένων και επιτρέποντας τη διαμόρφωση και το φιλτράρισμα των συμβάντων. Η πρόταση ζητά επίσης την παροχή εκδηλώσεων για βιβλιοθήκες OS, HotSpot και JDK.
  • Αναβάθμιση των API της πλατφόρμας για υποστήριξη του Unicode Version 10.0, διατηρώντας έτσι την Java ενημερωμένη. Η υποστήριξη αναμένεται στις ακόλουθες κατηγορίες:
    • Χαρακτήρας καιΣειρά στο lang πακέτο
    • NumericShaper στο awt.font πακέτο
    • Μπίντι, BreakIterator, και Ομαλοποιητής στο κείμενο πακέτο
  • Εφαρμογή των κρυπτογραφικών αλγορίθμων ChaCha20 και Poly1305. Το ChaCha2020 είναι ένα σχετικά νέο κρυπτογράφηση ροής που μπορεί να αντικαταστήσει τον παλαιότερο, ανασφαλή κρυπτογράφηση ροής R4. Το ChaCha20 θα συνδυαστεί με τον έλεγχο ταυτότητας Poly1305. Οι εφαρμογές ChaCha20 και ChaCha20-Poly1305 θα παρέχονται, με τους αλγόριθμους που εφαρμόζονται στον πάροχο SunJCE (Java Cryptography Extension), χρησιμοποιώντας το crypto.CipherSpi API.
  • Βελτίωση της εκκίνησης Java για την εκτέλεση ενός προγράμματος που παρέχεται ως ένα μόνο αρχείο του πηγαίου κώδικα Java, ώστε αυτά τα προγράμματα να μπορούν να εκτελούνται απευθείας από την πηγή. Τα προγράμματα ενός αρχείου είναι κοινά όταν γράφετε μικρά βοηθητικά προγράμματα ή για προγραμματιστές στα πρώτα στάδια της εκμάθησης Java. Επίσης, ένα αρχείο πηγής μπορεί να μεταγλωττιστεί σε πολλαπλά αρχεία κατηγορίας, το οποίο προσθέτει γενικά τη συσκευασία. Σε αυτά τα πλαίσια, το να πρέπει να συντάξετε ένα πρόγραμμα πριν το εκτελέσετε είναι απλώς ένα περιττό βήμα βασισμένο στην παράδοση.
  • Χαμηλό προφίλ επικεφαλής σωρού, παρέχοντας έναν τρόπο δειγματοληψίας εκχωρήσεων σωρού Java, προσβάσιμων μέσω διεπαφής εργαλείων JVM. Ο στόχος αυτής της προσπάθειας είναι να πάρει πληροφορίες σχετικά με αυτές τις κατανομές με τρόπο που είναι χαμηλός, μπορεί να προσεγγιστεί μέσω μιας διεπαφής μέσω προγραμματισμού και να δειγματοληψεί όλες τις κατανομές. Η ανεξαρτησία από την εφαρμογή και η παροχή δεδομένων για ζωντανά και νεκρούς σωρούς είναι επίσης στόχοι. Η κακή διαχείριση σωρού μπορεί να οδηγήσει σε εξάντληση σωρών και αλλοίωση της συλλογής απορριμμάτων. Τα περισσότερα εργαλεία που αντιμετωπίζουν αυτό δεν διαθέτουν τον ιστότοπο κλήσεων για συγκεκριμένες εκχωρήσεις, πληροφορίες που μπορεί να είναι κρίσιμες για τον εντοπισμό σφαλμάτων σε θέματα μνήμης.
  • Κατάργηση των εργαλείων Pack200 και Unpack200 και το API Pack200 σε util.jar. Το Pack200 είναι ένα σχήμα συμπίεσης για αρχεία .jar, με σκοπό τη μείωση των απαιτήσεων δίσκου και εύρους ζώνης για τη συσκευασία, τη μετάδοση και την παράδοση εφαρμογών. Το κόστος συντήρησης και η χαμηλή χρήση δεν δικαιολογούν τη διατήρησή τους, λένε οι επικεφαλής του έργου.
  • Ο Z Garbage Collector (ZGC), ένας πειραματικός συλλέκτης σκουπιδιών χαμηλού λανθάνοντος χρόνου, για να χειριστεί σωρούς που κυμαίνονται από σχετικά μικρά έως πολύ μεγάλα σωρούς που έχουν μέγεθος πολλά terabyte. Χρησιμοποιώντας το ZGC, οι χρόνοι παύσης δεν πρέπει να υπερβαίνουν τα 10 ms και δεν πρέπει να υπάρχει περισσότερο από 15% μείωση της απόδοσης της εφαρμογής σε σύγκριση με τη χρήση του συλλέκτη G1. Το ZGC θέτει επίσης τα θεμέλια για μελλοντικές δυνατότητες και βελτιστοποιήσεις. Το Linux / x64 θα είναι η πρώτη πλατφόρμα που θα λάβει υποστήριξη ZGC.

Τι έχει αφαιρεθεί από το Java JDK 11

Τα Java EE EE και CORBA modules καταργήθηκαν στο Java SE 9, με την πρόθεση να τα καταργήσουν σε μια μεταγενέστερη έκδοση - που είναι JDK 11.

Το Java SE 6, που κυκλοφόρησε τον Δεκέμβριο του 2006, είχε συμπεριλάβει μια πλήρη στοίβα υπηρεσιών Ιστού για την ευκολία των προγραμματιστών - συμπεριλαμβανομένων τεσσάρων τεχνολογιών που έχουν δημιουργηθεί για την πλατφόρμα Java EE: JAX-WS (Java API για υπηρεσίες Web που βασίζεται σε XML, JAXB (Java Architecture for XML Binding), JAF (JavaBeans Activation Framework) και Κοινές σχολιασμοί για Java. Με την πάροδο του χρόνου, οι εκδόσεις Java EE εξελίχθηκαν, οδηγώντας σε δυσκολίες στο Java SE, όπως η συμπερίληψη τεχνολογιών άσχετων με το Java SE και πιο δύσκολη συντήρηση σε δύο Java Με ανεξάρτητες εκδόσεις των τεχνολογιών Java EE που διατίθενται από ιστότοπους τρίτων, η Oracle λέει ότι δεν υπάρχει πλέον ανάγκη να τις έχουμε στο Java SE ή στο JDK.

Παρόλα αυτά, ορισμένες εφαρμογές δεν θα μεταγλωττιστούν ή θα εκτελεστούν εάν βασίζονται σε υποστήριξη εκτός του πλαισίου στο JDK για Java EE APIs και εργαλεία. Οι δυαδικές ασυμβατότητες και οι πηγές θα προκύψουν κατά τη μετεγκατάσταση του JDK 6, 7 ή 8 σε μεταγενέστερη έκδοση. Η Oracle λέει ότι οι προγραμματιστές που επηρεάζονται από αυτούς τους κινδύνους μπορούν να αναπτύξουν εναλλακτικές εκδόσεις των τεχνολογιών Java EE.

Η CORBA χρονολογείται από τη δεκαετία του 1990 και η Oracle λέει ότι σήμερα δεν υπάρχει σημαντικό ενδιαφέρον για την ανάπτυξη σύγχρονων εφαρμογών Java με το CORBA. Και το κόστος διατήρησης της υποστήριξης CORBA υπερτερεί των υπόλοιπων οφελών του.

Ωστόσο, η κατάργηση του CORBA κινδυνεύει να έχει υλοποιήσεις CORBA που δεν θα εκτελεστούν εάν περιλαμβάνουν μόνο ένα υποσύνολο API CORBA και αναμένουν ότι το JDK θα παρέχει το υπόλοιπο. Δεν υπάρχει έκδοση CORBA τρίτου μέρους και είναι αβέβαιο εάν ένα τρίτο μέρος θα μπορούσε να αναλάβει τη συντήρηση API CORBA.

Το JavaFX καταργείται, έτσι δεν συνδέεται με το πρόγραμμα ενημέρωσης δύο φορές το χρόνο της Java JDK.

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