Programovanie

Java 9 je tu: Všetko, čo potrebujete vedieť

Java 9 - formálne verzia Java Platform Standard Edition verzia 9 - je konečne tu a jej vývojová sada Java (JDK) je k dispozícii vývojárom na stiahnutie.

Má niekoľko dôležitých, ak kontroverzných nových funkcií, ale je tiež poslednou v rade pre starý štýl dodávania Java.

Kde stiahnuť Java 9 JDK

Spoločnosť Oracle zverejnila dokument Java SE 9 JDK a dokumentáciu na stiahnutie vývojármi.

Hlavné nové funkcie v prostredí Java 9

Debutujúci takmer tri roky po Java SE 8 má Java SE 9 niekoľko kľúčových architektonických zmien a tiež množstvo vylepšení.

Modularita Java 9 mení hru

Nové kontroverzné možnosti modularity založené na projekte Project Jigsaw určite vzbudia záujem o špičkové obchody v Jave, ktoré chcú vidieť, čo JDK 9 ponúka teraz, aj keď konzervatívnejšie obchody sa rozhodnú počkať na dozretie modularity.

Modularita - vo forme systému Java Platform Module System - rozdeľuje JDK na sadu modulov na kombinovanie za behu, kompilácie alebo budovania. Modularita sa nazýva „prechodná“ zmena, ktorá umožňuje pochopiť závislosti medzi modulmi.

Modularita Java 9 má umožniť vývojárom jednoduchšie zhromažďovať a udržiavať sofistikované aplikácie. Mal by tiež umožniť Jave lepšie sa škálovať na menšie zariadenia a zároveň sa zvýši bezpečnosť a výkon.

Aspekty modulárnosti Java 9 zahŕňajú aplikačné balenie, modularizáciu samotnej JDK a reorganizáciu zdrojového kódu do modulov. Systém zostavenia je vylepšený o kompiláciu modulov a vynucovanie hraníc modulov v čase zostavenia. Obrázky JDK a Java Runtime Environment (JRE) sú reštrukturalizované tak, aby spracovávali moduly. Pre modularitu sú teraz prístupné aj ovládacie prvky JavaFX UI a CSS API.

Je podporovaných množstvo konfigurácií; vo výsledku by sa mala zlepšiť škálovateľnosť, bezpečnosť a výkon aplikácií. Kľúčovou hnacou silou modulárneho úsilia je jednoduchšie škálovanie jazyka Java na malé zariadenia.

S modularitou budú vývojári schopní vytvárať a udržiavať knižnice a veľké aplikácie pre Java SE (Standard Edition) a Java EE (Enterprise Edition). Ale počas vývoja Java 9 mali Oracle, IBM, Red Hat a ďalšie veľké nezhody ohľadom toho, ako urobiť tak radikálnu zmenu na platforme. Samotný modulový systém bol v máji zamietnutý. Po dosiahnutí pokroku ho bolo možné schváliť až pri druhom hlasovaní v júni.

Aj po dohode medzi najväčšími dodávateľmi Java zostávajú polemiky o tom, či modularita bude vývojárom Java veľmi dobrá. Niektorí odborníci tvrdia, že áno, iní nie. Bez ohľadu na to je Java 9 teraz modularizovaná.

Na uľahčenie migrácie na modulárnu verziu Java 9 umožňuje Java 9 nelegálny reflexívny prístup ku kódu na ceste triedy, ktorý používa JRE na vyhľadávanie tried a súborov zdrojov. Táto funkcia bude po Java 9 zakázaná.

Vylepšenia kompilátora pre kód Java 9

Inovácia na Java 9 ponúka niekoľko nových schopností kompilácie kódu, medzi ktorými je hlavná kompilácia vopred (AoT). Táto funkcia stále v experimentálnej fáze umožňuje kompiláciu tried Java do natívneho kódu pred spustením vo virtuálnom stroji. Táto funkcia je určená na zlepšenie času spustenia malých aj veľkých aplikácií s obmedzeným dopadom na špičkový výkon.

Kompilátory Just-in-time (JIT) sú rýchle, ale programy Java sa zväčšili natoľko, že trvá dosť dlho, kým sa JIT úplne zahreje, čo ponecháva niektoré metódy Java nekompilované a slabý výkon. Predbežná kompilácia je určená na riešenie týchto problémov.

Ale Dmitrij Leskov, marketingový riaditeľ dodávateľa technológií Java Excelsior, sa obáva, že technológia kompilácie v predstihu nie je dostatočne vyspelá, a želá si, aby si Oracle počkala do vydania Java 10 na pevnejšiu verziu.

Java 9 ponúka aj druhú fázu nasadenia inteligentnej kompilácie spoločnosti Oracle. Táto vlastnosť spočíva v zdokonaľovanís javac stability a prenosnosti nástroja, aby ho bolo možné predvolene použiť v prostredí JVM (Java Virtual Machine). Nástroj bude tiež zovšeobecnený, aby ho bolo možné použiť na veľké projekty mimo JDK. JDK 9 tiež aktualizovaljavac prekladač, aby mohol kompilovať programy Java 9 tak, aby bežali na niektorých starších verziách Java.

Ďalšou novou - ale experimentálnou - funkciou kompilácie je rozhranie JVMCI na úrovni JVM (JVMCI). Toto rozhranie umožňuje JVM použiť kompilátor napísaný v Jave ako dynamický kompilátor. Rozhranie JVMCI API poskytuje mechanizmy na prístup k štruktúram VM, inštaláciu kompilovaného kódu a zapojenie do kompilačného systému JVM.

Písanie kompilátora JVM v Jave by malo umožniť vysoko kvalitný kompilátor, ktorý sa ľahšie udržiava a vylepšuje ako existujúce kompilátory napísané v jazyku C alebo C ++. Vďaka tomu by sa kompilátory napísané v samotnej Jave mali ľahšie udržiavať a vylepšovať. Medzi ďalšie existujúce snahy o povolenie kompilátorov v jazyku Java patria Graal Project a Project Metropolis.

Účelom novej schopnosti riadenia kompilátora je poskytnúť jemné a kontextovo závislé riadenie kompilátorov JVM, ktoré vývojárom umožní meniť možnosti ovládania kompilátora za behu bez zníženia výkonu. Tento nástroj tiež umožňuje riešenie chýb kompilátora JVM.

REPL konečne prichádza na Javu 9

Java 9 je vybavený nástrojom REPL (read-eval-print loop) - ďalším dlhodobým cieľom pre Javu, ktorý sa v tejto verzii po rokoch vývoja v rámci projektu Kulia stáva skutočným.

Produkt REPL Java 9 nazvaný jShell interaktívne vyhodnocuje deklaratívne vyhlásenia a výrazy. Vývojári môžu získať spätnú väzbu na programy pred kompiláciou jednoduchým zadaním niektorých riadkov kódu.

Medzi možnosti nástroja príkazového riadku patrí dopĺňanie tabulátorov a automatické pridávanie potrebných koncových bodkočiarok. Rozhranie jShell API umožňuje funkčnosť jShell v IDE a iných nástrojoch, aj keď samotný nástroj nie je IDE.

Ako dôvod, prečo sa školy vzdialili od Javy, sa uvádza nedostatok REPL. (Jazyky ako Python a Scala už dlho majú REPL.) Zakladateľ jazyka Scala Martin Odersky však spochybňuje užitočnosť REPL v Jave a hovorí, že Java je orientovaná na príkazy, zatiaľ čo REPL sú na výraz.

Vylepšenia rozhrania Streams API v prostredí Java 9

Prúdy v Jave umožňujú vývojárom vyjadrovať výpočty, aby bolo možné efektívne využívať paralelnosť údajov. Schopnosť Stream v Java 8 slúži na deklaratívne spracovanie údajov pri využití viacjadrových architektúr.

V aplikácii Java 9 rozhranie Streams API pridáva metódy na podmienečné prijímanie a vypúšťanie položiek zo streamu, iteráciu nad prvkami Stream a vytváranie streamu z hodnoty s možnou hodnotou Null pri rozširovaní množiny rozhraní API Java SE, ktoré môžu slúžiť ako zdroje streamov.

Cache kódu je možné rozdeliť v prostredí Java 9

JDK 9 umožňuje rozdelenie medzipamäte kódu na segmenty, aby sa zlepšil výkon a umožnili rozšírenia, ako napríklad jemnozrnné uzamknutie. Výsledky by sa mali zlepšiť vďaka časom zametania vďaka špecializovaným iterátorom preskakujúcim kód, ktorý nie je metódou; oddelenie nemetodického, profilovaného a neprofilovaného kódu; a zlepšenie času vykonania niektorých referenčných hodnôt.

Lepšia podpora JavaScriptu v Jave 9 cez Project Nashorn

Projekt Nashorn, ktorý poskytuje odľahčený runtime JavaScriptu pre Java, sa vylepšuje v JDK 9. Projekt Nashorn bol snahou o implementáciu vysoko výkonného, ​​ale odľahčeného runtime JavaScriptu v Jave, nadväzujúc na projekt Rhino, ktorý sa začal v Netscape. Projekt Nashorn bol poverený umožnením vkladania JavaScriptu do aplikácií Java. Poskytoval Jave v JDK 8 engine s JavaScriptom.

JDK 9 obsahuje parser API pre Nashornov syntaxový strom ECMAScript. Rozhranie API umožňuje analýzu kódu ECMAScript pomocou IDE a rámcov na strane servera bez závislosti na interných triedach implementácie Project Nashorn.

Rozhranie API klienta HTTP / 2 je súčasťou Java 9

Beta API klienta HTTP / 2 vyšlo na JDK 9 a implementovalo v Jave upgrade na hlavný protokol HTTP na webe. WebSocket podporuje aj API.

Rozhranie API HTTP / 2 môže nahradiť rozhranie HttpURLConnection API, ktoré malo problémy, vrátane návrhu s dnes už neexistujúcimi protokolmi, predchádzania protokolu HTTP / 1, príliš abstraktného a ťažko použiteľného použitia.

Vylepšená podpora HTML5 a Unicode v prostredí Java 9

V JDK 9 je dokumentačný nástroj Javadoc vylepšený o generovanie značiek HTML5. Podporovaný je aj štandard kódovania Unicode 8.0, ktorý pridáva 8 000 znakov, 10 blokov a šesť skriptov.

Do Java 9 je pridané bezpečnostné API DTLS

Kvôli bezpečnosti Java 9 pridáva API pre DTLS (Datagram Transport Layer Security). Protokol bol navrhnutý tak, aby zabránil odpočúvaniu, neoprávnenej manipulácii a falšovaniu správ v komunikácii klient / server. Poskytuje sa implementácia pre režim klienta aj servera.

Čo Java 9 zastáva a odstraňuje

Java 9 nepodporuje alebo odstraňuje niekoľko funkcií, ktoré už nie sú v móde. Medzi nimi je hlavne Applet API, ktorého podpora je ukončená. Teraz to vyšlo z módy, keď tvorcovia prehľadávačov zameraných na bezpečnosť odstraňovali podporu doplnkov prehľadávača Java. Príchod HTML5 tiež prispel k ich zániku. Vývojári sú teraz vedení k alternatívam, ako je napríklad Java Web Start, na spúšťanie aplikácií z prehľadávača alebo inštalovateľné aplikácie.

Podpora nástroja appletviewer je takisto zastaraná.

Java 9 taktiež ukončuje podporu zberača odpadu Concurrent Mark Sweep (CMS), s podporou ukončenia budúceho vydania. Zámerom je urýchliť vývoj ďalších zberačov odpadu vo virtuálnom stroji HotSpot. Zberač odpadu G1 s nízkou pauzou má byť dlhodobou náhradou za CMS.

Medzitým sú v JDK 9 odstránené kombinácie odvozu odpadu, ktoré boli predtým zastarané v JDK 8. Patria sem zriedka používané kombinácie ako Incremental CMS, ParNew + SerialOld a DefNew + CMS, ktoré pridali ďalšiu zložitosť na základňu kódu zberača odpadu.

Java 9 tiež eliminuje varovania Java na príkazoch na import, aby pomohla vyčistiť veľké databázové základne od upozornení na vlákna. S týmito databázami kódov musí byť po určitú dobu podporovaná zastaraná funkcionalita, ale importovanie zastaranej konštrukcie nemusí zaručiť varovnú správu, ak sú použitia konštrukcie zámerné a potlačené.

V prostredí Java 9 sa odstraňuje aj možnosť výberu JRE v čase spustenia pomocou funkcie Multiple JRE (mJRE). Táto funkcia bola zriedka používaná, komplikovala implementáciu spúšťača Java a nikdy nebola úplne zdokumentovaná, keď mala debut v JDK 5.

Spoločnosť Oracle odstránila agenta hprof (Heap Profiling) JVM TI (Tool Interface), ktorý bol v JVM nahradený. Bol odstránený aj nástroj jhat, ktorý bol zastaraný vynikajúcimi haldovými vizualizérmi a analyzátormi.

Java 9 je koniec svojej rady, pretože začína nová rada Java 9

Dalo by sa povedať, že Java 9 vychádza so všetkým, čo ponúka. Spoločnosť Oracle nedávno odhalila, že Java 9 je posledná svojho druhu, pokiaľ ide o jej označenie a čas, ktorý uplynul medzi hlavnými vydaniami.

Od tejto chvíle sa predpokladá, že Java bude mať k dispozícii šesťmesačné vydanie, pričom ďalšia hlavná verzia sa bude volať Java 18.3, ktorá sa má konať v marci 2018, po ktorej bude o 18 mesiacov neskôr Java 18.9.

Nová kadencia vydávania Javy tiež znamená, že JDK 9 nebude určené ako vydanie s dlhodobou podporou. Namiesto toho bude ďalším dlhodobým vydaním Java 18.9.

Rýchlejšia kadencia vydávania Java znamená, že vývojári nebudú musieť čakať na hlavné vydania tak dlho. Môže to tiež znamenať, že vývojári vynechajú Java 9 a jej „nevyzreté“ funkcie modularity a počkajú šesť mesiacov na novú verziu, ktorá by pravdepodobne vyžehlila akékoľvek zlomyseľnosti, povedal Simon Maple, riaditeľ advokácie v Jave u dodávateľa nástrojov Java ZeroTurnaround.

$config[zx-auto] not found$config[zx-overlay] not found