Spoločnosť Oracle vydala 18. marca 2014 novú verziu Java ako Java 8. Išlo o revolučné vydanie platformy Java pre vývoj softvéru. Zahŕňa rôzne vylepšenia programovania Java, JVM, nástrojov a knižníc.
Vylepšenia programovacieho jazyka Java 8
Java 8 poskytuje nasledujúce funkcie pre programovanie Java:
- Lambda výrazy,
- Odkazy na metódy,
- Funkčné rozhrania,
- Stream API,
- Predvolené metódy,
- Base64 Encode Decode,
- Statické metódy v rozhraní,
- Voliteľná trieda,
- trieda zberateľov,
- ForEach() metóda,
- Rhino JavaScript Engine,
- Paralelné triedenie poľa,
- Typ a opakované poznámky,
- IO vylepšenia,
- vylepšenia súbežnosti,
- Vylepšenia JDBC atď.
Lambda výrazy
Lambda výraz nám pomáha písať náš kód vo funkčnom štýle. Poskytuje jasný a stručný spôsob implementácie rozhrania SAM (jednoduchá abstraktná metóda) pomocou výrazu. Je veľmi užitočný v knižnici zbierok, v ktorej pomáha iterovať, filtrovať a extrahovať dáta.
Ďalšie informácie a príklady: kliknite tu
Odkazy na metódy
Odkaz na metódu Java 8 sa používa na označenie metódy funkčného rozhrania. Ide o kompaktnú a jednoduchú formu lambda expresie. Zakaždým, keď používate výraz lambda len na odkazovanie na metódu, môžete výraz lambda nahradiť odkazom na metódu.
Ďalšie informácie a príklady: kliknite tu
Funkčné rozhranie
Rozhranie, ktoré obsahuje iba jednu abstraktnú metódu, sa nazýva funkčné rozhranie. Môže mať ľubovoľný počet predvolených a statických metód. Môže tiež deklarovať metódy triedy objektov.
Funkčné rozhrania sú známe aj ako rozhrania SAM (Single Abstract Method Interfaces).
Ďalšie informácie a príklady: kliknite tu
Voliteľné
Java predstavila novú triedu Optional v Java 8. Je to verejná finálna trieda, ktorá sa používa na riešenie NullPointerException v Java aplikácii. Musíme dovážať java.util balík na použitie tejto triedy. Poskytuje metódy na kontrolu prítomnosti hodnoty pre konkrétnu premennú.
Ďalšie informácie a príklady: kliknite tu
pre každý
Java poskytuje novú metódu forEach() na iteráciu prvkov. Je definovaný v rozhraniach Iterable a Stream.
Je to predvolená metóda definovaná v rozhraní Iterable. Triedy kolekcií, ktoré rozširujú rozhranie Iterable, môžu použiť metódu forEach() na iteráciu prvkov.
Táto metóda má jeden parameter, ktorým je funkčné rozhranie. Takže ako argument môžete odovzdať výraz lambda.
Ďalšie informácie a príklady: kliknite tu
Date/Time API
Java zaviedla nové API pre dátum a čas od verzie Java 8. Balík java.time obsahuje triedy Java 8 Date and Time.
Ďalšie informácie a príklady: kliknite tu
Predvolené metódy
Java poskytuje nástroj na vytváranie predvolených metód vo vnútri rozhrania. Metódy, ktoré sú definované v rozhraní a označené predvoleným kľúčovým slovom, sú známe ako predvolené metódy. Tieto metódy sú neabstraktné metódy a môžu mať telo metódy.
Pre viac informácií a príkladov: kliknite sem
Rhino JavaScript Engine
Nashorn je nástroj JavaScript. Používa sa na dynamické spúšťanie kódu JavaScript na JVM (Java Virtual Machine). Java poskytuje nástroj príkazového riadku atď ktorý sa používa na spustenie kódu JavaScript.
Kód JavaScript môžete spustiť dvoma spôsobmi:
- Pomocou nástroja príkazového riadka jjs a
- Vložením do zdrojového kódu Java.
Pre viac informácií a príkladov: kliknite sem
StringJoiner
Java pridala novú finálnu triedu StringJoiner v balíku java.util. Používa sa na zostavenie postupnosti znakov oddelených oddeľovačom. Teraz môžete vytvoriť reťazec zadaním oddeľovačov, ako sú čiarka (,), spojovník (-) atď.
v ktorom roku bol vynájdený počítač
Pre viac informácií a príkladov: kliknite sem
Zberatelia
Collectors je posledná trieda, ktorá rozširuje triedu Object. Poskytuje redukčné operácie, ako je akumulácia prvkov do kolekcií, sumarizácia prvkov podľa rôznych kritérií atď.
Ďalšie informácie a príklady: kliknite tu
Stream API
Balík Java 8 java.util.stream pozostáva z tried, rozhraní a zoznamu, ktorý umožňuje operácie s prvkami vo funkčnom štýle. Vykonáva lenivé výpočty. Spustí sa teda iba vtedy, keď to vyžaduje.
Ďalšie informácie a príklady: kliknite tu
Filter prúdu
Java stream poskytuje metódu filter() na filtrovanie prvkov streamu na základe daného predikátu. Predpokladajme, že chcete získať iba párne prvky svojho zoznamu, môžete to urobiť jednoducho pomocou metódy filter().
Táto metóda berie predikát ako argument a vracia prúd výsledných prvkov.
Ďalšie informácie a príklady: kliknite tu
Kódovanie a dekódovanie Java Base64
Java poskytuje triedu Base64, ktorá sa zaoberá šifrovaním a dešifrovaním. Ak chcete použiť jej metódy, musíte do zdrojového súboru importovať triedu java.util.Base64.
Táto trieda poskytuje tri rôzne kódovače a dekodéry na šifrovanie informácií na každej úrovni.
Ďalšie informácie a príklady: kliknite tu
Java Parallel Array Sorting
Java poskytuje novú doplnkovú funkciu v triede Arrays, ktorá sa používa na paralelné triedenie prvkov poľa. Metóda parallelSort() bola pridaná do triedy java.util.Arrays, ktorá používa spoločný fond paralelizmu JSR 166 Fork/Join na zabezpečenie triedenia polí. Je to preťažená metóda.
Pre viac informácií a príkladov: kliknite sem
Vylepšenia zabezpečenia Java 8
1) Poskytovateľ Java Secure Socket Extension (JSSE) štandardne povoľuje protokoly Transport Layer Security (TLS) 1.1 a TLS 1.2 na strane klienta.
2) Bola pridaná vylepšená metóda AccessController.doPrivileged, ktorá umožňuje kódu uplatniť podmnožinu svojich privilégií bez toho, aby bránila úplnému prechodu zásobníka na kontrolu iných povolení.
3) Algoritmy Advanced Encryption Standard (AES) a Password-Based Encryption (PBE), ako napríklad PBEWithSHA256AndAES_128 a PBEWithSHA512AndAES_256, boli pridané k poskytovateľovi SunJCE.
4) Rozšírenie Java Secure Socket (SunJSSE) povolilo rozšírenie Server Name Indication (SNI) pre klientske aplikácie štandardne v JDK 7 a JDK 8 podporuje rozšírenie SNI pre serverové aplikácie. Rozšírenie SNI je funkcia, ktorá rozširuje protokoly SSL/TLS o označenie názvu servera, ku ktorému sa klient pokúša pripojiť počas nadviazania spojenia.
5) SunJSSE je vylepšený tak, aby podporoval algoritmy overeného šifrovania s pridruženými údajmi (AEAD). Poskytovateľ Java Cryptography Extension (SunJCE) je vylepšený tak, aby podporoval implementáciu šifry AES/GCM/NoPadding, ako aj parametre algoritmu Galois/Counter Mode (GCM).
6) Do pomocného programu keytool je pridaný nový príznak príkazu -importpassword. Používa sa na prijatie hesla a jeho bezpečné uloženie ako tajný kľúč. Na podporu typu úložiska kľúčov DKS sú pridané triedy ako java.security.DomainLoadStoreParameter a java.security.PKCS12Attribute.
7) V JDK 8 boli kryptografické algoritmy vylepšené variantom SHA-224 rodiny SHA-2 implementácií spracovania správ.
8) Vylepšená podpora pre NSA Suite B Cryptography, ktorá zahŕňa:
- Registrácia OID pre kryptografické algoritmy NSA Suite B
- Podpora pre generovanie 2048-bitových kľúčov DSA a ďalšie podpisové algoritmy pre 2048-bitové kľúče DSA, ako sú SHA224withDSA a SHA256withDSA.
- Zrušenie obmedzenia veľkosti kľúčov z 1024 na 2048 pre algoritmus Diffie-Hellman (DH).
9) Trieda SecureRandom poskytuje generovanie kryptograficky silných náhodných čísel, ktoré sa používajú pre súkromné alebo verejné kľúče, šifry a podpísané správy. Metóda getInstanceStrong() bola zavedená v JDK 8, ktorá vracia inštanciu najsilnejšej SecureRandom. Mal by sa použiť, keď potrebujete vytvoriť súkromný a verejný kľúč RSA. SecureRandom zahŕňa nasledujúce ďalšie zmeny:
- Pre platformy UNIX boli predstavené dve nové implementácie, ktoré poskytujú blokovacie a neblokovacie správanie.
10) Zahrnutá je nová trieda PKIXRevocationChecker, ktorá kontroluje stav zrušenia certifikátov pomocou algoritmu PKIX. Podporuje kontrolu s maximálnym úsilím, kontrolu certifikátu koncovej entity a možnosti špecifické pre mechanizmus.
11) Štandardy PKCS (Public Key Cryptography Standards) boli rozšírené o 64-bitovú podporu pre Windows.
12) Do Kerberos 5 sú pridané dva nové typy rcache. Typ none znamená žiadne rcache a typ dfl znamená súbor rcache v štýle DFL. Tiež je teraz podporovaný podkľúč požadovaný príjemcom. Konfigurujú sa pomocou systémových vlastností podkľúča sun.security.krb5.rcache a sun.security.krb5.acceptor.
13) V JDK 8 je prechod protokolu Kerberos 5 a obmedzené delegovanie podporované v rámci rovnakej oblasti.
14) Java 8 má predvolene vypnuté slabé šifrovanie. Typy šifrovania Kerberos 5 súvisiace s DES nie sú štandardne podporované. Tieto typy šifrovania je možné povoliť pridaním allow_weak_crypto=true do súboru krb5.conf.
15) Názov servera môžete nastaviť na hodnotu null na označenie neviazaného servera. Znamená to, že klient môže požiadať o službu pomocou ľubovoľného názvu servera. Po vytvorení kontextu môže server získať názov ako dohodnutú vlastnosť s názvom kľúča SASL.BOUND_SERVER_NAME.
16) Premostenie Java Native Interface (JNI) k natívnej službe Java Generic Security Service (JGSS) je teraz podporované v systéme Mac OS X. Môžete nastaviť vlastnosť systému sun.security.jgss.native na true, aby ste to povolili.
17) Nová systémová vlastnosť jdk.tls.ephemeralDHKeySize je definovaná na prispôsobenie dočasných veľkostí kľúčov DH. Minimálna prijateľná veľkosť kľúča DH je 1024 bitov, s výnimkou exportovateľných šifrovacích súprav alebo staršieho režimu (jdk.tls.ephemeralDHKeySize=legacy).
18) Poskytovateľ Java Secure Socket Extension (JSSE) štandardne rešpektuje preferenciu šifrovacej sady klienta. Správanie však možno zmeniť tak, aby rešpektovalo preferenciu šifrovacej sady servera, a to volaním SSLParameters.setUseCipherSuitesOrder(true) cez server.
Vylepšenia nástrojov Java 8
1) Zavádza sa príkaz jjs, ktorý vyvoláva motor Nashorn buď v interaktívnom režime shell, alebo na interpretáciu súborov skriptov.
2) Príkaz java je schopný spúšťať aplikácie JavaFX za predpokladu, že je aplikácia JavaFX správne zabalená.
3) Manová stránka príkazu java (nroff aj HTML) bola úplne prepracovaná. Rozšírené možnosti sú teraz rozdelené na Runtime, Compiler, Garbage Collection a Serviceability, podľa oblasti, ktorú ovplyvňujú. Teraz je popísaných niekoľko predtým chýbajúcich možností. Existuje aj sekcia pre voľby, ktoré boli zastarané alebo odstránené od predchádzajúceho vydania.
4) Nový nástroj príkazového riadku jdeps umožňuje vývojárom analyzovať súbory tried a určiť závislosti na úrovni balíkov alebo tried.
5) Vzdialene môžete pristupovať k diagnostickým príkazom, ktoré boli predtým dostupné iba lokálne prostredníctvom nástroja jcmd. Vzdialený prístup je poskytovaný pomocou Java Management Extensions (JMX), takže diagnostické príkazy sú vystavené platforme MBean registrovanej na serveri platformy MBean. MBean je rozhranie com.sun.management.DiagnosticCommandMBean.
6) V nástroji jarsigner je zahrnutá nová možnosť -tsapolicyid, ktorá vám umožňuje vyžiadať si podpísanú časovú pečiatku od úradu pre časové pečiatky a priložiť ju k podpísanému súboru JAR.
7) Zahrnutá je nová metóda java.lang.reflect.Executable.getParameters, ktorá umožňuje prístup k menám formálnych parametrov akejkoľvek metódy alebo konštruktora. Súbory .class však štandardne neukladajú formálne názvy parametrov. Ak chcete uložiť formálne názvy parametrov do konkrétneho súboru .class a umožniť tak Reflection API získavať formálne názvy parametrov, skompilujte zdrojový súbor s voľbou -parameters kompilátora javac.
8) Typové pravidlá pre binárne porovnania v sekcii 15.21 špecifikácie jazyka Java (JLS) budú teraz správne presadzovať javac.
9) V tomto vydaní bol odstránený nástroj apt a jeho pridružené API obsiahnuté v balíku com.sun.mirror.
Vylepšenia Javadoc
V Java SE 8 boli do nástroja Javadoc pridané nasledujúce nové API.
- Nové DocTree API predstavuje skener, ktorý vám umožňuje prechádzať zdrojový kód, ktorý je reprezentovaný abstraktným stromom syntaxe. Toto rozširuje rozhranie Compiler Tree API, aby poskytovalo štruktúrovaný prístup k obsahu komentárov javadoc.
- Balík javax.tools obsahuje triedy a rozhrania, ktoré vám umožňujú vyvolať nástroj Javadoc priamo z aplikácie Java bez spustenia nového procesu.
- Časť „Súhrn metód“ vygenerovanej dokumentácie triedy alebo rozhrania bola reštrukturalizovaná. Opisy metód v tejto časti sú zoskupené podľa typu. V predvolenom nastavení sú uvedené všetky metódy. Môžete kliknúť na kartu a zobraziť metódy konkrétneho typu (statické, inštancie, abstraktné, konkrétne alebo zastarané, ak existujú v triede alebo rozhraní).
- Nástroj javadoc teraz podporuje kontrolu obsahu komentárov javadoc pre problémy, ktoré by mohli viesť k rôznym problémom, ako je napríklad neplatný kód HTML alebo problémy s prístupnosťou, v súboroch, ktoré generuje javadoc. Táto funkcia je predvolene povolená a možno ju ovládať aj pomocou novej možnosti -Xdoclint.
Balík 200 vylepšení
Formát súboru triedy Java bol aktualizovaný kvôli JSR 292, ktorý podporuje dynamicky typované jazyky na platforme Java.
Modul Pack200 bol aktualizovaný, aby sa zabezpečila efektívna kompresia súborov triedy Java SE 8. Teraz dokáže rozpoznať položky konštantnej oblasti a nové bajtové kódy zavedené JSR 292. Výsledkom je, že komprimované súbory vytvorené pomocou tejto verzie nástroja pack200 nebudú kompatibilné so staršími verziami nástroja unpack200.
Java 8 I/O vylepšenia
V Java 8 existuje niekoľko vylepšení implementácií java.nio.charset.Charset a rozšírených znakov. Zahŕňa nasledovné:
- Nový SelectorProvider, ktorý môže zlepšiť výkon alebo škálovateľnosť servera. /dev/poll SelectorProvider je naďalej predvolený. Ak chcete použiť mechanizmus portu udalosti Solaris, spustite ho so systémovou vlastnosťou java.nio.channels.spi.Selector nastavenou na hodnotu sun.nio.ch.EventPortSelectorProvider.
- Veľkosť súboru /jre/lib/charsets.jar je zmenšená.
- Výkon sa zlepšil pre konštruktor java.lang.String(byte[], ∗) a metódu java.lang.String.getBytes().
Vylepšenia siete Java 8
1) Bola pridaná nová trieda java.net.URLPermission. Predstavuje povolenie na prístup k zdroju definovanému danou URL.
2) Bol pridaný balík jdk.net, ktorý obsahuje možnosti soketov špecifické pre platformu a mechanizmus na nastavenie týchto možností na všetkých štandardných typoch soketov. Možnosti soketu sú definované v jdk.net.ExtendedSocketOptions.
3) V triede HttpURLConnection, ak je nainštalovaný bezpečnostný manažér a ak je volaná metóda, ktorá vedie k pokusu o otvorenie spojenia, volajúci musí mať buď „connect“ SocketPermission na kombináciu hostiteľ/port cieľovej URL alebo URLPermission, ktoré povoľuje túto požiadavku.
význam xdxd
Ak je povolené automatické presmerovanie a táto požiadavka je presmerovaná na iný cieľ, volajúci musí mať tiež povolenie na pripojenie k presmerovanému hostiteľovi/URL.
Java 8 Concurrency Enhancements
Balík java.util.concurrent pridal dve nové rozhrania a štyri nové triedy.
Java.util.concurrent Interfaces
Rozhranie | Popis |
---|---|
verejné statické rozhranie CompletableFuture.AsynchronousCompletionTask | Je to markerové rozhranie, ktoré sa používa na identifikáciu asynchrónnych úloh vytvorených asynchrónnymi metódami. Môže byť užitočný na monitorovanie, ladenie a sledovanie asynchrónnych aktivít. |
verejné rozhranie CompletionStage | Vytvára štádium možného asynchrónneho výpočtu, ktorý vykoná akciu alebo vypočíta hodnotu, keď sa dokončí iná fáza CompletionStage. |
Java.util.concurrent Classes
Trieda | Popis |
---|---|
public class CompletableFuture rozširuje Object implementuje Future, CompletionStage | Je to budúcnosť, ktorá môže byť explicitne dokončená a môže sa použiť ako fáza dokončenia, ktorá podporuje závislé funkcie a akcie, ktoré sa spúšťajú po jej dokončení. |
verejná statická trieda ConcurrentHashMap.KeySetView rozširuje Object implementuje Set, Serializable | Je to pohľad na mapu ConcurrentHashMap ako na sadu kľúčov, v ktorej môžu byť voliteľne povolené pridania mapovaním na spoločnú hodnotu. |
verejná abstraktná trieda CountedCompleter rozširuje ForkJoinTask | ForkJoinTask s akciou dokončenia vykonanou pri spustení a nezostávajú žiadne čakajúce akcie. |
public class CompletionException rozširuje RuntimeException | Vyvolá výnimku, keď sa v priebehu dokončovania výsledku alebo úlohy vyskytne chyba alebo iná výnimka. |
Nové metódy v triede java.util.concurrent.ConcurrentHashMap
Trieda ConcurrentHashMap predstavuje vo svojom najnovšom vydaní niekoľko nových metód. Zahŕňa rôzne metódy forEach (forEach, forEachKey, forEachValue a forEachEntry), metódy vyhľadávania (search, searchKeys, searchValues a searchEntries) a veľké množstvo redukčných metód (reduce, reductionToDouble, reductionToLong atď.). Boli pridané aj ďalšie rôzne metódy (mappingCount a newKeySet).
Nové triedy v java.util.concurrent.atomic
Najnovšie vydanie predstavuje škálovateľnú, aktualizovať a variabilnú podporu prostredníctvom malej sady nových tried DoubleAccumulator, DoubleAdder, LongAccumulator a LongAdder. Interne využíva techniky znižovania konfliktov, ktoré poskytujú obrovské zlepšenie priepustnosti v porovnaní s atómovými premennými.
Trieda | Popis |
---|---|
public class DoubleAccumulator rozširuje Number implementuje Serializable | Používa sa pre jednu alebo viac premenných, ktoré spolu udržiavajú priebežnú dvojitú hodnotu aktualizovanú pomocou dodanej funkcie. |
public class DoubleAdder rozširuje Number implementuje Serializable | Používa sa pre jednu alebo viac premenných, ktoré spolu udržiavajú pôvodne nulový dvojitý súčet. |
verejná trieda LongAccumulator rozširuje Počet implementuje Serializable | Používa sa pre jednu alebo viac premenných, ktoré spolu udržiavajú priebežnú dlhú hodnotu aktualizovanú pomocou dodanej funkcie. |
public class LongAdder rozširuje Číslo implementuje Serializable | Používa sa pre jednu alebo viac premenných, ktoré spolu udržiavajú pôvodne nulový dlhý súčet. |
Nové metódy v triede java.util.concurrent.ForkJoinPool
Táto trieda pridala dve nové metódy getCommonPoolParallelism() a commonPool(), ktoré vracajú cieľovú úroveň paralelizmu spoločného fondu, respektíve inštancie spoločného fondu.
Metóda | Popis |
---|---|
verejný statický ForkJoinPool commonPool() | Vráti inštanciu spoločného fondu. |
Verejný statický int getCommonPoolParallelism() | Vracia cieľovú úroveň paralelizmu spoločného fondu. |
Nová trieda java.util.concurrent.locks.StampedLock
Pridaná je nová trieda StampedLock, ktorá sa používa na pridanie zámku založeného na schopnostiach s tromi režimami na riadenie prístupu na čítanie/zápis (zápis, čítanie a optimistické čítanie). Táto trieda tiež podporuje metódy, ktoré podmienečne poskytujú konverzie v troch režimoch.
Trieda | Popis |
---|---|
public class StampedLock rozširuje Object implementuje Serializable | Táto trieda predstavuje zámok založený na schopnostiach s tromi režimami riadenia prístupu na čítanie/zápis. |
Java API pre spracovanie XML (JAXP) 1.6 Vylepšenia
V Java 8 je pridané Java API pre spracovanie XML (JAXP) 1.6. Vyžaduje použitie zariadenia na načítanie poskytovateľa služieb, ktoré definuje java.util.ServiceLoader na načítanie služieb z konfiguračných súborov služieb.
Dôvodom je umožnenie budúcej modularizácie platformy Java SE, kde môžu byť poskytovatelia služieb nasadení inými prostriedkami ako súbormi JAR a možno aj bez konfiguračných súborov služby.
Vylepšenia Java Virtual Machine
Overenie invokespecial inštrukcií bolo sprísnené tak, že je možné vyvolať iba metódu inicializácie inštancie v aktuálnej triede alebo jej priamej supertriede.
Java Mission Control 5.3 je súčasťou Java 8
Java Mission Control (JMC) je pokročilá sada nástrojov, ktorá umožňuje efektívnu a podrobnú analýzu údajov a poskytuje pokročilé, nenápadné monitorovanie a správu Java. JMC poskytuje sekcie pre bežné oblasti analýzy, ako je výkon kódu, pamäť a latencia.
Jazykové balíky Babel v japončine a zjednodušenej čínštine sú teraz štandardne zahrnuté v Java Mission Control, ktorá je súčasťou JDK 8.
Vylepšenia internacionalizácie Java 8
1) Vylepšenia Unicode
JDK 8 obsahuje podporu pre Unicode 6.2.0. Obsahuje nasledujúce funkcie.
- 733 nových znakov vrátane znaku tureckej líry.
- 7 nových skriptov:
- Meroitské hieroglyfy
- Meroitská kurzíva
- Sora Sompeng
- Chakma
- Sharada
- Takri
- Miao
- 11 nových blokov: vrátane 7 blokov pre nové skripty uvedené vyššie a 4 bloky pre nasledujúce existujúce skripty:
- Rozšírená arabčina-A
- Sundánsky doplnok
- Stretnutie Meek Extensions
- Arabské matematické abecedné symboly
Prijatie údajov CLDR Unicode a vlastnosti systému java.locale.providers
Unicode Consortium uvoľnilo projekt Common Locale Data Repository (CLDR) na „podporu svetových jazykov s najväčším a najrozsiahlejším štandardným úložiskom údajov o miestnych nastaveniach“. CLDR sa stáva de-facto štandardom pre miestne údaje. Lokálne údaje CLDR založené na XML boli začlenené do vydania JDK 8, avšak predvolene sú vypnuté.
Existujú štyri rôzne zdroje údajov o miestnych nastaveniach:
- CLDR predstavuje miestne údaje poskytované projektom Unicode CLDR.
- HOST predstavuje prispôsobenie nastavení základného operačného systému aktuálnym používateľom. Funguje iba s predvoleným miestnym nastavením používateľa a prispôsobiteľné nastavenia sa môžu líšiť v závislosti od operačného systému, ale primárne sú podporované formáty dátumu, času, čísla a meny.
- SPI predstavuje služby citlivé na miestne nastavenia implementované v nainštalovaných poskytovateľoch SPI.
- JRE predstavuje údaje miestneho nastavenia, ktoré sú kompatibilné s predchádzajúcimi vydaniami JRE.
Ak chcete vybrať požadovaný zdroj údajov miestneho nastavenia, použite systémovú vlastnosť java.locale.providers. zoznam zdrojov údajov v preferovanom poradí. Napríklad: java.locale.providers=HOST,SPI,CLDR,JRE Predvolené správanie je ekvivalentné nasledujúcemu nastaveniu: java.locale.providers=JRE,SPI
Java 8 New Calendar a Locale API
JDK 8 obsahuje dve nové triedy, niekoľko nových metód a novú návratovú hodnotu pre existujúcu statickú metódu.
Do balíka java.util.spi sú pridané dve nové abstraktné triedy pre poskytovateľov služieb.
Trieda | Popis |
---|---|
verejná abstraktná trieda CalendarDataProvider rozširuje LocaleServiceProvider | Je to abstraktná trieda pre poskytovateľov služieb, ktorí poskytujú parametre kalendára závislé od miestneho nastavenia. |
verejná abstraktná trieda CalendarNameProvider rozširuje LocaleServiceProvider | Je to abstraktná trieda pre poskytovateľov služieb, ktorí poskytujú lokalizované reprezentácie reťazcov (zobrazované názvy) hodnôt polí kalendára. |
Statická metóda je teraz schopná rozpoznať Locale.UNICODE_LOCALE_EXTENSION pre systém číslovania.
Metóda | Popis |
---|---|
public static final DecimalFormatSymbols getInstance(Locale locale) | Používa sa na získanie inštancie DecimalFormatSymbols pre zadané miestne nastavenie. Táto metóda poskytuje prístup k inštanciám DecimalFormatSymbols pre miestne nastavenia podporované samotným runtime Java, ako aj pre tie, ktoré sú podporované nainštalovanými implementáciami DecimalFormatSymbolsProvider. Vyhodí výnimku NullPointerException, ak je miestne nastavenie null. |
Pridané nové metódy v rozhraní API kalendára:
Metóda | Popis |
---|---|
verejný boolovský isSupportedLocale(miestne nastavenie) | Vráti hodnotu true, ak je dané miestne nastavenie podporované týmto poskytovateľom služieb miestneho nastavenia. Dané miestne nastavenie môže obsahovať rozšírenia, ktoré by sa mali brať do úvahy pri určovaní podpory. Je definovaný v triede java.util.spi.LocaleServiceProvider |
verejný reťazec getCalendarType() | Vráti typ kalendára tohto kalendára. Typy kalendára sú definované špecifikáciou Unicode Locale Data Markup Language (LDML). Je definovaný v triede java.util.Calendar. |
Pre metódy Calendar.getDisplayName a Calendar.getDisplayNames boli pridané nové špecifikátory štýlu na určenie formátu názvu kalendára.
Špecifikátor | Popis |
---|---|
public static final int SHORT_FORMAT | Je to špecifikátor štýlu pre getDisplayName a getDisplayNames označujúci krátky názov používaný pre formát. |
public static final int LONG_FORMAT | Je to špecifikátor štýlu pre getDisplayName a getDisplayNames označujúci dlhý názov používaný pre formát. |
public static final int SHORT_STANDALONE | Je to špecifikátor štýlu pre getDisplayName a getDisplayNames označujúci krátky názov používaný nezávisle, ako je napríklad skratka mesiaca ako hlavičky kalendára. |
public static final int LONG_STANDALONE | Je to špecifikátor štýlu pre getDisplayName a getDisplayNames označujúci dlhý názov používaný nezávisle, ako napríklad názov mesiaca ako hlavičky kalendára. |
Dve nové metódy miestneho nastavenia na riešenie (voliteľných) rozšírení miestneho nastavenia.
Metóda | Popis |
---|---|
public boolean hasExtensions() | Ak má toto miestne nastavenie nejaké rozšírenia, vráti hodnotu true. |
public Locale stripExtensions() | Vráti kópiu tohto miestneho nastavenia bez rozšírení. Ak toto miestne nastavenie nemá žiadne rozšírenia, toto miestne nastavenie sa vráti samo. |
Dve nové metódy Locale.filter vrátia zoznam inštancií Locale, ktoré zodpovedajú zadaným kritériám, ako je definované v RFC 4647:
Metóda | Popis |
---|---|
verejný statický filter zoznamu (priorita zoznamu, zoznam miest zbierok) | Vracia zoznam zodpovedajúcich inštancií Locale pomocou mechanizmu filtrovania definovaného v RFC 4647. Toto je ekvivalentné s filtrom (List, Collection, FilteringMode), keď je režim Locale.FilteringMode.AUTOSELECT_FILTERING. |
verejný statický filter zoznamu (priorita zoznamuList, miestne nastavenia kolekcie, režim Locale.FilteringMode) | Vráti zoznam zodpovedajúcich inštancií Locale pomocou mechanizmu filtrovania definovaného v RFC 4647. |
Dve nové metódy Locale.filterTags vrátia zoznam jazykových značiek, ktoré zodpovedajú zadaným kritériám, ako je definované v RFC 4647.
Metóda | Popis |
---|---|
public static List filterTags(List priorityList, Collection tags) | Vracia zoznam zodpovedajúcich značiek jazykov pomocou základného mechanizmu filtrovania definovaného v RFC 4647. Toto je ekvivalentné s filtrom Tags(List, Collection, FilteringMode), keď je režim Locale.FilteringMode.AUTOSELECT_FILTERING. |
public static List filterTags (List priorityList, Collection tags, Locale.FilteringMode mode) | Vracia zoznam zodpovedajúcich značiek jazykov pomocou základného filtrovacieho mechanizmu definovaného v RFC 4647. |
Dve nové metódy vyhľadávania vracajú najlepšie zodpovedajúce miestne nastavenie alebo značku jazyka pomocou mechanizmu vyhľadávania definovaného v RFC 4647.
Metóda | Popis |
---|---|
verejné statické vyhľadávanie miestneho nastavenia (zoznam prioritných zoznamov, miestne nastavenia kolekcie) | Vracia inštanciu Locale pre značku jazyka, ktorá sa najlepšie zhoduje, pomocou mechanizmu vyhľadávania definovaného v RFC 4647. |
Verejné statické vyhľadávanie reťazcov (zoznam priorityList, značky kolekcie) | Pomocou mechanizmu vyhľadávania definovaného v RFC 4647 vráti značku jazyka, ktorá sa najlepšie zhoduje. |
Ďalšie vylepšenia verzie Java 8
Vylepšenia v JDK 8u5
1) Frekvencia zobrazovania bezpečnostných výziev pre aplikáciu bola znížená.
Vylepšenia v JDK 8u11
1) Možnosť potlačenia ponúk od sponzorov pri inštalácii alebo aktualizácii JRE je dostupná na karte Rozšírené ovládacieho panela Java.
2) Atribút Entry-Point môže byť zahrnutý do manifestu súboru JAR na identifikáciu jednej alebo viacerých tried ako platného vstupného bodu pre vašu RIA (Rich Internet Application).
Vylepšenia v JDK 8u20
1) Nástroj javafxpackager bol premenovaný na javapackager. Tento nástroj bol vylepšený o nové argumenty pre samostatné balíky aplikácií.
Nasledujúce vylepšenia súvisia s nástrojom Java:
- Bola pridaná experimentálna možnosť kompilátora JIT súvisiaca s obmedzenou transakčnou pamäťou (RTM).
- Bolo pridaných niekoľko možností súvisiacich s deduplikáciou reťazcov.
- Bolo pridaných niekoľko možností súvisiacich s vnútorným štandardom pokročilého šifrovania (AES).
- Kombinácie možností zberu odpadu boli zastarané.
2) Do virtuálneho stroja Java HotSpot bol pridaný sprievodca ladením odpadu. Popisuje zberače odpadu zahrnuté v Java HotSpot VM a pomáha vám rozhodnúť sa, ktorý zberač odpadu môže najlepšie optimalizovať výkon vašej aplikácie, najmä ak spracováva veľké množstvo údajov (viacnásobné gigabajty), má veľa vlákien a má vysoké rýchlosti transakcií. .
Vylepšenia v JDK 8u31
1) V tomto vydaní je protokol SSLv3 odstránený z rozšírených možností ovládacieho panela Java.
Vylepšenia v JDK 8u40
Java nástroj
1) -XX:+CheckEndorsedAndExtDirs bol pridaný, pretože mechanizmus potlačenia schválených štandardov (JDK-8065675) a mechanizmus rozšírenia (JDK-8065702) boli zastarané. Táto možnosť pomáha identifikovať akékoľvek existujúce použitie týchto mechanizmov a je podporovaná v JDK 7u80 a JDK 8u40.
2) Java Flight Recorder (JFR) ponúka množstvo spôsobov, ako odomknúť komerčné funkcie a povoliť JFR počas behu aplikácie.
Zahŕňa možnosti príkazového riadka java, ako sú diagnostické príkazy jcmd a ovládacie prvky grafického používateľského rozhrania (GUI) v rámci Java Mission Control. Táto flexibilita vám umožňuje poskytnúť vhodné možnosti pri spustení alebo interakciu s JFR neskôr.
3) Voľba -XX:StartFlightRecording=parameter=value má nový parameter dumponexit=true, ktorý určuje, či sa má vygenerovať súbor výpisu údajov JFR, keď sa JVM kontrolovaným spôsobom ukončí.
4) Možnosti súvisiace s obmedzenou transakčnou pamäťou (RTM) už nie sú experimentálne. Tieto možnosti zahŕňajú -XX:RTMAbortRatio=pomer_prerušenia, -XX:RTMRetryCount=počet_opakovaní, -XX:+UseRTMDeopt a -XX:+UseRTMLoking.
5) V jazyku Java 8 bolo zavedené zdieľanie údajov aplikačnej triedy (AppCDS). AppCDS rozširuje CDS (Class Data Sharing), aby bolo možné umiestniť triedy zo štandardných adresárov rozšírení a cestu k triede aplikácie do zdieľaného archívu. Toto je komerčná funkcia a už sa nepovažuje za experimentálnu.
6) Boli pridané nové možnosti -XX:+ResourceManagement a -XX:ResourceManagementSampleInterval=hodnota.
7) Boli pridané ďalšie informácie o veľkých stránkach. Veľké stránky, známe aj ako veľké stránky, sú pamäťové stránky, ktoré sú výrazne väčšie ako štandardná veľkosť pamäťovej stránky. Veľké stránky optimalizujú prekladové vyrovnávacie pamäte procesora. Možnosti Linuxu -XX:+UseHugeTLBFS, -XX:+UseSHM a -XX:+UseTransparentHugePages boli zdokumentované.
8) Voľba -XX:ObjectAlignmentInBytes=zarovnanie bola zdokumentovaná.
nástroj JJS
1) Bola pridaná možnosť --optimistic-types=[true|false]. Umožňuje alebo zakazuje predpoklady optimistického typu s deoptimalizačnou rekompiláciou.
2) Do nástroja jjs bola pridaná možnosť --language=[es5]. Špecifikuje jazykovú verziu ECMAScript.
nástroj Javapackager
1) Pre balíky OS X sú k dispozícii nové argumenty. Argument mac.CFBundleVersion identifikuje interné číslo verzie, ktoré sa má použiť.
2) Argument mac.dmg.simple označuje, či sa preskočia kroky prispôsobenia DMG, ktoré závisia od spustenia kódu AppleScript.
nástroj Jcmd
Nástroj Jcmd sa používa na dynamickú interakciu s Java Flight Recorder (JFR). Môžete ho použiť na odomknutie komerčných funkcií, povolenie/spustenie/zastavenie záznamov letov a získanie rôznych stavových správ zo systému.
Nástroj Jstat
Nástroj jstat bol aktualizovaný o informácie o komprimovanom priestore tried, ktorý je špeciálnou súčasťou metapriestoru.
pd.merge
Virtuálny prístroj
Funkcia Scalable Native Memory Tracking HotSpot VM pomáha diagnostikovať úniky pamäte virtuálneho počítača a objasniť používateľom, keď úniky pamäte nie sú vo virtuálnom počítači. Native Memory Tracker možno spustiť bez samočinného vypnutia na veľkých systémoch a bez toho, aby to spôsobilo výrazný vplyv na výkon nad rámec toho, čo sa považuje za prijateľné pre malé programy.