Opas Java-Versiot ja Ominaisuudet

Opas Java-Versiot ja Ominaisuudet

Java 8, Java-11, Java-13 — mitä eroa?

Voit käyttää tämän oppaan löytää ja asentaa uusin Java, ymmärtää erot Java-jakaumat (AdoptOpenJdk, OpenJDK, OracleJDK, jne.), sekä saada yleiskuvan Java-kielen ominaisuuksia, kuten Java-versiot 8-13.,

pidät ehkä myös: Beyond Java 8

Taustatiedot

Ensimmäinen, katsotaanpa katsomaan joitakin yhteisiä, käytännön kysymyksiä, että ihmiset ovat, kun yrittää valita oikea Java-versio heidän hankkeensa.

Jos haluat lisätietoja tietyn version, siirry AdoptOpenJDK sivuston, valitse uusin Java-versio, lataa ja asenna se. Sitten palata tämän oppaan ja vielä oppia asia tai kaksi eri Java versiot.

mitä Java-versiota minun pitäisi käyttää?,

Kuten syyskuussa 2019, Java-13, uusin julkaissut Java-versio, ja uudemmat versiot seuraavan 6 kuukauden välein — Java-14 on suunniteltu Maaliskuuta 2020, Java 15 päivänä syyskuuta 2020, ja niin edelleen. Aiemmin Java-julkaisusyklit olivat paljon pidempiä, jopa 3-5 vuotta!.

Kanssa, että monia uusia versioita tulee ulos, on periaatteessa nämä tosielämän käyttötilanteissa:

  • Perintö hankkeita yritykset ovat usein jumissa Java 8 (katso ”Miksi Yritykset Ovat Edelleen Jumissa Java 8?”jakso alla). Siten, sinun on pakko käyttää Java 8 samoin.,
  • vanhat hankkeet ovat jopa jumissa Java 1.5 (julkaistu 2004) tai 1.6 (julkaistu 2006) — anteeksi, kaverukset!
  • Jos olet varmista käyttää uusinta IDEs, puitteet, ja rakentaa työkaluja ja alkaa uudishanke, voit epäröimättä, käytä Java-11 (LTS) tai jopa uusimmat Java-13.
  • Siellä on erikoisala Android kehitystä, jossa Java-versio on pohjimmiltaan jumissa Java 7, jossa tietty joukko Java 8: n ominaisuuksia. Tai voit siirtyä käyttämään Kotlin-ohjelmointikieltä.

Miksi Yritykset Edelleen Jumissa Java 8?,

eri syistä yhtiöt ovat edelleen jumissa Java 8: n kanssa. Muutamia mainitakseni:

  • Rakenna työkaluja (Maven, Gradle, jne.) ja joissakin kirjastoissa oli aluksi vikoja, joiden versiot olivat Java-versioita > 8 ja ne tarvitsivat päivityksiä. Vielä nykyäänkin, esim. Java-9+, tiettyjä rakentaa työkaluja, tulostaa ”heijastava access”-varoitukset kun rakennus Java hankkeita, jotka yksinkertaisesti ”tuntuu ole valmis”, vaikka rakentaa ovat kunnossa.
  • Java 8: een asti käytit melko paljon Oraclen JDK-rakennelmia, eikä lisensoinnista tarvinnut välittää., Oracle muuttunut lupajärjestelmän vuonna 2019, vaikka, joka aiheutti Internet-mennä hullu sanomalla ”Java ei ole vapaa enää” — ja melkoisesti hämmennystä seurasi. Tämä ei kuitenkaan ole varsinaisesti ongelma, josta opit tämän oppaan ”Java Distributions” – osiossa.
  • Jotkut yritykset ovat politiikan käyttää vain LTS-versioita ja luottaa heidän OS myyjät tarjota heille nämä rakentaa, joka vie aikaa.

yhteenvetona asioita, sinulla on sekoitus käytännön kysymyksiä (päivittäminen työkalut, kirjastot, puitteet) ja poliittisia kysymyksiä.,

miksi joitakin Java-versioita kutsutaan 1.X?

Java-versioissa ennen 9 oli yksinkertaisesti erilainen nimeämisjärjestelmä. Niin, Java 8 voidaan kutsua myös 1.8, Java 5 voidaan kutsua 1.5, jne. Kun olet antanut java -version komento nämä versiot, sinulla on tuotos, kuten tämä:

Tämä tarkoittaa yksinkertaisesti sitä, Java 8. Kanssa vaihtaa aika-pohjainen tiedotteet Java 9, nimeämistapaansa myös muuttunut, ja Java-versiot eivät ole etuliitteellä 1.x enää. Nyt, versionumero näyttää tältä:

Mitä Eroa On Java-Versiot?, Pitäisikö minun opetella jokin tietty?

Tulevan muita ohjelmointikieliä suuria katkenneita julkaisujen välillä, kuten Python 2, 3, saatat olla miettimättä, jos sama koskee Java.

Java on tässä suhteessa erityinen, sillä se on erittäin taaksepäin yhteensopiva. Tämä tarkoittaa, että Java 5 tai 8 ohjelma on taatusti ajaa Java 8-13 Virtual Machine — muutamia poikkeuksia lukuun ottamatta sinun ei tarvitse huolehtia nyt.

Se ei tietenkään toimi toisinpäin, että ohjelma perustuu Java-13 ominaisuuksia, jotka eivät yksinkertaisesti ole saatavilla Java 8 JVM.,

tämä tarkoittaa paria asiaa:

  • et vain ”opi” tiettyä Java-versiota, kuten Java 12.
  • Melko, saat hyvän pohjan kaikki kielen ominaisuudet, kunnes Java 8.
  • ja sitten, voit oppia, tästä oppaasta, mitä lisäominaisuuksia tuli Java 9-13 ja käyttää niitä aina kun voit.

mitkä ovat esimerkkejä näistä uusista ominaisuuksista Java-versioiden välillä?

tutustu alla olevaan ”Java Features 8-13” – osioon.,

mutta nyrkkisääntönä: vanhemmat, pidemmät release-syklit (3-5 vuotta, aina Java 8: een asti) merkitsivät julkaisua kohden paljon uusia ominaisuuksia.

puolen vuoden julkaisusykli tarkoittaa vähemmän ominaisuuksia julkaisua kohden, joten Javan 9-13 kieliominaisuuksiin voi tarttua nopeasti.

mikä on JRE: n ja JDK: n ero?

tähän asti on puhuttu vain ” Javasta.”Mutta mikä on Java tarkalleen?

Ensinnäkin, sinun täytyy erottaa JRE (Java Runtime Environment) ja JDK (Java Development Kit).,

historiallisesti latasit vain JRE: n, jos olit kiinnostunut vain Java-ohjelmien pyörittämisestä. JRE sisältää muun muassa Java-virtuaalikoneen (JVM) ja ”java” – komentorivityökalun.

uusien Java-ohjelmien kehittämiseksi piti ladata JDK. JDK sisältää JRE on, samoin kuin kääntäjä javac ja pari muita työkaluja, kuten javadoc (Java-dokumentaatio generaattori) ja jdb (Java Debuggeri).

Nyt miksi puhun menneessä aikamuodossa?,

asti Java 8, Oracle verkkosivuilla tarjotaan JREs ja JDKs erillisinä lataukset — vaikka JDK myös aina mukana JRE erilliseen kansioon. Java 9, että ero oli käytännössä poissa, ja olet aina lataamalla JDK. Myös jdks: n hakemistorakenne muuttui, eikä siinä ollut enää eksplisiittistä JRE-kansiota.

Niin, vaikka jotkut jakelut (katso ”Java-Jakeluiden” – osiossa) silti tarjota erillinen JRE lataa, siellä näyttää olevan suuntaus, joka tarjoaa vain JDK. Siksi aiomme käyttää Javaa ja JDK: ta vaihdellen tästä lähtien.,

Miten asennan Javan tai JDK: n sitten?

Ohita Java-Docker-kuvat,.msi-kääreet tai alustakohtaiset paketit tällä hetkellä. Lopulta Java on vain a .zip-tiedosto; ei muuta, ei vähempää.

siksi Javan asentaminen koneeseesi tarvitsee vain purkaa JDK-{5-13}.zip-tiedosto. Siihen ei tarvita edes ylläpitäjän oikeuksia.,

Oman purettu Java-tiedosto, joka näyttää tältä:

taika tapahtuu /bin-hakemistoon, jonka alle Windows, näyttää tältä:

Directory C:\dev\jdk-11\bin...12.11.2019 19:23 272.736 java.exe...12.11.2019 19:23 20.832 javac.exe...

Niin kaikki sinun tarvitsee vain pura tiedoston ja laittaa /bin hakemisto PATH-muuttuja, joten voit soittaa ”java” – komentoa mistä tahansa.

(jos mietit, GUI asentajat kuten Oracle tai AdoptOpenJDK tekee unzipping ja muuttamalla POLKU muuttuja sinulle, se siitä.,)

varmistaaksesi, että asennit Javan oikein, voit sitten yksinkertaisesti ajaa . Jos lähtö näyttää alla olevalta, on hyvä lähteä!

nyt on jäljellä yksi kysymys: mistä saat tuon Javan .zip-tiedosto? Siitä pääsemmekin jakelujen aiheeseen.

Java-Jaot

on Olemassa useita sivustoja tarjoaa Java (lue: JDK) suosio ja on epäselvää ”kuka tarjoaa, mitä ja millä licensing”. Tämä osio valaisee asiaa.,

OpenJDK-Projekti

kannalta Java source code (lue: lähde koodi JRE/JDK), on vain yksi elävä OpenJDK-hankkeen sivusto.

Tämä on vain lähdekoodi, ei kuitenkaan jakokelpoinen rakenne (think: your .zip-tiedosto kootulla java-komennolla tietylle käyttöjärjestelmälle). Teoriassa voisimme rakentaa siitä lähdekoodista, kutsua sitä vaikkapa Marcojdkiksi ja alkaa levittää sitä. Mutta meidän Jakelu puuttuisi sertifiointi, pystyä laillisesti kutsua itseämme Java SE yhteensopiva.,

siksi, käytännössä siellä on kourallinen myyjiä, jotka itse luoda nämä rakentaa, saada heidät sertifioitu (ks TCK), ja sitten jakaa niitä.

Ja kun myyjät ei voi sanoa, poistaa menetelmä String luokka, ennen kuin tuottaa uusia Java rakentaa, ne voivat lisätä branding (jee!) tai lisätä joitakin muita (esim.CLI) apuohjelmia, joita he pitävät hyödyllisinä. Mutta muuten alkuperäinen lähdekoodi on sama kaikille Java-jakeluille.

OpenJDK Rakentaa (Oracle) ja OracleJDK Rakentaa

Yksi toimittajat, jotka rakentaa Java-lähdekoodista on Oracle., Tämä johtaa kahteen eri Java-jakeluun, jotka voivat olla aluksi hyvin hämmentäviä.

  1. OpenJDK builds by Oracle (!). Nämä rakennelmat ovat ilmaisia ja unbranded, mutta Oracle ei julkaise päivityksiä vanhemmille versioille, sano Java 13, heti kun Java 14 tulee ulos.
  2. OracleJDK, joka on merkkituotteiden, kaupallinen rakentaa alkaen lisenssin muutos vuonna 2019. Tämä tarkoittaa sitä voidaan käyttää ilmaiseksi kehityksen aikana, mutta sinun täytyy maksaa Oracle jos käyttää sitä tuotantoon. Tätä varten saat pidempää tukea eli päivityksiä versioihin ja puhelinnumeron, johon voit soittaa, jos JVM sekoaa.,

Nyt, historiallisesti (pre-Java 8), oli todellinen lähde eroja OpenJDK rakentaa ja OracleJDK rakentaa, jos voisi sanoa, että OracleJDK oli ”parempi”. Mutta tästä päivästä lähtien molemmat versiot ovat periaatteessa samat, pienin eroin.

sen jälkeen käy niin, että haluat maksullisen, kaupallisen tuen (puhelinnumeron) asennetulle Java-versiollesi.

AdoptOpenJDK

Vuonna 2017, ryhmä Java User Group members, kehittäjät ja palveluntarjoajat (Amazon, Microsoft, Keskeinen, Red Hat, ja muut) alkoivat yhteisön nimeltä AdoptOpenJDK.,

Ne tarjoavat ilmainen, rock-solid OpenJDK rakentaa enää saatavuus/päivityksiä ja jopa tarjota sinulle valita kaksi eri Java Virtual Machines: HotSpot ja OpenJ9.

i erittäin suositeltavaa, jos etsit asentaa Java.

Azul Zulu, Amazon Corretto, SAPMachine

löydät täydellinen luettelo OpenJDK rakentaa tällä OpenJDK Wikipedia-sivusto. Heidän joukossaan on Azul Zulu, Amazon Corretto sekä muutamia mainitakseni SapMachine. Pelkistettyjen, se kuihtuu ottaa eri-tukipalvelut/huolto takaa.,

Mutta varmista tarkistaa yksittäisiä sivustoja, oppia etuja kunkin yksittäisen jakelu.

Suositus

Java Ominaisuuksia 8-13

Kuten edellä alussa tämän oppaan: Pohjimmiltaan kaikki (älä olla nirso nyt) Java 8 kielen ominaisuudet toimivat Java-13. Sama koskee kaikkia muita Java-versioita siltä väliltä.

tämä puolestaan tarkoittaa sitä, että kaikki kielen ominaisuudet Java 8 toimia hyvänä Java knowledge base, ja kaikki muu (Java 9-13) on melko paljon lisäominaisuuksia päälle, että lähtötilanteessa.,

Tässä on nopea katsaus siihen, mitä erityisiä versioita on tarjota:

Java 8

Java 8 oli massiivinen julkaisu ja voit löytää listan kaikki ominaisuudet Oracle verkkosivuilla. Tässä on kaksi pääominaisuutta, jotka haluaisin mainita:

kieliominaisuudet: Lambdas, jne.,

Ennen kuin Java 8, kun halusit instanssia, esimerkiksi, uusi Runnable, sinun piti kirjoittaa nimetön sisäinen luokka, kuten niin:

 Runnable runnable = new Runnable(){ @Override public void run(){ System.out.println("Hello world !"); } };

Kanssa lambrias, sama koodi näyttää tältä:

Runnable runnable = () -> System.out.println("Hello world two!");

myös sai menetelmä viittauksia, toistuvia merkintöjä, default menetelmiä rajapinnat, ja muutamia muita kielen ominaisuuksia.

Kokoelmat & Virrat

Java 8, sinulla on myös toiminnallinen-tyyli toiminta kokoelmia, tunnetaan myös nimellä Stream API., Nopea esimerkki:

List<String> list = Arrays.asList("franz", "ferdinand", "fiel", "vom", "pferd");

Nyt, pre-Java 8, et periaatteessa piti kirjoittaa for-silmukoita tehdä jotain tuon listan kanssa.

Kanssa Purojen API, voit tehdä seuraavaa:

list.stream() .filter(name -> name.startsWith("f")) .map(String::toUpperCase) .sorted() .forEach(System.out::println);

Java 9

Java-9 oli myös melko iso julkaisu, pari lisäykset:

Kokoelmat

Kokoelmat sai pari uutta auttaja menetelmiä helposti rakentaa Luettelot, Sarjaa, ja Karttoja.,

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);

Liitännät

Interfaces sai private menetelmiä:

public interface MyInterface { private static void myPrivateMethod(){ System.out.println("Yay, I am private!"); }}

Muut Kieli Ominaisuudet

Ja pari muita parannuksia, kuten parannettu kokeile-ja-resurssit lausunto tai timantti operaattori laajennukset.

JShell

Lopulta, Java on kuori, jossa voit kokeilla yksinkertaisia komentoja, ja saada välittömiä tuloksia.

% jshell| Welcome to JShell -- Version 9| For an introduction type: /help introjshell> int x = 10x ==> 10

HTTPClient

Java-9 toi ensimmäisen preview-version uusi HttpClient., Siihen asti, Java on sisäänrakennettu Http-tuki oli melko matalan tason, ja sinun piti turvautua käyttää kolmannen osapuolen kirjastoja, kuten Apache HttpClient-tai OkHttp (jotka ovat suuria kirjastoja, btw!).

Java 9: n kanssa Java sai oman, modernin asiakkaan — tosin tämä on esikatselutilassa, mikä tarkoittaa, että se voi muuttua myöhemmissä Java-versioissa.

Hankkeen Jigsaw: Java-Moduulit ja Multi-Release Jar-Tiedostot

Java 9 on Palapeli Moduuli Järjestelmä, joka muistuttaa vanhoja hyviä OSGI erittely., Ei ole tämän oppaan soveltamisala mennä yksityiskohtaisesti Jigsaw, mutta tutustu edelliseen linkkejä oppia lisää.

Multi-Release .jar-tiedostot mahdollistivat sellaisen .jar-tiedosto, joka sisältää eri luokkia eri JVM-versioille. Joten, ohjelma voi käyttäytyä eri tavalla/eri luokkiin käytetään, kun ajaa Java 8 vs. Java 10, esimerkiksi.

Java 10

– on ollut muutamia muutoksia Java-10, kuten roskien keräys, jne., Mutta ainoa todellinen muutos sinun kehittäjänä todennäköisesti nähdä, on käyttöönotto var avainsana, jota kutsutaan myös paikallisen muuttujan tyyppi päättely.

Paikallinen-Muuttuja, Tyyppi Päättely: var-avainsanan

// Pre-Java 10String myName = "Marco";// With Java 10var myName = "Marco"

Tuntuu Javascript-y, eikö? Se on kuitenkin edelleen vahvasti tyypitetty, ja koskee vain muuttujia menetelmien sisällä (kiitos, dpash, osoittamisesta, että jälleen).

Java 11

Java-11 oli myös hieman pienempi julkaisu, kehittäjän näkökulmasta.,

Jouset & Tiedostot

Merkkijonoja ja tiedostoja, sai pari uutta menetelmät (ei kaikki lueteltu tässä):

Suorita Lähde Tiedostot

Alkaen Java 10, voit suorittaa Java lähteestä tiedostoja ilman koota ne ensin. Askel kohti käsikirjoitusta.

ubuntu@DESKTOP-168M0IF:~$ java MyScript.java

Paikallinen-Muuttuja, Tyyppi Päättely (var) Lambda-Parametrit

otsikko kertoo kaiken:

(var firstName, var lastName) -> firstName + lastName

HttpClient

HttpClient Java 9 sen lopullinen, ei-preview-versio.,

Muut Herkut

Lento-Tallennin, Ei-Op roskienkerääjä, Nashorn-Javascript-Moottorin vanhentunut, jne.

Java 12

Java-12 on pari uusia ominaisuuksia ja puhdas-up, mutta ainoat mainitsemisen arvoista tässä on Unicode-11 tukea ja esikatsella uusi kytkin ilmaus, jossa voit nähdä käsitellään seuraavassa osiossa.

Java 13

täydellisen ominaisuuslistan löydät täältä, mutta käytännössä saat Unicode 12: n.,1 tuki, sekä kaksi uusi tai parannettu esikatselu-ominaisuudet (saattaa muuttua tulevaisuudessa):

Kytkimen Ilmaus (Esikatselu)

Kytke ilmaisuja voi nyt palauttaa arvon., Ja voit käyttää lambda-tyylinen syntaksi ilmaisusi, ilman lasku-kautta/tauko kysymyksiä:

Vanha kytkin lausuntoja näytti tältä:

switch(status) { case SUBSCRIBER: // code block break; case FREE_TRIAL: // code block break; default: // code block}

ottaa huomioon, Että Java-13, kytkin lausuntoja voi näyttää tältä:

Multiline Jouset (Preview)

Voit vihdoin tehdä tämän Java:

Java-14 ja Myöhemmin

katetaan täällä, heti kun he saavat vapautetaan. Palatkaa pian!,

Johtopäätös

nyt, sinun pitäisi olla melko hyvä katsaus pari asiaa:

  • Miten asenna Java, mikä versio saada, ja mistä sen saa (vihje: AdoptOpenJDK).
  • mikä on Jaavan jakauma, mitkä ovat olemassa, ja mitkä ovat erot.
  • mitkä ovat erot tiettyjen Java-versioiden välillä.

palaute, korjaukset ja satunnaiset syötöt ovat aina tervetulleita! Jätä kommentti alla.

Kiitos lukemisesta!

Siellä on Enemmän, Mistä Se Tuli,

Tämä artikkeli on alun perin ilmestynyt www.marcobehler.,com / kirjoitettu osana sarjaa oppaita modernin Java-ohjelmointi. Löytää lisää oppaita, käy verkkosivuilla tai tilaa uutiskirje saada ilmoituksen, äskettäin julkaistu oppaita: https://bit.ly/2K0Ao4F.

kuittaukset

Stephen Colebourne kirjoitti fantastisen artikkelin erilaisista saatavilla olevista Java-jakeluista. Kiitos, Stephen!

kirjallisuutta

JVM Ekosysteemin Tutkimus: Miksi Devs Eivät ole Siirtyminen Java-11,

Jälkeen Java 8

Kun On Java-11 Korvaa Java 8 Oletuksena Java?

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *