Javina vremenska izdanja

1. Uvod

U ovom ćemo članku razgovarati o novim vremenskim izdanjima Jave i utjecaju na sve vrste programera.

Promjene u rasporedu izdanja uključuju ažuriranje razina isporuke značajki i podrške za verzije Jave. Sve u svemu, ove se promjene znatno razlikuju od Jave koju Oracle podržava od 2010. godine.

2. Zašto šestomjesečna izdanja?

Za one od nas naviknute na povijesno usporeni ritam Jave, ovo je prilično značajan odmak. Zašto tako dramatična promjena?

Izvorno je Java glavna izdanja definirala oko uvođenja velikih značajki. To je imalo tendenciju stvaranja kašnjenja, poput onih koje smo svi doživjeli s Javom 8 i 9. Također je usporilo jezične inovacije dok su se razvijali drugi jezici sa strožim povratnim ciklusima.

Jednostavno rečeno, kraća razdoblja izdanja dovode do manjih, upravljanijih koraka naprijed. A manje značajke lakše je usvojiti.

Takav se obrazac dobro uklapa u trenutnim uvjetima i omogućava razvoju JDK da radi u agilnim metodologijama sličnim zajednici koju podržava. Također, čini Javu konkurentnijom za vrijeme izvođenja poput NodeJS-a i Pythona.

Naravno, sporiji tempo ima i svojih prednosti, pa tako i šestomjesečni ciklus izdavanja igra ulogu u većem okviru dugoročne podrške, što ćemo pogledati u odjeljku 4.

3. Promjena broja verzije

Mehanički aspekt ove promjene nova je shema s brojevima verzija.

3.1. Shema niza verzije-JEP 223

Svima nam je poznat stari, kodificiran u JEP 223. Ova je shema učinila brojeve verzija dodatnim i prenijela dodatne informacije.

 Stvarni hipotetički tip izdanja long short ------------ ------------------------ Sigurnost 2013/06 1.7.0_25- b15 7u25 Minor 2013/09 1.7.0_40-b43 7u40 Zaštita 2013/10 1.7.0_45-b18 7u45 Zaštita 2014/01 1.7.0_51-b13 7u51 Manja 2014/05 1.7.0_60-b19 7u60

Ako trčimo java -verzija na JVM-u za verziju 8 ili stariju, vidjet ćemo nešto poput:

> java -verzija java verzija "1.6.0_27" Java (TM) 2 Runtime Environment, standardno izdanje (gradnja 1.6.0_27-b07) Java HotSpot (TM) klijent VM (gradnja 1.6.0_27-b13, mješoviti način, dijeljenje)

U ovom bismo slučaju mogli pretpostaviti da je to za Java 6, što je točno, i 27. ažuriranje, što je pogrešno. Shema numeriranja nije tako intuitivna kako se čini.

Manja izdanja bila su višestruka od 10, a sigurnosna su ispunila sve ostalo. Tipično bismo vidjeli kratki niz dodan našim lokalnim instalacijama, kao što je JDK 1,8u174. Sljedeće izdanje može biti JDK 1.8u180, što bi bilo malo izdanje s novim popravcima.

3.2. Nova verzija-niz shema

Nova shema niza verzija će "preoblikovati brojeve verzija da ne kodiraju kompatibilnost i značaj, već protok vremena, u smislu ciklusa izdanja,”Prema Marku Reinholdu iz JEP-a.

Pogledajmo neke:

9.0.4 11.0.2 10.0.1

Na brzinu se čini da je ovo semantičko oblikovanje verzija; međutim, to nije slučaj.

Sa semantičkim verzijama tipična je struktura $ GLAVNO. $ MALO. $ PATCH, ali nova struktura Java verzije je:

$ FEATURE. $ INTERIM. $ UPDATE. $ PATCH

$ FUNKCIJA je ono što bismo mogli smatrati glavnom verzijom, ali će se povećavati svakih šest mjeseci bez obzira na jamstva kompatibilnosti. I $ PATCH je za izdanja za održavanje. Ali, ovdje prestaju sličnosti.

Prvi, $ INTERIM je rezervirano mjesto, koje je Oracle rezervirao za buduće potrebe. Zasad će uvijek biti nula.

I drugo, $ UPDATE temelje se na vremenu $ FEATURE, ažuriranje mjesečno nakon najnovijeg izdanja značajke.

I na kraju, prateće nule su skraćene.

Ovo znači to 11 je broj izdanja za Javu 11, objavljen u rujnu 2018, 11.0.1 je njegovo prvo mjesečno izdanje u listopadu i 11.0.1.3 bilo bi hipotetičko treće izdanje zakrpe iz listopadske verzije.

4. Višestruka distribucija verzija

Dalje, pogledajmo kako odabrati pravu verziju.

4.1. Stabilnost

Jednostavno rečeno, Java sada ima brzi kanal, svakih šest mjeseci, i spori, svake tri godine.Svako izdanje treće godine naziva se LTS izdanjem.

Na brzom kanalu jezik izdaje značajke u inkubaciji. Ove se jezične značajke stabiliziraju u izdanju LTS-a.

Dakle, za tvrtke koje mogu prihvatiti nestabilnost u zamjenu za korištenje novih značajki, mogu koristiti brzi kanal. Za poduzeća koja cijene stabilnost i mogu pričekati nadogradnju, mogu se nadograditi pri svakom LTS izdanju.

Eksperimentiranje s verzijama JDK omogućuje programerima da pronađu najbolje prilagođene.

4.2. Podrška

Tu je, naravno, i stvar podrške. Sad kad je podrška Java 8 zašla, što ćemo učiniti?

I kao što smo ranije razgovarali, odgovor dolazi u LTS verziji, Java 11 je najnovije LTS izdanje, a 17 sljedeće. Ažuriranja će biti dostupna i podržana od strane dobavljača kao što su Oracle i Azul.

Ako možemo vjerovati podršci zajednice, tada su Redhat, IBM i drugi izjavili da podržavaju primjenu ispravki programskih pogrešaka za OpenJDK. Također, projekt AdoptOpenJDK pruža unaprijed izgrađene binarne datoteke za OpenJDK.

4.3. Licenciranje

Jedno područje zabune kod nekih je razlika između OpenJDK i Oracle JDK.

Zapravo, oni su gotovo identični, razlikujući se samo po tome što su popravljeni bugovi i sigurnosne zakrpe, prema Brianu Goetzu.

OpenJDK djeluje kao izvor većine izvedenih JDK-ova i ostaje besplatan. Počevši od Jave 11, Oracle će naplaćivati ​​komercijalne naknade za licencu za Oracle JDK s dodatnom podrškom i uključenim uslugama.

4.4. Fragmentacija

Češćim izdanjima fragmentacija može postati problem. Hipotetski bi svi mogli raditi na različitim verzijama Jave s različitim značajkama čak i više nego sada.

Naravno, kontejnerizacija bi mogla pomoći u rješavanju ovoga. Od Dockera i CoreOS-a do OpenShifta Red Hat-a, kontejnerizacija pruža potrebnu izolaciju i više ne prisiljava jedno instalacijsko mjesto za Javu da se koristi na poslužitelju.

5. Zaključak

U zaključku možemo očekivati ​​puno više od Java tima u Oracleu s redovnim izdanjem Jave svakih šest mjeseci. Kao programer Java, uzbudljiva je mogućnost novih jezičnih značajki svakih šest mjeseci.

Imajmo na umu neke implikacije dok odlučujemo koji je naš kanal za nadogradnju ako nam trebaju podrška i licenciranje te kako se nositi s fragmentacijom.


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