Java verziótörténet
From Wikipedia, the free encyclopedia
Remove ads
A Java nyelv számos változáson ment keresztül a JDK 1.0 kiadása óta. Számos osztály és csomag került hozzáadásra a sztenderd könyvtárakhoz. A J2SE 1.4 óta a Java nyelv evolúcióját a Java Community Process (JCP) irányítja, amely Java Specification Requests (JSR-eket) használ a Java platform-on a különböző bővítések és változások javaslatainak kidolgozásához. A nyelvet Java Language Specification (Java nyelvi specifikáció – JLS) rögzíti, a változásokat a JLS-en a JSR 901 keresztül menedzselik.
Ez a lap vagy szakasz tartalmában elavult, korszerűtlen, frissítésre szorul. Frissítsd időszerű tartalommal, munkád végeztével pedig távolítsd el ezt a sablont! |
Remove ads
JDK Alpha és Beta
1995-ben adták ki. Az Alpha és Beta Java nyilvános kiadásainak meglehetősen instabil API-jai és ABIjai voltak. A hozzá kiadott böngészőt WebRunner-nek hívták.
JDK 1.0
1996. január 23-án adták ki Oak kódneven. Ez volt az első kiadás a Sun-tól.[1][2] Az első stabil verzió a JDK 1.0.2. volt, amit Java 1-nek hívtak.[2]
JDK 1.1
1997. február 19-én adták ki. Főbb bővítések a következők voltak:[3]
J2SE 1.2
1998. december 8-án adták ki Playground (játszótér) kódnéven. Ez és az ezt követő kiadásokat egészen a J2SE 5.0-ig átnevezték visszamenőlegesen Java 2-re. Ezután "J2SE" verziónevet (Java 2 Platform, Standard Edition) használták JDK helyett, hogy megkülönböztethető legyen a J2EE (Java 2 Platform, Enterprise Edition)-től és J2ME (Java 2 Platform, Micro Edition)-től. Ezzel a nagyon jelentős Java kiadással a Java platform megháromszorozta a méretét: 1520 osztály lett 59 csomagban. Főbb bővítései a következők voltak:[4]
strictfp
kulcsszó bevezetése- a Swing grafikus API hozzáadása és integrálásása a központi osztálykönyvtárba
- Sun JVM-et először egészítették ki JIT compiler-re
- Java plug-in
- Java IDL, egy IDL implementáció a CORBA-bával való együttműködéshez
- Java Collections Keretrendszer
Remove ads
J2SE 1.3
2000. május 8-án adták ki Kestrel kódnéven.
A legfontosabb változások a következők voltak:[5][6]
- HotSpot JVM hozzáadása (a HotSpot JVM volt az első kiadás 1999 áprilisában a J2SE 1.2 JVM-hez)
- RMI-t módosították, hogy opcionális támogatást nyújtson a CORBA-val való kompatibilitáshoz
- Java Naming and Directory Interface (JNDI) hozzáadása a belső könyvtárakhoz (korábban is elérhető volt kiterjesztésként)
- Java Platform Debugger Architecture (JPDA)
- JavaSound
- Synthetic proxy osztályok
Remove ads
J2SE 1.4
2002. február 6-án adták ki Merlin kódnéven.
Ez volt az első Java platform kiadás, melyet a Java Community Process keretében fejlesztettek ki (JSR 59). Főbb változások a következők voltak:[7][8]
- Nyelvi változások
assert
kulcsszó (A JSR 41-ben specifikálták.)
- Könyvtárak továbbfejlesztése
- reguláris kifejezések – a Perl reguláris kifejezések szolgáltak modellként
- kivétel láncolás – lehetővé teszi egy kivétel számára, hogy becsomagolja az eredeti alsóbb szintű kivételt
- IPv6 támogatás
- nem blokkoló IO (NIO) (Új Input/Output) (A JSR 51-ban specifikálták.)
- naplózási API (A JSR 47-ben specifikálták.)
- image I/O API olyan formátumú képek írásához és olvasásához mint pl. JPEG és PNG
- beépített XML értelmező (parser) és XSLT feldolgozó (JAXP) (A JSR 5-ben és a JSR 63-ban specifikálták.)
- integrált biztonsági és kódolási kiterjesztések (JCE, JSSE, JAAS)
- Java Web Start beemelése (Java Web Start-ot először 2001 márciusában adták ki a J2SE 1.3-hoz) (A JSR 56-ban specifikálták.)
- Preferences API (java.util.prefs)
Az 1.4-es verzióhoz a támogatás és biztonsági frissítések egészen 2008 októberéig voltak elérhetők.[9]
Remove ads
J2SE 5.0
2004. szeptember 30-án adták ki Tiger kódnéven. Eredetileg 1.5-ös száma volt, amelyet még mindig használnak belső verziószámként.[10] Ezt a verziót a JSR 176 keretein belül fejlesztették ki.
J2SE 5.0 2008. április 8-án elérkezett a nyilvános frissítések végének periódusához, és a frissítések a továbbiakban már nem elérhetők 2009. november 3-adika óta. Az Oracle ügyfelei számára azonban frissítések továbbra is elérhetők 2014 májusáig.[11]
A Tiger számos jelentős új nyelvi szintű újdonságot hozott:[12][13]
- Generikus típusok Java-ban: fordítás idejű (statikus) típus biztosságot nyújt a collection-ökhoz és szükségtelenné tette a legtöbb típuscast-olást (típus konverzió).(Specifikálva a JSR 14-ban.)
- Metaadatok: annotációknak is hívják; lehetővé teszi a nyelvi konstrukciók (osztályok és metódusok) címkézését, melyek feldolgozhatók metaadatot kezelni képes segédprogramok segítségével. (Specifikálva a JSR 175-ben.)
- Autoboxing/unboxing (automatikus típus konverzió): Automatikus konverziók a primitív típusok (pl.
int
) és primitív csomagoló osztályok között (mint pl.Integer
). (Specifikálva a JSR 201-ben.) - Enumeration-ök: Az
enum
kulcsszó segítségével képezhető típusbiztos rendezett értéklista (pl.Day.MONDAY
,Day.TUESDAY
, stb.) Előzőleg ezt csak nem típusbiztos konstans integerekkel vagy kézzel készített osztályok segítségével (típusbiztos enum tervezési mintával) lehetett megoldani. (Specifikálva a JSR 201-ben.) - Változó számú paraméter metódusban(Varargs): A metódus legutolsó paraméterét mostantól lehet úgy deklarálni, hogy a típus neve és utána három pont (pl.
void drawtext(String... lines)
). A hívó kódban az adott típus bármilyen számosságban használható, mivel ezek egy tömbbe lesznek elhelyezve, és úgy lesznek átadva a metódusnak vagy alternatív módon a hívó kód is átadhatja az adott típus egy tömbjét. - Bővített
for each
ciklus: Afor
ciklus szintaxisát kibővítették egy speciális szintaxissal, hogy képes legyen végigmenni egy tömbnek vagy bármelyIterable
típusnak minden tagján, mint pl. amilyenek a sztenderdCollection
osztályok. (Specifikálva a JSR 201-ben.) - Kijavították az előzőleg sérült Java memóriamodell szemantikáját, amely definiálja a szálak memórián keresztüli kölcsönhatásba lépését.
- Statikus importok
A sztenderd könyvtárak is fejlődésen mentek keresztül:
- Automatikus csonk generálás az RMI az objektumokhoz.
- Swing: Új szkinezhető synth nevű look and feel.
- Új konkurencia kezelés a java.util.concurrent csomag alatt.[14]
- Scanner osztályok adat parse-oláshoz számos input stream és buffer esetén.
Java 5 volt az utolsó Java kiadás, amely hivatalosan is támogatta a Microsoft Windows 9x vonalat (Windows 95, Windows 98, Windows ME),[15] míg a Windows Vista volt a legújabb Windows verzió, amely J2SE 5-t támogatta, mielőtt a Java 5 elérte az életciklusa végét 2009 októberében.[9]
Az Apple Mac OS X 10.5 (Leopard)-ra a Java 5 van telepítve alapértelmezett Java verzióként. A Java 6-ot is lehet telepíteni és alapértelmezettként használhatónak beállítani a 64 bites (Core 2 Duo és későbbiek) processzorral ellátott gépeken.[16] A Java 6 szintén támogatott a 32 bites Mac OS X 10.6 (Snow Leopard) gépeken.
Remove ads
Java SE 6
2006. december 11-én adták ki Mustang kódnéven. Ettől a verziótól kezdve a Sun "J2SE" helyett a Java SE-t kezdte el használni és a verziószámból kihagyta a ".0"-t,[17] ám a fejlesztőknek továbbra is a belső sorszámozás szerinti verziószámmal, az 1.6.0-tal szerepeltette.[18] Ezt a verziót a JSR 270 alatt fejlesztették ki.
A fejlesztési fázisban az új kiadások kiegészítéseket és javításokat is egyaránt tartalmaztak, kibocsájtásuk nagyjából hetente történt. A béta verzió kiadása 2006 júniusában történt meg, majd 2006. december 11-ei végső verzió megjelenésével zárult a tesztelési folyamat.
Fő változások ebben a verzióban:[19][20]
- Megszüntették a régebbi Win9x-es verziók támogatását, nem hivatalosan az Java 6 Update 7 volt a Java utolsó kiadása, amely bizonyíthatóan működött ezeken a Windows verziókon.[forrás?] Hivatalosan az Update 10-zel zárult a támogatás.
- Scriptnyelvek támogatása (JSR 223): általános API a script nyelvek szoros integrációjához, és beépített Mozilla JavaScript Rhino integráció
- Drasztikus teljesítmény növekedés az alap platformon[21][22] és a Swing-ben is.
- Továbbfejlesztett webszolgáltatás támogatás a JAX-WS-n keresztül (JSR 224)
- JDBC 4.0 támogatás (JSR 221).
- Java Compiler API (JSR 199): Java programok számára a megfelelő fordító programból való kiválasztását és meghívását lehetővé tevő API.
- JAXB frissítése 2.0-ra: beleértve a StAX parser integrációját is.
- Pluggable annotatáció támogatás (JSR 269)[23]
- Sok GUI továbbfejlesztés, mint pl. SwingWorker integrációja az API-ban, tábla rendezés és szűrés, és valódi Swing dupla pufferelés (szürke területek hatás megszüntetése)
- JVM továbbfejlesztések, azaz: szinkronizáció és fordítóprogram hatékonyság optimalizációk, új algoritmusok és frissítések a létező szemétgyűjtési algoritmusokon és hatékonyság javítás alkalmazásindításkor.[24]
A Java 6 elérte a támogatott életciklusának végét 2013 februárjában, amikor is minden frissítést beleértve a biztonsági frissítéseket is terv szerint leállitanak.[25][26] Oracle kiadott még biztonsági sebezhetőségre vonatkozó frissítést 2013 márciusában.[27]
Java 6 frissítések
A Java 6 kiadása után a Sun, majd később az Oracle kiadott számos frissítést, melyek nem változtattak meg semmilyen nyilvános API-t, fokozták a végfelhasználói élményét vagy hibát javítottak ki.[28]
Remove ads
Java SE 7
A Java 7-et, amely jelentős frissítés volt, a 2011. július 7-én[108] adták ki Dolphin[109] kódnéven, és tették elérhetővé a fejlesztők számára 2011. július 28-án.[110] A fejlesztési periódust 13 mérföldkőbe szervezték és 2011. június 6-án az utolsó 13. mérföldkőt is befejezték.[111][112] Átlagban 8 build-et (általánosságban ideértve bővítéseket és hibajavítások is) adtak ki mérföldkövenként. A funkció lista az OpenJDK 7 projektben tartalmazza ezen változások nagy részét.
A következő bővítések jelentek meg a Java 7-ben:[113]
- JVM támogatás a dinamikus nyelvekhez az új
invokedynamic
bájtkód utasítással a JSR-292 alatt,[114] majd nem sokkal ezután elkészültek prototípus munkákkal a több nyelvű virtuális gépen is. - Tömörített 64-bit mutatók[115] (elérhetők a Java 6-ban is a
-XX:+UseCompressedOops
-val)[116] - Apróbb nyelvi változások (csokorba gyűjtve a Coin nevű projekt alatt):[117]
- Stringek a switch[118]
- Automatikus erőforrás menedzsment a
try
-utasításban[119] - Továbbfejlesztett type inference a generikus példányok létrehozásához, azaz rombusz operátor <>[120]
- egyszerűsített változó argumentumszámú (varargs) metódus deklaráció[121]
- Bináris egész literálok[122]
- Alulvonások megengedése a numerikus literálokban[123]
- Több kivétel típus elkapása és újbóli kivételek dobása továbbfejlesztett típus ellenőrzéssel[124]
- Párhuzamos segédosztályok a JSR 166 alatt[125]
- Új fájl I/O könyvtár a platform függetlenség bővítéséhez és támogatás a metaadatokhoz és szimbolikus linkekhez. Az új csomagok a
java.nio.file
és ajava.nio.file.attribute
alatt.[126][127] - Timsort használata a tömbök sorba rendezéséhez a merge sort helyett
- könyvtár-szintű támogatás az elliptikus görbén alapuló kriptografikus algoritmushoz
- XRender csővezeték a Java 2D-hez, amely így javít a feature specifikus kezelésen a modern GPUkon
- Új platform APIk azokhoz a grafikus funkciókhoz, melyek eredetileg a 6u10-ben voltak implementálva, mint támogatott APIk[128]
- Kibővített könyvtár szintű támogatás az új hálózati protokollokhoz, beleértve a SCTP-t és Sockets Direct Protocol-t
- Upstream frissítések az XML-hez és az Unicode-hoz
A Lambda (lambda függvények Java implementációja), Jigsaw (modulok Java implementációja), és a Coin projekt egy részét kihagyták a Java 7-ből. A Java 8 ezekkel hátralévő funkciókkal együtt fog kijönni 2014 tavaszán.[129]
Java 7 frissítések
Az Oracle negyedévenként tervezi a frissítések kiadását a Java 7-es család esetén.[130]
Remove ads
Java SE 8
Java 8-at (kódnév: Spider) 2014 márciusára várják,[182][183] és tartalmazni fog olyan funkciókat, melyeket a Java 7-be terveztek megjelentetni, de bevezetésüket később elhalasztották.
A fejlesztési build-eket[184] heti rendszerességgel publikálják, ezeknek csak az új funkciók kiértékelésénél/megismerésekor van szerepük.
Java 8 frissítések
Remove ads
Java SE 9
A JavaOne 2011-en az Oracle nyilvánosságra hozta azokat a funkciókat, melyek a remények szerint benne lesznek a 2016-ban[220] kiadandó Java 9-ben. Ezek többek közt: jobb támogatás a sok gigabájtos heap-eknek, jobb natív kód integráció és önmagát hangolni tudó JVM.[221]
Java 9 frissítések
Remove ads
Java SE 10
Egyes vélekedések szerint el fogják távolítani végleg a primitív adattípusokat és tovább haladnak a 64 bitesen címezhető tömbök felé, hogy támogatni tudják a nagy adathalmazokat.[225]
Java 10 frissítések
Java SE 11
A 2018. szeptember 25-én kiadták a JDK 11-et [231] és a verzió jelenleg nyitott a hibajavításokra. A Java 11 nagy számú új funkciót tartalmaz, mint például:
- JEP 309: dinamikus classfájl konstansok[232]
- JEP 318: epsilon: egy No-Op szemétgyüjtő[233]
- JEP 323: helyi változó szintaxis a Lambda parameterekhez[234]
- JEP 331: alacsony-túlterhelési heap profiling[235]
- JEP 321: új HTTP kliens (Standard)[236]
- JEP 332: Transport Layer Security (TLS) 1.3[237]
- JEP 328: felvételkészítés röptében[238]
- JavaFX, Java EE és CORBA modulokat eltávolították a JDK-ból.[239]
… többek között.[240]
Java 11 frissítések
Implementációk
Az OpenJDK egy szabad és nyílt forráskódú implementációja a Java Platform, Standard Edition (Java SE)-nek.
Az OpenJDK előtt számos Szabad forráskódú Java implementáció készült, számos cég és csoportosulás (pl. Apache Harmony) által. Az IBM szintén kiadott néhány JVM Java implementációt,[274] a Red Hat pedig az IcedTea projekt keretében adott ki egy build-et és járult hozzá egy integrációs projekttel az OpenJDK-hoz.
Jegyzetek
További információk
Fordítás
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads