Java8 vs Java9

Java8 Vs Java9



Java 8 vs Java 9: ​​Vylepšenia v jazyku Java 9, ktoré potrebujete vedieť

Mnoho vývojárov sa pri vytváraní aplikácií obráti na Javu. Ako všetci vieme, Java je neuveriteľne univerzálna, ľahko použiteľná, bezpečná, spoľahlivá a predovšetkým nezávislá na platforme. Java má po celom svete viac ako 6,5 milióna vývojárov. Ako taký je to perfektný jazyk na použitie, pretože referenčný materiál je tiež bohatý.

Napriek tomu Java v priebehu rokov stále rástla a vyvíjala sa. Vytvorila spoločnosť Sun Microsystems v roku 1995 , Java pokračuje v dokazovaní svojej spoľahlivosti. Predchádzajúca verzia Javy, ktorá sa používa od 18. marca 2014, bola Java SE 8. Keď bola predstavená, kritici uviedli, že išlo o umelecké dielo, vydanie prúdov zmien v API. Teraz je v bloku nové dieťa. Čerstvo razená Java 9 je konečne tu. Odhalené 21. septembra 2017 „Očakáva sa, že Java SE 9 zmení spôsob, akým veci robíme, a spôsob, akým vývojári vytvárajú aplikácie.







Vďaka neuveriteľnej agilite a univerzálnosti Java 8 firmy vytvorili neuveriteľné riešenia pre odvetvia ako zdravotníctvo, fintech a ďalšie hlavné odvetvia. Java 9 na druhej strane sľubuje, že na tom bude stavať a vývojárom poskytne úplne nové funkcie.



Poďme sa teda pozrieť na to, čo je nové v Jave 9.



Projekt Jigsaw

Toto je jeden z vrcholov Javy 9. V zásade je pomenovaná projektová skladačka modularizácia Javy. Pretože sa kúsky skladačky spájajú po častiach a vytvárajú jeden väčší obrázok, zvyšuje sa aj modularita Java 9. To znamená, že kód je rozdelený na časti (moduly) kvôli úlohám alebo funkciám, ktoré sa majú vykonať. Je to obrovský krok vpred, pretože modularizácia nielenže robí opätovné použitie kódu oveľa pohodlnejším, ale aj správu a ladenie je jednoduché. Z tohto dôvodu sme zistili, že vývojári budú mať pri vytváraní aplikácií s jazykom Java 9 jednoduchší priebeh než s akýmikoľvek inými predchádzajúcimi zostavami.





Ďalšou výhodou modularizácie je, že vývojári môžu teraz vytvárať ľahké, škálovateľné aplikácie. Zvlášť, keď internet vecí neustále rastie, nájdeme viac takýchto aplikácií napísaných v Jave.

JEP 222: jshell : Java Shell

Java 9 obsahuje nový nástroj REPL (read-eval-print loop). Potom, čo bol vo svojej vývojovej fáze pod Projekt správne táto funkcia bola konečne uvoľnená pre verejnosť. Táto nová funkcia je interaktívny nástroj, ktorý sa používa na testovanie výrazov, vyhlásení a vyhlásení napísaných v jazyku Java. Hlavným cieľom API a nástroja JShell je dať vývojárovi možnosť vyskúšať vyššie uvedené funkcie v stave shell. Ide predovšetkým o rýchle kódovanie a skúmanie, pričom výrazy a vyhlásenia nemusia byť súčasťou metódy a metódy naopak nemusia byť súčasťou triedy. Vývojár tak môže rýchlo analyzovať časti kódu a zistiť, či prinesú požadovaný efekt.



Nástroj jshell bude mať rozhranie príkazového riadka s nasledujúcimi funkciami:

  • Konfigurovateľná preddefinovaná definícia a importy.
  • História s možnosťami úprav
  • Automatické pridanie potrebných koncových bodkočiarok

Vylepšenia kompilátora

Aby bola zaistená rýchlejšia aplikácia, Java 9 zaradila novú technológiu nazývanú kompilácia vopred (AoT). Táto technológia, aj keď je vo svojich experimentálnych fázach, umožňuje triedam Java kompilovať do natívneho kódu ešte pred uvedením na virtuálne počítače. Možnosti toho sú nekonečné. Okamžitejšie používanie tejto technológie však skracuje čas spustenia veľkých a malých aplikácií bez toho, aby došlo k odradeniu od špičkového výkonu.

Pri spätnom pohľade Java 8 používa kompilátory Just-in-time (JIT). Tieto kompilátory sú rýchle, ale zahrievanie trvá trochu dlhšie. To môže byť pre malé programy alebo aplikácie bezvýznamné, pretože nie je veľa kódu na kompiláciu. V prípade väčších aplikácií je však príbeh úplne odlišný. Zahrievanie, ktoré kompilátor just-in-time potrebuje, znamená, že niektoré metódy nie sú kompilované, čo oslabuje výkon aplikácie.

Druhou fázou nasadenia inteligentnej kompilácie je zlepšenie prenosnosti a stability nástroja Javac. Vylepšenie tohto nástroja umožňuje jeho použitie ako predvoleného nastavenia priamo v JVM (Java Virtual Machine). Okrem toho bol nástroj zovšeobecnený takým spôsobom, ktorý umožňuje vývojárom používať ho aj mimo prostredia JDK. Pre vývojárov je to veľký problém, pretože Javu je možné použiť vo väčších projektoch, ktoré je možné ľahko umiestniť bez obáv o kompatibilitu. Ďalšou zásadnou aktualizáciou je spätná kompatibilita kompilátora Javac, ktorého jedinou funkciou je kompilovať aplikácie a programy vytvorené pomocou Java 9 tak, aby bežali aj na starších verziách Java.

Lepšia podpora JavaScriptu

Keďže JavaScript stále naberá na obrátkach a stáva sa pre mnohých obľúbeným, JDK 9 umožnil vložiť JavaScript do aplikácií Java. To všetko sa deje pomocou Projekt nosorožca ktorého hlavným cieľom bolo vytvoriť vysoko výkonný, ale ľahký JavaScript runtime v Jave. Toto bolo samozrejme dodané, keď poskytli JavaScript engine vo verzii JDK verzie 8. Teraz vo verzii 9 existuje API analyzátora, ktorého cieľom je poradie syntaxe Nashorn ECMAScript. Toto API robí to, čo umožňuje analýzu kódu ECMAScript pomocou serverových rámcov a IDE bez toho, aby sa museli spoliehať na interné implementačné triedy projektu Nashorn.

G1 ako smetiar

Na rozdiel od všeobecného presvedčenia, Java nemá jedného, ​​ale štyroch zberačov odpadu. Títo smetiari nie sú rovnakí, a preto nesprávny výber znamenal problémy s výkonom v aplikácii. V Jave 8 bol predvoleným zberačom smetí Parallel / Throughput Collector. Tento zberač odpadu bol nahradený jeho predchodcom Smetiar-prvý zberač (G1). Pretože kolektor G1 bol navrhnutý tak, aby efektívne podporoval haldy väčšie ako 4 GB, je to perfektný zberač odpadkov pre malé aj veľké aplikácie.

Aktualizácie API

V tejto novej verzii vývojového kitu Java bolo vykonaných niekoľko aktualizácií API a budeme diskutovať o najpozoruhodnejších.

Úplne prvým sú aktualizácie súbežnosti Java 9, ktoré majú Java.util.concurrent.Flow a CompletableFuture. Zamerané na riešenie problému, ktorý je protitlakom. Flow je implementácia jazyka Java v jazyku Java Reactive Streams API ktorého cieľom je v zásade vyriešiť problém so spätným tlakom. Protitlak je nahromadenie údajov, ku ktorému dochádza, keď je rýchlosť prichádzajúcich požiadaviek väčšia ako schopnosť spracovania aplikácie. Z dlhodobého hľadiska je to problém, pretože aplikácia končí s vyrovnávacou pamäťou nespracovaných dát. Táto aktualizácia bude znamenať lepšie zvládnutie časových limitov, oneskorení a podtried.

Zabezpečenie je súčasťou základnej identity Java. Podpora pre novo schválené HTTP 2.0 RFC je obrovská výhoda. HTTP 2.0 RFC bol postavený na Algoritmus SPDY spoločnosti Google ktorý už začal prinášať ovocie s vylepšeniami rýchlosti v rozsahu od 11,81% do 47,7% oproti predchádzajúcemu protokolu HTTP 1.1. Toto klientske API je inováciou na základné protokoly HTTP a HttpURLConnection API, čo je prinajmenšom problematické, pretože bolo vyrobené ešte pred HTTP 1.

Ukladanie kódu do vyrovnávacej pamäte bolo vždy stratégiou používanou na to, aby boli aplikácie v priebehu rokov rýchlejšie a plynulejšie. Nie je to však bez obmedzení, a to nezostalo bez povšimnutia. Aktualizácia v jazyku Java 9 jasne ukazuje, že JDK 9 rozdeľuje kódy vo vyrovnávacej pamäti na menšie časti, čím sa zlepšuje celkový výkon. JDK 9 používa špeciálne iterátory na preskočenie nemetódového kódu; oddeliť profilovaný, neprofilovaný a nemetódový kód; a vylepšenie niektorých benchmarkov času vykonania.

Výhody Javy 9

Pre mnohých majiteľov firiem neexistuje rozdiel medzi jazykom Java 8 a 9. Pre vývojára však existuje svet rozdielov. Toto sú výhody, ktoré má Java SE 9 oproti svojim predchodcom.

  • Rýchlosť vývoja sa výrazne zvýši vďaka systému modulov, ktoré je nielen jednoduchšie spravovať a ladiť, ale aj opakovane použiteľné, čo znamená, že nemusíte písať celý kód od začiatku.
  • Zvýšenie efektivity zdrojov pre aplikácie z modularizácie a tiež zjednodušenie sťahovania zdrojov, pretože vývojári budú namiesto celého JRE používať iba potrebné moduly.
  • Analýza úryvkov kódu v reálnom čase, ako napr mikro benchmarky slúži na skúmanie výkonu malých kúskov kódu.

Zdroje

http://openjdk.java.net/jeps/251
https://www.romexsoft.com/blog/java-8-vs-java-9/
https://blogs.oracle.com/java/features-in-java-8-and-9
https://dzone.com/articles/5-features-in-java-9-that-will-change-how-you-deve

Eclipse Java návod