Κυκλοφόρησαν τα Java SE 27 και OpenJDK 27

Μετά από έξι μήνες ανάπτυξης, η Oracle κυκλοφόρησε την έκδοση Java SE 27 (Java Platform, Standard Edition 27), η οποία χρησιμοποιεί το έργο OpenJDK ανοιχτού κώδικα ως υλοποίηση αναφοράς. Με εξαίρεση την αφαίρεση ορισμένων απαρχαιωμένων λειτουργιών, η Java SE 27 διατηρεί συμβατότητα με προηγούμενες εκδόσεις της πλατφόρμας Java—τα περισσότερα έργα Java που έχουν γραφτεί προηγουμένως θα εκτελούνται αμετάβλητα όταν εκτελούνται στη νέα έκδοση. Οι έτοιμες προς εγκατάσταση εκδόσεις της Java SE 27 (JDK, JRE και Server JRE) είναι έτοιμες για... Linux (x86_64, AArch64), Windows (x86_64) και macOS (x86_64, AArch64). Αναπτύχθηκε από το έργο OpenJDK, η υλοποίηση αναφοράς Java SE 27 είναι πλήρως ανοιχτού κώδικα υπό την άδεια GPLv2 με την εξαίρεση GNU ClassPath, η οποία επιτρέπει τη δυναμική σύνδεση με εμπορικά προϊόντα.

Η έκδοση Java SE 27 κατηγοριοποιείται ως έκδοση κανονικής υποστήριξης, με ενημερώσεις που θα κυκλοφορούν μέχρι την επόμενη έκδοση. Ο κλάδος μακροπρόθεσμης υποστήριξης (LTS) θα πρέπει να είναι Java SE 25, Java SE 21 ή Java SE 17, με ενημερώσεις που θα κυκλοφορούν μέχρι το 2033, το 2031 και το 2029, αντίστοιχα (γενικά διαθέσιμος μέχρι τον Σεπτέμβριο του 2030, του 2028 και του 2026). Η εκτεταμένη υποστήριξη για τον κλάδο Java SE 8 LTS θα συνεχιστεί μέχρι το 2030 και για την Java SE 11 μέχρι το 2032.

Οι αλλαγές στην έκδοση Java SE 27 (1, 2, 3, 4) περιλαμβάνουν:

  • Από προεπιλογή, όλα τα περιβάλλοντα χρησιμοποιούν τον συλλέκτη απορριμμάτων G1 (Garbage-First), ο οποίος χρησιμοποιούνταν προηγουμένως για συστήματα διακομιστών. Το G1 έχει βελτιστοποιηθεί για χρήση σε συστήματα πολλαπλών επεξεργαστών με μεγάλες χωρητικότητες μνήμης και για την εξισορρόπηση της προβλέψιμης καθυστέρησης με την υψηλή απόδοση. Κατά τη λειτουργία, το G1 διαιρεί τη μνήμη σε πολλές μικρές περιοχές και δίνει προτεραιότητα σε εκείνες τις περιοχές με περισσότερα αχρησιμοποίητα αντικείμενα και λιγότερο ενεργά προσβάσιμα δεδομένα.
  • Η HotSpot JVM χρησιμοποιεί κεφαλίδες συμπαγών αντικειμένων από προεπιλογή. Σε συστήματα 64-bit, το μέγεθος της κεφαλίδας έχει μειωθεί από 96 σε 64 bit, μειώνοντας την κατανάλωση μνήμης και αυξάνοντας την πιθανότητα τα δεδομένα να εισέλθουν στην προσωρινή μνήμη του επεξεργαστή. Στα benchmarks SPECjbb2015, η κατανάλωση μνήμης μειώθηκε κατά 22%, το φορτίο της CPU μειώθηκε κατά 8% και ο αριθμός των λειτουργιών συλλογής απορριμμάτων μειώθηκε κατά 15%. Οι χρόνοι εκτέλεσης δοκιμών για τον αναλυτή JSON μειώθηκαν κατά 10%.
  • Η υλοποίηση TLS 1.3 προσθέτει υποστήριξη για υβριδικά σχήματα συμφωνίας κλειδιών που συνδυάζουν τον κβαντικά ανθεκτικό αλγόριθμο ML-KEM (CRYSTALS-Kyber) με τους κλασικούς αλγόριθμους ελλειπτικής καμπύλης ECDHE: X25519MLKEM768 (ECDHE με την καμπύλη X25519 + ML-KEM-768), SecP256r1MLKEM76 (ECDHE με την καμπύλη secp256r1 + ML-KEM-768) και SecP384r1MLKEM1024 (ECDHE με την καμπύλη secp384r1 + ML-KEM-1024). Στο API javax.net.ssl Αυτά τα σχήματα είναι ενεργοποιημένα από προεπιλογή και δεν απαιτούν αλλαγές στην εφαρμογή για να χρησιμοποιηθούν.
  • Το JDK Flight Recorder (JFR), ένα εργαλείο που χρησιμοποιείται για την παρακολούθηση της απόδοσης, τη δημιουργία προφίλ και τα διαγνωστικά, υποστηρίζει πλέον την απολύμανση ορισμάτων γραμμής εντολών, αρχικών τιμών μεταβλητών περιβάλλοντος και ιδιοτήτων συστήματος σε αποθηκευμένες διαγνωστικές πληροφορίες. Αυτή η αλλαγή αποτρέπει τη διαρροή ευαίσθητων δεδομένων που υποβάλλονται σε επεξεργασία από τη διαδικασία με προφίλ, όπως διακριτικά εξουσιοδότησης και κλειδιά πρόσβασης API που διαβιβάζονται μέσω μεταβλητών περιβάλλοντος.
  • Η τρίτη προεπισκόπηση του API Lazy Constants έχει υλοποιηθεί για εργασία με αντικείμενα που περιέχουν αμετάβλητα δεδομένα και αντιμετωπίζονται ως σταθερές στην JVM. Βελτιστοποιήσεις απόδοσης παρόμοιες με αυτές για πεδία με τη λέξη-κλειδί "final" εφαρμόζονται σε τέτοια αντικείμενα. Σε αντίθεση με το "final", το νέο API διαχωρίζει τη δημιουργία σταθερών τιμών από την αρχικοποίησή τους, εγγυάται ότι μια τιμή μπορεί να αρχικοποιηθεί μόνο μία φορά, μειώνει τον χρόνο εκκίνησης του προγράμματος και επιτρέπει τη χρήση βελτιστοποιήσεων αναδίπλωσης σταθερών στον κώδικα χρήστη, που χρησιμοποιούνταν προηγουμένως μόνο στον εσωτερικό κώδικα JDK. class Application { // Προηγουμένως: // static final UserService USERS = new UserService(); // Τώρα: static final StableValue ΧΡΗΣΤΕΣ = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • Η μηχανή αντιστοίχισης προτύπων εισάγει ένα πέμπτο προσχέδιο της δυνατότητας χρήσης πρωτόγονων τύπων (int, byte, char και άλλων βασικών τύπων που δεν είναι αντικείμενα) σε όλα τα είδη προτύπων, στον τελεστή instanceof και σε μπλοκ διακόπτη. switch (x.getStatus()) { case 0 -> "okay"; case 1 -> "warning"; case 2 -> "error"; case int i -> "unknown status: " + i; } if (i instanceof byte b) { … b … }
  • Το έβδομο προσχέδιο του Structured Concurrency API, το οποίο απλοποιεί την ανάπτυξη πολυνηματικών εφαρμογών αντιμετωπίζοντας πολλαπλές εργασίες που εκτελούνται σε διαφορετικά νήματα ως μία μονάδα, κυκλοφόρησε για δοκιμή.
  • Η δωδέκατη δοκιμαστική υλοποίηση του Vector API έχει υλοποιηθεί. Αυτό το API παρέχει συναρτήσεις για διανυσματικούς υπολογισμούς που εκτελούνται χρησιμοποιώντας εντολές διανυσματικών εντολών του επεξεργαστή x86_64 και AArch64 και επιτρέπει ταυτόχρονες λειτουργίες σε πολλαπλές τιμές (SIMD). Σε αντίθεση με την αυτόματη διανυσματοποίηση των βαθμωτών λειτουργιών του μεταγλωττιστή HotSpot JIT, το νέο API επιτρέπει τον σαφή έλεγχο της διανυσματοποίησης για παράλληλη επεξεργασία δεδομένων.
  • Ένα τρίτο προσχέδιο του API είναι πλέον διαθέσιμο για την κωδικοποίηση και αποκωδικοποίηση αντικειμένων που περιέχουν κρυπτογραφικά κλειδιά, πιστοποιητικά και λίστες ανάκλησης πιστοποιητικών χρησιμοποιώντας τη μορφή PEM (Privacy-Enhanced Mail).

Επιπλέον, είμαστε στην ευχάριστη θέση να ανακοινώσουμε την κυκλοφορία μιας ενημέρωσης στην πλατφόρμα JavaFX 27 για τη δημιουργία εφαρμογών γραφικής διεπαφής χρήστη. Η κυκλοφορία της καθολικής εικονικής μηχανής GraalVM 27, η οποία υποστηρίζει την εκτέλεση εφαρμογών σε JavaScript (Node.js), Python, Ruby, R, οποιαδήποτε γλώσσα JVM (Java, Scala, Clojure, Kotlin) και γλώσσες για τις οποίες μπορεί να δημιουργηθεί bitcode LLVM (C, C++, Rust), αναμένεται επίσης τις επόμενες ώρες.

Πηγή: opennet.ru

Αγοράστε αξιόπιστη φιλοξενία για ιστότοπους με προστασία DDoS, διακομιστές VPS VDS 🔥 Αγοράστε αξιόπιστη φιλοξενία ιστοσελίδων με προστασία DDoS, διακομιστές VPS VDS | ProHoster