logo

Java 8 funkcijas

Oracle 2014. gada 18. martā izlaida jaunu Java versiju kā Java 8. Tas bija revolucionārs Java programmatūras izstrādes platformas laidiens. Tas ietver dažādus Java programmēšanas, JVM, rīku un bibliotēku jauninājumus.

Java 8 programmēšanas valodas uzlabojumi

Java 8 nodrošina šādas Java programmēšanas funkcijas:

  • Lambda izteiksmes,
  • Atsauces uz metodēm,
  • Funkcionālās saskarnes,
  • Straumēšanas API,
  • Noklusējuma metodes,
  • Base64 kodēt atšifrēt,
  • Statiskās metodes saskarnē,
  • Izvēles klase,
  • Kolekcionāru klase,
  • ForEach() metode,
  • Rhino JavaScript dzinējs,
  • Paralēlā masīvu šķirošana,
  • Piezīmju rakstīšana un atkārtošana,
  • IO uzlabojumi,
  • Vienlaicības uzlabojumi,
  • JDBC uzlabojumi utt.

Lambda izteiksmes

Lambda izteiksme palīdz mums uzrakstīt mūsu kodu funkcionālā stilā. Tas nodrošina skaidru un kodolīgu veidu, kā ieviest SAM saskarni (viena abstraktā metode), izmantojot izteiksmi. Tas ir ļoti noderīgs kolekcijas bibliotēkā, kurā tas palīdz atkārtot, filtrēt un iegūt datus.

Plašāka informācija un piemēri: noklikšķiniet šeit


Atsauces uz metodēm

Java 8 metodes atsauce tiek izmantota, lai atsauktos uz funkcionālās saskarnes metodi. Tas ir kompakts un viegls lambda izteiksmes veids. Katru reizi, kad izmantojat lambda izteiksmi, lai tikai atsauktos uz metodi, varat aizstāt savu lambda izteiksmi ar metodes atsauci.

Plašāka informācija un piemēri: noklikšķiniet šeit


Funkcionālais interfeiss

Interfeiss, kas satur tikai vienu abstraktu metodi, ir pazīstams kā funkcionāls interfeiss. Tam var būt jebkurš noklusējuma un statisko metožu skaits. Tā var arī deklarēt objektu klases metodes.

Funkcionālās saskarnes ir zināmas arī kā vienotas abstraktās metodes saskarnes (SAM Interfaces).

Plašāka informācija un piemēri: noklikšķiniet šeit


Neobligāti

Java ieviesa jaunu klasi Optional Java 8. Tā ir publiska gala klase, kas tiek izmantota, lai Java lietojumprogrammā risinātu ar NullPointerException. Mums ir jāimportē java.util pakotni, lai izmantotu šo klasi. Tas nodrošina metodes, kā pārbaudīt vērtību esamību konkrētam mainīgajam.

Plašāka informācija un piemēri: noklikšķiniet šeit


katram

Java nodrošina jaunu metodi forEach() elementu atkārtošanai. Tas ir definēts Iterable un Stream saskarnēs.

Tā ir noklusējuma metode, kas definēta saskarnē Iterable. Kolekciju klases, kas paplašina Iterable saskarni, elementu atkārtošanai var izmantot metodi forEach().

Šī metode izmanto vienu parametru, kas ir funkcionāls interfeiss. Tātad, jūs varat nodot lambda izteiksmi kā argumentu.

Plašāka informācija un piemēri: noklikšķiniet šeit


Datuma/laika API

Java ir ieviesusi jaunu datuma un laika API kopš Java 8. Java.time pakotnē ir Java 8 datuma un laika klases.

Plašāka informācija un piemēri: noklikšķiniet šeit


Noklusējuma metodes

Java nodrošina iespēju izveidot noklusējuma metodes saskarnē. Metodes, kas ir definētas saskarnē un marķētas ar noklusējuma atslēgvārdu, ir zināmas kā noklusējuma metodes. Šīs metodes ir neabstraktas metodes, un tām var būt metodes pamatteksts.

Lai iegūtu papildinformāciju un piemērus: noklikšķiniet šeit


Rhino JavaScript dzinējs

Nashorn ir JavaScript dzinējs. To izmanto, lai dinamiski izpildītu JavaScript kodu JVM (Java virtuālajā mašīnā). Java nodrošina komandrindas rīku utt kas tiek izmantots JavaScript koda izpildei.

JavaScript kodu var izpildīt divos veidos:

  1. Izmantojot jjs komandrindas rīku un
  2. Iegulstot Java pirmkodā.

Lai iegūtu papildinformāciju un piemērus: noklikšķiniet šeit


StringJoiner

Java pievienoja jaunu pēdējo klasi StringJoiner pakotnē java.util. To izmanto, lai izveidotu rakstzīmju secību, kas atdalītas ar norobežotāju. Tagad varat izveidot virkni, nododot atdalītājus, piemēram, komatu (,), defisi (-) utt.

kā es varu uzzināt sava monitora izmēru

Lai iegūtu papildinformāciju un piemērus: noklikšķiniet šeit


Kolekcionāri

Kolekcionāri ir pēdējā klase, kas paplašina objektu klasi. Tas nodrošina samazināšanas darbības, piemēram, elementu uzkrāšanu kolekcijās, elementu apkopošanu pēc dažādiem kritērijiem utt.

Plašāka informācija un piemēri: noklikšķiniet šeit


Straumēšanas API

Java 8 java.util.stream pakotne sastāv no klasēm, saskarnēm un enum, kas ļauj elementiem veikt funkcionāla stila darbības. Tas veic slinku aprēķinu. Tātad tas tiek izpildīts tikai tad, kad tas ir nepieciešams.

Plašāka informācija un piemēri: noklikšķiniet šeit


Straumes filtrs

Java straume nodrošina metodes filtru (), lai filtrētu straumes elementus, pamatojoties uz doto predikātu. Pieņemsim, ka vēlaties iegūt tikai pāra elementus no sava saraksta, to varat viegli izdarīt, izmantojot filtru() metodi.

Šī metode izmanto predikātu kā argumentu un atgriež iegūto elementu plūsmu.

Plašāka informācija un piemēri: noklikšķiniet šeit


Java Base64 kodēšana un dekodēšana

Java nodrošina klasi Base64, lai tiktu galā ar šifrēšanu un atšifrēšanu. Lai izmantotu tās metodes, avota failā ir jāimportē klase java.util.Base64.

Šī klase nodrošina trīs dažādus kodētājus un dekodētājus informācijas šifrēšanai katrā līmenī.

Plašāka informācija un piemēri: noklikšķiniet šeit


Java paralēlo masīvu kārtošana

Java piedāvā jaunu papildu līdzekli Arrays klasē, ko izmanto, lai paralēli kārtotu masīva elementus. ParallelSort() metode ir pievienota klasei java.util.Arrays, kas izmanto JSR 166 Fork/Join paralēlisma kopfondu, lai nodrošinātu masīvu kārtošanu. Tā ir pārslogota metode.

Lai iegūtu papildinformāciju un piemērus: noklikšķiniet šeit


Java 8 drošības uzlabojumi

1) Java Secure Socket Extension (JSSE) nodrošinātājs klienta pusē pēc noklusējuma iespējo protokolus Transport Layer Security (TLS) 1.1 un TLS 1.2.

2) Ir pievienota uzlabota metode AccessController.doPrivileged, kas ļauj kodam izmantot savu privilēģiju apakškopu, neliedzot pilnu steka šķērsošanu, lai pārbaudītu citas atļaujas.

3) SunJCE nodrošinātājam ir pievienoti uzlabotā šifrēšanas standarta (AES) un uz paroli balstītās šifrēšanas (PBE) algoritmi, piemēram, PBEWithSHA256AndAES_128 un PBEWithSHA512AndAES_256.

4) Java Secure Socket Extension (SunJSSE) pēc noklusējuma ir iespējojis servera nosaukuma norādes (SNI) paplašinājumu klienta lietojumprogrammām JDK 7, un JDK 8 atbalsta SNI paplašinājumu servera lietojumprogrammām. SNI paplašinājums ir līdzeklis, kas paplašina SSL/TLS protokolus, lai norādītu, ar kādu servera nosaukumu klients mēģina izveidot savienojumu rokasspiediena laikā.

rom

5) SunJSSE ir uzlabots, lai atbalstītu autentificētas šifrēšanas ar saistīto datu (AEAD) algoritmus. Java Cryptography Extension (SunJCE) nodrošinātājs ir uzlabots, lai atbalstītu AES/GCM/NoPadding šifra ieviešanu, kā arī Galois/Counter Mode (GCM) algoritma parametrus.

6) Keytool utilītai tiek pievienots jauns komandas karodziņš -importpassword. To izmanto, lai pieņemtu paroli un droši uzglabātu to kā slepeno atslēgu. Lai atbalstītu DKS atslēgu krātuves tipu, ir pievienotas tādas klases kā java.security.DomainLoadStoreParameter unjava.security.PKCS12Atribūts.

7) JDK 8 kriptogrāfijas algoritmi ir uzlaboti, izmantojot SHA-2 ziņojuma apkopojumu saimes SHA-224 variantu.

8) Uzlabots atbalsts NSA Suite B kriptogrāfijai, kas ietver:

  • OID reģistrācija NSA Suite B kriptogrāfijas algoritmiem
  • Atbalsts 2048 bitu DSA atslēgu pāru ģenerēšanai un papildu paraksta algoritmi 2048 bitu DSA atslēgām, piemēram, SHA224withDSA un SHA256withDSA.
  • Atslēgas izmēra ierobežojuma pacelšana no 1024 uz 2048 Difija-Helmena (DH) algoritmam.

9) SecureRandom klase nodrošina kriptogrāfiski spēcīgu nejaušības skaitļu ģenerēšanu, ko izmanto privātām vai publiskajām atslēgām, šifriem un parakstītiem ziņojumiem. Metode getInstanceStrong() tika ieviesta JDK 8, kas atgriež spēcīgākā SecureRandom gadījumu. To vajadzētu izmantot, ja nepieciešams izveidot RSA privāto un publisko atslēgu. SecureRandom ietver šādas citas izmaiņas:

  • UNIX platformām ir ieviestas divas jaunas implementācijas, kas nodrošina bloķēšanas un nebloķēšanas darbību.

10) Ir iekļauta jauna PKIXRevocationChecker klase, kas pārbauda sertifikātu atsaukšanas statusu ar PKIX algoritmu. Tā atbalsta labāko piepūles pārbaudi, gala entītijas sertifikātu pārbaudi un mehānismam specifiskas opcijas.

11) Publiskās atslēgas kriptogrāfijas standarti 11 (PKCS) ir paplašināti, iekļaujot Windows 64 bitu atbalstu.

12) Kerberos 5 ir pievienoti divi jauni rkešatmiņas veidi. Tips none nozīmē, ka kešatmiņa vispār nav, bet tips dfl nozīmē DFL stila failu kešatmiņu. Tagad tiek atbalstīta arī akceptētāja pieprasītā apakšatslēga. Tie ir konfigurēti, izmantojot sistēmas rekvizītus sun.security.krb5.rcache un sun.security.krb5.acceptor.subkey.

13) JDK 8, Kerberos 5 protokola pāreja un ierobežota deleģēšana tiek atbalstīta tajā pašā jomā.

14) Java 8 pēc noklusējuma ir atspējojusi vāju šifrēšanu. Ar DES saistītie Kerberos 5 šifrēšanas veidi pēc noklusējuma netiek atbalstīti. Šos šifrēšanas veidus var iespējot, failā krb5.conf pievienojot allow_weak_crypto=true.

15) Varat iestatīt servera nosaukumu uz nulli, lai apzīmētu nesaistītu serveri. Tas nozīmē, ka klients var pieprasīt pakalpojumu, izmantojot jebkuru servera nosaukumu. Kad konteksts ir izveidots, serveris var izgūt nosaukumu kā sarunātu rekvizītu ar atslēgas nosaukumu SASL.BOUND_SERVER_NAME.

16) Java Native Interface (JNI) tilts uz vietējo Java vispārējo drošības pakalpojumu (JGSS) tagad tiek atbalstīts operētājsistēmā Mac OS X. Varat iestatīt sistēmas rekvizītu sun.security.jgss.native uz True, lai to iespējotu.

17) Ir definēts jauns sistēmas rekvizīts jdk.tls.ephemeralDHKeySize, lai pielāgotu īslaicīgo DH atslēgu izmērus. Minimālais pieņemamais DH atslēgas izmērs ir 1024 biti, izņemot eksportējamos šifru komplektus vai mantoto režīmu (jdk.tls.ephemeralDHKeySize=legacy).

18) Java Secure Socket Extension (JSSE) nodrošinātājs pēc noklusējuma ievēro klienta šifru komplekta preferences. Tomēr darbību var mainīt, lai ievērotu servera šifru komplekta preferences, serverī izsaucot SSLPameters.setUseCipherSuitesOrder(true).


Java 8 rīku uzlabojumi

1) Tiek ieviesta komanda jjs, kas izsauc Nashorn dzinēju vai nu interaktīvā čaulas režīmā, vai lai interpretētu skripta failus.

2) Java komanda spēj palaist JavaFX lietojumprogrammas, ja JavaFX lietojumprogramma ir pareizi iesaiņota.

3) Java komandu man lapa (gan nroff, gan HTML) ir pilnībā pārstrādāta. Papildu opcijas tagad ir sadalītas izpildlaikā, kompilatorā, atkritumu savākšanā un apkalpojamībā atbilstoši apgabalam, ko tās ietekmē. Tagad ir aprakstītas vairākas iepriekš trūkstošās iespējas. Ir arī sadaļa opcijām, kas tika novecojušas vai noņemtas kopš iepriekšējās laidiena.

4) Jaunais jdeps komandrindas rīks ļauj izstrādātājam analizēt klases failus, lai noteiktu pakotnes līmeņa vai klases līmeņa atkarības.

5) Varat attālināti piekļūt diagnostikas komandām, kuras iepriekš bija pieejamas tikai lokāli, izmantojot jcmd rīku. Attālā piekļuve tiek nodrošināta, izmantojot Java pārvaldības paplašinājumus (JMX), tāpēc diagnostikas komandas tiek pakļautas platformai MBean, kas reģistrēta platformas MBean serverī. MBean ir com.sun.management.DiagnosticCommandMBean saskarne.

6) Jarsigner rīkā ir iekļauta jauna opcija -tsapolicyid, kas ļauj pieprasīt parakstītu laika zīmogu no laika zīmogošanas iestādes un pievienot to parakstītam JAR failam.

7) Ir iekļauta jauna metode java.lang.reflect.Executable.getParameters, kas ļauj piekļūt jebkuras metodes vai konstruktora formālo parametru nosaukumiem. Tomēr .class faili pēc noklusējuma nesaglabā formālus parametru nosaukumus. Lai saglabātu formālos parametru nosaukumus noteiktā .class failā un tādējādi ļautu Reflection API izgūt formālos parametru nosaukumus, kompilējiet avota failu ar javac kompilatora opciju -parameters.

8) Java valodas specifikācijas (JLS) 15.21. sadaļa bināro salīdzinājumu tipu noteikumi tagad tiks pareizi ieviesti ar javac.

9) Šajā laidienā ir noņemts apt rīks un ar to saistītais API, kas atrodas pakotnē com.sun.mirror.

Javadoc uzlabojumi

Programmā Java SE 8 Javadoc rīkam tika pievienotas šādas jaunas API.

  • Jauns DocTree API ievieš skeneri, kas ļauj šķērsot avota kodu, ko attēlo abstrakts sintakses koks. Tas paplašina Compiler Tree API, lai nodrošinātu strukturētu piekļuvi Javadoc komentāru saturam.
  • Pakotnē javax.tools ir ietvertas klases un saskarnes, kas ļauj izsaukt Javadoc rīku tieši no Java lietojumprogrammas, neveicot jaunu procesu.
  • Klases vai saskarnes ģenerētās dokumentācijas sadaļa “Metodes kopsavilkums” ir pārstrukturēta. Metožu apraksti šajā sadaļā ir sagrupēti pēc veida. Pēc noklusējuma visas metodes ir uzskaitītas. Varat noklikšķināt uz cilnes, lai skatītu noteikta veida metodes (statiskas, instances, abstraktas, konkrētas vai novecojušas, ja tādas pastāv klasē vai saskarnē).
  • Javadoc rīkam tagad ir atbalsts, lai pārbaudītu javadoc komentāru saturu attiecībā uz problēmām, kas var izraisīt dažādas problēmas, piemēram, nederīgu HTML vai pieejamības problēmas failos, ko ģenerē Javadoc. Funkcija ir iespējota pēc noklusējuma, un to var kontrolēt arī ar jauno opciju -Xdoclint.

Pack200 uzlabojumi

Java klases faila formāts ir atjaunināts, jo JSR 292 atbalsta dinamiski ievadītas valodas Java platformā.

Pack200 dzinējs ir atjaunināts, lai nodrošinātu Java SE 8 klases failu efektīvu saspiešanu. Tagad tas var atpazīt pastāvīgus pūla ierakstus un jaunus baitu kodus, ko ieviesa JSR 292. Tā rezultātā saspiestie faili, kas izveidoti ar šo rīka pack200 versiju, nebūs saderīgi ar vecākām rīka unpack200 versijām.


Java 8 I/O uzlabojumi

Programmā Java 8 ir vairāki java.nio.charset.Charset un paplašinātās rakstzīmju kopas ieviešanas uzlabojumi. Tas ietver:

  • Jauns SelectorProvider, kas var uzlabot servera veiktspēju vai mērogojamību. /dev/poll SelectorProvider joprojām ir noklusējuma iestatījums. Lai izmantotu Solaris notikumu porta mehānismu, palaidiet sistēmas rekvizītu java.nio.channels.spi.Selector iestatīt uz vērtību sun.nio.ch.EventPortSelectorProvider.
  • Faila /jre/lib/charsets.jar lielums ir samazināts.
  • Veiktspēja ir uzlabojusies konstruktoram java.lang.String(byte[], ∗) un java.lang.String.getBytes() metodei.

Java 8 tīkla uzlabojumi

1) Ir pievienota jauna klase java.net.URLPermission. Tā apzīmē atļauju piekļūt resursam, ko nosaka dotais URL.

2) Ir pievienota pakotne jdk.net, kurā ir platformai specifiskas ligzdas opcijas un mehānisms šo opciju iestatīšanai visiem standarta ligzdu veidiem. Socket opcijas ir definētas jdk.net.ExtendedSocketOptions.

3) Klasē HttpURLConnection, ja ir instalēts drošības pārvaldnieks un tiek izsaukta metode, kuras rezultātā tiek mēģināts atvērt savienojumu, zvanītājam ir jābūt vai nu savienojuma atļaujai SocketPermission ar galamērķa URL resursdatora/porta kombināciju vai URLPermission, kas atļauj šo pieprasījumu.

Ja ir iespējota automātiskā novirzīšana un šis pieprasījums tiek novirzīts uz citu galamērķi, zvanītājam ir jābūt arī atļaujai izveidot savienojumu ar novirzīto saimniekdatoru/URL.


Java 8 vienlaicīguma uzlabojumi

Java.util.concurrent pakotne pievienoja divas jaunas saskarnes un četras jaunas klases.

Java.util.concurrent saskarnes

Interfeiss Apraksts
publiska statiskā saskarne CompletableFuture.AsynchronousCompletionTask Tas ir marķiera interfeiss, ko izmanto, lai identificētu asinhronos uzdevumus, ko rada asinhronās metodes. Tas var būt noderīgs asinhrono darbību uzraudzībai, atkļūdošanai un izsekošanai.
publiskais interfeiss CompletionStage Tas izveido, iespējams, asinhrona aprēķina posmu, kas veic darbību vai aprēķina vērtību, kad tiek pabeigts cits CompletionStage posms.

Java.util.concurrent klases

Klase Apraksts
publiskā klase CompletableFuture paplašina Objekts īsteno Future, CompletionStage Tā ir AFuture, kas var būt nepārprotami pabeigta, un to var izmantot kā CompletionStage, atbalstot atkarīgas funkcijas un darbības, kas tiek aktivizētas pēc tā pabeigšanas.
publiska statiskā klase ConcurrentHashMap.KeySetView paplašina Objektu ievieš Set, Serializable Tas ir skats uz ConcurrentHashMap kā atslēgu kopu, kurā pēc izvēles var iespējot papildinājumus, kartējot ar kopīgu vērtību.
publiskā abstraktā klase CountedCompleter paplašina ForkJoinTask ForkJoinTask ar pabeigšanas darbību, kas tiek veikta, kad tā tiek aktivizēta, un nav atlikušu neapstiprinātu darbību.
publiskā klase CompletionException paplašina RuntimeException Tas rada izņēmumu, ja rezultāta vai uzdevuma izpildes laikā tiek konstatēta kļūda vai cits izņēmums.

Jaunas metodes java.util.concurrent.ConcurrentHashMap klasē

ConcurrentHashMap klase savā jaunākajā laidienā ievieš vairākas jaunas metodes. Tas ietver dažādas forEach metodes (forEach, forEachKey, forEachValue un forEachEntry), meklēšanas metodes (search, searchKeys, searchValues ​​un searchEntries) un lielu skaitu samazināšanas metožu (samazināt, samazināt, dubultot, reduktToLong utt.). Ir pievienotas arī citas dažādas metodes (mappingCount un newKeySet).

Jaunas klases java.util.concurrent.atomic

Jaunākā versija ievieš mērogojamu, atjaunināmu, mainīgu atbalstu, izmantojot nelielu jaunu klašu komplektu DoubleAccumulator, DoubleAdder, LongAccumulator unLongAdder. Tajā iekšēji tiek izmantotas strīdu samazināšanas metodes, kas nodrošina milzīgus caurlaidspējas uzlabojumus salīdzinājumā ar Atomic mainīgajiem.

Klase Apraksts
publiskā klase DoubleAccumulator paplašina Skaitlis īsteno Serializējams To izmanto vienam vai vairākiem mainīgajiem, kas kopā uztur dubulto vērtību, kas tiek atjaunināta, izmantojot piegādāto funkciju.
publiskā klase DoubleAdder paplašina Skaitlis īsteno Serializējams To izmanto vienam vai vairākiem mainīgajiem lielumiem, kas kopā saglabā sākotnēji nulles dubulto summu.
publiskā klase LongAccumulator paplašina Skaits īsteno Serializējams To izmanto vienam vai vairākiem mainīgajiem, kas kopā uztur ilgstošu vērtību, kas tiek atjaunināta, izmantojot piegādāto funkciju.
publiskā klase LongAdder paplašina Skaitlis īsteno Serializējams To izmanto vienam vai vairākiem mainīgajiem lielumiem, kas kopā saglabā sākotnēji nulles garo summu.

Jaunas metodes java.util.concurrent.ForkJoinPool klasē

Šī klase ir pievienojusi divas jaunas metodes getCommonPoolParallelism() un commonPool(), kas attiecīgi atgriež kopējā pūla vai kopējā pūla instances mērķa paralēlisma līmeni.

Metode Apraksts
publiska statiska ForkJoinPool commonPool() Tas atgriež kopējā pūla gadījumu.
Publisks statisks int getCommonPoolParallelism() Tas atgriež kopējā pūla mērķa paralēlisma līmeni.

Jauna klase java.util.concurrent.locks.StampedLock

Ir pievienota jauna klase StampedLock, ko izmanto, lai pievienotu uz iespējām balstītu bloķēšanu ar trīs režīmiem lasīšanas/rakstīšanas piekļuves kontrolei (rakstīšana, lasīšana un optimistiskā lasīšana). Šī klase atbalsta arī metodes, kas nosacīti nodrošina reklāmguvumus visos trīs režīmos.

Klase Apraksts
publiskā klase StampedLock paplašina Objektu īsteno Serializējams Šī klase ir uz iespējām balstīta bloķēšana ar trim režīmiem lasīšanas/rakstīšanas piekļuves kontrolei.

Java API XML apstrādei (JAXP) 1.6 uzlabojumi

Java 8 versijā Java API ir pievienota XML apstrādei (JAXP) 1.6. Lai ielādētu pakalpojumus no pakalpojuma konfigurācijas failiem, ir jāizmanto pakalpojumu sniedzēja ielādes iekārta, ko definē java.util.ServiceLoader.

Iemesls tam ir ļaut nākotnē modularizēt Java SE platformu, kur pakalpojumu sniedzējus var izvietot, izmantojot citus līdzekļus, nevis JAR failus un, iespējams, bez pakalpojuma konfigurācijas failiem.


Java virtuālās mašīnas uzlabojumi

Invokespecial instrukciju pārbaude ir pastiprināta, lai varētu izsaukt tikai instanču inicializācijas metodi pašreizējā klasē vai tās tiešajā superklasē.


Java Mission Control 5.3 ir iekļauta Java 8

Java Mission Control (JMC) ir uzlabots rīku komplekts, kas nodrošina efektīvu un detalizētu datu analīzi un nodrošina uzlabotu, neuzkrītošu Java uzraudzību un pārvaldību. JMC nodrošina sadaļas vispārīgām analīzes jomām, piemēram, koda veiktspējai, atmiņai un latentumam.

Babel valodu pakotnes japāņu un vienkāršotajā ķīniešu valodā tagad pēc noklusējuma ir iekļautas Java misijas vadīklā, kas ir iekļauta JDK 8.


Java 8 internacionalizācijas uzlabojumi

1) Unicode uzlabojumi

JDK 8 ietver atbalstu Unicode 6.2.0. Tas satur šādas funkcijas.

  • 733 jaunas rakstzīmes, tostarp Turcijas liras zīme.
  • 7 jauni skripti:
    • Meroītiskie hieroglifi
    • Meroītu kursīvs
    • Sora Sompenga
    • Čakma
    • Šarada
    • Takri
    • Miao
  • 11 jauni bloki: tostarp 7 bloki jaunajiem skriptiem, kas uzskaitīti iepriekš, un 4 bloki šādiem esošajiem skriptiem:
  • Arābu paplašinātais A
  • Sundānas papildinājums
  • Tikšanās ar Meek Extensions
  • Arābu matemātiskie alfabētiskie simboli

Unikoda CLDR datu un java.locale.providers sistēmas rekvizīta pieņemšana

Unikoda konsorcijs ir izlaidis Common Locale Data Repository (CLDR) projektu, lai “atbalstītu pasaules valodas ar lielāko un plašāko pieejamo lokalizācijas datu standarta krātuvi”. CLDR kļūst par de facto standartu lokalizācijas datiem. CLDR XML lokalizācijas dati ir iekļauti JDK 8 laidienā, taču pēc noklusējuma tie ir atspējoti.

Ir četri atšķirīgi lokalizācijas datu avoti:

  • CLDR ir Unicode CLDR projekta nodrošinātie lokalizācijas dati.
  • HOST apzīmē pašreizējā lietotāja veikto pamatā esošās operētājsistēmas iestatījumu pielāgošanu. Tas darbojas tikai ar lietotāja noklusējuma lokalizāciju, un pielāgojamie iestatījumi var atšķirties atkarībā no OS, taču galvenokārt tiek atbalstīti datuma, laika, numura un valūtas formāti.
  • SPI apzīmē lokalizācijas jutīgos pakalpojumus, kas ieviesti instalētajos SPI nodrošinātājos.
  • JRE ir lokalizācijas dati, kas ir saderīgi ar iepriekšējiem JRE laidieniem.

Lai atlasītu vajadzīgo lokalizācijas datu avotu, izmantojiet sistēmas rekvizītu java.locale.providers. uzskaitot datu avotus vēlamajā secībā. Piemēram: java.locale.providers=HOST,SPI,CLDR,JRE Noklusējuma darbība ir līdzvērtīga šim iestatījumam: java.locale.providers=JRE,SPI


Java 8 jaunais kalendārs un lokalizācijas API

JDK 8 ietver divas jaunas klases, vairākas jaunas metodes un jaunu atgriešanās vērtību esošai statiskai metodei.

Java.util.spi pakotnei ir pievienotas divas jaunas abstraktas klases pakalpojumu sniedzējiem.

Klase Apraksts
publiskā abstraktā klase CalendarDataProvider paplašina LocaleServiceProvider Tā ir abstrakta klase pakalpojumu sniedzējiem, kas nodrošina no lokalizācijas atkarīgus kalendāra parametrus.
publiskā abstraktā klase CalendarNameProvider paplašina LocaleServiceProvider Tā ir abstrakta klase pakalpojumu sniedzējiem, kas nodrošina kalendāra lauku vērtību lokalizētu virkņu attēlojumu (parādāmo nosaukumu).

Statiskā metode tagad numerācijas sistēmai var atpazīt Locale.UNICODE_LOCALE_EXTENSION.

Metode Apraksts
publisks statisks galīgais DecimalFormatSymbols getInstance (lokāle) To izmanto, lai iegūtu DecimalFormatSymbols gadījumu norādītajai lokalizācijai. Šī metode nodrošina piekļuvi DecimalFormatSymbols gadījumiem lokalizācijām, kuras atbalsta pats Java izpildlaiks, kā arī tām, kuras atbalsta instalētās DecimalFormatSymbolsProvider implementācijas. Tas izmet NullPointerException, ja lokalizācija ir nulle.

Kalendāra API pievienotas jaunas metodes:

Metode Apraksts
publiskā Būla vērtība irSupportedLocale (Locale locale) Tas atgriež patieso vērtību, ja norādīto lokalizāciju atbalsta šis lokalizācijas pakalpojumu sniedzējs. Dotajā lokalizācijā var būt paplašinājumi, kas jāņem vērā atbalsta noteikšanai. Tas ir definēts klasē java.util.spi.LocaleServiceProvider
publiskā virkne getCalendarType() Tas atgriež šī kalendāra kalendāra veidu. Kalendāru veidus nosaka Unicode Locale Data Markup Language (LDML) specifikācija. Tas ir definēts klasē java.util.Calendar.

Metodēm Calendar.getDisplayName un Calendar.getDisplayNames ir pievienoti jauni stila specifikācijas, lai noteiktu kalendāra nosaukuma formātu.


Precizētājs Apraksts
publiska statiskā galīgā int SHORT_FORMAT Tas ir getDisplayName un getDisplayNames stila precizētājs, kas norāda formātam izmantoto īso nosaukumu.
publiska statiskā galīgā int LONG_FORMAT Tas ir getDisplayName un getDisplayNames stila precizētājs, kas norāda formātam izmantoto garo nosaukumu.
publiska statiskā galīgā int SHORT_STANDALONE Tas ir stila specifikācijas getDisplayName un getDisplayNames, kas norāda īsu nosaukumu, ko izmanto neatkarīgi, piemēram, mēneša saīsinājumu kā kalendāra galvenes.
publiska statiskā galīgā int LONG_STANDALONE Tas ir stila specifikācijas getDisplayName un getDisplayNames, kas norāda garu nosaukumu, ko izmanto neatkarīgi, piemēram, mēneša nosaukumu kā kalendāra galvenes.

Divas jaunas lokalizācijas metodes, kā rīkoties ar lokalizācijas (izvēles) paplašinājumiem.

Metode Apraksts
publiskais Būla hasExtensions() Tas atgriež patieso vērtību, ja šai lokalizācijai ir paplašinājumi.
publiskās lokalizācijas joslas paplašinājumi() Tas atgriež šīs lokalizācijas kopiju bez paplašinājumiem. Ja šai lokalizācijai nav paplašinājumu, šī lokalizācija tiek atgriezta pati.

Divas jaunas Locale.filter metodes atgriež sarakstu ar lokalizācijas gadījumiem, kas atbilst norādītajiem kritērijiem, kā noteikts RFC 4647:

Metode Apraksts
publisks statiskais saraksta filtrs (saraksta prioritāšu saraksts, kolekcijas lokalizācijas) Tas atgriež atbilstošo lokalizācijas gadījumu sarakstu, izmantojot RFC 4647 definēto filtrēšanas mehānismu. Tas ir līdzvērtīgs filtram (saraksts, kolekcija, filtrēšanas režīms), ja režīms ir Locale.FilteringMode.AUTOSELECT_FILTERING.
publisks statiskais saraksta filtrs (saraksta prioritāšu saraksts, kolekcijas lokalizācijas, lokalizācija. filtrēšanas režīma režīms) Tas atgriež atbilstošo lokalizācijas gadījumu sarakstu, izmantojot filtrēšanas mehānismu, kas definēts RFC 4647.

Divas jaunas metodes Locale.filterTags atgriež valodu tagu sarakstu, kas atbilst norādītajiem kritērijiem, kā noteikts RFC 4647.

Metode Apraksts
publisks statisks saraksta filtra tagi (saraksta prioritāšu saraksts, kolekcijas tagi) Tas atgriež atbilstošo valodu tagu sarakstu, izmantojot pamata filtrēšanas mehānismu, kas definēts RFC 4647. Tas ir līdzvērtīgs filtram Tags (saraksts, kolekcija, filtrēšanas režīms), ja režīms ir Locale.FilteringMode.AUTOSELECT_FILTERING.
publisks statisks saraksta filtra tagi (saraksta prioritāšu saraksts, kolekcijas tagi, lokalizācija. filtrēšanas režīma režīms) Tas atgriež atbilstošo valodu tagu sarakstu, izmantojot pamata filtrēšanas mehānismu, kas definēts RFC 4647.

Divas jaunas uzmeklēšanas metodes atgriež vislabāk atbilstošo lokalizāciju vai valodas tagu, izmantojot uzmeklēšanas mehānismu, kas definēts RFC 4647.

Metode Apraksts
publiska statiska lokalizācijas meklēšana (saraksta prioritāšu saraksts, kolekcijas lokalizācijas) Tas atgriež lokalizācijas gadījumu vislabāk atbilstošā valodas tagam, izmantojot uzmeklēšanas mehānismu, kas definēts RFC 4647.
Publisks statisks virknes uzmeklēšanas tags (saraksta prioritāšu saraksts, kolekcijas tagi) Tas atgriež vislabāk atbilstošo valodas tagu, izmantojot uzmeklēšanas mehānismu, kas definēts RFC 4647.

Citi Java 8 versijas uzlabojumi

Uzlabojumi JDK 8u5

1) Ir samazināts lietojumprogrammas drošības uzvedņu rādīšanas biežums.


Uzlabojumi JDK 8u11

1) Java vadības paneļa cilnē Advanced ir pieejama iespēja izslēgt sponsoru piedāvājumus, kad JRE ir instalēts vai atjaunināts.

2) Atribūtu Entry-Point var iekļaut JAR faila manifestā, lai identificētu vienu vai vairākas klases kā derīgu ieejas punktu jūsu RIA (bagātinātā interneta lietojumprogrammai).


JDK 8u20 uzlabojumi

1) javafxpackager rīks ir pārdēvēts par javapackager. Šis rīks ir uzlabots ar jauniem argumentiem attiecībā uz autonomiem lietojumprogrammu komplektētājiem.

Ar Java rīku ir saistīti šādi uzlabojumi:

  • Ir pievienota eksperimentāla JIT kompilatora opcija, kas saistīta ar ierobežoto transakciju atmiņu (RTM).
  • Ir pievienotas vairākas iespējas, kas saistītas ar virknes dublēšanu.
  • Ir pievienotas vairākas opcijas, kas saistītas ar uzlabotā šifrēšanas standarta (AES) būtību.
  • Atkritumu savākšanas iespēju kombinācijas ir novecojušas.

2) Java HotSpot virtuālajai mašīnai ir pievienots atkritumu savākšanas regulēšanas ceļvedis. Tajā ir aprakstīti Java HotSpot VM iekļautie atkritumu savācēji un palīdz izlemt, kurš atkritumu savācējs var vislabāk optimizēt jūsu lietojumprogrammas veiktspēju, it īpaši, ja tas apstrādā lielu datu apjomu (vairākus gigabaitus), tam ir daudz pavedienu un tam ir augsts darījumu līmenis. .


Uzlabojumi JDK 8u31

1) Šajā laidienā SSLv3 protokols ir noņemts no Java vadības paneļa papildu opcijām.


JDK 8u40 uzlabojumi

Java rīks

1) -XX:+CheckEndorsedAndExtDirs ir pievienots, jo apstiprināto standartu ignorēšanas mehānisms (JDK-8065675) un paplašinājuma mehānisms (JDK-8065702) ir novecojis. Šī opcija palīdz identificēt visus esošos šo mehānismu lietojumus, un tā tiek atbalstīta JDK 7u80 un JDK 8u40.

2) Java Flight Recorder (JFR) piedāvā dažādus veidus, kā atbloķēt komerciālas funkcijas un iespējot JFR lietojumprogrammas darbības laikā.

Tajā ir iekļautas java komandrindas opcijas, piemēram, jcmd diagnostikas komandas un grafiskā lietotāja interfeisa (GUI) vadīklas Java misijas kontrolē. Šī elastība ļauj nodrošināt atbilstošās opcijas startēšanas laikā vai mijiedarboties ar JFR vēlāk.

kur es varu atrast pārlūkprogrammas iestatījumus

3) Opcijai -XX:StartFlightRecording=parameter=value ir jauns parametrs dumponexit=true, kas norāda, vai jāģenerē JFR datu izgāztuves fails, kad JVM tiek pārtraukta kontrolētā veidā.

4) Opcijas, kas saistītas ar ierobežoto transakciju atmiņu (RTM), vairs nav eksperimentālas. Šīs opcijas ietver -XX:RTMAbortRatio=abort_ratio, -XX:RTMRetryCount=retries_number, -XX:+UseRTMDeopt un -XX:+UseRTMLocking.

5) Java 8 versijā ir ieviesta lietojumprogrammu klases datu koplietošana (AppCDS). AppCDS paplašina CDS (klases datu koplietošanu), lai koplietotajā arhīvā varētu ievietot klases no standarta paplašinājumu direktorijiem un lietojumprogrammas klases ceļu. Šī ir komerciāla funkcija, un tā vairs netiek uzskatīta par eksperimentālu.

6) Ir pievienotas jaunas opcijas -XX:+ResourceManagement un -XX:ResourceManagementSampleInterval=value.

7) Ir pievienota papildu informācija par lielajām lapām. Lielās lapas, kas pazīstamas arī kā milzīgas lapas, ir atmiņas lapas, kas ir ievērojami lielākas par standarta atmiņas lapas izmēru. Lielas lapas optimizē procesora tulkošanas-Lookaside buferus. Ir dokumentētas Linux opcijas -XX:+UseHugeTLBFS, -XX:+UseSHM un -XX:+UseTransparentHugePages.

8) Opcija -XX:ObjectAlignmentInBytes=līdzināšana ir dokumentēta.

JJS rīks

1) Ir pievienota opcija --optimistic-types=[true|false]. Tas iespējo vai atspējo optimistiskus pieņēmumus ar deoptimizējošu pārkompilāciju.

2) Jjs rīkam ir pievienota opcija --language=[es5]. Tas norāda ECMAScript valodas versiju.

Javapackera rīks

1) OS X komplektētājiem ir pieejami jauni argumenti. Arguments mac.CFBundleVersion identificē izmantojamo iekšējās versijas numuru.

2) Arguments mac.dmg.simple norāda, vai tiek izlaistas DMG pielāgošanas darbības, kas ir atkarīgas no AppleScript koda izpildes.

Jcmd rīks

Jcmd rīks tiek izmantots, lai dinamiski mijiedarbotos ar Java Flight Recorder (JFR). Varat to izmantot, lai atbloķētu komerciālas funkcijas, iespējotu/sāktu/apturētu lidojumu ierakstus un saņemtu dažādus statusa ziņojumus no sistēmas.

Jstat rīks

Jstat rīks ir atjaunināts ar informāciju par saspiestu klases telpu, kas ir īpaša metatelpas daļa.

Virtuālā iekārta

Mērogojamās vietējās atmiņas izsekošanas HotSpot VM līdzeklis palīdz diagnosticēt VM atmiņas noplūdes un noskaidrot lietotājus, ja VM nav atmiņas noplūdes. Native Memory Tracker var palaist bez automātiskās izslēgšanas lielās sistēmās un neradot būtisku veiktspēju, kas pārsniedz to, kas tiek uzskatīts par pieņemamu mazām programmām.