logo

Funkce Java 8

Oracle vydal 18. března 2014 novou verzi Javy jako Java 8. Jednalo se o revoluční vydání platformy Java pro vývoj softwaru. Zahrnuje různé upgrady programování Java, JVM, nástrojů a knihoven.

Vylepšení programovacího jazyka Java 8

Java 8 poskytuje následující funkce pro programování Java:

  • Lambda výrazy,
  • reference metod,
  • Funkční rozhraní,
  • Stream API,
  • Výchozí metody,
  • Base64 Encode Decode,
  • statické metody v rozhraní,
  • Volitelná třída,
  • třída sběratelů,
  • ForEach() metoda,
  • Rhino JavaScript Engine,
  • Paralelní řazení pole,
  • Typ a opakování poznámek,
  • IO vylepšení,
  • Vylepšení souběžnosti,
  • Vylepšení JDBC atd.

Lambda výrazy

Lambda výraz nám pomáhá psát náš kód ve funkčním stylu. Poskytuje jasný a stručný způsob implementace rozhraní SAM (Single Abstract Method) pomocí výrazu. Je velmi užitečný v knihovně kolekcí, ve které pomáhá iterovat, filtrovat a extrahovat data.

Další informace a příklady: klikněte zde


Reference metod

Java 8 Method reference se používá k označení metody funkčního rozhraní. Jedná se o kompaktní a snadnou formu lambda výrazu. Pokaždé, když používáte výraz lambda pouze k odkazování na metodu, můžete svůj výraz lambda nahradit odkazem na metodu.

Další informace a příklady: klikněte zde


Funkční rozhraní

Rozhraní, které obsahuje pouze jednu abstraktní metodu, se nazývá funkční rozhraní. Může mít libovolný počet výchozích a statických metod. Může také deklarovat metody třídy objektů.

Funkční rozhraní jsou také známá jako rozhraní SAM (Single Abstract Method Interfaces).

Další informace a příklady: klikněte zde


Volitelný

Java představila novou třídu Optional v Javě 8. Je to veřejná finální třída, která se používá k řešení NullPointerException v Java aplikaci. Musíme importovat java.util balíček pro použití této třídy. Poskytuje metody pro kontrolu přítomnosti hodnoty pro konkrétní proměnnou.

Další informace a příklady: klikněte zde


pro každého

Java poskytuje novou metodu forEach() pro iteraci prvků. Je definován v rozhraních Iterable a Stream.

Je to výchozí metoda definovaná v rozhraní Iterable. Třídy kolekce, které rozšiřují rozhraní Iterable, mohou používat metodu forEach() k iteraci prvků.

Tato metoda přebírá jeden parametr, kterým je funkční rozhraní. Jako argument tedy můžete předat výraz lambda.

Další informace a příklady: klikněte zde


Datum/čas API

Java zavedla nové API pro datum a čas od verze Java 8. Balíček java.time obsahuje třídy Java 8 Date and Time.

Další informace a příklady: klikněte zde


Výchozí metody

Java poskytuje možnost vytvořit výchozí metody uvnitř rozhraní. Metody, které jsou definovány uvnitř rozhraní a označené výchozím klíčovým slovem, jsou známé jako výchozí metody. Tyto metody jsou neabstraktní a mohou mít tělo metody.

Pro více informací a příklady: klikněte zde


Rhino JavaScript Engine

Nashorn je JavaScript engine. Používá se k dynamickému spouštění kódu JavaScript na JVM (Java Virtual Machine). Java poskytuje nástroj příkazového řádku atd který se používá ke spuštění kódu JavaScript.

Kód JavaScript můžete spustit dvěma způsoby:

  1. Pomocí nástroje příkazového řádku jjs a
  2. Vložením do zdrojového kódu Java.

Pro více informací a příklady: klikněte zde


StringJoiner

Java přidala novou finální třídu StringJoiner v balíčku java.util. Používá se ke konstrukci posloupnosti znaků oddělených oddělovačem. Nyní můžete vytvořit řetězec předáním oddělovačů, jako je čárka (,), pomlčka (-) atd.

parafrázovat jako rudyard kipling

Pro více informací a příklady: klikněte zde


Sběratelé

Collectors je poslední třída, která rozšiřuje třídu Object. Poskytuje redukční operace, jako je akumulace prvků do kolekcí, sumarizace prvků podle různých kritérií atd.

Další informace a příklady: klikněte zde


Stream API

Balíček Java 8 java.util.stream se skládá z tříd, rozhraní a výčtu, které umožňují operace s prvky ve funkčním stylu. Provádí líné výpočty. Spustí se tedy pouze tehdy, když to vyžaduje.

Další informace a příklady: klikněte zde


Filtr streamu

Java stream poskytuje metodu filter() pro filtrování prvků streamu na základě daného predikátu. Předpokládejme, že chcete získat pouze sudé prvky svého seznamu, můžete to snadno udělat pomocí metody filter().

Tato metoda bere predikát jako argument a vrací proud výsledných prvků.

Další informace a příklady: klikněte zde


Kódování a dekódování Java Base64

Java poskytuje třídu Base64, která se zabývá šifrováním a dešifrováním. Chcete-li použít její metody, musíte do zdrojového souboru importovat třídu java.util.Base64.

Tato třída poskytuje tři různé kodéry a dekodéry pro šifrování informací na každé úrovni.

Další informace a příklady: klikněte zde


Java Parallel Array Sorting

Java poskytuje novou doplňkovou funkci ve třídě Arrays, která se používá k paralelnímu řazení prvků pole. Metoda parallelSort() byla přidána do třídy java.util.Arrays, která používá společný fond paralelismu JSR 166 Fork/Join k zajištění řazení polí. Je to přetížená metoda.

Pro více informací a příklady: klikněte zde


Vylepšení zabezpečení Java 8

1) Poskytovatel Java Secure Socket Extension (JSSE) povoluje standardně protokoly TLS (Transport Layer Security) 1.1 a TLS 1.2 na straně klienta.

2) Byla přidána vylepšená metoda AccessController.doPrivileged, která kódu umožňuje uplatnit podmnožinu svých oprávnění, aniž by bránila úplnému procházení zásobníku pro kontrolu dalších oprávnění.

3) K poskytovateli SunJCE byly přidány algoritmy Advanced Encryption Standard (AES) a Password-Based Encryption (PBE), jako jsou PBEWithSHA256AndAES_128 a PBEWithSHA512AndAES_256.

4) Java Secure Socket Extension (SunJSSE) povolilo rozšíření Server Name Indication (SNI) pro klientské aplikace ve výchozím nastavení v JDK 7 a JDK 8 podporuje rozšíření SNI pro serverové aplikace. Rozšíření SNI je funkce, která rozšiřuje protokoly SSL/TLS o označení názvu serveru, ke kterému se klient pokouší připojit během handshakingu.

5) SunJSSE je vylepšen o podporu algoritmů Authenticated Encryption with Associated Data (AEAD). Poskytovatel Java Cryptography Extension (SunJCE) je vylepšen tak, aby podporoval implementaci šifry AES/GCM/NoPadding a také parametry algoritmu Galois/Counter Mode (GCM).

6) Do obslužného programu keytool je přidán nový příznak příkazu -importpassword. Slouží k přijetí hesla a jeho bezpečnému uložení jako tajného klíče. Pro podporu typu úložiště klíčů DKS jsou přidány třídy jako java.security.DomainLoadStoreParameter a java.security.PKCS12Attribute.

7) V JDK 8 byly kryptografické algoritmy vylepšeny o variantu SHA-224 z rodiny implementací pro zpracování zpráv SHA-2.

8) Vylepšená podpora pro NSA Suite B Cryptography, která zahrnuje:

  • Registrace OID pro kryptografické algoritmy NSA Suite B
  • Podpora pro 2048bitové generování párů klíčů DSA a další podpisové algoritmy pro 2048bitové klíče DSA, jako jsou SHA224withDSA a SHA256withDSA.
  • Zrušení omezení velikosti klíčů z 1024 na 2048 pro algoritmus Diffie-Hellman (DH).

9) Třída SecureRandom poskytuje generování kryptograficky silných náhodných čísel, která se používají pro soukromé nebo veřejné klíče, šifry a podepsané zprávy. V JDK 8 byla zavedena metoda getInstanceStrong() , která vrací instanci nejsilnější SecureRandom. Měl by být použit, když potřebujete vytvořit soukromý a veřejný klíč RSA. SecureRandom zahrnuje následující další změny:

  • Pro platformy UNIX byly představeny dvě nové implementace, které poskytují blokovací a neblokovací chování.

10) Je zahrnuta nová třída PKIXRevocationChecker, která kontroluje stav odvolání certifikátů pomocí algoritmu PKIX. Podporuje maximální úsilí, kontrolu certifikátů koncových entit a možnosti specifické pro mechanismus.

11) Standardy Public Key Cryptography Standards 11 (PKCS) byly rozšířeny o podporu 64bitových verzí pro Windows.

12) Do Kerberos 5 byly přidány dva nové typy rcache. Typ none znamená žádné rcache a typ dfl znamená soubor rcache ve stylu DFL. Nyní je také podporován podklíč požadovaný příjemcem. Konfigurují se pomocí systémových vlastností podklíče sun.security.krb5.rcache a sun.security.krb5.acceptor.

13) V JDK 8 je podporován přechod protokolu Kerberos 5 a omezené delegování ve stejné oblasti.

14) Java 8 má ve výchozím nastavení zakázané slabé šifrování. Typy šifrování Kerberos 5 související s DES nejsou ve výchozím nastavení podporovány. Tyto typy šifrování lze povolit přidáním allow_weak_crypto=true do souboru krb5.conf.

15) Název serveru můžete nastavit na hodnotu null pro označení nevázaného serveru. To znamená, že klient může požádat o službu pomocí libovolného názvu serveru. Po vytvoření kontextu může server získat název jako vyjednanou vlastnost s názvem klíče SASL.BOUND_SERVER_NAME.

16) Most Java Native Interface (JNI) k nativní službě Java Generic Security Service (JGSS) je nyní podporován v systému Mac OS X. Chcete-li to povolit, můžete nastavit systémovou vlastnost sun.security.jgss.native na hodnotu true.

17) Nová systémová vlastnost jdk.tls.ephemeralDHKeySize je definována pro přizpůsobení dočasných velikostí klíčů DH. Minimální přijatelná velikost klíče DH je 1024 bitů, s výjimkou exportovatelných šifrovacích sad nebo staršího režimu (jdk.tls.ephemeralDHKeySize=legacy).

18) Poskytovatel Java Secure Socket Extension (JSSE) standardně respektuje preference šifrovací sady klienta. Chování však lze změnit tak, aby respektovalo předvolbu šifrovací sady serveru voláním SSLParameters.setUseCipherSuitesOrder(true) přes server.


Vylepšení nástrojů Java 8

1) Zavádí se příkaz jjs, který spouští motor Nashorn buď v interaktivním režimu shellu, nebo pro interpretaci souborů skriptů.

2) Příkaz java je schopen spouštět aplikace JavaFX za předpokladu, že je aplikace JavaFX správně zabalena.

3) Manová stránka příkazů java (jak nroff, tak HTML) byla kompletně přepracována. Pokročilé možnosti jsou nyní rozděleny na Runtime, Compiler, Garbage Collection a Serviceability, podle oblasti, kterou ovlivňují. Nyní je popsáno několik dříve chybějících možností. Je zde také sekce pro volby, které byly zastaralé nebo odstraněny od předchozího vydání.

4) Nový nástroj příkazového řádku jdeps umožňuje vývojářům analyzovat soubory tříd a určit závislosti na úrovni balíčku nebo na úrovni třídy.

5) Vzdáleně můžete přistupovat k diagnostickým příkazům, které byly dříve dostupné pouze lokálně prostřednictvím nástroje jcmd. Vzdálený přístup je poskytován pomocí Java Management Extensions (JMX), takže diagnostické příkazy jsou vystaveny platformě MBean registrované na serveru platformy MBean. MBean je rozhraní com.sun.management.DiagnosticCommandMBean.

6) V nástroji jarsigner je zahrnuta nová volba -tsapolicyid, která vám umožňuje vyžádat si podepsané časové razítko od úřadu pro časové razítko a připojit ho k podepsanému souboru JAR.

7) Je zahrnuta nová metoda java.lang.reflect.Executable.getParameters, která umožňuje přístup k názvům formálních parametrů libovolné metody nebo konstruktoru. Soubory .class však ve výchozím nastavení neukládají formální názvy parametrů. Chcete-li uložit formální názvy parametrů do konkrétního souboru .class, a umožnit tak rozhraní Reflection API získávat formální názvy parametrů, zkompilujte zdrojový soubor s volbou -parameters kompilátoru javac.

8) Typová pravidla pro binární porovnávání v Java Language Specification (JLS) sekce 15.21 budou nyní správně vynucována javacem.

9) V tomto vydání byl odstraněn nástroj apt a jeho přidružené API obsažené v balíčku com.sun.mirror.

očíslovat abecedu

Vylepšení Javadoc

V Java SE 8 byla do nástroje Javadoc přidána následující nová rozhraní API.

  • Nové DocTree API představuje skener, který vám umožňuje procházet zdrojový kód, který je reprezentován abstraktním stromem syntaxe. Tím se rozšiřuje rozhraní API stromu kompilátoru o poskytování strukturovaného přístupu k obsahu komentářů javadoc.
  • Balíček javax.tools obsahuje třídy a rozhraní, která vám umožňují vyvolat nástroj Javadoc přímo z aplikace Java, aniž byste museli spouštět nový proces.
  • Část 'Shrnutí metod' generované dokumentace třídy nebo rozhraní byla restrukturalizována. Popisy metod v této části jsou seskupeny podle typu. Ve výchozím nastavení jsou uvedeny všechny metody. Klepnutím na kartu můžete zobrazit metody určitého typu (statické, instance, abstraktní, konkrétní nebo zastaralé, pokud ve třídě nebo rozhraní existují).
  • Nástroj javadoc nyní podporuje kontrolu obsahu komentářů javadoc pro problémy, které by mohly vést k různým problémům, jako je neplatný kód HTML nebo problémy s přístupností, v souborech, které generuje javadoc. Tato funkce je ve výchozím nastavení povolena a lze ji také ovládat pomocí nové volby -Xdoclint.

Balíček 200 vylepšení

Formát souboru třídy Java byl aktualizován kvůli JSR 292, který podporuje dynamicky typované jazyky na platformě Java.

Modul Pack200 byl aktualizován, aby zajistil efektivní komprimaci souborů třídy Java SE 8. Nyní dokáže rozpoznat položky konstantního fondu a nové bajtové kódy zavedené JSR 292. V důsledku toho nebudou komprimované soubory vytvořené pomocí této verze nástroje pack200 kompatibilní se staršími verzemi nástroje unpack200.


Vylepšení I/O Java 8

V Javě 8 existuje několik vylepšení implementací java.nio.charset.Charset a rozšířených znakových sad. Zahrnuje následující:

  • Nový SelectorProvider, který může zlepšit výkon nebo škálovatelnost serveru. /dev/poll SelectorProvider je i nadále výchozí. Chcete-li použít mechanismus portu událostí Solaris, spusťte se systémovou vlastností java.nio.channels.spi.Selector nastavenou na hodnotu sun.nio.ch.EventPortSelectorProvider.
  • Velikost souboru /jre/lib/charsets.jar je zmenšena.
  • Došlo ke zlepšení výkonu pro konstruktor java.lang.String(byte[], ∗) a metodu java.lang.String.getBytes().

Vylepšení sítě Java 8

1) Byla přidána nová třída java.net.URLPermission. Představuje oprávnění pro přístup ke zdroji definovanému danou URL.

2) Byl přidán balíček jdk.net, který obsahuje volby soketů specifické pro platformu a mechanismus pro nastavení těchto voleb na všech standardních typech soketů. Možnosti soketu jsou definovány v jdk.net.ExtendedSocketOptions.

3) Ve třídě HttpURLConnection, pokud je nainstalován správce zabezpečení a pokud je volána metoda, která vede k pokusu o otevření spojení, musí mít volající buď „connect“ SocketPermission ke kombinaci hostitel/port cílové adresy URL nebo URLPermission, která tento požadavek povoluje.

Pokud je povoleno automatické přesměrování a tento požadavek je přesměrován na jiný cíl, musí mít volající také oprávnění k připojení k přesměrovanému hostiteli/URL.


Java 8 Concurrency Enhancements

Balíček java.util.concurrent přidal dvě nová rozhraní a čtyři nové třídy.

Java.util.concurrent Interfaces

Rozhraní Popis
veřejné statické rozhraní CompletableFuture.AsynchronousCompletionTask Jedná se o markerové rozhraní, které se používá k identifikaci asynchronních úloh vytvářených asynchronními metodami. Může být užitečné pro monitorování, ladění a sledování asynchronních aktivit.
veřejné rozhraní CompletionStage Vytvoří fázi možného asynchronního výpočtu, která provede akci nebo vypočítá hodnotu, když se dokončí další CompletionStage.

Java.util.concurrent Classes

Třída Popis
public class CompletableFuture rozšiřuje Object implementuje Future, CompletionStage Je to budoucnost, která může být explicitně dokončena a může být použita jako fáze dokončení, která podporuje závislé funkce a akce, které se spouštějí po jejím dokončení.
veřejná statická třída ConcurrentHashMap.KeySetView rozšiřuje Object implementuje Set, Serializable Jedná se o pohled na ConcurrentHashMap jako sadu klíčů, ve které lze volitelně povolit sčítání mapováním na společnou hodnotu.
veřejná abstraktní třída CountedCompleter rozšiřuje ForkJoinTask ForkJoinTask s akcí dokončení provedenou při spuštění a nezůstávají žádné nevyřízené akce.
public class CompletionException rozšiřuje RuntimeException Vyvolá výjimku, když dojde k chybě nebo jiné výjimce v průběhu dokončení výsledku nebo úkolu.

Nové metody ve třídě java.util.concurrent.ConcurrentHashMap

Třída ConcurrentHashMap zavádí ve své nejnovější verzi několik nových metod. Zahrnuje různé metody forEach (forEach, forEachKey, forEachValue a forEachEntry), vyhledávací metody (search, searchKeys, searchValues ​​a searchEntries) a velké množství redukčních metod (reduce, reductionToDouble, reductionToLong atd.). Byly přidány i další různé metody (mappingCount a newKeySet).

Nové třídy v java.util.concurrent.atomic

Nejnovější verze zavádí škálovatelnou, aktualizovatelnou a variabilní podporu prostřednictvím malé sady nových tříd DoubleAccumulator, DoubleAdder, LongAccumulator aLongAdder. Interně využívá techniky omezování sporů, které poskytují obrovské zlepšení propustnosti ve srovnání s atomovými proměnnými.

Třída Popis
public class DoubleAccumulator rozšiřuje Number implementuje Serializable Používá se pro jednu nebo více proměnných, které společně udržují běžící dvojnásobnou hodnotu aktualizovanou pomocí dodané funkce.
public class DoubleAdder rozšiřuje Number implementuje Serializable Používá se pro jednu nebo více proměnných, které společně udržují zpočátku nulový dvojitý součet.
public class LongAccumulator rozšiřuje Number implementuje Serializable Používá se pro jednu nebo více proměnných, které společně udržují průběžnou dlouhou hodnotu aktualizovanou pomocí dodané funkce.
public class LongAdder rozšiřuje Number implementuje Serializable Používá se pro jednu nebo více proměnných, které společně udržují zpočátku nulový dlouhý součet.

Nové metody ve třídě java.util.concurrent.ForkJoinPool

Tato třída přidala dvě nové metody getCommonPoolParallelism() a commonPool(), které vracejí cílovou úroveň paralelismu společného fondu, respektive instance společného fondu.

Metoda Popis
veřejný statický ForkJoinPool commonPool() Vrátí instanci společného fondu.
Veřejný statický int getCommonPoolParallelism() Vrátí cílovou úroveň paralelismu společného fondu.

Nová třída java.util.concurrent.locks.StampedLock

Je přidána nová třída StampedLock, která se používá k přidání zámku založeného na schopnostech se třemi režimy pro řízení přístupu pro čtení/zápis (zápis, čtení a optimistické čtení). Tato třída také podporuje metody, které podmíněně poskytují převody napříč třemi režimy.

Třída Popis
public class StampedLock rozšiřuje Object implementuje Serializable Tato třída představuje zámek založený na schopnostech se třemi režimy pro řízení přístupu pro čtení/zápis.

Java API pro zpracování XML (JAXP) 1.6 Vylepšení

V Javě 8 je přidáno Java API pro zpracování XML (JAXP) 1.6. Vyžaduje použití zavaděče poskytovatele služeb, který je definován pomocí java.util.ServiceLoader k načítání služeb z konfiguračních souborů služeb.

Důvodem je umožnit budoucí modularizaci platformy Java SE, kde mohou být poskytovatelé služeb nasazeni jinými prostředky než soubory JAR a možná i bez konfiguračních souborů služeb.


Vylepšení virtuálního stroje Java

Ověřování invokespecial instrukcí bylo zpřísněno tak, že lze vyvolat pouze metodu inicializace instance v aktuální třídě nebo její přímé supertřídě.


Java Mission Control 5.3 je součástí Java 8

Java Mission Control (JMC) je pokročilá sada nástrojů, která umožňuje efektivní a detailní analýzu dat a poskytuje pokročilé, nenápadné monitorování a správu Java. JMC poskytuje sekce pro běžné oblasti analýzy, jako je výkon kódu, paměť a latence.

Jazykové balíčky Babel v japonštině a zjednodušené čínštině jsou nyní standardně součástí Java Mission Control, která je součástí JDK 8.


Vylepšení internacionalizace Java 8

1) Vylepšení Unicode

JDK 8 obsahuje podporu pro Unicode 6.2.0. Obsahuje následující funkce.

  • 733 nových postav včetně znaku turecké liry.
  • 7 nových skriptů:
    • Meroitské hieroglyfy
    • Meroitská kurzíva
    • Sora Sompeng
    • Chakma
    • Sharada
    • Takri
    • Miao
  • 11 nových bloků: včetně 7 bloků pro nové skripty uvedené výše a 4 bloky pro následující existující skripty:
  • Rozšířená arabština-A
  • Sundánský doplněk
  • Setkání s Meek Extensions
  • Arabské matematické abecední symboly

Přijetí dat Unicode CLDR a vlastnosti systému java.locale.providers

Unicode Consortium uvolnilo projekt Common Locale Data Repository (CLDR), jehož cílem je „podpora světových jazyků s největším a nejrozsáhlejším standardním úložištěm lokalit, které je k dispozici“. CLDR se stává de-facto standardem pro místní data. Data národního prostředí CLDR založená na XML byla začleněna do vydání JDK 8, ale ve výchozím nastavení jsou zakázána.

Existují čtyři různé zdroje údajů o národním prostředí:

  • CLDR představuje data národního prostředí poskytovaná projektem Unicode CLDR.
  • HOST představuje přizpůsobení aktuálního uživatele nastavení základního operačního systému. Funguje pouze s výchozím národním prostředím uživatele a přizpůsobitelná nastavení se mohou lišit v závislosti na operačním systému, ale primárně jsou podporovány formáty data, času, čísla a měny.
  • SPI představuje služby citlivé na národní prostředí implementované v nainstalovaných poskytovatelích SPI.
  • JRE představuje data národního prostředí, která jsou kompatibilní s předchozími vydáními JRE.

Chcete-li vybrat požadovaný zdroj dat národního prostředí, použijte systémovou vlastnost java.locale.providers. seznam zdrojů dat v preferovaném pořadí. Například: java.locale.providers=HOST,SPI,CLDR,JRE Výchozí chování je ekvivalentní následujícímu nastavení: java.locale.providers=JRE,SPI


Java 8 New Calendar a Locale API

JDK 8 obsahuje dvě nové třídy, několik nových metod a novou návratovou hodnotu pro existující statickou metodu.

Do balíčku java.util.spi jsou přidány dvě nové abstraktní třídy pro poskytovatele služeb.

Třída Popis
veřejná abstraktní třída CalendarDataProvider rozšiřuje LocaleServiceProvider Je to abstraktní třída pro poskytovatele služeb, kteří poskytují parametry kalendáře závislé na národním prostředí.
veřejná abstraktní třída CalendarNameProvider rozšiřuje LocaleServiceProvider Je to abstraktní třída pro poskytovatele služeb, kteří poskytují lokalizované reprezentace řetězců (zobrazované názvy) hodnot polí kalendáře.

Statická metoda je nyní schopna rozpoznat Locale.UNICODE_LOCALE_EXTENSION pro systém číslování.

Metoda Popis
public static final DecimalFormatSymbols getInstance(Locale locale) Používá se k získání instance DecimalFormatSymbols pro zadané národní prostředí. Tato metoda poskytuje přístup k instancím DecimalFormatSymbols pro národní prostředí podporovaná samotným runtime Java i pro ty, které jsou podporovány nainstalovanými implementacemi DecimalFormatSymbolsProvider. Pokud je národní prostředí null, vyvolá výjimku NullPointerException.

Přidány nové metody do API kalendáře:

Metoda Popis
public boolean isSupportedLocale(Locale locale) Vrací hodnotu true, pokud je dané národní prostředí podporováno tímto poskytovatelem služby národního prostředí. Dané národní prostředí může obsahovat rozšíření, která je třeba vzít v úvahu při určování podpory. Je definována ve třídě java.util.spi.LocaleServiceProvider
veřejný řetězec getCalendarType() Vrátí typ kalendáře tohoto kalendáře. Typy kalendáře jsou definovány specifikací Unicode Locale Data Markup Language (LDML). Je definována ve třídě java.util.Calendar.

Pro metody Calendar.getDisplayName a Calendar.getDisplayNames byly přidány nové specifikátory stylu pro určení formátu názvu kalendáře.


Specifikátor Popis
public static final int SHORT_FORMAT Je to specifikátor stylu pro getDisplayName a getDisplayNames označující krátký název používaný pro formát.
public static final int LONG_FORMAT Je to specifikátor stylu pro getDisplayName a getDisplayNames označující dlouhý název používaný pro formát.
public static final int SHORT_STANDALONE Je to specifikátor stylu pro getDisplayName a getDisplayNames označující krátký název používaný nezávisle, jako je zkratka měsíce jako záhlaví kalendáře.
public static final int LONG_STANDALONE Je to specifikátor stylu pro getDisplayName a getDisplayNames označující dlouhý název používaný nezávisle, jako je název měsíce jako záhlaví kalendáře.

Dvě nové metody Locale pro práci s (volitelnými) rozšířeními národního prostředí.

Metoda Popis
public boolean hasExtensions() Vrátí hodnotu true, pokud má toto národní prostředí nějaké přípony.
public Locale stripExtensions() Vrátí kopii tohoto národního prostředí bez přípon. Pokud toto národní prostředí nemá žádné přípony, je toto národní prostředí vráceno samo.

Dvě nové metody Locale.filter vrátí seznam instancí Locale, které odpovídají zadaným kritériím, jak je definováno v RFC 4647:

Metoda Popis
veřejný statický filtr seznamu (priorita seznamu, seznam, místní nastavení) Vrací seznam odpovídajících instancí Locale pomocí mechanismu filtrování definovaného v RFC 4647. To je ekvivalentní k filter(List, Collection, FilteringMode), když je režim Locale.FilteringMode.AUTOSELECT_FILTERING.
veřejný statický filtr seznamu (priorita seznamuList, národní prostředí sbírky, režim Locale.FilteringMode) Vrátí seznam odpovídajících instancí národního prostředí pomocí mechanismu filtrování definovaného v RFC 4647.

Dvě nové metody Locale.filterTags vracejí seznam jazykových značek, které odpovídají zadaným kritériím, jak je definováno v RFC 4647.

Metoda Popis
public static List filterTags(List priorityList, Collection tags) Vrací seznam odpovídajících značek jazyků pomocí základního filtrovacího mechanismu definovaného v RFC 4647. To je ekvivalentní k filterTags(List, Collection, FilteringMode), když je režim Locale.FilteringMode.AUTOSELECT_FILTERING.
public static List filterTags(List priorityList, Collection tags, Locale.FilteringMode mode) Vrací seznam odpovídajících značek jazyků pomocí základního filtrovacího mechanismu definovaného v RFC 4647.

Dvě nové metody vyhledávání vracejí nejlépe odpovídající značku národního prostředí nebo jazyka pomocí vyhledávacího mechanismu definovaného v RFC 4647.

Metoda Popis
veřejné statické vyhledávání národního prostředí (seznam prioritList, národní prostředí kolekce) Vrátí instanci národního prostředí pro značku jazyka, která nejlépe odpovídá, pomocí vyhledávacího mechanismu definovaného v RFC 4647.
Veřejný statický řetězec vyhledáváníTag(Seznam priorityList,Collection tags) Vrací značku jazyka s nejlepší shodou pomocí vyhledávacího mechanismu definovaného v RFC 4647.

Další vylepšení verze Java 8

Vylepšení v JDK 8u5

1) Frekvence zobrazování bezpečnostních výzev pro aplikaci byla snížena.

ctc plná forma

Vylepšení v JDK 8u11

1) Možnost potlačit nabídky od sponzorů při instalaci nebo aktualizaci JRE je k dispozici na kartě Upřesnit ovládacího panelu Java.

2) Atribut Entry-Point může být zahrnut do manifestu souboru JAR k identifikaci jedné nebo více tříd jako platného vstupního bodu pro vaši RIA (Rich Internet Application).


Vylepšení v JDK 8u20

1) Nástroj javafxpackager byl přejmenován na javapackager. Tento nástroj byl vylepšen o nové argumenty pro samostatné balíčky aplikací.

Následující vylepšení se týkají nástroje Java:

  • Byla přidána experimentální možnost kompilátoru JIT související s omezenou transakční pamětí (RTM).
  • Bylo přidáno několik možností souvisejících s deduplikací řetězců.
  • Bylo přidáno několik možností souvisejících s vlastnostmi Advanced Encryption Standard (AES).
  • Kombinace možností garbage collection byly zastaralé.

2) Do virtuálního stroje Java HotSpot byl přidán průvodce laděním odpadků. Popisuje garbage collectory, které jsou součástí Java HotSpot VM, a pomáhá vám rozhodnout se, který garbage collector může nejlépe optimalizovat výkon vaší aplikace, zejména pokud zpracovává velké množství dat (více gigabajtů), má mnoho vláken a má vysokou rychlost transakcí. .


Vylepšení v JDK 8u31

1) V této verzi je protokol SSLv3 odstraněn z rozšířených možností ovládacího panelu Java.


Vylepšení v JDK 8u40

Java nástroj

1) -XX:+CheckEndorsedAndExtDirs byl přidán, protože mechanismus potlačení schválených standardů (JDK-8065675) a mechanismus rozšíření (JDK-8065702) byly zastaralé. Tato možnost pomáhá identifikovat jakékoli existující použití těchto mechanismů a je podporována v JDK 7u80 a JDK 8u40.

2) Java Flight Recorder (JFR) nabízí řadu způsobů, jak odemknout komerční funkce a aktivovat JFR během běhu aplikace.

Zahrnuje možnosti příkazového řádku Java, jako jsou diagnostické příkazy jcmd a ovládací prvky grafického uživatelského rozhraní (GUI) v rámci Java Mission Control. Tato flexibilita vám umožňuje poskytnout vhodné možnosti při spuštění nebo později pracovat s JFR.

3) Volba -XX:StartFlightRecording=parametr=hodnota má nový parametr dumponexit=true, který určuje, zda se má vygenerovat soubor výpisu dat JFR, když se JVM řízeným způsobem ukončí.

4) Možnosti související s omezenou transakční pamětí (RTM) již nejsou experimentální. Tyto možnosti zahrnují -XX:RTMAbortRatio=poměr_abortu, -XX:RTMRetryCount=počet_opakování, -XX:+UseRTMDeopt a -XX:+UseRTMLocking.

5) V Javě 8 bylo zavedeno sdílení dat aplikační třídy (AppCDS). AppCDS rozšiřuje CDS (Class Data Sharing) tak, aby umožňovalo umístění tříd ze standardních adresářů rozšíření a cesty třídy aplikace do sdíleného archivu. Toto je komerční funkce a již není považována za experimentální.

6) Byly přidány nové možnosti -XX:+ResourceManagement a -XX:ResourceManagementSampleInterval=hodnota.

7) Byly přidány další informace o velkých stránkách. Velké stránky, známé také jako velké stránky, jsou stránky paměti, které jsou výrazně větší než standardní velikost stránky paměti. Velké stránky optimalizují překladové vyrovnávací paměti procesoru. Možnosti Linuxu -XX:+UseHugeTLBFS, -XX:+UseSHM a -XX:+UseTransparentHugePages byly zdokumentovány.

8) Byla zdokumentována volba -XX:ObjectAlignmentInBytes=zarovnání.

nástroj JJS

1) Byla přidána možnost --optimistic-types=[true|false]. Povoluje nebo zakazuje předpoklady optimistického typu s deoptimalizační rekompilací.

2) Do nástroje jjs byla přidána možnost --language=[es5]. Specifikuje jazykovou verzi ECMAScript.

nástroj Javapackager

1) Pro balíčky OS X jsou k dispozici nové argumenty. Argument mac.CFBundleVersion identifikuje interní číslo verze, které se má použít.

2) Argument mac.dmg.simple označuje, zda jsou přeskočeny kroky přizpůsobení DMG, které závisí na spuštění kódu AppleScript.

Nástroj Jcmd

Nástroj Jcmd se používá k dynamické interakci s Java Flight Recorder (JFR). Můžete jej použít k odemknutí komerčních funkcí, povolení/spuštění/zastavení záznamů letů a získávání různých stavových zpráv ze systému.

nástroj Jstat

Nástroj jstat byl aktualizován o informace o komprimovaném prostoru tříd, který je speciální částí metaprostoru.

Virtuální stroj

Funkce Scalable Native Memory Tracking HotSpot VM pomáhá diagnostikovat úniky paměti virtuálního počítače a objasnit uživatele, když úniky paměti nejsou ve virtuálním počítači. Native Memory Tracker lze na velkých systémech spustit bez samočinného vypnutí a bez výrazného dopadu na výkon nad rámec toho, co je považováno za přijatelné pro malé programy.