Η τελευταία αναθεώρηση της Java εισάγει κάποια χρήσιμη σύνταξη για τα Records, μεταξύ άλλων βελτιώσεων.

Ο κόσμος του προγραμματισμού Java εξελίσσεται συνεχώς, απαιτώντας από εσάς να παραμένετε ενημερωμένοι για να διαπρέψετε στην τέχνη σας.

Η Java 21 φέρνει ένα κύμα συναρπαστικών βελτιώσεων που φέρνουν επανάσταση στον τρόπο με τον οποίο προσεγγίζετε τη συγχρονισμό, τις λειτουργίες συλλογής και την εργασία με εγγραφές.

Παρουσιάζοντας τα εικονικά νήματα

Η κλιμάκωση των εφαρμογών διακομιστών ανέκαθεν παρουσίαζε προκλήσεις, με τα νήματα να γίνονται συχνά σημεία συμφόρησης. Ο περιορισμένος αριθμός νημάτων, σε συνδυασμό με τη συχνή αναμονή για ξεμπλοκάρισμα συμβάντων ή κλειδαριών, εμποδίζει τη συνολική απόδοση.

Στο παρελθόν, η αντιμετώπιση αυτού του ζητήματος περιλάμβανε τη χρήση δομών όπως CompletableFuture ή αντιδραστικά πλαίσια, με αποτέλεσμα τον περίπλοκο κώδικα που ήταν δύσκολο να κατανοηθεί και να διατηρηθεί.

Ευτυχώς, η Java 19 εισήγαγε εικονικά νήματα ως δυνατότητα προεπισκόπησης, τα οποία η Java 21 έχει βελτιώσει και στερεοποιήσει μέσω του JDK Enhancement Proposal 444.

instagram viewer

Τα εικονικά νήματα προσφέρουν μια πολλά υποσχόμενη εναλλακτική λύση, επιτρέποντάς σας να αντιμετωπίζετε πιο αποτελεσματικά τις προκλήσεις επεκτασιμότητας. Αυτό οδηγεί σε βελτιωμένη απόδοση και βελτιωμένη απόκριση των εφαρμογών διακομιστή.

Οι συλλογές με ακολουθία είναι περισσότερο χρησιμοποιήσιμες

Παραδοσιακά, χρησιμοποιώντας συνδεδεμένες λίστες στον προγραμματισμό Java έχει απαιτήσει πολύ αναλυτικό κώδικα. Για παράδειγμα, για να ανακτήσετε το τελευταίο στοιχείο, πρέπει να χρησιμοποιήσετε αυτήν την περίπλοκη προσέγγιση:

var last = list.get (list.size() - 1);

Ωστόσο, η Java 21 εισάγει μια συνοπτική και κομψή εναλλακτική:

var last = list.getLast();

Ομοίως, η πρόσβαση στο πρώτο στοιχείο ενός LinkedHashSet απαιτεί μια κυκλική διαδρομή:

var first = linkedHashSet.iterator().next();

Αλλά με την Java 21, αυτή η εργασία γίνεται πολύ πιο απλή:

var first = linkedHashSet.getFirst();

Μπορείτε επίσης να αποκτήσετε πρόσβαση στο τελευταίο στοιχείο ενός LinkedHashSet χρησιμοποιώντας το νέο getLast μέθοδο που αποφεύγει την επανάληψη σε ολόκληρο το σύνολο.

Αυτές οι βελτιώσεις στις διαδοχικές συλλογές όχι μόνο ενισχύουν την αναγνωσιμότητα κώδικα, αλλά και απλοποιούν την ανάκτηση στοιχείων, καθιστώντας τον προγραμματισμό Java πιο αποτελεσματικό και φιλικό προς τους προγραμματιστές.

Εγγραφή μοτίβων για ευκολία

Τα Μοτίβα Εγγραφής, που εισήχθησαν ως δυνατότητα προεπισκόπησης στην Java 19, προσφέρουν έναν βολικό μηχανισμό για την πρόσβαση στα πεδία μιας εγγραφής σε Java χωρίς την ανάγκη ρητών εκπομπών ή μεθόδων πρόσβασης.

Συνεργάζονται με Αντιστοίχιση προτύπων για παράδειγμα και Αντιστοίχιση μοτίβων για διακόπτη, απλοποιώντας σημαντικά τον κώδικα και ενισχύοντας τη συνολική αναγνωσιμότητα.

Ακολουθεί μια απεικόνιση αυτής της ιδέας, με ένα απλό αρχείο που ονομάζεται Θέση:

δημόσιο Ρεκόρ Θέση(ενθ Χ, ενθ y){}

Προηγουμένως, απαιτούνταν η εκτέλεση διαφορετικών ενεργειών με βάση την κλάση ενός αντικειμένου Αντιστοίχιση προτύπων για παράδειγμα, όπως φαίνεται στο ακόλουθο απόσπασμα κώδικα:

δημόσιοκενόςΤυπώνω(Αντικείμενο o){
αν (ο παράδειγμα του Θέση p) {
System.out.printf("o είναι μια θέση: %d/%d%n", p.x(), p.y());
} αλλούαν (ο παράδειγμα του Συμβολοσειρά s) {
System.out.printf("o είναι μια συμβολοσειρά: %s%n", s);
} αλλού {
System.out.printf("o είναι κάτι άλλο: %s%n", o);
}
}

Με Μοτίβα εγγραφής, μπορείτε τώρα να αντιστοιχίσετε απευθείας ένα μοτίβο εγγραφής όπως π.χ Θέση (int x, int y) αντί να χρησιμοποιήσετε το Θέση σελ πρότυπο. Αυτό σας επιτρέπει να έχετε πρόσβαση στις μεταβλητές Χ και y απευθείας στον κώδικα, εξαλείφοντας την ανάγκη για p.x() και p.y():

δημόσιοκενόςΤυπώνω(Αντικείμενο o){
αν (ο παράδειγμα τουΘέση(ενθ Χ, ενθ y)) {
System.out.printf("o είναι μια θέση: %d/%d%n", x, y);
} αλλούαν (ο παράδειγμα του Συμβολοσειρά s) {
System.out.printf("o είναι μια συμβολοσειρά: %s%n", s);
} αλλού {
System.out.printf("o είναι κάτι άλλο: %s%n", o);
}
}

Επιπλέον, μπορείτε να χρησιμοποιήσετε Μοτίβα εγγραφής σε συνδυασμό με Αντιστοίχιση μοτίβων για διακόπτη, για να απλοποιήσετε περαιτέρω τον κώδικά σας:

δημόσιοκενόςΤυπώνω(Αντικείμενο o){
διακόπτης (ο) {
υπόθεσηΘέση(ενθ Χ, ενθ y) - > System.out.printf("o είναι μια θέση: %d/%d%n", x, y);
υπόθεση Συμβολοσειρά s - > System.out.printf("o είναι μια συμβολοσειρά: %s%n", s);
Προκαθορισμένο - > System.out.printf("o είναι κάτι άλλο: %s%n", o);
}
}

Ένθετα μοτίβα εγγραφής σας επιτρέπει να ταιριάξετε σε εγγραφές των οποίων τα πεδία είναι οι ίδιες εγγραφές. Για παράδειγμα, σκεφτείτε ένα αρχείο με το όνομα Μονοπάτι που περιλαμβάνει α από και προς την θέση:

δημόσιο Ρεκόρ Μονοπάτι(Θέση από, Θέση προς){}

Χρησιμοποιώντας μοτίβα εγγραφής, εκτυπώνοντας α Μονοπάτι Το αντικείμενο γίνεται πιο συνοπτικό:

δημόσιοκενόςΤυπώνω(Αντικείμενο o){
διακόπτης (ο) {
υπόθεσηΜονοπάτι(Θέση από, Θέση προς) - > System.out.printf("o είναι μια διαδρομή: %d/%d -> %d/%d%n", από.x(), από.y(), προς την.Χ(), προς την.y());
// άλλες περιπτώσεις
}
}

Με τη βοήθεια του Μοτίβα εγγραφής, ο χειρισμός εγγραφών με πεδία διαφορετικών τύπων γίνεται πιο εμφανής και ευανάγνωστος. Ας υποθέσουμε ότι έχετε τροποποιήσει εγγραφές, Θέση 2Δ και Θέση 3D, που Θέσηείναι μια διεπαφή Java που εφαρμόζουν και οι δύο:

δημόσιο σφραγισμένο διεπαφήΘέσηάδειεςΘέση 2Δ, Θέση 3D{}
δημόσιο Ρεκόρ Θέση 2Δ(ενθ Χ, ενθ y) υλοποιεί Θέση {}
δημόσιο Ρεκόρ Θέση 3D(ενθ Χ, ενθ y, ενθ z) υλοποιεί Θέση {}
δημόσιο εγγραφή Διαδρομή < P εκτείνεται Θέση > (P από, P έως) {}

Για να διαφοροποιήσετε τη συμπεριφορά εκτύπωσης για διαδρομές 2D και 3D, μπορείτε να χρησιμοποιήσετε μοτίβα εγγραφής:

δημόσιοκενόςΤυπώνω(Αντικείμενο o){
διακόπτης (ο) {
υπόθεσηΜονοπάτι(Θέση2Δ από, Θέση2Δ έως) - > System.out.printf("o είναι μια διαδρομή 2D: %d/%d -> %d/%d%n", από.x(), από.y(), προς την.Χ(), προς την.y());
υπόθεσηΜονοπάτι(Position3D από, Position3D to) - > System.out.printf("o είναι μια τρισδιάστατη διαδρομή: %d/%d/%d -> %d/%d/%d%n", από.x(), από.y(), από.z(), προς την.Χ(), προς την.y(), προς την.z());
// άλλες περιπτώσεις
}
}

Τα μοτίβα εγγραφών μειώνουν σημαντικά την πολυγλωσσία και ενισχύουν την αναγνωσιμότητα του κώδικα όταν ασχολούμαστε με εγγραφές που περιέχουν πεδία διαφορετικών τύπων.

Ξεκλειδώστε νέες δυνατότητες με Java 21

Η Java 21 εισάγει μια σειρά από ισχυρά χαρακτηριστικά που ενισχύουν τις δυνατότητες της γλώσσας προγραμματισμού Java. Αγκαλιάζοντας αυτές τις βελτιώσεις, μπορείτε να εξορθολογίσετε τις διαδικασίες ανάπτυξής σας και να ξεκλειδώσετε νέες δυνατότητες για τις εφαρμογές σας.

Η ενημέρωση με τις πιο πρόσφατες δυνατότητες γλώσσας και τα πλαίσια Java σάς δίνει τη δυνατότητα να διατηρείτε αποτελεσματικό και διατηρήσιμο κώδικα, διασφαλίζοντας ότι παραμένετε στην πρωτοπορία του προγραμματισμού Java.