Java 9 funkcijas un uzlabojumi



Moduļu ietvars, kas izstrādāts saskaņā ar Project Jigsaw un galvenajām Java 9 funkcijām šajā emuārā, ir JShell (REPL rīks), svarīgas API izmaiņas un JVM līmeņa izmaiņas.

Java 9 un Java 9 funkciju izlaišana ir atskaites punkts Java ekosistēmai.Lai neatpaliktu no jaunākajām tehnoloģijām un izprastu nepieciešamību pēc tā, kas tiek ieviests, jums būs tuvāk savam .Moduļu ietvars, kas izstrādāts projekta Jigsaw ietvaros, būs daļa no šīs Java SE laidiena, un galvenās funkcijas tajā ir JShell (REPL rīks), svarīgas API izmaiņas un JVM līmeņa izmaiņas, lai uzlabotu JVM veiktspēju un atkļūdojamību.

Pirms detalizēti atšķetinām Java 9 funkcijas, apskatīsim iepriekšējās Java versijas un uzzināsim, kādi bija trūkumi un kā Java 9 palīdzēja pārvarēt šīs anomālijas:





  • Java Standard Edition platforma un JDK nebija izmantojamas mazām skaitļošanas ierīcēm
  • Nebija vispārējas JDK drošības un uzturēšanas
  • Lietojumprogrammas veiktspēja kopumā netika uzlabota
  • Java izstrādātājiem bija grūti izveidot un uzturēt kodu bibliotēkas un lielākas lietojumprogrammas gan Java SE, gan EE platformām

Šajā emuāra ziņā es kategorizēšu Java 9 funkcijas šādā veidā:



  1. Apstrādājiet API atjauninājumus Java 9
  2. HTTP / 2 klients Java 9
  3. Java čaulas skriptu izveide (Read-Eval-Print-Loop) Java 9
  4. Vairāku laidienu JAR failu iezīme Java 9
  5. Vairāk vienlaicīgu atjauninājumu funkcija Java 9
  6. Projekta finierzāģis Java 9

Kas jauns ir Java 9?

Esmu izvēlējies dažas jaunas Java 9 funkcijas, kuras, manuprāt, ir vērts zināt. Apskatīsim, kādas ir šīs funkcijas: -

Apstrādājiet API atjauninājumus Java 9

Java procesa API ir bijusi diezgan primitīva,ar atbalstu tikai jaunu procesu uzsākšanai, novirzīt procesu izvadi un kļūdu plūsmas. Šajā laidienā procesa API atjauninājumi ļauj:

  • Pašreizējā JVM procesa un visu citu JVM radīto procesu PID iegūšana
  • Uzskaitiet sistēmā notiekošos procesus, lai iegūtu tādu informāciju kā PID, nosaukums un resursu izmantošana
  • Procesu koku pārvaldība
  • Apakšprocesu pārvaldīšana

Apskatīsim koda paraugu, kas izdrukā pašreizējo PID, kā arī pašreizējo procesa informāciju:



public class 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 ('Informācija:' + currentProcessInfo)}

HTTP / 2 klients Java 9

Paredzams, ka šī Java 9 funkcija mainīsies nākamajos laidienos, un to var pat pilnībā noņemt.

Agrāk Izstrādātāji bieži izmanto trešo pušu bibliotēku, piemēram, Apache HTTP, Džersijas utt. Turklāt Java HTTP API pirms HTTP / 1.1 specifikācijas ir sinhrona un grūti uzturama. Šie ierobežojumi prasīja nepieciešamību pievienot jaunu API. Jaunā HTTP klienta API nodrošina:

  • Vienkārša un kodolīga API, lai tiktu galā ar lielāko daļu HTTP pieprasījumu
  • Atbalsts HTTP / 2 specifikācijai
  • Labāks sniegums
  • Labāka drošība
  • Vēl daži uzlabojumi

Apskatīsim koda paraugu, lai veiktu HTTP GET pieprasījumu, izmantojot jaunās API. Zemāk ir moduļa definīcija, kas definēta failā module-info.java:

kad to izmantot. java
moduļa jaunās funkcijas {nepieciešama jdk.incubator.httpclient}

Šis kods izmanto HTTP klienta API, kas ir daļa no jdk.incubator.httpclient moduļa:

importēt jdk.incubator.http. * importēt java.net.URI publiskā klase Http2Feature {public static void main (String [] args) met izņēmumu {HttpClient client = HttpClient.newBuilder (). build () HttpRequest pieprasījums = HttpRequest .newBuilder ( jauns URI (http://httpbin.org/get)) .GET () .version (HttpClient.Version.HTTP_1_1) .build () HttpResponse.String response = client.send (pieprasījums, HttpResponse.BodyHandler.asString ()) System.out.println ('Statusa kods:' + response.statusCode ())
System.out.println ('Atbildes pamatteksts:' + response.body ())}}}

Java čaulas skriptu izveide (Read-Eval-Print-Loop) Java 9

Jums ir jābūt redzējušām valodām, piemēram, Ruby, Scala, Groovy, Clojure un citām, kas sūta ar rīku, ko bieži sauc REPL ( Lasīt-novērtēt-drukāt-cilpu ). Šis REPL rīks ir ļoti noderīgs, lai izmēģinātu valodas iespējas. Piemēram, Scala mēs varam uzrakstīt vienkāršu Hello World programmu kā scala> println (“Sveika pasaule”)

Dažas no priekšrocībām JShell REPL ir šādi:

  • Pieredzējuši izstrādātāji var ātri prototipēt un eksperimentēt, pirms to pieņem savā galvenajā kodu bāzē
  • Java izstrādātāji tagad var lepoties ar REPL

Palaidīsim komandu JShell, kā parādīts šajā attēlā:

JShell Hello World piemērs - Java 9 - Edureka

Vairāku laidienu JAR failu iezīme Java 9

Sākotnēji JAR failos var būt klases, kuras var palaist tikai tajā Java versijā, kurai tie tika sastādīti. Lai jaunajās versijās izmantotu Java platformas jaunās iespējas, bibliotēkas izstrādātājiem ir jāizlaiž jaunāka savas bibliotēkas versija. Drīz izstrādātāji uzturēs vairākas bibliotēkas versijas, kas var būt murgs. Lai pārvarētu šo ierobežojumu, šīs vairāku laidienu JAR failu Java 9 funkcijas ļauj izstrādātājiem veidot JAR failus ar dažādām klases failu versijām dažādām Java versijām.Šis piemērs padara to skaidrāku.

Šeit ir pašreizējo JAR failu ilustrācija:

burkas sakne - Klase - B.klase - C.klase

Lūk, kā izskatās vairāku laidienu JAR faili:

burkas sakne - Klase - B.klase - C.klase - META-INF - versijas - 9 - Klase - 10 - B.klase

Iepriekšējā ilustrācijā JAR faili atbalsta klases failus divām Java versijām –9 un 10.

Tātad, kad agrākais JAR tiek izpildīts Java 9, izpildei tiek uzņemta A. klase zem versijām - 9 mapes.

Platformā, kas neatbalsta vairāku laidienu JAR failus, klases versiju direktorijā nekad netiek izmantotas. Tātad, ja palaižat vairāku laidienu JAR failu operētājsistēmā Java 8, tas ir tikpat labi, kā palaist vienkāršu JAR failu.

Vairāk vienlaicīgu atjauninājumu funkcija Java 9

Šajā atjauninājumā jauna klase, java.util.concurrent.Plūsma ir ieviesta ligzdota saskarne, kas atbalsta publicēšanas un abonēšanas ietvara ieviešanu. Publicēšanas-abonēšanas ietvars ļauj izstrādātājiem veidot komponentus, kas asinhroni var patērēt tiešraides datu plūsmu, izveidojot izdevējus, kas ražo datus, un abonentus, kuri patērē datus, izmantojot abonementu, kas tos pārvalda. Četras jaunās saskarnes ir šādas:

  • java.util.concurrent.Flow.Publisher
  • java.util.concurrent.Flow.Subscriber
  • java.util.concurrent.Flow.Subscription
  • java.util.concurrent.Flow.Processor (kas darbojas gan kā izdevējs, gan kā abonents).

Projekta finierzāģis Java 9

Šī projekta galvenais mērķis ir iepazīstināt ar modularitāte atbalstu moduļu izveidei Java 9 un pēc tam to pašu lietojiet JDK tas ir, modulēt JDK .

Daži no ieguvumi gada modularitāte ir šādi:

  • Spēcīga iekapsulēšana : Moduļi var piekļūt tikai tām moduļa daļām, kuras ir padarītas pieejamas. Tātad paketes publiskās klases nav publiskas, ja vien pakete nav tieši eksportēta moduļa informācijas failā.
  • Notīrīt atkarības : Moduļiem jāpaziņo, kurus citus moduļus viņi izmantos, izmantojot klauzulu pieprasa.
  • Moduļu apvienošana, lai izveidotu mazāku izpildlaiku, kuru var viegli pielāgot mazākām skaitļošanas ierīcēm.
  • Uzticama : Pieteikumi ir ticamāki, tos izslēdzot izpildes laiks kļūdas . Piemērs:- jums jābūt pieredzējušam, ka izpildes laikā jūsu lietojumprogramma neizdodas, jo trūkst klases, kā rezultātā ClassNotFoundException .

Ir dažādi JEP , kas ir daļa no šī projekta, šādi:

  • JEP 200 - modulārais JDK : Tas attiecas uz Java platformas moduļu sistēmu, lai modulētu JDK moduļu komplektā, kurus var apvienot kompilēšanas laikā, būvēšanas laikā vai izpildlaikā.
  • JEP 201 - modulārais avota kods : Tas modulē JDK pirmkodu moduļos un uzlabo veidošanas rīkus moduļu kompilēšanai.
  • JEP 220 - modulāri izpildlaika attēli : Tas pārveido JDK un JRE izpildlaika attēlus, lai pielāgotos moduļiem un uzlabotu veiktspēju, drošību un uzturēšanu.
  • JEP 260 - iekapsulē lielāko daļu iekšējo API : Tas ļauj daudzām iekšējām API piekļūt tieši vai ar pārdomu palīdzību. Piekļuve iekšējām API, kas noteikti mainīsies, ir diezgan riskanta. Lai nepieļautu tā izmantošanu, tie tiek iekapsulēti moduļos, un tikai tie plaši izmantotie iekšējie API tiek darīti pieejami, līdz pienācīga API ir tās vietā.
  • JEP 261 - moduļu sistēma : Tas ievieš moduļu sistēmas Java specifikāciju, mainot Java programmēšanas valodu, JVM un citas standarta API
  • JEP 282: Java saite jlink : Tas ļauj iepakošanas moduļus un to atkarību palaist mazākos darbības laikos.

Tātad, tas viss bija par Java 9 un jaunajām Java 9 funkcijām.

Tagad, kad esat sapratis Java 9 funkcijas, pārbaudiet Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē.

G ot mums jautājums? Lūdzu, pieminējiet to šī “Java 9” emuāra komentāru sadaļā, un mēs pēc iespējas ātrāk sazināsimies ar jums.