Κυκλοφορία Java SE 18

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

Το Java SE 18 κατηγοριοποιείται ως κανονική έκδοση υποστήριξης, με ενημερώσεις που θα κυκλοφορούν πριν από την επόμενη έκδοση. Ο κλάδος μακροπρόθεσμης υποστήριξης (LTS) θα πρέπει να είναι η Java SE 17, η οποία θα λαμβάνει ενημερώσεις μέχρι το 2029. Θυμηθείτε ότι ξεκινώντας με την κυκλοφορία της Java 10, το έργο μεταπήδησε σε μια νέα διαδικασία ανάπτυξης, η οποία συνεπάγεται έναν συντομότερο κύκλο για τη δημιουργία νέων εκδόσεων. Νέα λειτουργικότητα αναπτύσσεται τώρα σε ένα διαρκώς ενημερωμένο κύριο υποκατάστημα, το οποίο ενσωματώνει ήδη ολοκληρωμένες αλλαγές και από το οποίο διακλαδίζονται υποκαταστήματα κάθε έξι μήνες για τη σταθεροποίηση των νέων εκδόσεων.

Οι νέες δυνατότητες στην Java 18 περιλαμβάνουν:

  • Από προεπιλογή, η κωδικοποίηση είναι UTF-8. Τα Java API που επεξεργάζονται δεδομένα κειμένου με βάση την κωδικοποίηση χαρακτήρων θα χρησιμοποιούν πλέον το UTF-8 από προεπιλογή σε όλες τις πλατφόρμες, ανεξάρτητα από τις ρυθμίσεις συστήματος και τις ρυθμίσεις τοπικών ρυθμίσεων. Για να επιστρέψετε στην παλιά συμπεριφορά, όπου η κωδικοποίηση επιλέγεται με βάση τις τοπικές ρυθμίσεις του συστήματος, μπορείτε να χρησιμοποιήσετε την επιλογή "-Dfile.encoding=COMPAT".
  • Το πακέτο περιλαμβάνει το πακέτο com.sun.net.httpserver, το οποίο περιλαμβάνει το βοηθητικό πρόγραμμα jwebserver και το API βιβλιοθήκης με την υλοποίηση ενός απλού διακομιστή http για την εξυπηρέτηση στατικού περιεχομένου (δεν υποστηρίζονται χειριστές CGI και servlet). Ο ενσωματωμένος διακομιστής HTTP δεν είναι βελτιστοποιημένος για φόρτους εργασίας και δεν υποστηρίζει έλεγχο πρόσβασης και έλεγχο ταυτότητας, καθώς στοχεύει κυρίως στη χρήση στη διαδικασία ανάπτυξης για πρωτότυπα, εντοπισμό σφαλμάτων και δοκιμές έργων.
  • Το JavaDoc παρέχει υποστήριξη για την ετικέτα "@snippet" για την ενσωμάτωση παραδειγμάτων εργασίας και αποσπασμάτων κώδικα στην τεκμηρίωση API, όπου μπορείτε να χρησιμοποιήσετε εργαλεία επικύρωσης, επισήμανση σύνταξης και ενσωμάτωση IDE.
  • Η υλοποίηση του java.lang.reflect API (Core Reflection), που έχει σχεδιαστεί για τη λήψη πληροφοριών σχετικά με μεθόδους, πεδία και κατασκευαστές κλάσεων, καθώς και πρόσβαση στην εσωτερική δομή των κλάσεων, έχει επανασχεδιαστεί. Το ίδιο το java.lang.reflect API παραμένει αμετάβλητο, αλλά τώρα υλοποιείται χρησιμοποιώντας χειρισμούς μεθόδων που παρέχονται από τη λειτουργική μονάδα java.lang.invoke, αντί να χρησιμοποιεί γεννήτριες bytecode. Η αλλαγή μας επέτρεψε να ενοποιήσουμε τις υλοποιήσεις των java.lang.reflect και java.lang.invoke και να απλοποιήσουμε τη συντήρησή τους.
  • Έχει προταθεί μια τρίτη προεπισκόπηση του Vector API, η οποία παρέχει λειτουργίες για υπολογισμούς διανυσμάτων που εκτελούνται χρησιμοποιώντας διανυσματικές οδηγίες στους επεξεργαστές x86_64 και AArch64 και επιτρέπουν την ταυτόχρονη εφαρμογή λειτουργιών σε πολλαπλές τιμές (SIMD). Σε αντίθεση με τις δυνατότητες που παρέχονται στον μεταγλωττιστή HotSpot JIT για αυτόματη διανυσματοποίηση βαθμωτών λειτουργιών, το νέο API καθιστά δυνατό τον ρητό έλεγχο της διανυσματοποίησης για παράλληλη επεξεργασία δεδομένων.
  • Προστέθηκε διεπαφή SPI (διεπαφή παρόχου υπηρεσιών) για την επίλυση ονομάτων κεντρικών υπολογιστών και διευθύνσεων IP, επιτρέποντάς σας να χρησιμοποιείτε εναλλακτικές λύσεις επίλυσης στο java.net.InetAddress που δεν συνδέονται με χειριστές που προσφέρονται από το λειτουργικό σύστημα.
  • Παρέχεται μια δεύτερη προεπισκόπηση του Foreign Function & Memory API, που επιτρέπει στις εφαρμογές να αλληλεπιδρούν με κώδικα και δεδομένα εκτός του χρόνου εκτέλεσης Java. Το νέο API σάς επιτρέπει να καλείτε αποτελεσματικά λειτουργίες που δεν είναι JVM και να έχετε πρόσβαση στη μνήμη που δεν διαχειρίζεται JVM. Για παράδειγμα, μπορείτε να καλέσετε συναρτήσεις από εξωτερικές κοινόχρηστες βιβλιοθήκες και να αποκτήσετε πρόσβαση σε δεδομένα διεργασίας χωρίς να χρησιμοποιήσετε το JNI.
  • Προστέθηκε μια δεύτερη πειραματική εφαρμογή αντιστοίχισης προτύπων σε εκφράσεις "διακόπτης", επιτρέποντας τη χρήση ευέλικτων μοτίβων σε ετικέτες "περίπτωσης" αντί για ακριβείς τιμές, καλύπτοντας μια σειρά από τιμές ταυτόχρονα, για τις οποίες προηγουμένως ήταν απαραίτητο να χρησιμοποιηθούν δυσκίνητες αλυσίδες εκφράσεων «αν...άλλο». Αντικείμενο o = 123L; String formatted = switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); προεπιλογή -> o.toString(); };
  • Ο μηχανισμός οριστικοποίησης και οι σχετικές μέθοδοι όπως Object.finalize(), Enum.finalize(), Runtime.runFinalization() και System.runFinalization() έχουν καταργηθεί και θα απενεργοποιηθούν σε μελλοντική έκδοση.
  • Οι συλλέκτες απορριμμάτων ZGC (Z Garbage Collector), SerialGC και ParallelGC υποστηρίζουν την αφαίρεση των γραμμών.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο