az útmutató segítségével megtalálhatja és telepítheti a legújabb Java-t, megértheti a Java disztribúciók (AdoptOpenJdk, OpenJDK, OracleJDK stb.) közötti különbségeket.), valamint kap egy áttekintést a Java nyelvi funkciók, beleértve a Java verziók 8-13.,
akkor is tetszik: Beyond Java 8
háttérinformációk
először nézzük meg néhány gyakori, gyakorlati kérdést, hogy az embereknek van, amikor megpróbálják kiválasztani a megfelelő Java verziót a projektjükhöz.
Ha többet szeretne megtudni egy adott verzióról, LÉPJEN az AdoptOpenJDK webhelyre, válassza ki a legújabb Java verziót,töltse le, majd telepítse. Ezután térjen vissza erre az útmutatóra, és még mindig tanuljon egy-két dolgot a különböző Java verziókról.
milyen Java verziót kell használnom?,
2019 szeptemberétől a Java 13 a legújabb kiadott Java verzió, 6 havonta újabb verziókkal-A Java 14 2020 márciusára, a Java 15 2020 szeptemberére, stb. A múltban a Java kiadási ciklusok sokkal hosszabbak voltak, akár 3-5 évig!.
ezzel A sok új verziók jönnek ki, alapvetően ezek a valós használat módja:
- Öröksége projekt cégek gyakran elakadt a Java 8 (lásd a “Miért Cégek Még mindig A Java 8?”az alábbi szakasz). Így kénytelen lesz használni a Java 8-at is.,
- néhány régebbi projekt még a Java 1.5-en is elakad (megjelent 2004) vagy az 1.6-on (megjelent 2006) — sajnálom, haverok!
- Ha ügyelve arra, hogy a legújabb IDEs, keretek, épít az eszközök, valamint a kezdő greenfield projekt, akkor habozás nélkül használhatja a Java-11 (LTS), vagy akár a legújabb Java 13.
- ott van az Android fejlesztés speciális területe, ahol a Java verzió alapvetően beragadt a Java 7-hez,egy speciális Java 8 funkcióval. Vagy átválthat a Kotlin programozási nyelv használatára.
miért ragadtak a vállalatok még mindig a Java 8-on?,
különböző okok miatt a vállalatok továbbra is ragaszkodnak a Java 8-hoz. Néhány megnevezése:
- Build tools (Maven, Gradle stb.) és egyes könyvtárak kezdetben a Java > 8 verziókkal voltak hibásak, és szükség volt frissítésekre. Még ma is, például a Java 9+ segítségével, bizonyos építési eszközök kinyomtatják a”fényvisszaverő hozzáférést “-figyelmeztetések Java projektek építésekor, amelyek egyszerűen” nem érzik magukat készen”, annak ellenére, hogy az építmények rendben vannak.
- egészen a Java 8 – ig nagyjából az Oracle JDK buildjeit használtad, és nem kellett törődnöd az engedélyezéssel., Az Oracle azonban 2019 — ben megváltoztatta az engedélyezési rendszert, ami miatt az Internet megőrült, mondván: “A Java már nem ingyenes” – és tisztességes mennyiségű zavart követett. Ez azonban nem igazán probléma, amelyről az útmutató “Java disztribúciók” szakaszában olvashat.
- egyes vállalatoknak irányelveik vannak arra, hogy csak az LTS verziókat használják, és az operációs rendszer gyártóira támaszkodnak, hogy biztosítsák számukra ezeket az építményeket, ami időbe telik.
összegezve a dolgokat, van egy mix gyakorlati kérdések (korszerűsítése az eszközök, könyvtárak, keretek), valamint a politikai kérdések.,
miért vannak olyan Java verziók, amelyeket 1-nek hívnak.X?
Java verziók előtt 9 egyszerűen volt egy másik elnevezési rendszer. Tehát a Java 8-at 1.8-nak is nevezhetjük, a Java 5-et 1.5-nek stb. Amikor kiadta ajava -version
parancsot ezekkel a verziókkal, ilyen kimenetet kapott:
Ez egyszerűen Java 8-ot jelent. A Java 9-es időalapú kiadásokra való váltással az elnevezési séma is megváltozott, a Java verziók pedig nem az 1-es előtaggal vannak ellátva.x már. Most a verziószám így néz ki:
mi a különbség a Java verziók között?, Tanuljak egy konkrétat?
más programozási nyelvekről érkezik, amelyek a kiadások között jelentős törésekkel járnak, például a Python 2-3, akkor kíváncsi lehet, hogy ugyanez vonatkozik-e a Java-ra.
a Java ebben a tekintetben különleges, mivel rendkívül visszafelé kompatibilis. Ez azt jelenti, hogy a Java 5 vagy 8 program garantáltan Java 8-13 virtuális géppel fut-néhány kivételtől eltekintve most nem kell aggódnia.
nyilvánvalóan nem működik fordítva, mondjuk, hogy a program olyan Java 13 funkciókra támaszkodik, amelyek egyszerűen nem érhetők el Java 8 JVM alatt.,
Ez azt jelenti, egy pár dolgot:
- nem csak “tanulni” egy adott Java verzió, mint a Java 12.
- inkább, kapsz egy jó alapot minden nyelvi funkciók egészen Java 8.
- majd egy ilyen útmutatóból megtudhatja, hogy milyen további funkciók jöttek a Java 9-13-ban, és bármikor használhatja őket.
mik a példák ezekre az új funkciókra a Java verziók között?
nézze meg az alábbi” Java Features 8-13 ” részt.,
de mint ökölszabály: a régebbi, hosszabb kiadási ciklusok (3-5 év, egészen a Java 8-ig) sok új funkciót jelentettek kiadásonként.
a hat hónapos kiadási ciklus kevesebb funkciót jelent kiadásonként, így gyorsan felzárkózhat a Java 9-13 nyelvi funkciókhoz.
mi a különbség a JRE és a JDK között?
eddig csak a “Java” – ról beszéltünk.”De mi a Java pontosan?
először meg kell különböztetni a JRE (Java Runtime Environment) és a JDK (Java Development Kit).,
történelmileg csak egy JRE-t töltött le, ha csak a Java programok futtatása érdekli. A JRE többek között a Java virtuális Gépet (JVM) és a “java” parancssori eszközt tartalmazza.
új Java programok fejlesztéséhez le kellett töltenie egy JDK-t. A JDK mindent tartalmaz, ami a JRE-nek van, valamint a javac
fordítót, valamint néhány más eszközt, például a javadoc
(Java documentation generator) és jdb
(Java Debugger).
most miért beszélek múlt időben?,
A Java 8-ig az Oracle weboldal külön letöltésként JREs-t és JDK-t ajánlott fel-annak ellenére, hogy a JDK mindig egy JRE-t is tartalmazott egy külön mappában. A Java 9 esetében ez a megkülönböztetés gyakorlatilag megszűnt, és mindig letöltesz egy JDK-t. A jdks könyvtárszerkezete is megváltozott, mivel már nem rendelkezik explicit JRE mappával.
Tehát, annak ellenére ,hogy egyes disztribúciók (lásd a” Java disztribúciók ” részt) továbbra is külön JRE letöltést kínálnak, úgy tűnik, hogy a tendencia csak JDK-t kínál. Ezért mostantól a Java-t és a JDK-t felváltva fogjuk használni.,
hogyan telepíthetek Java-t vagy JDK-t?
figyelmen kívül hagyja a Java-Docker képeket,.msi csomagolók, vagy platform-specifikus csomagok egyelőre. A végén, Java csak egy .zip fájl; semmi több, semmi kevesebb.
ezért a Java telepítéséhez csak annyit kell tennie, hogy kicsomagolja a jdk-{5-13} – t.zip fájl. Ehhez nem is kell rendszergazdai jog.,
A kicsomagolt Java fájl így fog kinézni:
A varázslat történik a /bin könyvtárba, ami Windows alatt, így néz ki:
Directory C:\dev\jdk-11\bin...12.11.2019 19:23 272.736 java.exe...12.11.2019 19:23 20.832 javac.exe...
Úgyhogy csak annyit kell tenned, csomagold ki, hogy a fájl a /bin könyvtárat, a PATH változó, így hívják a ‘java’ parancsot, bárhonnan.
(abban az esetben, ha kíváncsi vagy, a GUI telepítők, mint például az Oracle vagy az AdoptOpenJDK, elvégzik az elérési út változójának feloldását az Ön számára, erről van szó.,)
a Java helyes telepítésének ellenőrzéséhez egyszerűen futtathatja a java -version
parancsot. Ha a kimenet úgy néz ki, mint az alábbi, akkor jó menni!
most már egy kérdés maradt: hol kapja meg a Java-t .zip fájl? Ami elvezet minket a disztribúciók témájához.
Java Distributions
számos Java (read: JDK) letöltést kínáló oldal található, és nem világos, hogy “ki mit és milyen licenceket kínál”. Ez a szakasz némi fényt derít erre.,
az OpenJDK projekt
a Java forráskód szempontjából (olvassa el: a JRE/JDK forráskódja), csak egy él az OpenJDK projekt webhelyén.
Ez csak forráskód, azonban nem terjeszthető build (gondolom: a .zip fájl az adott operációs rendszer lefordított java parancsával). Elméletileg készíthetnénk egy építményt abból a forráskódból, mondjuk MarcoJDK-nak, és elkezdhetnénk terjeszteni. De a forgalmazás nem lenne tanúsítás, hogy képes legyen jogilag nevezzük magunkat Java SE kompatibilis.,
ezért van a gyakorlatban egy maroknyi gyártó, amely ténylegesen létrehozza ezeket az építményeket ,tanúsítja őket (lásd TCK), majd terjeszti őket.
és bár a gyártók nem tudnak, mondjuk, eltávolítani egy módszert a String osztályból, mielőtt létrehoznának egy új Java buildet, hozzáadhatnak márkát (yay!) vagy adjon hozzá más (pl. CLI) segédprogramokat, amelyeket hasznosnak tartanak. De ezen kívül az eredeti forráskód megegyezik az összes Java disztribúcióval.
OpenJDK épít (Oracle) és OracleJDK épít
az egyik gyártó, aki épít Java forrás Oracle., Ez két különböző Java disztribúcióhoz vezet, amelyek először nagyon zavaróak lehetnek.
- OpenJDK épít Oracle (!). Ezek az építmények ingyenesek és márkázatlanok, de az Oracle nem fogja kiadni a régebbi verziók, például a Java 13 frissítéseit, amint a Java 14 megjelenik.
- OracleJDK, amely egy márkás, kereskedelmi építmények kezdve a licenc változás 2019. Ez azt jelenti, hogy a fejlesztés során ingyenesen használható, de az Oracle-nek fizetnie kell, ha azt a termelésben használja. Ehhez hosszabb támogatást kap, azaz frissíti a verziókat és egy telefonszámot, amelyet felhívhat, ha a JVM megőrül.,
most, történelmileg (Pre-Java 8), voltak tényleges forrás különbségek OpenJDK épít oraclejdk épít, ahol lehet mondani, hogy OracleJDK volt “jobb”. De a mai napig, mindkét változat lényegében ugyanaz, kisebb különbségekkel.
ezután lecsökken, hogy fizetett, kereskedelmi támogatást (telefonszámot) szeretne a telepített Java verzióhoz.
AdoptOpenJDK
2017 – ben a Java felhasználói csoport tagjai, fejlesztői és forgalmazói (Amazon, Microsoft, Pivotal, Red Hat, and others) egy AdoptOpenJDK nevű közösséget alapítottak.,
ingyenes, sziklaszilárd OpenJDK-építményeket biztosítanak hosszabb rendelkezésre állással / frissítésekkel, sőt két különböző Java virtuális gép közül is választhatnak: HotSpot és OpenJ9.
nagyon ajánlott, ha Java-t szeretne telepíteni.
Azul Zulu, Amazon Corretto, SAPMachine
az OpenJDK építmények teljes listáját megtalálja az OpenJDK Wikipedia oldalon. Közülük Azul Zulu, az Amazon Corretto, valamint a SapMachine, hogy néhányat említsünk. A leegyszerűsítés, ez csapódik le, hogy van különböző támogatási lehetőségek / karbantartási garanciák.,
de győződjön meg róla, hogy nézd meg az egyes weboldalak, hogy megismerjék az előnyeit minden egyes forgalmazás.
ajánlás
Java funkciók 8-13
amint azt az útmutató elején említettük: lényegében minden (ne legyen válogatós most) Java 8 nyelvi funkciók Java 13-ban működnek. Ugyanez vonatkozik az összes többi Java verzióra is.
Ez viszont azt jelenti, hogy a Java 8 összes nyelvi funkciója jó Java alapismeretként szolgál, minden más (Java 9-13) pedig nagyjából további funkciók az alapvonal tetején.,
itt van egy gyors áttekintést, hogy milyen konkrét verziók kínál:
Java 8
Java 8 volt egy hatalmas kiadás, és megtalálható egy listát az összes funkciót az Oracle honlapján. Két fő jellemző készlet van, amelyeket itt szeretnék megemlíteni:
nyelvi jellemzők: Lambdas stb.,
Mielőtt a Java 8, amikor csak akart létrehozni, például egy új Indítható, írja névtelen belső osztály, valahogy így:
Runnable runnable = new Runnable(){ @Override public void run(){ System.out.println("Hello world !"); } };
A lambdas, ugyanaz a kód így néz ki:
Runnable runnable = () -> System.out.println("Hello world two!");
Meg is van a módszer hivatkozások, ismétlődő jegyzeteket, alapértelmezett módszerek felületek, valamint néhány más nyelvi funkciók.
gyűjtemények & patakok
Java 8-ban funkcionális stílusú műveleteket is kapott gyűjteményekhez, más néven a Stream API., Egy gyors példa:
List<String> list = Arrays.asList("franz", "ferdinand", "fiel", "vom", "pferd");
most, Pre-Java 8, akkor alapvetően kellett írni a-hurkok csinálni valamit, hogy a lista.
a Patakok API, meg tudod csinálni a következőket:
list.stream() .filter(name -> name.startsWith("f")) .map(String::toUpperCase) .sorted() .forEach(System.out::println);
Java 9
Java 9 is volt egy elég nagy kiadás, egy pár kiegészítés:
Gyűjtemények
Gyűjtemények van egy pár új segítő módszerek, hogy könnyen építeni Listák, Készletek, valamint Térképek.,
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);
interfészek
interfészek private
módszerek:
public interface MyInterface { private static void myPrivateMethod(){ System.out.println("Yay, I am private!"); }}
egyéb nyelvi jellemzők
és még néhány további fejlesztés, mint például egy továbbfejlesztett try-with-resources nyilatkozat vagy a Diamond Operator extensions.
JShell
végül a Java kapott egy héjat, ahol egyszerű parancsokat kipróbálhat, és azonnali eredményeket kaphat.
% jshell| Welcome to JShell -- Version 9| For an introduction type: /help introjshell> int x = 10x ==> 10
HTTPClient
Java 9 hozta a kezdeti előnézeti változata egy új HttpClient
., Addig a Java beépített Http támogatása meglehetősen alacsony szintű volt, ezért vissza kellett térnie a harmadik féltől származó könyvtárak, például az Apache HttpClient vagy az OkHttp használatához (amelyek nagyszerű könyvtárak, btw!).
A Java 9 használatával a Java saját, modern klienst kapott-bár ez előnézeti módban van, ami azt jelenti, hogy a későbbi Java verziókban változhat.
Project Jigsaw: Java modulok és Multi-Release Jar fájlok
Java 9 kapott a Jigsaw modul rendszer, amely némileg hasonlít a jó öreg OSGI specifikáció., Ez nem a hatálya az útmutató, hogy menjen be teljes részletességgel Kirakós, de vessen egy pillantást az előző linkeket, hogy többet.
többszörös kiadás .jar fájlok lehetővé tette, hogy egy .jar fájl, amely különböző osztályokat tartalmaz a különböző JVM verziókhoz. Tehát a program másképp viselkedhet/különböző osztályokat használhat például Java 8 Vs. Java 10 futtatásakor.
Java 10
néhány változás történt a Java 10-ben, mint például a szemétgyűjtés stb., De az egyetlen valódi változás, amelyet fejlesztőként valószínűleg látni fog, a var
kulcsszó bevezetése, amelyet helyi változó típusú következtetésnek is neveznek.
helyi-változó típusú következtetés: var-kulcsszó
// Pre-Java 10String myName = "Marco";// With Java 10var myName = "Marco"
úgy érzi, Javascript-y, nem igaz? Még mindig erősen gépelt, bár, és csak a változók belső módszerek (köszönöm, dpash, rámutatva, hogy újra).
Java 11
Java 11 szintén valamivel kisebb kiadás volt, fejlesztői szempontból.,
Húrok & Fájlok
a Vonósok, a fájlok van egy pár új módszerek (nem minden itt felsorolt):
Futtatás Forrás Fájlok
Kezdve 10 Java, Java forrás fájlokat anélkül, hogy össze őket. Egy lépés a scripting felé.
ubuntu@DESKTOP-168M0IF:~$ java MyScript.java
helyi-változó típusú következtetés (var) a Lambda paraméterekhez
a fejléc mindent elmond:
(var firstName, var lastName) -> firstName + lastName
HttpClient
id=”00ad5d81ae”> Java 9-ből a végleges, nem előnézeti verzióban.,
egyéb finomságok
Flight Recorder, No-Op szemétgyűjtő,Nashorn-Javascript-motor elavult, stb.
Java 12
Java 12 kapott egy pár új funkciók és a clean-up, de az egyetlen említésre méltó itt Unicode 11 támogatás és egy előnézet az új switch kifejezés, amely látni fogja fedezi a következő részben.
Java 13
itt található a teljes szolgáltatáslista, de lényegében a Unicode 12-t kapja.,1 támogatás, valamint két új vagy továbbfejlesztett előnézeti funkció (a jövőben megváltoztatható):
Switch Expression (Preview)
Switch kifejezések most visszaadhatnak egy értéket., Használhatod a lambda-szerű szintaxis a kifejezéseket, anélkül, hogy az őszi-át/szünet kérdések:
a Régi kapcsoló nyilatkozatok nézett ki:
switch(status) { case SUBSCRIBER: // code block break; case FREE_TRIAL: // code block break; default: // code block}
Mivel a Java 13, kapcsoló nyilatkozatok néz ki:
Többsoros Húrok (Előnézet)
végre ezt a Java:
Java 14, majd Később
fedezi itt, amint egyre megjelent. Nézz vissza hamarosan!,
következtetés
mostanra már elég jó áttekintést kell kapnia néhány dologról:
- hogyan kell telepíteni a Java-t, melyik verziót kell beszerezni, és honnan kell beszerezni (tipp: AdoptOpenJDK).
- mi a Java disztribúció, melyek léteznek, és mik a különbségek.
- mik a különbségek az egyes Java verziók között.
visszajelzést, korrekciót, véletlenszerű bemenetet mindig szívesen látunk! Egyszerűen hagyjon megjegyzést alább.
Köszönjük, hogy elolvasta!
van még, ahol ez jött
Ez a cikk eredetileg megjelent www.marcobehler.,com / írt részeként egy sor útmutatók modern Java programozás. További útmutatók megtalálásához látogasson el a weboldalra, vagy iratkozzon fel a hírlevélre, hogy értesítést kapjon az újonnan közzétett útmutatókról: https://bit.ly/2K0Ao4F.
Stephen Colebourne fantasztikus cikket írt a különböző elérhető Java disztribúciókról. Kösz, Stephen!
További információk
JVM Ökoszisztéma Felmérés: Miért Fejlesztőknek nem Váltás Java 11
azon Túl Java 8
Mikor Lesz a Java 11 Cserélje ki a Java-8 az Alapértelmezett Java?