2014 m. kovo 18 d. „Oracle“ išleido naują „Java“ versiją kaip „Java 8“. Tai buvo revoliucinis programinės įrangos kūrimo platformos „Java“ leidimas. Tai apima įvairius Java programavimo, JVM, įrankių ir bibliotekų atnaujinimus.
Java 8 programavimo kalbos patobulinimai
„Java 8“ siūlo šias „Java“ programavimo funkcijas:
- Lambda išraiškos,
- Metodo nuorodos,
- Funkcinės sąsajos,
- Stream API,
- Numatytieji metodai,
- „Base64“ kodavimo iššifravimas,
- Statiniai metodai sąsajoje,
- Neprivaloma klasė,
- Kolekcininkų klasė,
- ForEach() metodas,
- Rhino JavaScript variklis,
- Lygiagretus masyvo rūšiavimas,
- Įveskite ir kartokite komentarus,
- IO patobulinimai,
- Lygiagretumo patobulinimai,
- JDBC patobulinimai ir kt.
Lambda išraiškos
Lambda išraiška padeda mums parašyti kodą funkciniu stiliumi. Jame pateikiamas aiškus ir glaustas būdas įgyvendinti SAM sąsają (vieną abstraktų metodą) naudojant išraišką. Tai labai naudinga rinkinių bibliotekoje, kurioje ji padeda kartoti, filtruoti ir išgauti duomenis.
Norėdami gauti daugiau informacijos ir pavyzdžių: paspauskite čia
Metodo nuorodos
Java 8 metodo nuoroda naudojama funkcinės sąsajos metodui nurodyti. Tai kompaktiška ir lengva lambda išraiškos forma. Kiekvieną kartą, kai naudojate lambda išraišką tik metodui nurodyti, galite pakeisti lambda išraišką metodo nuoroda.
Norėdami gauti daugiau informacijos ir pavyzdžių: paspauskite čia
Funkcinė sąsaja
Sąsaja, kurioje yra tik vienas abstraktus metodas, yra žinoma kaip funkcinė sąsaja. Jis gali turėti bet kokį numatytųjų ir statinių metodų skaičių. Jis taip pat gali deklaruoti objektų klasės metodus.
Funkcinės sąsajos taip pat žinomos kaip Single Abstract Method Interfaces (SAM sąsajos).
Norėdami gauti daugiau informacijos ir pavyzdžių: paspauskite čia
Neprivaloma
„Java“ pristatė naują „Java 8“ klasę Neprivaloma. Tai vieša galutinė klasė, naudojama „Java“ programoje „NullPointerException“ tvarkyti. Turime importuoti java.util paketą naudoti šią klasę. Jame pateikiami metodai, kaip patikrinti konkretaus kintamojo vertės buvimą.
Norėdami gauti daugiau informacijos ir pavyzdžių: paspauskite čia
kiekvienam
Java suteikia naują metodą forEach() elementams kartoti. Jis apibrėžtas Iterable ir Stream sąsajose.
Tai numatytasis metodas, apibrėžtas Iterable sąsajoje. Kolekcijos klasės, kurios išplečia Iterable sąsają, gali naudoti forEach() metodą elementams kartoti.
Šis metodas apima vieną parametrą, kuris yra funkcinė sąsaja. Taigi, kaip argumentą galite perduoti lambda išraišką.
Norėdami gauti daugiau informacijos ir pavyzdžių: paspauskite čia
Data/Time API
„Java“ pristatė naują datos ir laiko API nuo „Java 8“. Java.time pakete yra Java 8 datos ir laiko klasės.
Norėdami gauti daugiau informacijos ir pavyzdžių: paspauskite čia
Numatytieji metodai
„Java“ suteikia galimybę sąsajoje sukurti numatytuosius metodus. Metodai, kurie yra apibrėžti sąsajoje ir pažymėti numatytuoju raktiniu žodžiu, yra žinomi kaip numatytieji metodai. Šie metodai yra neabstrakčiai ir gali turėti metodo kūną.
Norėdami gauti daugiau informacijos ir pavyzdžių: spustelėkite čia
Rhino JavaScript variklis
Nashorn yra „JavaScript“ variklis. Jis naudojamas „JavaScript“ kodui dinamiškai vykdyti JVM („Java Virtual Machine“). Java yra komandinės eilutės įrankis ir tt kuris naudojamas JavaScript kodui vykdyti.
„JavaScript“ kodą galite vykdyti dviem būdais:
- Naudodami jjs komandinės eilutės įrankį ir
- Įterpiant į Java šaltinio kodą.
Norėdami gauti daugiau informacijos ir pavyzdžių: spustelėkite čia
StringJoiner
Java pridėjo naują galutinę klasę StringJoiner java.util pakete. Jis naudojamas simbolių, atskirtų skyrikliu, sekai sudaryti. Dabar galite sukurti eilutę perleisdami skiriamuosius ženklus, pvz., kablelį (,), brūkšnelį (-) ir kt.
niūrūs nuliai
Norėdami gauti daugiau informacijos ir pavyzdžių: spustelėkite čia
Kolekcionieriai
Kolekcionieriai yra paskutinė klasė, praplečianti objektų klasę. Jame atliekamos mažinimo operacijos, tokios kaip elementų kaupimas į kolekcijas, elementų apibendrinimas pagal įvairius kriterijus ir kt.
Norėdami gauti daugiau informacijos ir pavyzdžių: paspauskite čia
Srautinio API
Java 8 java.util.stream paketą sudaro klasės, sąsajos ir sąrašas, leidžiantis atlikti funkcinio stiliaus operacijas su elementais. Jis atlieka tingų skaičiavimą. Taigi, jis vykdomas tik tada, kai to reikia.
Norėdami gauti daugiau informacijos ir pavyzdžių: paspauskite čia
Srauto filtras
Java srautas suteikia metodą filtras () srauto elementams filtruoti pagal pateiktą predikatą. Tarkime, kad norite gauti tik lyginius sąrašo elementus, tai galite lengvai padaryti naudodamiesi filtru() metodu.
Šis metodas naudoja predikatą kaip argumentą ir grąžina gautų elementų srautą.
Norėdami gauti daugiau informacijos ir pavyzdžių: paspauskite čia
Java Base64 kodavimas ir dekodavimas
„Java“ suteikia klasę „Base64“, skirtą šifravimui ir iššifravimui. Norėdami naudoti jos metodus, į šaltinio failą turite importuoti java.util.Base64 klasę.
Šioje klasėje yra trys skirtingi koduotuvai ir dekoderiai, skirti šifruoti informaciją kiekviename lygyje.
Norėdami gauti daugiau informacijos ir pavyzdžių: paspauskite čia
Java Parallel Array Rūšiavimas
„Java“ suteikia naują papildomą „Arrays“ klasės funkciją, kuri naudojama lygiagrečiai rūšiuoti masyvo elementus. ParallelSort() metodas buvo įtrauktas į java.util.Arrays klasę, kuri naudoja JSR 166 Fork/Join paralelizmo bendrąjį telkinį, kad užtikrintų masyvų rūšiavimą. Tai perkrautas metodas.
Norėdami gauti daugiau informacijos ir pavyzdžių: spustelėkite čia
Java 8 saugumo patobulinimai
1) Java Secure Socket Extension (JSSE) teikėjas pagal numatytuosius nustatymus kliento pusėje įgalina protokolus Transport Layer Security (TLS) 1.1 ir TLS 1.2.
2) Pridėtas patobulintas metodas AccessController.doPrivileged, leidžiantis kodui patvirtinti savo privilegijų poaibį, netrukdant visiškai pereiti prie krūvos ir patikrinti, ar nėra kitų leidimų.
3) Išplėstinis šifravimo standartas (AES) ir slaptažodžiu pagrįsto šifravimo (PBE) algoritmai, pvz., PBEWithSHA256AndAES_128 ir PBEWithSHA512AndAES_256, buvo įtraukti į „SunJCE“ teikėją.
4) Java Secure Socket Extension (SunJSSE) pagal numatytuosius nustatymus JDK 7 įgalino serverio vardo indikacijos (SNI) plėtinį kliento programoms, o JDK 8 palaiko serverio programų SNI plėtinį. SNI plėtinys yra funkcija, kuri išplečia SSL/TLS protokolus, kad nurodytų, prie kokio serverio pavadinimo klientas bando prisijungti per rankų paspaudimą.
5) SunJSSE yra patobulintas, kad palaikytų autentifikuoto šifravimo su susijusiais duomenimis (AEAD) algoritmus. „Java“ kriptografijos plėtinio (SunJCE) teikėjas yra patobulintas, kad palaikytų AES / GCM / NoPadding šifro diegimą ir Galois / Counter Mode (GCM) algoritmo parametrus.
6) Prie klaviatūros įrankio pridedama nauja komandos vėliavėlė -importpassword. Jis naudojamas slaptažodžiui priimti ir saugiai jį saugoti kaip slaptą raktą. Klasės, pvz., java.security.DomainLoadStoreParameter irjava.security.PKCS12Attribute, pridedamos siekiant palaikyti DKS raktų saugyklos tipą.
7) JDK 8 versijoje kriptografiniai algoritmai buvo patobulinti naudojant SHA-2 šeimos pranešimų santraukos diegimo variantą SHA-224.
8) Patobulintas NSA Suite B kriptografijos palaikymas, kuris apima:
- OID registracija NSA Suite B kriptografijos algoritmams
- 2048 bitų DSA raktų porų generavimo ir papildomų parašo algoritmų palaikymas 2048 bitų DSA raktams, pvz., SHA224withDSA ir SHA256withDSA.
- Diffie-Hellman (DH) algoritmo rakto dydžio apribojimo pakėlimas nuo 1024 iki 2048.
9) SecureRandom klasė suteikia kriptografiškai stiprių atsitiktinių skaičių generavimą, kuris naudojamas privatiems ar viešiesiems raktams, šiframs ir pasirašytiems pranešimams. Metodas getInstanceStrong() buvo pristatytas JDK 8, kuris grąžina stipriausio SecureRandom egzempliorių. Jis turėtų būti naudojamas, kai reikia sukurti RSA privatų ir viešąjį raktą. „SecureRandom“ apima šiuos kitus pakeitimus:
- Buvo pristatyti du nauji UNIX platformų diegimai, kurie užtikrina blokavimo ir neblokavimo veiksmus.
10) Įtraukta nauja PKIXRevocationChecker klasė, kuri tikrina sertifikatų atšaukimo būseną su PKIX algoritmu. Tai palaiko geriausių pastangų tikrinimą, galutinio objekto sertifikato tikrinimą ir konkrečiam mechanizmui skirtas parinktis.
11) Viešojo rakto kriptografijos standartai 11 (PKCS) buvo išplėsti įtraukiant 64 bitų „Windows“ palaikymą.
12) Prie Kerberos 5 pridedami du nauji rcache tipai. Tipas none reiškia, kad rcache iš viso nėra, o tipas dfl reiškia DFL stiliaus failų pagrindu sukurtą rcache. Be to, dabar palaikomas akceptoriaus prašomas dalinis raktas. Jie sukonfigūruoti naudojant sun.security.krb5.rcache ir sun.security.krb5.acceptor.subkey sistemos ypatybes.
13) JDK 8 versijoje Kerberos 5 protokolo perėjimas ir suvaržytas delegavimas palaikomi toje pačioje srityje.
14) Java 8 pagal numatytuosius nustatymus išjungė silpną šifravimą. Su DES susiję Kerberos 5 šifravimo tipai pagal numatytuosius nustatymus nepalaikomi. Šiuos šifravimo tipus galima įjungti krb5.conf faile pridedant allow_weak_crypto=true.
15) Galite nustatyti serverio pavadinimą į null, kad būtų nurodytas nesusietas serveris. Tai reiškia, kad klientas gali prašyti paslaugos naudodamas bet kokį serverio pavadinimą. Nustačius kontekstą, serveris gali nuskaityti pavadinimą kaip sutartą nuosavybę su rakto pavadinimu SASL.BOUND_SERVER_NAME.
16) „Java Native Interface“ (JNI) tiltas į savąją „Java Generic Security Service“ (JGSS) dabar palaikomas „Mac OS X“. Galite nustatyti sistemos ypatybę sun.security.jgss.native į true, kad ją įjungtumėte.
17) Apibrėžta nauja sistemos ypatybė jdk.tls.ephemeralDHKeySize, skirta efemeriniams DH raktų dydžiams tinkinti. Mažiausias priimtinas DH rakto dydis yra 1024 bitai, išskyrus eksportuojamus šifrų rinkinius arba senąjį režimą (jdk.tls.ephemeralDHKeySize=legacy).
18) Java Secure Socket Extension (JSSE) teikėjas pagal numatytuosius nustatymus gerbia kliento šifrų rinkinio nuostatas. Tačiau elgseną galima pakeisti, kad būtų atsižvelgta į serverio šifrų rinkinio nuostatas, serveryje iškviečiant SSLPameters.setUseCipherSuitesOrder(true).
Java 8 įrankių patobulinimai
1) Įvedama komanda jjs, kuri iškviečia Nashorn variklį interaktyviuoju apvalkalo režimu arba scenarijaus failams interpretuoti.
2) „Java“ komanda gali paleisti JavaFX programas, jei JavaFX programa yra tinkamai supakuota.
3) Java komandos vadovo puslapis (ir nroff, ir HTML) buvo visiškai perdarytas. Išplėstinės parinktys dabar skirstomos į vykdymo laiką, kompiliatorių, šiukšlių surinkimą ir aptarnavimą, atsižvelgiant į sritį, kurią jos veikia. Dabar aprašomos kelios anksčiau trūkusios parinktys. Taip pat yra skyrius, skirtas parinktims, kurios buvo pasenusios arba pašalintos nuo ankstesnio leidimo.
4) Naujas jdeps komandinės eilutės įrankis leidžia kūrėjui analizuoti klasės failus, kad nustatytų paketo ar klasės lygio priklausomybes.
5) Galite nuotoliniu būdu pasiekti diagnostikos komandas, kurios anksčiau buvo pasiekiamos tik vietoje per jcmd įrankį. Nuotolinė prieiga suteikiama naudojant „Java Management Extensions“ (JMX), todėl diagnostinės komandos yra pasiekiamos platformai MBean, registruotai platformos MBean serveryje. MBean yra com.sun.management.DiagnosticCommandMBean sąsaja.
6) Į „jarsigner“ įrankį įtraukta nauja parinktis -tsapolicyid, kuri leidžia paprašyti laiko žymos institucijos pasirašyti laiko žymą ir pridėti ją prie pasirašyto JAR failo.
7) Įtrauktas naujas metodas java.lang.reflect.Executable.getParameters, leidžiantis pasiekti bet kurio metodo ar konstruktoriaus formalių parametrų pavadinimus. Tačiau .class failai pagal numatytuosius nustatymus nesaugo formalių parametrų pavadinimų. Norėdami išsaugoti formalius parametrų pavadinimus tam tikrame .class faile ir taip įgalinti Reflection API nuskaityti formalius parametrų pavadinimus, sukompiliuokite šaltinio failą naudodami javac kompiliatoriaus parinktį -parameters.
8) Dvejetainių palyginimų tipo taisyklės, pateiktos „Java“ kalbos specifikacijos (JLS) 15.21 skyriuje, dabar bus tinkamai įgyvendintos „Javac“.
9) Šiame leidime apt įrankis ir su juo susijusi API, esantys pakete com.sun.mirror, buvo pašalinti.
Javadoc patobulinimai
„Java SE 8“ į „Javadoc“ įrankį buvo įtrauktos šios naujos API.
- Naujoji „DocTree“ API pristato skaitytuvą, leidžiantį pereiti šaltinio kodą, pavaizduotą abstrakčia sintaksės medžiu. Tai išplečia „Compiler Tree“ API, kad suteiktų struktūrinę prieigą prie „Javadoc“ komentarų turinio.
- Javax.tools pakete yra klasių ir sąsajų, kurios leidžia iškviesti Javadoc įrankį tiesiai iš Java programos, nevykdant naujo proceso.
- Sukurtos klasės ar sąsajos dokumentacijos skyrius „Metodų santrauka“ buvo pertvarkytas. Metodų aprašymai šiame skyriuje sugrupuoti pagal tipą. Pagal numatytuosius nustatymus visi metodai yra išvardyti. Galite spustelėti skirtuką, kad peržiūrėtumėte konkretaus tipo metodus (statinį, egzempliorių, abstraktų, konkretų arba nebenaudojamą, jei jie yra klasėje arba sąsajoje).
- „Javadoc“ įrankis dabar palaiko „Javadoc“ komentarų turinio tikrinimą, ar nėra problemų, dėl kurių gali kilti įvairių problemų, pvz., netinkamo HTML ar pritaikymo neįgaliesiems problemų, failuose, kuriuos sugeneruoja „Javadoc“. Ši funkcija įjungta pagal numatytuosius nustatymus, ją taip pat galima valdyti naudojant naują -Xdoclint parinktį.
Pack200 patobulinimų
Java klasės failo formatas buvo atnaujintas dėl JSR 292, kuris palaiko dinamiškai įvestas kalbas Java platformoje.
Pack200 variklis buvo atnaujintas siekiant užtikrinti, kad Java SE 8 klasės failai būtų efektyviai suglaudinti. Dabar jis gali atpažinti nuolatinius telkinio įrašus ir naujus baitų kodus, kuriuos pristatė JSR 292. Dėl to suspausti failai, sukurti naudojant šią „pack200“ įrankio versiją, nebus suderinami su senesnėmis „Unpack200“ įrankio versijomis.
Java 8 I/O patobulinimai
„Java 8“ versijoje yra keletas java.nio.charset.Charset ir išplėstinių simbolių rinkinių patobulinimų. Tai apima:
- Naujas SelectorProvider, kuris gali pagerinti serverio našumą arba mastelio keitimą. /dev/poll SelectorProvider ir toliau yra numatytasis. Norėdami naudoti „Solaris“ įvykių prievado mechanizmą, paleiskite sistemos ypatybę java.nio.channels.spi.Selector į sun.nio.ch.EventPortSelectorProvider.
- Failo /jre/lib/charsets.jar dydis sumažintas.
- Patobulintas java.lang.String(byte[], ∗) konstruktoriaus ir java.lang.String.getBytes() metodo našumas.
Java 8 tinklo patobulinimai
1) Pridėta nauja klasė java.net.URLPermission. Tai reiškia leidimą pasiekti išteklius, apibrėžtus nurodytu URL.
2) Pridėtas paketas jdk.net, kuriame yra konkrečios platformos lizdų parinktys ir šių parinkčių nustatymo mechanizmas visuose standartiniuose lizdų tipuose. Lizdų parinktys apibrėžtos jdk.net.ExtendedSocketOptions.
Linux pakeitimo failas
3) „HttpURLConnection“ klasėje, jei yra įdiegtas saugos tvarkyklė ir iškviečiamas metodas, dėl kurio bandoma užmegzti ryšį, skambinantis asmuo turi turėti arba „prisijungti“ „SocketPermission“ prie paskirties URL pagrindinio kompiuterio / prievado derinio arba URLPermission, leidžianti šią užklausą.
Jei įjungtas automatinis peradresavimas ir ši užklausa nukreipiama į kitą paskirties vietą, skambinantysis taip pat turi turėti leidimą prisijungti prie peradresuoto pagrindinio kompiuterio / URL.
Java 8 lygiagretumo patobulinimai
Paketas java.util.concurrent pridėjo dvi naujas sąsajas ir keturias naujas klases.
Java.util.concurrent sąsajos
Sąsaja | apibūdinimas |
---|---|
viešoji statinė sąsaja CompletableFuture.AsynchronousCompletionTask | Tai žymeklio sąsaja, naudojama asinchroninėms užduotims, sukurtoms asinchroniniais metodais, nustatyti. Tai gali būti naudinga stebint, derinant ir stebint asinchroninę veiklą. |
viešoji sąsaja CompletionStage | Jis sukuria galbūt asinchroninio skaičiavimo etapą, kuris atlieka veiksmą arba apskaičiuoja vertę, kai baigiasi kitas CompletionStage etapas. |
Java.util.concurrent klasės
Klasė | apibūdinimas |
---|---|
viešoji klasė CompletableFuture pratęsia Objektas įgyvendina Future, CompletionStage | Tai yra ateitis, kuri gali būti aiškiai užbaigta ir gali būti naudojama kaip CompletionStage, palaikanti priklausomas funkcijas ir veiksmus, kurie suaktyvinami jį užbaigus. |
viešoji statinė klasė „ConcurrentHashMap.KeySetView“ išplečia objektų padargų rinkinį, serializuojama | Tai „ConcurrentHashMap“ kaip raktų rinkinio vaizdas, kuriame papildymai gali būti pasirinktinai įjungti susiejant su bendra verte. |
viešoji abstrakčių klasė CountedCompleter išplečia ForkJoinTask | ForkJoinTask su užbaigimo veiksmu, kuris atliktas suaktyvinus ir nėra likusių laukiančių veiksmų. |
viešoji klasė CompletionException pratęsia RuntimeException | Ji pateikia išimtį, kai atliekant rezultatą ar užduotį aptinkama klaida ar kita išimtis. |
Nauji metodai java.util.concurrent.ConcurrentHashMap klasėje
„ConcurrentHashMap“ klasė naujausiame leidime pristato keletą naujų metodų. Tai apima įvairius forEach metodus (forEach, forEachKey, forEachValue ir forEachEntry), paieškos metodus (search, searchKeys, searchValues ir searchEntries) ir daugybę mažinimo metodų (sumažinti, redukuoti dvigubai, redukuoti iki ilgo ir kt.). Taip pat buvo įtraukti kiti įvairūs metodai (mappingCount ir newKeySet).
Naujos klasės java.util.concurrent.atomic
Naujausiame leidime pristatomas keičiamo dydžio, atnaujinamas, kintamasis palaikymas per nedidelį naujų klasių rinkinį „DoubleAccumulator“, „DoubleAdder“, „LongAccumulator“ ir „LongAdder“. Jame viduje naudojami ginčų mažinimo metodai, užtikrinantys didžiulius pralaidumo patobulinimus, palyginti su „Atomic“ kintamaisiais.
Klasė | apibūdinimas |
---|---|
viešoji klasė DoubleAccumulator praplečia Skaičius įgyvendina Serializuojama | Jis naudojamas vienam ar keliems kintamiesiems, kurie kartu palaiko veikiančią dvigubą vertę, atnaujintą naudojant pateiktą funkciją. |
viešoji klasė DoubleAdder išplečia Skaičius įgyvendina Serializuojama | Jis naudojamas vienam ar keliems kintamiesiems, kurie kartu palaiko iš pradžių nulinę dvigubą sumą. |
viešoji klasė LongAccumulator plečia Skaičius įgyvendina Serializuojama | Jis naudojamas vienam ar keliems kintamiesiems, kurie kartu palaiko ilgalaikę vertę, atnaujintą naudojant pateiktą funkciją. |
viešoji klasė LongAdder išplečia Skaičius įgyvendina Serializuojama | Jis naudojamas vienam ar keliems kintamiesiems, kurie kartu palaiko iš pradžių nulinę ilgąją sumą. |
Nauji metodai java.util.concurrent.ForkJoinPool klasėje
Ši klasė pridėjo du naujus metodus getCommonPoolParallelism() ir commonPool(), kurie atitinkamai grąžina tikslinį bendro telkinio arba bendro telkinio egzemplioriaus lygiagretumo lygį.
Metodas | apibūdinimas |
---|---|
viešas statinis ForkJoinPool commonPool() | Tai grąžina bendrojo telkinio egzempliorių. |
Viešas statinis int getCommonPoolParallelism() | Tai grąžina tikslinį bendro telkinio lygiagretumo lygį. |
Nauja klasė java.util.concurrent.locks.StampedLock
Pridėta nauja klasė StampedLock, kuri naudojama galimybėmis pagrįstą užraktą su trimis režimais, skirtus valdyti skaitymo / rašymo prieigą (rašymas, skaitymas ir optimistinis skaitymas). Ši klasė taip pat palaiko metodus, kurie sąlyginai suteikia konversijas trimis režimais.
Klasė | apibūdinimas |
---|---|
viešoji klasė StampedLock išplečia Objektų įgyvendinimą Serializuojama | Ši klasė yra galimybėmis pagrįstas užraktas su trimis režimais, skirtas valdyti skaitymo / rašymo prieigą. |
Java API XML apdorojimui (JAXP) 1.6 patobulinimai
„Java 8“ versijoje pridedama „Java API“, skirta XML apdorojimui (JAXP) 1.6. Norint įkelti paslaugas iš paslaugos konfigūracijos failų, reikia naudoti paslaugų teikėjo įkėlimo priemonę, kurią apibrėžia java.util.ServiceLoader.
Taip siekiama ateityje moduliuoti Java SE platformą, kur paslaugų teikėjai gali būti diegiami ne JAR failais ir galbūt be paslaugos konfigūracijos failų.
Java virtualios mašinos patobulinimai
Invokespecial instrukcijų tikrinimas buvo sugriežtintas, kad būtų galima iškviesti tik egzempliorių inicijavimo metodą dabartinėje klasėje arba jos tiesioginėje super klasėje.
„Java Mission Control 5.3“ yra įtraukta į „Java 8“.
„Java Mission Control“ (JMC) – tai pažangus įrankių rinkinys, leidžiantis efektyviai ir išsamiai analizuoti duomenis ir užtikrinti pažangų, nepastebimą „Java“ stebėjimą ir valdymą. JMC pateikia skyrius, skirtus bendroms analizės sritims, tokioms kaip kodo našumas, atmintis ir delsa.
„Babel“ kalbos paketai japonų ir supaprastinta kinų kalbomis dabar pagal numatytuosius nustatymus įtraukti į „Java Mission Control“, kuris yra JDK 8.
Java 8 internacionalizacijos patobulinimai
1) Unicode patobulinimai
JDK 8 palaiko Unicode 6.2.0. Jame yra šios funkcijos.
- 733 nauji simboliai, įskaitant Turkijos liros ženklą.
- 7 nauji scenarijai:
- Meroitiniai hieroglifai
- Meroitinis kursyvas
- Sora Sompeng
- Chakma
- Šarada
- Takri
- Miao
- 11 naujų blokų: įskaitant 7 blokus pirmiau išvardytiems naujiems scenarijus ir 4 blokus šiems esamiems scenarijus:
- Arabų išplėstinė-A
- Sundanese papildas
- „Meek Extensions“ susitikimas
- Arabų matematiniai abėcėlės simboliai
Unicode CLDR duomenų ir java.locale.providers sistemos ypatybės priėmimas
„Unicode“ konsorciumas išleido „Common Locale Data Repository“ (CLDR) projektą, skirtą „palaikyti pasaulio kalbas su didžiausia ir plačiausia standartine lokalių duomenų saugykla“. CLDR tampa de facto lokalių duomenų standartu. CLDR XML pagrįsti lokalės duomenys buvo įtraukti į JDK 8 leidimą, tačiau pagal numatytuosius nustatymus jie išjungti.
Yra keturi skirtingi lokalių duomenų šaltiniai:
- CLDR reiškia Unicode CLDR projekto pateiktus lokalės duomenis.
- HOST reiškia esamo vartotojo pritaikytą pagrindinės operacinės sistemos nustatymų. Jis veikia tik naudojant numatytąją vartotojo lokalę, o tinkinami nustatymai gali skirtis priklausomai nuo OS, bet pirmiausia palaikomi datos, laiko, numerio ir valiutos formatai.
- SPI reiškia lokalei jautrias paslaugas, įdiegtas įdiegtuose SPI teikėjuose.
- JRE yra lokalės duomenys, suderinami su ankstesniais JRE leidimais.
Norėdami pasirinkti norimą lokalės duomenų šaltinį, naudokite sistemos ypatybę java.locale.providers. išvardijant duomenų šaltinius pageidaujama tvarka. Pavyzdžiui: java.locale.providers=HOST,SPI,CLDR,JRE Numatytasis elgesys atitinka šį nustatymą: java.locale.providers=JRE,SPI
Java 8 naujas kalendorius ir lokalių API
JDK 8 apima dvi naujas klases, kelis naujus metodus ir naują esamo statinio metodo grąžinimo reikšmę.
Į java.util.spi paketą įtrauktos dvi naujos abstrakčios klasės paslaugų teikėjams.
Klasė | apibūdinimas |
---|---|
viešoji abstrakčioji klasė CalendarDataProvider išplečia LocaleServiceProvider | Tai abstrakti klasė, skirta paslaugų teikėjams, teikiantiems nuo lokalės priklausančius kalendoriaus parametrus. |
viešoji abstrakčioji klasė CalendarNameProvider išplečia LocaleServiceProvider | Tai abstrakti klasė, skirta paslaugų teikėjams, teikiantiems lokalizuotus kalendoriaus laukų reikšmių eilučių atvaizdus (rodomus pavadinimus). |
Statinis metodas dabar gali atpažinti numeravimo sistemą Locale.UNICODE_LOCALE_EXTENSION.
Metodas | apibūdinimas |
---|---|
viešas statinis galutinis DecimalFormatSymbols getInstance (lokalės lokalė) | Jis naudojamas norint gauti nurodytos lokalės „DecimalFormatSymbols“ egzempliorių. Šis metodas suteikia prieigą prie „DecimalFormatSymbols“ egzempliorių vietoms, kurias palaiko pati „Java“ vykdymo programa, taip pat toms, kurias palaiko įdiegtos „DecimalFormatSymbolsProvider“ programos. Ji išmeta NullPointerException, jei lokalė yra nulinė. |
Pridėta naujų metodų kalendoriaus API:
Metodas | apibūdinimas |
---|---|
viešoji loginė reikšmė yraSupportedLocale (lokalės lokalė) | Grąžinama tiesa, jei nurodytą lokalę palaiko šis lokalės paslaugų teikėjas. Nurodytoje lokalėje gali būti plėtinių, į kuriuos reikia atsižvelgti nustatant palaikymą. Jis apibrėžiamas java.util.spi.LocaleServiceProvider klasėje |
vieša eilutė getCalendarType() | Jis grąžina šio kalendoriaus kalendoriaus tipą. Kalendorių tipus apibrėžia Unikodo lokalės duomenų žymėjimo kalbos (LDML) specifikacija. Jis apibrėžiamas java.util.Calendar klasėje. |
Metodams Calendar.getDisplayName ir Calendar.getDisplayNames pridedami nauji stiliaus specifikacijos, siekiant nustatyti kalendoriaus pavadinimo formatą.
Tiksliau | apibūdinimas |
---|---|
viešas statinis galutinis int SHORT_FORMAT | Tai yra getDisplayName ir getDisplayNames stiliaus specifikacija, nurodanti trumpą formato pavadinimą. |
viešas statinis galutinis int LONG_FORMAT | Tai yra getDisplayName ir getDisplayNames stiliaus specifikacija, nurodanti ilgą formato pavadinimą. |
viešas statinis galutinis int SHORT_STANDALONE | Tai yra getDisplayName ir getDisplayNames stiliaus specifikacija, nurodanti trumpą pavadinimą, naudojamą atskirai, pvz., mėnesio santrumpa kaip kalendoriaus antraštės. |
viešas statinis galutinis int LONG_STANDALONE | Tai yra getDisplayName ir getDisplayNames stiliaus specifikacija, nurodanti ilgą atskirai naudojamą pavadinimą, pvz., mėnesio pavadinimą kaip kalendoriaus antraštes. |
Du nauji lokalės metodai, skirti dirbti su lokalės (pasirenkamais) plėtiniais.
Metodas | apibūdinimas |
---|---|
vieša loginė vertė hasExtensions() | Grąžinama tiesa, jei ši lokalė turi plėtinių. |
vieša lokalės juostos plėtiniai() | Ji grąžina šios lokalės kopiją be plėtinių. Jei ši Lokalė neturi plėtinių, ši lokalė grąžinama pati. |
Du nauji Locale.filter metodai pateikia Lokalės egzempliorių sąrašą, atitinkantį nurodytus kriterijus, kaip apibrėžta RFC 4647:
Metodas | apibūdinimas |
---|---|
viešas statinis sąrašo filtras (sąrašo prioritetų sąrašas, rinkinio lokalės) | Jis pateikia atitinkamų lokalių egzempliorių sąrašą, naudojant filtravimo mechanizmą, apibrėžtą RFC 4647. Tai atitinka filtrą (sąrašas, rinkinys, filtravimo režimas), kai režimas yra Locale.FilteringMode.AUTOSELECT_FILTERING. |
viešas statinis sąrašo filtras (sąrašo prioritetų sąrašas, rinkimo lokalės, lokalės. filtravimo režimo režimas) | Jis pateikia atitinkamų lokalių egzempliorių sąrašą, naudojant filtravimo mechanizmą, apibrėžtą RFC 4647. |
Du nauji Locale.filterTags metodai pateikia kalbos žymų, atitinkančių nurodytus kriterijus, kaip apibrėžta RFC 4647, sąrašą.
Metodas | apibūdinimas |
---|---|
viešas statinis sąrašo filtro žymos (sąrašo prioritetų sąrašas, kolekcijos žymos) | Jis pateikia atitinkamų kalbų žymų sąrašą, naudodamas pagrindinį filtravimo mechanizmą, apibrėžtą RFC 4647. Tai atitinka filtravimo žymas (sąrašas, rinkinys, filtravimo režimas), kai režimas yra Locale.FilteringMode.AUTOSELECT_FILTERING. |
viešas statinis sąrašo filtro žymos (sąrašo prioritetų sąrašas, rinkinio žymos, lokalės. filtravimo režimo režimas) | Jis pateikia atitinkamų kalbų žymų sąrašą, naudodamas pagrindinį filtravimo mechanizmą, apibrėžtą RFC 4647. |
Du nauji paieškos metodai pateikia geriausiai atitinkančią lokalę arba kalbos žymą, naudodami RFC 4647 apibrėžtą paieškos mechanizmą.
Metodas | apibūdinimas |
---|---|
vieša statinė lokalės paieška (sąrašo prioritetų sąrašas, rinkinio lokalės) | Jis pateikia geriausiai atitinkančios kalbos žymos lokalės egzempliorių, naudodamas RFC 4647 apibrėžtą peržvalgos mechanizmą. |
Vieša statinė eilutės paieškos žyma (sąrašo prioritetų sąrašas, kolekcijos žymos) | Jis pateikia geriausiai atitinkančią kalbos žymą, naudodamas RFC 4647 apibrėžtą paieškos mechanizmą. |
Kiti Java 8 versijos patobulinimai
JDK 8u5 patobulinimai
1) Sumažėjo programos saugos raginimų rodymo dažnis.
JDK 8u11 patobulinimai
1) „Java“ valdymo skydo skirtuke „Išplėstinė“ yra galimybė neleisti rėmėjų pasiūlymų, kai JRE yra įdiegtas arba atnaujintas.
2) Atributas Entry-Point gali būti įtrauktas į JAR failo aprašą, kad būtų galima identifikuoti vieną ar daugiau klasių kaip galiojantį įvesties tašką jūsų RIA (Rich Interneto programai).
JDK 8u20 patobulinimai
1) Įrankis javafxpackager buvo pervadintas į javapackager. Šis įrankis buvo patobulintas naujais argumentais dėl savarankiškų programų rinktuvų.
Šie patobulinimai yra susiję su „Java“ įrankiu:
- Pridėta eksperimentinė JIT kompiliatoriaus parinktis, susijusi su ribota operacijų atmintimi (RTM).
- Pridėtos kelios parinktys, susijusios su eilutės dubliavimo panaikinimu.
- Pridėta keletas parinkčių, susijusių su išplėstinio šifravimo standarto (AES) ypatybėmis.
- Šiukšlių surinkimo parinkčių deriniai nebenaudojami.
2) „Java HotSpot“ virtualioje mašinoje buvo pridėtas šiukšlių surinkimo derinimo vadovas. Jame aprašomi šiukšlių rinktuvai, įtraukti į „Java HotSpot VM“, ir padeda nuspręsti, kuris šiukšlių rinktuvas gali geriausiai optimizuoti jūsų programos našumą, ypač jei jis tvarko didelius duomenų kiekius (kelis gigabaitus), turi daug gijų ir turi didelį operacijų skaičių. .
JDK 8u31 patobulinimai
1) Šiame leidime SSLv3 protokolas pašalintas iš Java Control Panel Advanced parinkčių.
JDK 8u40 patobulinimai
Java įrankis
1) -XX:+CheckEndorsedAndExtDirs buvo pridėtas, nes patvirtintų standartų nepaisymo mechanizmas (JDK-8065675) ir išplėtimo mechanizmas (JDK-8065702) buvo nebenaudojami. Ši parinktis padeda nustatyti bet kokius esamus šių mechanizmų naudojimo būdus ir palaikoma JDK 7u80 ir JDK 8u40.
2) „Java Flight Recorder“ (JFR) siūlo įvairius būdus, kaip atrakinti komercines funkcijas ir įjungti JFR programos veikimo metu.
Jame yra „Java“ komandų eilutės parinkčių, tokių kaip „jcmd“ diagnostikos komandos ir „Java Mission Control“ grafinės vartotojo sąsajos (GUI) valdikliai. Šis lankstumas leidžia pateikti tinkamas parinktis paleidžiant arba vėliau sąveikauti su JFR.
3) Parinktis -XX:StartFlightRecording=parameter=value turi naują parametrą dumponexit=true, kuris nurodo, ar turi būti sugeneruotas JFR duomenų iškelties failas, kai JVM nutrūksta kontroliuojamu būdu.
4) Su ribota operacijų atmintimi (RTM) susijusios parinktys nebėra eksperimentinės. Šios parinktys apima -XX:RTMAbortRatio=abort_ratio, -XX:RTMRetryCount=pakartotų bandymų_skaičius, -XX:+UseRTMDeopt ir -XX:+UseRTMLocking.
5) „Java 8“ buvo pristatytas programų klasės duomenų bendrinimas (AppCDS). AppCDS išplečia CDS (klasių duomenų bendrinimą), kad klasės iš standartinių plėtinių katalogų ir programos klasės kelias būtų įtrauktos į bendrinamą archyvą. Tai komercinė funkcija ir nebelaikoma eksperimentine.
6) Pridėtos naujos parinktys -XX:+ResourceManagement ir -XX:ResourceManagementSampleInterval=value.
7) Pridėta papildomos informacijos apie didelius puslapius. Dideli puslapiai, taip pat žinomi kaip didžiuliai puslapiai, yra atminties puslapiai, kurie yra žymiai didesni nei standartinis atminties puslapio dydis. Dideli puslapiai optimizuoja procesoriaus vertimo-Lookaside buferius. „Linux“ parinktys -XX:+UseHugeTLBFS, -XX:+UseSHM ir -XX:+UseTransparentHugePages buvo dokumentuotos.
8) Parinktis -XX:ObjectAlignmentInBytes=lygiavimas buvo dokumentuotas.
JJS įrankis
1) Pridėta parinktis --optimistic-types=[true|false]. Tai įgalina arba išjungia optimistines prielaidas su deoptimizuojančiu perkompiliavimu.
2) Parinktis --language=[es5] buvo pridėta prie jjs įrankio. Ji nurodo ECMAScript kalbos versiją.
Javapackerio įrankis
1) Galimi nauji OS X rinktuvų argumentai. Argumentas mac.CFBundleVersion nurodo naudotiną vidinės versijos numerį.
konvertuoti eilutę į enum
2) Argumentas mac.dmg.simple nurodo, ar praleidžiami DMG tinkinimo veiksmai, priklausantys nuo AppleScript kodo vykdymo.
Jcmd įrankis
Jcmd įrankis naudojamas dinamiškai sąveikauti su Java Flight Recorder (JFR). Jį galite naudoti norėdami atrakinti komercines funkcijas, įjungti / pradėti / sustabdyti skrydžių įrašus ir gauti įvairius būsenos pranešimus iš sistemos.
Jstat įrankis
Jstat įrankis buvo atnaujintas su informacija apie suspaustą klasių erdvę, kuri yra ypatinga metaerdvės dalis.
Virtuali mašina
Scalable Native Memory Tracking HotSpot VM funkcija padeda diagnozuoti VM atminties nutekėjimą ir išsiaiškinti vartotojus, kai atminties nutekėjimo nėra VM. Native Memory Tracker galima paleisti savaime neišsijungiant didelėse sistemose ir nesukeliant didesnio poveikio našumui, nei laikoma priimtina mažoms programoms.