Az Oracle 2014. március 18-án kiadta a Java új verzióját Java 8 néven. Ez a Java szoftverfejlesztési platform forradalmi kiadása volt. Különféle frissítéseket tartalmaz a Java programozáshoz, a JVM-hez, az eszközökhöz és a könyvtárakhoz.
Java 8 programozási nyelv továbbfejlesztései
A Java 8 a következő szolgáltatásokat nyújtja a Java programozáshoz:
- Lambda kifejezések,
- Módszer hivatkozások,
- Funkcionális interfészek,
- Stream API,
- Alapértelmezett módszerek,
- Base64 kódolás dekódolása,
- Statikus módszerek az interfészben,
- Választható osztály,
- Gyűjtői osztály,
- ForEach() metódus,
- Rhino JavaScript motor,
- Párhuzamos tömb rendezés,
- Írja be és ismételje meg a megjegyzéseket,
- IO fejlesztések,
- Egyidejű fejlesztések,
- JDBC fejlesztések stb.
Lambda kifejezések
A lambda kifejezés segít kódunkat funkcionális stílusban megírni. Világos és tömör módot biztosít a SAM interfész (Single Abstract Method) kifejezés használatával való megvalósítására. Nagyon hasznos a gyűjteménykönyvtárban, amelyben segít az adatok iterálásában, szűrésében és kinyerésében.
További információkért és példákért: kattints ide
Módszer hivatkozások
A Java 8 Method hivatkozás a funkcionális interfész metódusára vonatkozik. A lambda kifejezés kompakt és egyszerű formája. Minden alkalommal, amikor lambda-kifejezést csak egy metódusra hivatkozik, lecserélheti a lambda-kifejezést metódushivatkozásra.
További információkért és példákért: kattints ide
Funkcionális interfész
Az olyan interfészt, amely csak egy absztrakt metódust tartalmaz, funkcionális interfésznek nevezzük. Tetszőleges számú alapértelmezett és statikus metódusa lehet. Az objektumosztály metódusait is deklarálhatja.
A funkcionális interfészek Single Abstract Method Interfaces (SAM Interface) néven is ismertek.
További információkért és példákért: kattints ide
Választható
A Java új, Opcionális osztályt vezetett be a Java 8-ban. Ez egy nyilvános végső osztály, amelyet a NullPointerException kezelésére használnak a Java alkalmazásokban. Importálnunk kell java.util csomagot az osztály használatához. Módszereket biztosít egy adott változó érték jelenlétének ellenőrzésére.
További információkért és példákért: kattints ide
az egyes
A Java új metódust biztosít a forEach() számára az elemek iterálására. Meghatározása az Iterable és a Stream felületeken van.
Ez az Iterable felületen meghatározott alapértelmezett metódus. Az Iterable felületet kiterjesztő gyűjteményosztályok használhatják a forEach() metódust az elemek iterálására.
Ez a módszer egyetlen paramétert vesz igénybe, amely egy funkcionális interfész. Tehát átadhatja a lambda kifejezést argumentumként.
További információkért és példákért: kattints ide
Dátum/Idő API
A Java új Date and Time API-t vezetett be a Java 8 óta. A java.time csomag Java 8 Date and Time osztályokat tartalmaz.
További információkért és példákért: kattints ide
Alapértelmezett módszerek
A Java lehetőséget biztosít alapértelmezett metódusok létrehozására az interfészen belül. Az interfészen belül definiált és alapértelmezett kulcsszóval címkézett metódusokat alapértelmezett metódusoknak nevezzük. Ezek a módszerek nem absztrakt módszerek, és lehet metódustörzs is.
További információkért és példákért: kattintson ide
Rhino JavaScript motor
A Nashorn egy JavaScript motor. A JavaScript kód dinamikus végrehajtására szolgál a JVM-ben (Java Virtual Machine). A Java parancssori eszközt biztosít stb amelyet JavaScript kód végrehajtására használnak.
A JavaScript kódot kétféleképpen futtathatja:
- A jjs parancssori eszköz használatával, és
- Java forráskódba való beágyazással.
További információkért és példákért: kattintson ide
StringJoiner
A Java hozzáadott egy új StringJoiner utolsó osztályt a java.util csomaghoz. Határolójellel elválasztott karaktersorozat felépítésére szolgál. Most létrehozhat karakterláncot elválasztójelek, például vessző(,), kötőjel (-) stb. átadásával.
karakterlánc módszerek
További információkért és példákért: kattintson ide
Gyűjtők
A Collectors egy utolsó osztály, amely kiterjeszti az Object osztályt. Olyan redukciós műveleteket biztosít, mint például az elemek gyűjteménybe gyűjtése, az elemek összegzése különböző kritériumok szerint stb.
További információkért és példákért: kattints ide
Stream API
A Java 8 java.util.stream csomag osztályokból, interfészekből és egy enumból áll, amely lehetővé teszi az elemek funkcionális stílusú műveleteit. Lusta számításokat végez. Tehát csak akkor hajtja végre, ha szükséges.
További információkért és példákért: kattints ide
Streamszűrő
A Java stream egy filter() metódussal rendelkezik az adatfolyamelemek adott predikátum alapján történő szűrésére. Tegyük fel, hogy a listának csak páros elemeit szeretné elérni, ezt egyszerűen megteheti a filter() metódus segítségével.
Ez a módszer a predikátumot veszi argumentumként, és az eredményül kapott elemek folyamát adja vissza.
További információkért és példákért: kattints ide
Java Base64 kódolás és dekódolás
A Java Base64 osztályt biztosít a titkosítás és a visszafejtés kezelésére. A metódusok használatához importálnia kell a java.util.Base64 osztályt a forrásfájlba.
Ez az osztály három különböző kódolót és dekódert biztosít az információk titkosításához minden szinten.
További információkért és példákért: kattints ide
Java párhuzamos tömb rendezés
A Java egy új kiegészítő szolgáltatást biztosít az Arrays osztályban, amely a tömbelemek párhuzamos rendezésére szolgál. A parallelSort() metódus hozzáadta a java.util.Arrays osztályt, amely a JSR 166 Fork/Join párhuzamossági közös készletet használja a tömbök rendezésére. Ez egy túlterhelt módszer.
További információkért és példákért: kattintson ide
Java 8 biztonsági fejlesztések
1) A Java Secure Socket Extension (JSSE) szolgáltató alapértelmezés szerint engedélyezi a Transport Layer Security (TLS) 1.1 és TLS 1.2 protokollokat az ügyféloldalon.
2) Egy továbbfejlesztett AccessController.doPrivileged metódus került hozzáadásra, amely lehetővé teszi a kódnak, hogy érvényesítse jogosultságai egy részét anélkül, hogy megakadályozná a verem teljes bejárását, hogy más engedélyeket keressen.
3) Az Advanced Encryption Standard (AES) és a Password-Based Encryption (PBE) algoritmusok, például a PBEWithSHA256AndAES_128 és a PBEWithSHA512AndAES_256 hozzáadásra kerültek a SunJCE szolgáltatóhoz.
4) A Java Secure Socket Extension (SunJSSE) alapértelmezés szerint engedélyezte a kiszolgálónév-kiterjesztés (SNI) bővítményt az ügyfélalkalmazásokhoz a JDK 7-ben, a JDK 8 pedig támogatja az SNI-bővítményt a kiszolgálóalkalmazásokhoz. Az SNI-bővítmény egy olyan szolgáltatás, amely kiterjeszti az SSL/TLS-protokollokat, jelezve, hogy a kliens melyik szervernévhez próbál csatlakozni kézfogás közben.
5) A SunJSSE továbbfejlesztve támogatja az AEAD (Authenticated Encryption with Associated Data) algoritmusokat. A Java Cryptography Extension (SunJCE) szolgáltató továbbfejlesztve támogatja az AES/GCM/NoPadding titkosítás megvalósítását, valamint a Galois/Counter Mode (GCM) algoritmus paramétereit.
6) Egy új parancsjelző -importpassword kerül hozzáadásra a keytool segédprogramhoz. Jelszó elfogadására és titkos kulcsként való biztonságos tárolására szolgál. Az olyan osztályok, mint a java.security.DomainLoadStoreParameter és a java.security.PKCS12Attribute hozzáadásra kerülnek a DKS kulcstároló típusának támogatásához.
7) A JDK 8-ban a kriptográfiai algoritmusokat továbbfejlesztették az SHA-2 üzenetkivonat-megvalósítások családjának SHA-224 változatával.
8) Továbbfejlesztett támogatás az NSA Suite B Cryptography számára, amely a következőket tartalmazza:
- OID regisztráció az NSA Suite B kriptográfiai algoritmusokhoz
- Támogatás a 2048 bites DSA kulcspár generálásához és további aláírási algoritmusokhoz a 2048 bites DSA kulcsokhoz, mint például az SHA224withDSA és az SHA256withDSA.
- A Diffie-Hellman (DH) algoritmus kulcsméret-korlátozásának emelése 1024-ről 2048-ra.
9) A SecureRandom osztály kriptográfiailag erős véletlenszámok generálását biztosítja, amelyeket privát vagy nyilvános kulcsokhoz, rejtjelekhez és aláírt üzenetekhez használnak. A getInstanceStrong() metódust a JDK 8-ban vezették be, amely a legerősebb SecureRandom példányát adja vissza. Akkor kell használni, ha RSA privát és nyilvános kulcsot kell létrehoznia. A SecureRandom a következő egyéb változtatásokat tartalmazza:
- Két új megvalósítás került bevezetésre a UNIX platformokon, amelyek blokkoló és nem blokkoló viselkedést biztosítanak.
10) Egy új PKIXRevocationChecker osztály került bele, amely a PKIX algoritmussal ellenőrzi a tanúsítványok visszavonási állapotát. Támogatja a legjobb erőfeszítések ellenőrzését, a végfelhasználói tanúsítványok ellenőrzését és a mechanizmus-specifikus opciókat.
11) A Public Key Cryptography Standards 11 (PKCS) kibővült a Windows 64 bites támogatásával.
12) Két új rcache-típust adunk a Kerberos 5-höz. A none típus azt jelenti, hogy egyáltalán nincs rcache, a dfl típus pedig a DFL stílusú fájl alapú rcache-t. Emellett az elfogadó által kért alkulcs is támogatott. Beállításuk a sun.security.krb5.rcache és a sun.security.krb5.acceptor.subkey rendszertulajdonságokkal történik.
13) A JDK 8-ban a Kerberos 5 protokollátmenet és a korlátozott delegálás támogatott ugyanabban a tartományban.
14) A Java 8 alapértelmezés szerint letiltotta a gyenge titkosítást. A DES-hez kapcsolódó Kerberos 5 titkosítási típusok alapértelmezés szerint nem támogatottak. Ezek a titkosítási típusok engedélyezhetők az allow_weak_crypto=true hozzáadásával a krb5.conf fájlban.
15) A kiszolgáló nevét null értékre állíthatja a kötetlen szerver jelölésére. Ez azt jelenti, hogy az ügyfél bármilyen kiszolgálónévvel kérheti a szolgáltatást. A kontextus létrehozása után a kiszolgáló lekérheti a nevet egyeztetett tulajdonságként a SASL.BOUND_SERVER_NAME kulcsnévvel.
16) A Java natív interfész (JNI) hídja a natív Java Generic Security Service (JGSS) között már támogatott a Mac OS X rendszeren. A sun.security.jgss.native rendszertulajdonságot igaz értékre állíthatja az engedélyezéséhez.
17) Egy új rendszertulajdonság, a jdk.tls.ephemeralDHKeySize került meghatározásra az efemer DH kulcsméretek testreszabására. A minimális elfogadható DH-kulcsméret 1024 bit, kivéve az exportálható rejtjelkészleteket vagy a régi módot (jdk.tls.ephemeralDHKeySize=legacy).
18) A Java Secure Socket Extension (JSSE) szolgáltató alapértelmezés szerint tiszteletben tartja az ügyfél titkosítási csomagjának preferenciáit. A viselkedés azonban módosítható a kiszolgáló titkosítási csomagjának preferenciáinak tiszteletben tartása érdekében az SSLPameters.setUseCipherSuitesOrder(true) kiszolgálón keresztüli meghívásával.
Java 8 Tools fejlesztések
1) Bevezetésre kerül egy jjs parancs, amely meghívja a Nashorn motort vagy interaktív shell módban, vagy parancsfájlok értelmezésére.
2) A java parancs képes JavaFX-alkalmazások indítására, feltéve, hogy a JavaFX alkalmazás megfelelően van csomagolva.
3) A java parancs kézikönyv oldala (mind az nroff, mind a HTML) teljesen átdolgozásra került. A speciális beállítások immár futásidejű, fordítói, szemétgyűjtő és szervizelhetőségre vannak osztva, attól függően, hogy milyen területet érintenek. Számos korábban hiányzó opciót ismertetünk most. Van egy szakasz az előző kiadás óta elavult vagy eltávolított lehetőségekről is.
4) Az új jdeps parancssori eszköz lehetővé teszi a fejlesztő számára az osztályfájlok elemzését a csomagszintű vagy osztályszintű függőségek meghatározásához.
5) A diagnosztikai parancsokat távolról is elérheti, amelyek korábban csak helyileg voltak elérhetők a jcmd eszközön keresztül. A távoli hozzáférést a Java Management Extensions (JMX) segítségével biztosítják, így a diagnosztikai parancsok a platform MBean kiszolgálón regisztrált MBean platformon érhetők el. Az MBean a com.sun.management.DiagnosticCommandMBean felület.
6) A jarsigner eszköz egy új -tsapolicyid opciót tartalmaz, amely lehetővé teszi, hogy aláírt időbélyeget kérjen az Időbélyegző Hatóságtól, és csatolja azt egy aláírt JAR fájlhoz.
7) Egy új java.lang.reflect.Executable.getParameters metódust tartalmaz, amely lehetővé teszi bármely metódus vagy konstruktor formális paramétereinek nevének elérését. A .class fájlok azonban alapértelmezés szerint nem tárolnak formális paraméterneveket. A formális paraméternevek egy adott .class fájlban való tárolásához, és így a Reflection API számára a formális paraméternevek lekéréséhez, fordítsa le a forrásfájlt a javac fordító -parameters opciójával.
statikus függvény java-ban
8) A Java nyelvi specifikáció (JLS) 15.21 szakaszában szereplő bináris összehasonlítások típusszabályait a javac most megfelelően végrehajtja.
9) Ebben a kiadásban eltávolították a com.sun.mirror csomagban található apt eszközt és a hozzá tartozó API-t.
Javadoc fejlesztések
A Java SE 8-ban a következő új API-k kerültek hozzáadásra a Javadoc eszközhöz.
- Az új DocTree API bevezet egy szkennert, amely lehetővé teszi az absztrakt szintaxisfa által képviselt forráskód bejárását. Ez kiterjeszti a Compiler Tree API-t, hogy strukturált hozzáférést biztosítson a javadoc megjegyzések tartalmához.
- A javax.tools csomag olyan osztályokat és felületeket tartalmaz, amelyek lehetővé teszik a Javadoc eszköz közvetlen meghívását egy Java alkalmazásból, új folyamat végrehajtása nélkül.
- Az osztály vagy interfész generált dokumentációjának „Módszer-összefoglaló” szakaszát átstrukturálták. Ebben a szakaszban a módszerleírások típus szerint vannak csoportosítva. Alapértelmezés szerint az összes metódus megjelenik. Egy lapra kattintva megtekinthet egy adott típusú metódusokat (statikus, példány, absztrakt, konkrét vagy elavult, ha léteznek az osztályban vagy felületen).
- A javadoc eszköz mostantól támogatja a javadoc megjegyzések tartalmának ellenőrzését, hogy a javadoc által generált fájlokban különböző problémákhoz, például érvénytelen HTML-hez vagy akadálymentesítési problémákhoz vezethetnek-e. A funkció alapértelmezés szerint engedélyezve van, és az új -Xdoclint opcióval is vezérelhető.
Pack200 fejlesztések
A Java osztály fájlformátuma a JSR 292 miatt frissült, amely támogatja a dinamikusan beírt nyelveket a Java platformon.
A Pack200 motor frissítésre került, hogy a Java SE 8 osztályú fájlok hatékonyan tömörüljenek. Most már képes felismerni az állandó készletbejegyzéseket és a JSR 292 által bevezetett új bájtkódokat. Ennek eredményeként a pack200 eszköz ezen verziójával létrehozott tömörített fájlok nem lesznek kompatibilisek az unpack200 eszköz régebbi verzióival.
Java 8 I/O fejlesztések
A Java 8-ban számos fejlesztés található a java.nio.charset.Charset és a kiterjesztett karakterkészlet megvalósításokon. A következőket tartalmazza:
- Egy új SelectorProvider, amely javíthatja a szerver teljesítményét vagy méretezhetőségét. A /dev/poll SelectorProvider továbbra is az alapértelmezett. A Solaris eseményport mechanizmusának használatához futtassa a java.nio.channels.spi.Selector rendszertulajdonságot a sun.nio.ch.EventPortSelectorProvider értékre állítva.
- A /jre/lib/charsets.jar fájl mérete csökkent.
- A java.lang.String(byte[], ∗) konstruktor és a java.lang.String.getBytes() metódus teljesítménye javult.
Java 8 hálózati fejlesztések
1) Új java.net.URLPermission osztály került hozzáadásra. Engedélyt jelent egy adott URL által meghatározott erőforrás eléréséhez.
2) Hozzáadtunk egy jdk.net csomagot, amely platformspecifikus socket opciókat és egy mechanizmust tartalmaz ezen opciók beállítására az összes szabványos socket típuson. A socket-beállításokat a jdk.net.ExtendedSocketOptions tartalmazza.
3) A HttpURLConnection osztályban, ha telepítve van egy biztonsági kezelő, és ha olyan metódust hívnak meg, amely egy kapcsolat megnyitására irányuló kísérletet eredményez, a hívónak rendelkeznie kell a „connect” SocketPermission engedélyével a cél URL gazdagép/port kombinációjához, vagy egy URLPermission, amely engedélyezi ezt a kérést.
Ha az automatikus átirányítás engedélyezve van, és ez a kérés egy másik célhelyre kerül átirányításra, a hívó félnek engedélyt kell kapnia az átirányított gazdagéphez/URL-hez való csatlakozáshoz is.
Java 8 párhuzamossági fejlesztések
A java.util.concurrent csomag két új felületet és négy új osztályt adott hozzá.
Java.util.concurrent interfészek
Felület | Leírás |
---|---|
nyilvános statikus interfész CompletableFuture.AsynchronousCompletionTask | Ez egy marker interfész, amely az aszinkron metódusokkal előállított aszinkron feladatok azonosítására szolgál. Hasznos lehet az aszinkron tevékenységek figyeléséhez, hibakereséséhez és nyomon követéséhez. |
nyilvános felület CompletionStage | Létrehozza egy esetlegesen aszinkron számítás szakaszát, amely végrehajt egy műveletet, vagy kiszámít egy értéket, amikor egy másik CompletionStage befejeződik. |
Java.util.concurrent osztályok
Osztály | Leírás |
---|---|
public class CompletableFuture kiterjeszti Az objektum megvalósítja a Future-t, a CompletionStage-t | Ez az aFuture, amely kifejezetten befejezhető, és használható CompletionStage-ként, amely támogatja a függő funkciókat és műveleteket, amelyek a befejezése után aktiválódnak. |
publikus statikus osztály ConcurrentHashMap.KeySetView kiterjeszti az objektum-megvalósítási készletet, szerializálható | Ez a ConcurrentHashMap nézete kulcskészletként, amelyben opcionálisan engedélyezhető a hozzáadások egy közös értékhez való hozzárendeléssel. |
public absztrakt osztály A CountedCompleter kiterjeszti a ForkJoinTask-ot | Egy ForkJoinTask egy befejezési művelettel, amikor aktiválódik, és nincs hátra függőben lévő művelet. |
public class CompletionException kiterjeszti a RuntimeException alkalmazást | Kivételt dob, ha hiba vagy más kivétel történik egy eredmény vagy feladat végrehajtása során. |
Új módszerek a java.util.concurrent.ConcurrentHashMap osztályban
A ConcurrentHashMap osztály számos új módszert mutat be legújabb kiadásában. Különféle forEach metódusokat (forEach, forEachKey, forEachValue és forEachEntry), keresési módszereket (search, searchKeys, searchValues és searchEntries) és számos redukciós módszert (redukció, redukcióDouble, redukcióToLong stb.) tartalmaz. Egyéb különféle módszerek (mappingCount és newKeySet) is hozzáadásra kerültek.
Új osztályok a java.util.concurrent.atomic-ban
A legújabb kiadás méretezhető, frissíthető, változó támogatást vezet be a DoubleAccumulator, DoubleAdder, LongAccumulator ésLongAdder új osztályok kis csoportján keresztül. Belsőleg olyan versengéscsökkentő technikákat alkalmaz, amelyek hatalmas átviteli javulást biztosítanak az Atomic változókhoz képest.
Osztály | Leírás |
---|---|
public class DoubleAccumulator kiterjeszti Szám implementál Sorosozható | Egy vagy több olyan változóhoz használatos, amelyek együtt fenntartanak egy futó kettős értéket, amelyet a mellékelt függvény segítségével frissítenek. |
public class A DoubleAdder kiterjeszti Szám implementál Serializálható | Egy vagy több olyan változóra használják, amelyek együttesen eredetileg nulla dupla összeget tartanak fenn. |
public class LongAccumulator extends Number implements Serializálható | Egy vagy több olyan változóhoz használatos, amelyek együtt fenntartanak egy futó hosszú értéket, amelyet a mellékelt függvény segítségével frissítenek. |
public class LongAdder extends Number implements Serializálható | Egy vagy több olyan változóra használják, amelyek együttesen egy kezdetben nulla hosszú összeget tartanak fenn. |
Új metódusok a java.util.concurrent.ForkJoinPool osztályban
Ez az osztály két új getCommonPoolParallelism() és commonPool() metódussal bővült, amelyek a közös készlet, illetve a közös készlet példányának megcélzott párhuzamossági szintjét adják vissza.
Módszer | Leírás |
---|---|
nyilvános statikus ForkJoinPool commonPool() | Visszaadja a közös készlet példányát. |
Nyilvános statikus int getCommonPoolParallelism() | Visszaadja a közös készlet megcélzott párhuzamossági szintjét. |
Új java.util.concurrent.locks.StampedLock osztály
Egy új StampedLock osztály került hozzáadásra, amely képesség-alapú zár hozzáadására szolgál három móddal az olvasási/írási hozzáférés szabályozására (írás, olvasás és optimista olvasás). Ez az osztály támogatja azokat a metódusokat is, amelyek feltételesen biztosítanak konverziót a három mód között.
Osztály | Leírás |
---|---|
publikus osztály A StampedLock kiterjeszti az objektum-megvalósításokat Serializálható | Ez az osztály egy képességalapú zárolást képvisel, három móddal az olvasási/írási hozzáférés szabályozására. |
Java API XML-feldolgozáshoz (JAXP) 1.6 Továbbfejlesztések
A Java 8-ban a Java API hozzáadásra került az XML Processing (JAXP) 1.6-hoz. A szolgáltatások szolgáltatáskonfigurációs fájlokból történő betöltéséhez a java.util.ServiceLoader által meghatározott szolgáltató betöltő szolgáltatását kell használni.
Ennek az az indoklása, hogy lehetővé tegyük a Java SE platform jövőbeli modularizálását, ahol a szolgáltatók a JAR-fájloktól eltérő eszközökkel, esetleg a szolgáltatáskonfigurációs fájlok nélkül is telepíthetők.
Java virtuális gép fejlesztések
Az invokespecial utasítások ellenőrzését megszigorították, így csak az aktuális osztályban vagy annak közvetlen szuperosztályában lévő példány inicializálási metódusai hívhatók meg.
A Java Mission Control 5.3 a Java 8 része
A Java Mission Control (JMC) egy olyan fejlett eszközkészlet, amely hatékony és részletes adatelemzést tesz lehetővé, és fejlett, észrevétlen Java megfigyelést és kezelést biztosít. A JMC szakaszokat biztosít az olyan általános elemzési területekhez, mint a kódteljesítmény, a memória és a késleltetés.
A japán és az egyszerűsített kínai nyelvű Babel nyelvi csomagok mostantól alapértelmezés szerint szerepelnek a JDK 8-ban található Java Mission Controlban.
Java 8 nemzetköziesítési fejlesztések
1) Unicode fejlesztések
A JDK 8 támogatja a Unicode 6.2.0-t. A következő funkciókat tartalmazza.
- 733 új karakter, beleértve a török líra jelet.
- 7 új szkript:
- Meroita hieroglifák
- Meroita kurzív
- Sora Sompeng
- Chakma
- Sharada
- Takri
- Miao
- 11 új blokk: ebből 7 blokk a fent felsorolt új szkriptekhez és 4 blokk a következő meglévő szkriptekhez:
- Arab kiterjesztett-A
- Szunda-kiegészítő
- Találkozó Meek Extensions
- Arab matematikai betűrendes szimbólumok
A Unicode CLDR adatok és a java.locale.providers rendszertulajdonság átvétele
A Unicode Consortium kiadta a Common Locale Data Repository (CLDR) projektet, hogy „támogassa a világ nyelveit, a rendelkezésre álló területi adatok legnagyobb és legkiterjedtebb szabványos tárházával”. A CLDR a területi adatok de facto szabványává válik. A CLDR XML-alapú területi adatai beépültek a JDK 8-as kiadásba, de alapértelmezés szerint le vannak tiltva.
A területi adatoknak négy különböző forrása van:
- A CLDR a Unicode CLDR projekt által biztosított területi adatok.
- A HOST az alapul szolgáló operációs rendszer beállításainak aktuális felhasználó általi testreszabását jelenti. Csak a felhasználó alapértelmezett nyelvi beállításával működik, és a testreszabható beállítások az operációs rendszertől függően változhatnak, de elsősorban a dátum, idő, szám és pénznem formátumok támogatottak.
- Az SPI a telepített SPI-szolgáltatókban megvalósított terület-érzékeny szolgáltatásokat képviseli.
- A JRE azokat a területi adatokat jelenti, amelyek kompatibilisek a korábbi JRE-kiadásokkal.
A kívánt területi adatforrás kiválasztásához használja a java.locale.providers rendszertulajdonságot. az adatforrások felsorolása a kívánt sorrendben. Például: java.locale.providers=HOST,SPI,CLDR,JRE Az alapértelmezett viselkedés megegyezik a következő beállítással: java.locale.providers=JRE,SPI
Java 8 új naptár és területi API-k
A JDK 8 két új osztályt, több új metódust és egy meglévő statikus metódushoz tartozó új visszatérési értéket tartalmaz.
A java.util.spi csomaghoz két új absztrakt osztály került a szolgáltatók számára.
Osztály | Leírás |
---|---|
nyilvános absztrakt osztály CalendarDataProvider kiterjeszti a LocaleServiceProvider szolgáltatást | Ez egy absztrakt osztály azon szolgáltatók számára, amelyek területfüggő naptárparamétereket biztosítanak. |
nyilvános absztrakt osztály A CalendarNameProvider kiterjeszti a LocaleServiceProvider-t | Ez egy absztrakt osztály azon szolgáltatók számára, amelyek a naptár mezőértékeinek lokalizált karakterlánc-reprezentációit (megjelenítési neveket) biztosítják. |
Egy statikus metódus most már képes felismerni a Locale.UNICODE_LOCALE_EXTENSION fájlt a számozási rendszerben.
Módszer | Leírás |
---|---|
nyilvános statikus végleges DecimalFormatSymbols getInstance (Locale locale) | A DecimalFormatSymbols példány lekérésére szolgál a megadott területi beállításhoz. Ez a módszer hozzáférést biztosít a DecimalFormatSymbols-példányokhoz a maga a Java-futási környezet által támogatott területi beállításokhoz, valamint a telepített DecimalFormatSymbolsProvider-megvalósítások által támogatott területi beállításokhoz. NullPointerExceptiont dob, ha a területi beállítás null. |
Új metódusok hozzáadva a Calender API-ban:
prioritási sor java
Módszer | Leírás |
---|---|
Public Boolean isSupportedLocale(Locale locale) | Igazat ad vissza, ha az adott területi beállítást támogatja ez a terület-szolgáltató. Az adott területi beállítás tartalmazhat kiterjesztéseket, amelyeket figyelembe kell venni a támogatás meghatározásánál. A java.util.spi.LocaleServiceProvider osztályban van megadva |
public String getCalendarType() | Ennek a naptárnak a naptártípusát adja vissza. A naptártípusokat a Unicode Locale Data Markup Language (LDML) specifikáció határozza meg. A java.util.Calendar osztályban van meghatározva. |
A Calendar.getDisplayName és a Calendar.getDisplayNames metódusokhoz új stílusspecifikátorok kerültek hozzáadásra a naptárnév formátumának meghatározásához.
Meghatározó | Leírás |
---|---|
nyilvános statikus végső int SHORT_FORMAT | Ez a getDisplayName és a getDisplayNames stílusmeghatározója, amely a formátumhoz használt rövid nevet jelzi. |
nyilvános statikus végső int LONG_FORMAT | Ez a getDisplayName és a getDisplayNames stílusmeghatározója, amely a formátumhoz használt hosszú nevet jelzi. |
nyilvános statikus végső int SHORT_STANDALONE | Ez a getDisplayName és a getDisplayNames stílusmeghatározója, amely egy önállóan használt rövid nevet jelöl, például egy hónap rövidítését naptárfejlécként. |
nyilvános statikus végső int LONG_STANDALONE | Ez a getDisplayName és a getDisplayNames stílusmeghatározója, amely egymástól függetlenül használt hosszú nevet jelöl, például egy hónap nevét naptárfejlécként. |
Két új területi beállítási módszer a területi beállítások (opcionális) bővítményeinek kezelésére.
Módszer | Leírás |
---|---|
publikus logikai hasExtensions() | Igazat ad vissza, ha ennek a területi beállításnak van kiterjesztése. |
public Locale stripExtensions() | Ennek a területi beállításnak a kiterjesztés nélküli másolatát adja vissza. Ha ennek a területi beállításnak nincsenek kiterjesztései, akkor ez a területi beállítás önmagát adja vissza. |
Két új Locale.filter metódus visszaadja azon Locale példányok listáját, amelyek megfelelnek az RFC 4647-ben meghatározott feltételeknek:
Módszer | Leírás |
---|---|
nyilvános statikus listaszűrő (Lista prioritáslista, Gyűjtemény területei) | Az RFC 4647-ben definiált szűrési mechanizmus használatával visszaadja az egyező területi példányok listáját. Ez egyenértékű a szűréssel (Lista, Gyűjtemény, Szűrési mód), ha a mód Locale.FilteringMode.AUTOSELECT_FILTERING. |
nyilvános statikus listaszűrő (Lista prioritáslista, Gyűjtemény területi beállításai, Területi beállítás. Szűrési mód mód) | Az RFC 4647-ben definiált szűrési mechanizmus használatával visszaadja az egyező területi példányok listáját. |
Két új Locale.filterTags metódus olyan nyelvi címkék listáját adja vissza, amelyek megfelelnek az RFC 4647-ben meghatározott feltételeknek.
Módszer | Leírás |
---|---|
nyilvános statikus listaszűrőcímkék (Lista prioritáslista, gyűjteménycímkék) | Visszaadja az egyező nyelvi címkék listáját az RFC 4647-ben meghatározott alapvető szűrési mechanizmus használatával. Ez egyenértékű a filterTags(List, Collection, FilteringMode) funkcióval, ha a mód Locale.FilteringMode.AUTOSELECT_FILTERING. |
nyilvános statikus listaszűrő címkék (Lista prioritáslista, Gyűjteménycímkék, Területi beállítás. Szűrési mód mód) | Visszaadja az egyező nyelvi címkék listáját az RFC 4647-ben meghatározott alapvető szűrési mechanizmus használatával. |
Két új keresési módszer adja vissza a legjobban egyező területi vagy nyelvi címkét az RFC 4647-ben meghatározott keresési mechanizmus használatával.
Módszer | Leírás |
---|---|
nyilvános statikus terület-keresés (Lista prioritáslista, Gyűjtemény területi beállításai) | Az RFC 4647-ben meghatározott keresési mechanizmus használatával a legjobban illeszkedő nyelvi címkéhez egy Locale példányt ad vissza. |
Nyilvános statikus karakterlánc-keresési címke (prioritáslista, gyűjteménycímkék) | A legjobban illeszkedő nyelvi címkét adja vissza az RFC 4647-ben meghatározott keresési mechanizmus használatával. |
Egyéb Java 8-as verziójavítások
Továbbfejlesztések a JDK 8u5-ben
1) Csökkentettük az alkalmazások biztonsági felszólításának megjelenítési gyakoriságát.
Továbbfejlesztések a JDK 8u11-ben
1) A Java Vezérlőpult Speciális lapján elérhető egy lehetőség a szponzorok ajánlatainak letiltására a JRE telepítésekor vagy frissítésekor.
2) Az Entry-Point attribútum beépíthető a JAR-fájl jegyzékébe, hogy egy vagy több osztályt a RIA (Rich Internet Application) érvényes belépési pontjaként azonosítson.
Továbbfejlesztések a JDK 8u20-ban
1) A javafxpackager eszközt átneveztük javapackagerre. Ez az eszköz új érvekkel bővült az önálló alkalmazáscsomagolókhoz.
A következő fejlesztések a java eszközhöz kapcsolódnak:
- A korlátozott tranzakciós memóriához (RTM) kapcsolódó kísérleti JIT fordító opció került hozzáadásra.
- Számos, a karakterlánc-deduplikációval kapcsolatos opció került hozzáadásra.
- Számos, az Advanced Encryption Standard (AES) lényegi jellemzőihez kapcsolódó opció került hozzáadásra.
- A szemétszállítási lehetőségek kombinációi elavultak.
2) A szemétgyűjtési hangolási útmutatót hozzáadtuk a Java HotSpot virtuális géphez. Leírja a Java HotSpot VM-hez mellékelt szemétgyűjtőket, és segít eldönteni, hogy melyik szemétgyűjtő tudja a legjobban optimalizálni az alkalmazás teljesítményét, különösen, ha nagy mennyiségű adatot (több gigabájtot) kezel, sok szálat tartalmaz és magas a tranzakciós aránya. .
Továbbfejlesztések a JDK 8u31-ben
1) Ebben a kiadásban az SSLv3 protokoll eltávolításra került a Java Control Panel Advanced beállítások közül.
Továbbfejlesztések a JDK 8u40-ben
Java eszköz
1) A -XX:+CheckEndorsedAndExtDirs azért került hozzáadásra, mert az elfogadott szabványok felülbírálási mechanizmusa (JDK-8065675) és a kiterjesztési mechanizmus (JDK-8065702) elavulttá vált. Az opció segít azonosítani e mechanizmusok meglévő felhasználásait, és a JDK 7u80 és JDK 8u40 támogatja.
2) A Java Flight Recorder (JFR) számos módot kínál a kereskedelmi funkciók feloldására és a JFR engedélyezésére egy alkalmazás futási ideje alatt.
Tartalmaz olyan java parancssori opciókat, mint például a jcmd diagnosztikai parancsok és a grafikus felhasználói felület (GUI) vezérlői a Java Mission Controlon belül. Ez a rugalmasság lehetővé teszi, hogy indításkor megadja a megfelelő opciókat, vagy később kommunikáljon a JFR-rel.
3) A -XX:StartFlightRecording=parameter=value beállításnak van egy új paramétere, a dumponexit=true, amely megadja, hogy létre kell-e hozni a JFR adatok kiíratási fájlját, amikor a JVM ellenőrzött módon leáll.
4) A korlátozott tranzakciós memóriával (RTM) kapcsolatos lehetőségek már nem kísérleti jellegűek. Ezek a beállítások a következők: -XX:RTMAbortRatio=abort_ratio, -XX:RTMRetryCount=retries_number, -XX:+UseRTMDeopt és -XX:+UseRTMLocking.
5) A Java 8-ban bevezették az Application Class Data Sharing (AppCDS) szolgáltatást. Az AppCDS kiterjeszti a CDS-t (Class Data Sharing), hogy lehetővé tegye a szabványos kiterjesztési könyvtárak osztályainak és az alkalmazásosztály elérési útjának a megosztott archívumban való elhelyezését. Ez kereskedelmi funkció, és már nem tekinthető kísérleti jellegűnek.
6) Új beállítások -XX:+ResourceManagement és -XX:ResourceManagementSampleInterval=value.
7) További információk a nagy oldalakkal kapcsolatban. A nagy oldalak, más néven hatalmas oldalak, olyan memóriaoldalak, amelyek lényegesen nagyobbak, mint a szabványos memórialapméret. A nagy oldalak optimalizálják a processzor Translation-Lookaside puffereit. A Linux-beállítások -XX:+UseHugeTLBFS, -XX:+UseSHM és -XX:+UseTransparentHugePages dokumentálásra kerültek.
8) Az -XX:ObjectAlignmentInBytes=igazítás beállítás dokumentálásra került.
JJS eszköz
1) A --optimistic-types=[true|false] opció hozzáadásra került. Engedélyezi vagy letiltja az optimista típusú feltételezéseket deoptimalizáló újrafordítással.
2) A --language=[es5] opció hozzáadásra került a jjs eszközhöz. Meghatározza az ECMAScript nyelvi verzióját.
Javapackager eszköz
1) Új argumentumok állnak rendelkezésre az OS X kötegelőkhöz. A mac.CFBundleVersion argumentum azonosítja a használni kívánt belső verziószámot.
2) A mac.dmg.simple argumentum jelzi, ha az AppleScript kód végrehajtásától függő DMG testreszabási lépések kimaradnak.
Jcmd eszköz
A Jcmd eszköz a Java Flight Recorder (JFR) dinamikus interakciójára szolgál. Segítségével feloldhatja a kereskedelmi funkciókat, engedélyezheti/indíthatja/leállíthatja a repülési felvételeket, és különféle állapotüzeneteket kaphat a rendszertől.
Jstat eszköz
A jstat eszköz frissítésre került a tömörített osztálytérrel kapcsolatos információkkal, amely a metatér speciális része.
Virtuális gép
A Scalable Native Memory Tracking HotSpot virtuális gép funkció segít diagnosztizálni a virtuális gép memóriaszivárgását, és tisztázni a felhasználókat, ha nem a virtuális gépben van memóriaszivárgás. A Native Memory Tracker önleállás nélkül is futtatható nagy rendszereken, és anélkül, hogy a kis programok esetében elfogadhatónak ítélt mértéken túl jelentős hatást gyakorolna a teljesítményre.