tuto příručku můžete použít k nalezení a instalaci nejnovější Java, pochopení rozdílů mezi distribucemi Java(AdoptOpenJdk, OpenJDK, OracleJDK atd.), stejně jako získat přehled funkcí jazyka Java, včetně Java verze 8-13.,
můžete také rád: Beyond Java 8
základní Informace
za Prvé, pojďme se podívat na některé běžné, praktické otázky, které lidé mají, když se snaží vybrat správnou verzi Java pro jejich projekt.
Pokud se chcete dozvědět více o konkrétní verzi, Přejděte na stránku AdoptOpenJDK, vyberte nejnovější verzi Java, stáhněte si ji a nainstalujte. Pak se vraťte k této příručce a stále se dozvíte něco o různých verzích Java.
jakou verzi Java mám použít?,
od září 2019 je Java 13 nejnovější vydanou verzí Java, přičemž novější verze následují každých 6 měsíců-Java 14 je naplánována na Březen 2020, Java 15 na Září 2020 atd. V minulosti byly cykly uvolňování Java mnohem delší, až 3-5 let!.
S tolika nová verze vyjde, existují v podstatě tyto real-svět scénáře použití:
- Odkaz projektů ve společnosti jsou často přilepená pomocí Java 8 (viz „Proč Jsou Společnosti Stále Přilepená Na Java 8?“ nížit). Budete tedy nuceni používat i Java 8.,
- některé starší projekty jsou dokonce přilepená na Java 1.5 (vydáno 2004) nebo 1.6 (vydáno 2006) — sorry, kamarádi!
- Pokud jste se ujistěte se, že používáte nejnovější Ide, frameworky a nástroje pro vytváření a spouštění greenfield projekt, můžete, bez váhání, používat Java 11 (LTS) nebo i nejnovější Java 13.
- existuje speciální pole vývoje Androidu, kde je verze Java v podstatě přilepená na Java 7, s konkrétní sadou dostupných funkcí Java 8. Nebo můžete přepnout na použití programovacího jazyka Kotlin.
proč jsou společnosti stále přilepené na Java 8?,
existuje kombinace různých důvodů, proč jsou společnosti stále přilepené s Java 8. Abychom jmenovali alespoň některé:
- Build tools (Maven, Gradle atd.) a některé knihovny zpočátku měly chyby s verzemi Java verze > 8 a potřebné aktualizace. Java 9+, některé nástroje pro sestavení vytisknou“reflexní přístup „-varování při budování projektů Java, které se prostě“ necítí připravené“, i když sestavení jsou v pořádku.
- až do Java 8 jste do značné míry používali sestavení JDK společnosti Oracle a nemuseli jste se starat o licencování., Oracle změnil režim licencí v roce 2019, i když, což způsobilo Internet zbláznit říct, „Java už není zdarma“ — a značné zmatení následovaly. To však není problém, o kterém se dozvíte v části „distribuce Java“ této příručky.
- některé společnosti mají zásady používat pouze verze LTS a spoléhat se na své dodavatele OS, aby jim poskytli tyto sestavení, což vyžaduje čas.
Chcete-li shrnout věci, máte kombinaci praktických problémů (aktualizace nástrojů, knihoven, rámců) a politických otázek.,
proč se některé verze Java nazývají 1.X?
Java verze před 9 prostě měl jiný systém pojmenování. Takže Java 8 lze také nazvat 1.8, Java 5 lze nazvat 1.5 atd. Když jste vydal java -version
příkaz s těmito verzemi, máš výstup jako tento:
jednoduše To znamená, Java 8. Při přechodu na časová vydání s Java 9 se také změnilo schéma pojmenování a verze Java nejsou předponou 1.x. Nyní číslo verze vypadá takto:
jaký je rozdíl mezi verzemi Java?, Mám se naučit konkrétní?
přicházející z jiných programovacích jazyků s hlavními zlomy mezi vydáními, jako je řekněme Python 2 až 3, možná vás zajímá, zda se totéž týká Javy.
Java je v tomto ohledu zvláštní, protože je extrémně zpětně kompatibilní. To znamená, že váš program Java 5 nebo 8 je zaručen, že bude spuštěn s virtuálním strojem Java 8-13-s několika výjimkami se prozatím nemusíte obávat.
zjevně to nefunguje opačně, řekněme, že váš program se spoléhá na funkce Java 13, které prostě nejsou k dispozici pod JVM Java 8.,
to znamená pár věcí:
- nemusíte se jen“ učit “ konkrétní verzi Java, jako je Java 12.
- spíše získáte dobrý základ ve všech jazykových funkcích až do Java 8.
- a pak se můžete z průvodce, jako je tento, dozvědět, jaké další funkce přišly v Java 9-13 a použít je, kdykoli je to možné.
jaké jsou příklady těchto nových funkcí mezi verzemi Java?
podívejte se na sekci“ Java Features 8-13 “ níže.,
ale zpravidla: starší, delší cykly uvolňování (3-5 let, až do Java 8) znamenaly spoustu nových funkcí na vydání.
šestiměsíční cyklus vydání znamená méně funkcí na vydání,takže můžete rychle dohnat jazykové funkce Java 9-13.
jaký je rozdíl mezi JRE a JDK?
až dosud jsme mluvili pouze o “ Java.“Ale co je přesně Java?
nejprve je třeba rozlišovat mezi JRE (Java Runtime Environment) a JDK (Java Development Kit).,
historicky jste si stáhli jen JRE, pokud jste měli zájem pouze o spuštění programů Java. JRE zahrnuje mimo jiné Java Virtual Machine (JVM) a nástroj příkazového řádku „java“.
Chcete-li vyvinout nové programy Java, musíte si stáhnout JDK. JDK obsahuje vše, co JRE má, stejně jako kompilátor javac
a několik dalších nástrojů, jako je javadoc
(Java generátor dokumentace) a jdb
(Java Debugger).
proč mluvím v minulém čase?,
až Java 8, Oracle, webové stránky nabízené JREs a JDKs jako samostatné soubory ke stažení — i když JDK také vždy součástí JRE v samostatné složce. S Java 9 byl tento rozdíl v podstatě pryč a vždy stahujete JDK. Struktura adresáře JDKs se také změnila, protože již nemá explicitní složku JRE.
takže i když některé distribuce (viz část „distribuce Java“) stále nabízejí samostatné stahování JRE, zdá se, že existuje trend nabízet jen JDK. Proto budeme od nynějška používat Java a JDK zaměnitelně.,
Jak nainstalovat Java nebo JDK?
ignorujte obrázky Java-Docker, .MSI obaly, nebo balíčky specifické pro platformu pro tuto chvíli. Na konci, Java je jen .zip soubor; nic víc, nic méně.
proto vše, co musíte udělat pro instalaci Java do počítače, je rozbalit jdk-{5-13}.zip soubor. Na to ani nepotřebujete administrátorská práva.,
Vaše rozbalené Java soubor bude vypadat takto:
magie stane v /bin adresáře, které pod Windows, vypadá takto:
Directory C:\dev\jdk-11\bin...12.11.2019 19:23 272.736 java.exe...12.11.2019 19:23 20.832 javac.exe...
Takže vše, co musíte udělat, je rozbalit tento soubor a vložte do /bin adresáře v proměnné PATH, takže můžete volat ‚java‘ příkaz odkudkoli.
(v případě, že vás zajímá, instalátory GUI, jako je instalátor z Oracle nebo AdoptOpenJDK, udělají rozbalení a úpravu proměnné cesty pro vás, to je o tom.,)
Chcete-li ověřit správnou instalaci Java, můžete jednoduše spustit java -version
. Pokud výstup vypadá jako ten níže, je dobré jít!
nyní zbývá jedna otázka: Kde získáte Java .zip soubor z? Což nás přivádí k tématu distribucí.
Java distribuce
existuje celá řada webů nabízejících stahování Java (read: JDK)a není jasné, „kdo nabízí co a s jakou licencí“. Tato část na to osvětlí.,
Projekt OpenJDK
Pokud jde o zdrojový kód Java (číst: zdrojový kód pro JRE / JDK), na webu projektu OpenJDK žije pouze jeden.
to je jen zdrojový kód, nicméně, není distribuovatelný build (myslet: váš .zip soubor s kompilovaným příkazem java pro váš konkrétní operační systém). Teoreticky bychom z toho zdrojového kódu mohli vytvořit sestavu, nazvat ji třeba Marcojdkem a začít ji distribuovat. Ale naše distribuce by postrádala certifikaci, abychom si mohli legálně říkat Java SE kompatibilní.,
to je důvod, proč v praxi existuje hrstka dodavatelů, kteří tyto sestavení skutečně vytvářejí, získávají certifikaci (viz TCK) a poté je distribuují.
A zatímco prodejci nemohou, řekněme, odebrat metodu z třídy String, než produkovat nové Java build, mohou přidat značky (yay!) nebo přidat nějaké další (např. CLI) nástroje, které považují za užitečné. Ale kromě toho je původní zdrojový kód stejný pro všechny distribuce Java.
OpenJDK staví (Oracle) a Oraclejdk staví
jedním z dodavatelů, kteří staví Java ze zdroje, je Oracle., To vede ke dvěma různým distribucím Java, které mohou být zpočátku velmi matoucí.
- OpenJDK staví Oracle (!). Tato sestavení jsou zdarma a neznačkové, ale Oracle neuvolní aktualizace pro starší verze, řekněme Java 13, jakmile Java 14 vyjde.
- OracleJDK, což je značková komerční stavba začínající změnou licence v roce 2019. To znamená, že může být použit ZDARMA během vývoje, ale musíte zaplatit Oracle, pokud jej používáte ve výrobě. Za tímto účelem získáte delší podporu, tj. aktualizace verzí a telefonní číslo, které můžete zavolat, pokud se váš JVM zblázní.,
Nyní, historicky (pre-Java 8), tam byly skutečným zdrojem rozdíly mezi OpenJDK staví a OracleJDK staví, kde byste mohli říci, že OracleJDK byl „lepší“. Od dnešního dne jsou však obě verze v podstatě stejné, s malými rozdíly.
pak se scvrkává na vás, kteří chtějí placenou, komerční podporu (telefonní číslo) pro nainstalovanou verzi Java.
AdoptOpenJDK
V roce 2017, skupina Java User Group členů, vývojářů a prodejců (Amazon, Microsoft, Pivotal, Red Hat a další) založili komunitu s názvem AdoptOpenJDK.,
poskytují bezplatné, pevné OpenJDK staví s delší dostupností / aktualizacemi a dokonce vám nabízejí výběr ze dvou různých virtuálních strojů Java: HotSpot a OpenJ9.
velmi doporučuji, pokud chcete nainstalovat Java.
Azul Zulu, Amazon Corretto, SAPMachine
kompletní seznam sestav OpenJDK najdete na stránkách Wikipedie OpenJDK. Mezi nimi jsou Azul Zulu, Amazon Corretto, stejně jako SapMachine, abychom jmenovali alespoň některé. Chcete-li zjednodušit, to se scvrkává na vás mají různé možnosti podpory/záruky údržby.,
ale nezapomeňte se podívat na jednotlivé webové stránky, abyste se dozvěděli o výhodách každé jednotlivé distribuce.
doporučení
Java funkce 8-13
jak je uvedeno na samém začátku této příručky: v podstatě všechny (nebuď vybíravý nyní) Java 8 jazykové funkce pracují v Javě 13. Totéž platí pro všechny ostatní verze Java mezi nimi.
Na druhé straně, to znamená, že všechny jazykové vlastnosti z Java 8 sloužit jako dobrý Java základní znalosti, a všechno ostatní (Java 9-13) je v podstatě další funkce na vrcholu se, že základní.,
zde je rychlý přehled o tom, jaké konkrétní verze mají nabídnout:
Java 8
Java 8 byla masivní verze a seznam všech funkcí najdete na webových stránkách Oracle. Zde bych rád zmínil dvě hlavní sady funkcí:
jazykové funkce: Lambdas atd.,
předtím, Než Java 8, kdykoli jsi chtěl konkretizovat, například, nový Runnable, jste měli napsat, anonymní vnitřní třídy, tak jako:
Runnable runnable = new Runnable(){ @Override public void run(){ System.out.println("Hello world !"); } };
S lambdy, stejný kód vypadá takto:
Runnable runnable = () -> System.out.println("Hello world two!");
také máte metoda odkazy, opakování popisů, výchozí metody rozhraní, a několik dalších jazykových funkcí.
kolekce & streamy
v Javě 8 máte také operace funkčního stylu pro sbírky, známé také jako Stream API., Rychlý příklad:
List<String> list = Arrays.asList("franz", "ferdinand", "fiel", "vom", "pferd");
Nyní, pre-Java 8, v podstatě jsi měl napsat pro-smyčky, aby se s tím něco dělat seznam.
S Proudy API, můžete udělat následující:
list.stream() .filter(name -> name.startsWith("f")) .map(String::toUpperCase) .sorted() .forEach(System.out::println);
Java 9
Java 9 byl také poměrně velké uvolnění, s pár doplňky:
Kolekce
Kolekce mám pár nových pomocné metody, které umožňují snadno vytvářet Seznamy, Sady a Mapy.,
List<String> list = List.of("one", "two", "three");Set<String> set = Set.of("one", "two", "three");Map<String, String> map = Map.of("foo", "one", "bar", "two");
Streams
Streams got a couple of additions, in the form of takeWhile
, dropWhile
, and iterate
methods.
Stream<String> stream = Stream.iterate("", s -> s + "s") .takeWhile(s -> s.length() < 10);
Optionals
Optionals got the sorely missed ifPresentOrElse
method.,
user.ifPresentOrElse(this::displayAccount, this::displayLogin);
Rozhraní
Rozhraní private
metody:
public interface MyInterface { private static void myPrivateMethod(){ System.out.println("Yay, I am private!"); }}
Další Funkce Jazyka
A pár dalších vylepšení, jako lepší try-with-resources příkazu nebo diamond operátor rozšíření.
JShell
Konečně, Java dostal shell, kde si můžete vyzkoušet jednoduché příkazy a získat okamžité výsledky.
% jshell| Welcome to JShell -- Version 9| For an introduction type: /help introjshell> int x = 10x ==> 10
HTTPClient
Java 9 přinesl počáteční preview verze nového HttpClient
., Do té doby byla vestavěná podpora Http Java poměrně nízká a museli jste se vrátit k používání knihoven třetích stran, jako je Apache HttpClient nebo OkHttp (což jsou skvělé knihovny, btw!).
s Java 9 má Java svůj vlastní, moderní klient-i když je to v režimu náhledu, což znamená, že se může změnit v novějších verzích Java.
project Jigsaw: Java moduly a multi-Release Jar soubory
Java 9 dostal systém Jigsaw Module, který poněkud připomíná staré dobré specifikace OSGI., Není v rozsahu této příručky jít do úplného detailu na skládačky, ale podívejte se na předchozí odkazy se dozvědět více.
Multi-Release .soubory jar umožnily mít jeden .jar soubor, který obsahuje různé třídy pro různé verze JVM. Takže váš program se může chovat jinak/mají různé třídy používané při spuštění na Java 8 vs. Java 10, například.
Java 10
došlo k několika změnám v Javě 10, jako je sběr odpadků atd., Jedinou skutečnou změnou, kterou jako vývojář pravděpodobně uvidíte, je zavedení klíčového slova var
, nazývaného také inference typu místní proměnné.
local-Variable type Inference: var-Klíčové slovo
// Pre-Java 10String myName = "Marco";// With Java 10var myName = "Marco"
cítí Javascript-y, že? Je však stále silně napsán a vztahuje se pouze na proměnné uvnitř metod (díky, dpash, za to, že to znovu ukázal).
Java 11
Java 11 byla také poněkud menší verze z pohledu vývojáře.,
Řetězce & Soubory
Řetězce a soubory mám pár nových metod (ne všechny zde uvedené):
Spustit Zdrojových Souborů
Počínaje Java 10, můžete spustit Java zdrojové soubory bez nutnosti sestavovat první. Krok k skriptování.
ubuntu@DESKTOP-168M0IF:~$ java MyScript.java
Místní-Proměnné, Typ Inference (var) pro Lambda Parametry
záhlaví říká vše:
(var firstName, var lastName) -> firstName + lastName
HttpClient
HttpClient
Java 9 v jeho závěrečné, non-preview verze.,
další dobroty
Flight Recorder, No-Op Garbage Collector, Nashorn-Javascript – engine deprecated atd.
Java 12
Java 12 dostal pár nových funkcí a clean-up, ale pouze ty, které stojí za zmínku, zde jsou Unicode 11 podporu a náhled nový přepínač vyjádření, které bude věnována následující kapitola.
Java 13
zde najdete kompletní seznam funkcí, ale v podstatě získáte Unicode 12.,1 Podpora, stejně jako dvě nové nebo vylepšené funkce náhledu (v budoucnu se mohou změnit):
Přepnout výraz (náhled)
výrazy přepínače nyní mohou vrátit hodnotu., A můžete použít lambda-styl syntaxe pro vaše výrazy, bez pádu-přes/break otázky:
Starý switch prohlášení vypadalo takhle:
switch(status) { case SUBSCRIBER: // code block break; case FREE_TRIAL: // code block break; default: // code block}
Vzhledem k tomu, že s Java 13, spínač prohlášení může vypadat takto:
Víceřádkové Řetězce (Preview)
můžete konečně udělat v Javě:
Java 14 a Později
zde Budou pokryty, jakmile jsou stále propuštěn. Podívejte se brzy!,
Závěr
nyní byste měli mít docela dobrý přehled o tom pár věcí:
- Jak nainstalovat Java, která verze se dostat, a kde to sehnat od (tip: AdoptOpenJDK).
- jaká je distribuce Java, které existují a jaké jsou rozdíly.
- jaké jsou rozdíly mezi konkrétními verzemi Java.
zpětná vazba, opravy a náhodný vstup jsou vždy vítány! Jednoduše zanechat komentář níže.
Díky za čtení!
tam je více, Kde to přišlo z
tento článek se původně objevil na www.marcobehler.,com / psaný jako součást řady průvodců o moderním programování Java. Chcete-li najít další průvodce, navštivte webové stránky nebo se přihlaste k odběru newsletteru, abyste byli informováni o nově publikovaných průvodcích: https://bit.ly/2K0Ao4F.
Stephen Colebourne napsal fantastický článek o různých dostupných distribucích Java. Díky, Stephene!
další čtení
JVM Ecosystem Survey: proč Devs Nepřepínají na Java 11
za Java 8
kdy Java 11 nahradí Java 8 jako výchozí Java?