Java 9 Χαρακτηριστικά και βελτιώσεις

Το αρθρωτό πλαίσιο που αναπτύχθηκε κάτω από το Project Jigsaw & μεγάλες δυνατότητες Java 9 σε αυτό το ιστολόγιο είναι το JShell (εργαλείο REPL), σημαντικές αλλαγές API και αλλαγές σε επίπεδο JVM.

Η κυκλοφορία των χαρακτηριστικών Java 9 και Java 9 αποτελεί ορόσημο για το οικοσύστημα Java.Η ενημέρωση με τις νέες κυκλοφορίες είναι σημαντική για να ενημερώνεστε για την τεχνολογία και η κατανόηση της ανάγκης πίσω από αυτό που θα εισαχθεί θα σας οδηγήσει πιο κοντά στο .Το αρθρωτό πλαίσιο που αναπτύχθηκε στο Project Jigsaw θα είναι μέρος αυτής της έκδοσης Java SE και τα κύρια χαρακτηριστικά αυτού είναι το JShell (εργαλείο REPL), σημαντικές αλλαγές API και αλλαγές σε επίπεδο JVM για τη βελτίωση της απόδοσης και της αποσφαλμάτωσης του JVM.



Προτού αποκαλύψουμε λεπτομερώς τις δυνατότητες Java 9, ας ρίξουμε μια ματιά στις προηγούμενες εκδόσεις Java και να δούμε ποιες ήταν οι αδυναμίες και πώς το Java 9 βοήθησε να ξεπεραστούν αυτές οι ανωμαλίες:



  • Η πλατφόρμα Java Standard Edition και το JDK δεν ήταν πλοήγηση για μικρές υπολογιστικές συσκευές
  • Δεν υπήρχε συνολική ασφάλεια και συντήρηση της JDK
  • Δεν υπήρχε συνολική βελτίωση στην απόδοση της εφαρμογής
  • Ήταν δύσκολο για τους προγραμματιστές Java να δημιουργήσουν και να διατηρήσουν τις βιβλιοθήκες κώδικα και τις μεγαλύτερες εφαρμογές, τόσο για τις πλατφόρμες Java SE όσο και για την ΕΕ

Σε αυτήν την ανάρτηση ιστολογίου θα κατηγοριοποιήσω τις δυνατότητες Java 9 με τον ακόλουθο τρόπο:



  1. Επεξεργασία ενημερώσεων API στην Java 9
  2. Πελάτης HTTP / 2 στην Java 9
  3. Java Shell Scripting (Read-Eval-Print-Loop) στην Java 9
  4. Δυνατότητα αρχείων JAR πολλαπλών εκδόσεων στο Java 9
  5. Περισσότερες δυνατότητες ενημερώσεων ταυτότητας στην Java 9
  6. Project Jigsaw στην Java 9

Τι νέο υπάρχει στο Java 9;

Διάλεξα μερικές νέες δυνατότητες Java 9, τις οποίες πιστεύω ότι αξίζει να γνωρίζω. Ας δούμε ποια είναι αυτά τα χαρακτηριστικά: -

Επεξεργασία ενημερώσεων API στην Java 9

Το Java Process API ήταν αρκετά πρωτόγονο,με υποστήριξη μόνο για την έναρξη νέων διαδικασιών, ανακατευθύνετε την έξοδο των διαδικασιών και τις ροές σφαλμάτων. Σε αυτήν την έκδοση, οι ενημερώσεις στο Process API ενεργοποιούν τα εξής:

  • Λήψη του PID της τρέχουσας διαδικασίας JVM και οποιωνδήποτε άλλων διαδικασιών δημιουργούνται από την JVM
  • Απαριθμήστε τις διαδικασίες που εκτελούνται στο σύστημα για να λάβετε πληροφορίες όπως PID, όνομα και χρήση πόρων
  • Διαχείριση δέντρων διεργασίας
  • Διαχείριση υποεπεξεργασιών

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



δημόσια τάξη NewFeatures {public static void main (String [] args) {ProcessHandle currentProcess = ProcessHandle.current () System.out.println ('PID:' + currentProcess.getPid ()) ProcessHandle.Info currentProcessInfo = currentProcess.info () System.out.println ('Πληροφορίες:' + currentProcessInfo)}

Πελάτης HTTP / 2 στην Java 9

Αυτή η δυνατότητα Java 9 αναμένεται να αλλάξει στις επόμενες κυκλοφορίες και μπορεί ακόμη και να αφαιρεθεί εντελώς.

Νωρίτερα Οι προγραμματιστές συχνά καταφεύγουν στη χρήση βιβλιοθηκών τρίτων, όπως το Apache HTTP, το Τζέρσεϋ και ούτω καθεξής. Εκτός από αυτό, το Java HTTP API προηγείται της προδιαγραφής HTTP / 1.1 και είναι σύγχρονο και δύσκολο να διατηρηθεί. Αυτοί οι περιορισμοί απαιτούσαν την ανάγκη προσθήκης ενός νέου API. Το νέο API πελάτη HTTP παρέχει τα εξής:

  • Ένα απλό και περιεκτικό API για την αντιμετώπιση των περισσότερων αιτημάτων HTTP
  • Υποστήριξη για προδιαγραφές HTTP / 2
  • Καλύτερη απόδοση
  • Καλύτερη ασφάλεια
  • Μερικές ακόμη βελτιώσεις

Ας δούμε ένα δείγμα κώδικα για να κάνουμε ένα αίτημα HTTP GET χρησιμοποιώντας τα νέα API. Ακολουθεί ο ορισμός της ενότητας που ορίζεται στο αρχείο module-info.java:

module newfeatures {απαιτεί jdk.incubator.httpclient}

Ο παρακάτω κώδικας χρησιμοποιεί το HTTP Client API, το οποίο αποτελεί μέρος της λειτουργικής μονάδας jdk.incubator.httpclient:

import jdk.incubator.http. * import java.net.URI δημόσια τάξη Http2Feature {public static void main (String [] args) ρίχνει την εξαίρεση {HttpClient client = HttpClient.newBuilder (). build () HttpRequest request = HttpRequest .newBuilder νέο URI (http://httpbin.org/get)) .GET () .version (HttpClient.Version.HTTP_1_1) .build () HttpResponse.String απόκριση = client.send (αίτημα, HttpResponse.BodyHandler.asString ()) System.out.println ('Κωδικός κατάστασης:' + response.statusCode ())
System.out.println ('Response Body:' + response.body ())}}}

Java Shell Scripting (Read-Eval-Print-Loop) στην Java 9

Πρέπει να έχετε δει γλώσσες, όπως Ruby, Scala, Groovy, Clojure και άλλες που στέλνουν με ένα εργαλείο, το οποίο συχνά ονομάζεται ΑΠΑΝΤΗΣΗ ( Διαβάστε-Eval-Print-Loop ). Αυτό το εργαλείο REPL είναι εξαιρετικά χρήσιμο στη δοκιμή των γλωσσικών χαρακτηριστικών. Για παράδειγμα, στη Σκάλα, μπορούμε να γράψουμε ένα απλό πρόγραμμα Hello World ως scala> println ('Γεια σας Κόσμος')

Μερικά από τα πλεονεκτήματα του JShell REPL έχουν ως εξής:

  • Οι έμπειροι προγραμματιστές μπορούν γρήγορα να κάνουν πρωτότυπο και να πειραματιστούν προτού το υιοθετήσουν στην κύρια βάση κώδικα
  • Οι προγραμματιστές Java μπορούν πλέον να καυχηθούν για ένα REPL

Ας εκτελέσουμε την εντολή JShell, όπως φαίνεται στην παρακάτω εικόνα:

Παράδειγμα JShell Hello World - Java 9 - Edureka

Δυνατότητα αρχείων JAR πολλαπλών εκδόσεων στο Java 9

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

Ακολουθεί μια απεικόνιση των τρεχόντων αρχείων JAR:

ρίζα βάζου - Μια τάξη - B.class - C.class

Δείτε πώς φαίνονται τα αρχεία JAR πολλαπλών εκδόσεων:

ρίζα βάζου - Μια τάξη - B.class - C.class - ΜΕΤΑ-ΙΝΦ - εκδόσεις - 9 - Μια τάξη - 10 - B.class

Στην προηγούμενη εικόνα, τα αρχεία JAR υποστηρίζουν αρχεία κλάσης για δύο εκδόσεις Java – 9 και 10.

Έτσι, όταν το προηγούμενο JAR εκτελείται στο Java 9, το A.class κάτω από τις εκδόσεις - 9 φάκελοι παραλαμβάνονται για εκτέλεση.

Σε μια πλατφόρμα που δεν υποστηρίζει αρχεία JAR πολλαπλών εκδόσεων, οι τάξεις στον κατάλογο εκδόσεων δεν χρησιμοποιούνται ποτέ. Επομένως, εάν εκτελέσετε το αρχείο JAR πολλαπλών εκδόσεων στο Java 8, είναι τόσο καλό όσο η εκτέλεση ενός απλού αρχείου JAR.

Περισσότερες δυνατότητες ενημερώσεων ταυτότητας στην Java 9

Σε αυτήν την ενημέρωση, μια νέα τάξη, java.util.concurrent.Flow έχει εισαχθεί, το οποίο διαθέτει ένθετες διεπαφές που υποστηρίζουν την εφαρμογή ενός πλαισίου δημοσίευσης-εγγραφής. Το πλαίσιο δημοσίευσης-εγγραφής επιτρέπει στους προγραμματιστές να δημιουργούν στοιχεία που μπορούν να καταναλώνουν ασύγχρονα μια ζωντανή ροή δεδομένων, δημιουργώντας εκδότες που παράγουν τα δεδομένα και συνδρομητές που καταναλώνουν τα δεδομένα μέσω συνδρομής, οι οποίοι τα διαχειρίζονται. Οι τέσσερις νέες διεπαφές έχουν ως εξής:

  • java.util.concurrent.Flow.Publisher
  • java.util.concurrent.Flow.Subscriber
  • java.util.concurrent.Flow.Subscription
  • java.util.concurrent.Flow.Processor (που λειτουργεί τόσο ως εκδότης όσο και ως συνδρομητής).

Project Jigsaw στην Java 9

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

Κάποια από τα οφέλη του αρθρωτότητα έχουν ως εξής:

  • Ισχυρή ενθυλάκωση : Οι μονάδες μπορούν να έχουν πρόσβαση μόνο σε εκείνα τα μέρη της μονάδας που έχουν διατεθεί για χρήση. Έτσι, οι δημόσιες τάξεις σε ένα πακέτο δεν είναι δημόσιες, εκτός εάν το πακέτο εξάγεται ρητά στο αρχείο πληροφοριών λειτουργικής μονάδας.
  • Εκκαθάριση εξαρτήσεων : Οι ενότητες πρέπει να δηλώνουν ποιες άλλες ενότητες θα χρησιμοποιούν μέσω της ρήτρας απαιτήσεων.
  • Συνδυάζοντας μονάδες για να δημιουργήσετε μικρότερο χρόνο εκτέλεσης, το οποίο μπορεί εύκολα να κλιμακωθεί σε μικρότερες υπολογιστικές συσκευές.
  • Αξιόπιστος : Οι εφαρμογές είναι πιο αξιόπιστες με την εξάλειψη χρόνος εκτέλεσης Σφάλματα . Παράδειγμα:- θα πρέπει να έχετε αντιμετωπίσει την εφαρμογή σας αποτυχημένη κατά τη διάρκεια του χρόνου λόγω λείπουν μαθήματα, με αποτέλεσμα ClassNotFoundException .

Υπάρχουν διάφορα ΚΕΠ , που αποτελούν μέρος αυτού του έργου, ως εξής:

τι είναι το mvc στην Ιάβα
  • JEP 200 - αρθρωτό JDK : Αυτό εφαρμόζει το σύστημα λειτουργικών μονάδων πλατφόρμας Java για να διαμορφώσει το JDK σε ένα σύνολο ενοτήτων που μπορούν να συνδυαστούν σε χρόνο μεταγλώττισης, χρόνο κατασκευής ή χρόνο εκτέλεσης.
  • JEP 201 - αρθρωτός πηγαίος κώδικας : Αυτό τροποποιεί τον πηγαίο κώδικα JDK σε ενότητες και βελτιώνει τα εργαλεία κατασκευής για τη μεταγλώττιση των ενοτήτων.
  • JEP 220 - αρθρωτές εικόνες χρόνου εκτέλεσης : Αυτό αναδιαρθρώνει τις εικόνες χρόνου εκτέλεσης JDK και JRE για να φιλοξενήσει λειτουργικές μονάδες και να βελτιώσει την απόδοση, την ασφάλεια και τη συντήρηση.
  • JEP 260 - ενσωματώνει τα περισσότερα εσωτερικά API : Αυτό επιτρέπει την πρόσβαση σε πολλά εσωτερικά API απευθείας ή μέσω προβληματισμού. Η πρόσβαση σε εσωτερικά API που είναι βέβαιο ότι θα αλλάξουν είναι αρκετά επικίνδυνη. Για να αποφευχθεί η χρήση του, ενθυλακώνονται σε ενότητες και μόνο εκείνα τα εσωτερικά API που χρησιμοποιούνται ευρέως διατίθενται έως ότου ένα κατάλληλο API στη θέση του.
  • JEP 261 - σύστημα ενότητας : Αυτό εφαρμόζει την προδιαγραφή Java του λειτουργικού συστήματος αλλάζοντας τη γλώσσα προγραμματισμού Java, JVM και άλλα τυπικά API
  • JEP 282: jlink, ο σύνδεσμος Java : Αυτό επιτρέπει στις μονάδες συσκευασίας και τις εξαρτήσεις τους σε μικρότερους χρόνους λειτουργίας.

Αυτό λοιπόν αφορούσε το Java 9 και τις νέες δυνατότητες Java 9.

Τώρα που έχετε κατανοήσει τις δυνατότητες του Java 9, ρίξτε μια ματιά στο από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο.

σολ μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του ιστολογίου 'Java 9' και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.