Μετά από έξι μήνες ανάπτυξης, Η Oracle κυκλοφόρησε την κυκλοφορία του τη νέα έκδοση του JavaSE 18 (Standard Edition), το οποίο χρησιμοποιεί το έργο ανοιχτού κώδικα OpenJDK ως υλοποίηση αναφοράς.
Σε αυτή τη νέα έκδοση της Java έρχεται το SE 18 με εξαίρεση το αφαίρεση ορισμένων καταργημένων λειτουργιών, διατηρεί τη συμβατότητα με παλαιότερες εκδόσεις της πλατφόρμας Java και τα περισσότερα έργα Java που γράφτηκαν στο παρελθόν θα συνεχίσουν να λειτουργούν χωρίς αλλαγές όταν εκτελούνται με τη νέα έκδοση.
Κύρια νέα χαρακτηριστικά του Java SE 18
Σε αυτήν τη νέα έκδοση της Java SE 18 που κυκλοφόρησε, η προεπιλεγμένη κωδικοποίηση είναι UTF-8. Java API που επεξεργάζονται δεδομένα κειμένου με κωδικοποίηση χαρακτήρων θα χρησιμοποιεί πλέον το UTF-8 από προεπιλογή σε όλες τις πλατφόρμες, ανεξάρτητα από τις ρυθμίσεις συστήματος και τις τοπικές ρυθμίσεις. Για να επιστρέψετε την παλιά συμπεριφορά, όπου η κωδικοποίηση επιλέγεται λαμβάνοντας υπόψη τις τοπικές ρυθμίσεις του συστήματος, μπορείτε να χρησιμοποιήσετε την παράμετρο “-Dfile.encoding=COMPAT”.
Μια άλλη από τις αλλαγές που ξεχωρίζει είναι αυτός επανασχεδίασε την υλοποίηση του java.lang.reflect API (Core Reflection), σχεδιασμένο για τη λήψη πληροφοριών σχετικά με μεθόδους, πεδία και κατασκευαστές κλάσεων, καθώς και πρόσβαση στην εσωτερική δομή των κλάσεων. API java.lang.reflect η ίδια δεν έχει αλλάξει, αλλά τώρα υλοποιείται χρησιμοποιώντας τα αναγνωριστικά των μεθόδων που παρέχονται από την ενότητα 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 y πρόσβαση στη μνήμη που δεν διαχειρίζεται η JVM. Για παράδειγμα, μπορείτε να καλέσετε συναρτήσεις από εξωτερικές κοινόχρηστες βιβλιοθήκες και να αποκτήσετε πρόσβαση σε δεδομένα διεργασίας χωρίς να χρησιμοποιήσετε το JNI.
Προστέθηκε ένα δεύτερη πειραματική εφαρμογή αντιστοίχισης προτύπων σε εκφράσεις διακόπτης, το οποίο σας επιτρέπει να χρησιμοποιείτε ευέλικτα πρότυπα αντί για ακριβείς τιμές σε ετικέτες "περίπτωσης", καλύπτοντας έναν αριθμό τιμών ταυτόχρονα, οι οποίες προηγουμένως απαιτούσαν δυσκίνητες σειρές εκφράσεων "if...else".
περιλαμβάνεται πακέτο com.sun.net.httpserver, ο οποίος περιλαμβάνει το βοηθητικό πρόγραμμα jwebserver και το API από τη βιβλιοθήκη με την υλοποίηση από έναν απλό διακομιστή http για την προβολή στατικού περιεχομένου (το CGI και οι ελεγκτές τύπου servlet δεν υποστηρίζονται). Ο ενσωματωμένος διακομιστής http δεν είναι βελτιστοποιημένος για φόρτους εργασίας και δεν υποστηρίζει έλεγχο πρόσβασης ή έλεγχο ταυτότητας, καθώς έχει σχεδιαστεί κυρίως για χρήση στη διαδικασία ανάπτυξης πρωτοτύπων, εντοπισμού σφαλμάτων και δοκιμών έργων.
Από τις άλλες αλλαγές που ξεχωρίζουν:
- Το JavaDoc υποστηρίζει την ετικέτα "@snippet» για να ενσωματώσετε παραδείγματα εργασίας και αποσπάσματα κώδικα σε τεκμηρίωση API, στα οποία μπορείτε να προσπελάσετε με εργαλεία επικύρωσης, επισήμανσης σύνταξης και ενσωμάτωσης IDE.
- Καταργήθηκε και θα καταργηθεί σε μελλοντική έκδοση, ο μηχανισμός ολοκλήρωσης καθώς και σχετικές μέθοδοι όπως π.χ Object.finalize(), Enum.finalize(), Runtime.runFinalization() και System.runFinalization().
- τους σκουπιδοσυλλέκτες ZGC (Z Garbage Collector), SerialGC και ParallelGC υποστηρίζουν την αφαίρεση των συμβολοσειρών.
JavaSE 18 ταξινομείται ως κανονική έκδοση υποστήριξης, με ενημερώσεις που θα κυκλοφορήσουν πριν από την επόμενη έκδοση. Ο κλάδος μακροπρόθεσμης υποστήριξης (LTS) θα πρέπει να είναι η Java SE 17, η οποία θα λαμβάνει ενημερώσεις μέχρι το 2029.
Είναι σημαντικό να θυμάστε ότι ξεκινώντας με την έκδοση Java 10, το έργο άλλαξε σε μια νέα διαδικασία ανάπτυξης, που σημαίνει έναν συντομότερο κύκλο για τη δημιουργία νέας έκδοσης. Νέα λειτουργικότητα αναπτύσσεται τώρα σε ένα συνεχώς ενημερωμένο κύριο υποκατάστημα, το οποίο περιλαμβάνει αλλαγές που έχουν ήδη ολοκληρωθεί και από το οποίο διακλαδίζονται υποκαταστήματα κάθε έξι μήνες για τη σταθεροποίηση των νέων εκδόσεων.
Αποκτήστε Java SE 18
Για όσους ενδιαφέρονται να μπορούν να δοκιμάσουν αυτήν τη νέα έκδοση, θα πρέπει να γνωρίζουν ότι οι εκδόσεις είναι έτοιμες για Linux (x86_64, AArch64), Windows (x86_64) και macOS (x86_64, AArch64) και μπορούν να αποκτηθούν από τον παρακάτω σύνδεσμο.