1.1. fejezet, A Java története

A Java története a Wikipedia oldalán és az Oracle oldalán.

JDK 1.0 (1996: Oak)
1.0.2. az első stabil, Java 1-ként nevezett változat
JDK 1.1 (1997)

Fontos változások az előzőkhöz

  • AWT eseménykezelő modell kibővítése
  • Inner Class
  • JavaBeans
  • JDBC
  • RMI
  • reflection
  • JDBC
  • JIT (Just In Time) compiler on Microsoft Windows platforms
J2SE 1.2 (1998: Playground)

J2SE, J2ME megnevezések bevezetése

  • strictfp kulcsszó a megvalósítás független lebegő pontos számítások kezelésére
  • SWING api a core-ba integrálva
  • A Sun JVM első JIT compiler megjelenése
  • Java applet plug-in böngészőkhöz
  • Java IDL, CORBA támogatás
  • Collections framework (JCF), összetett adatszerkezetek és konkurencia
    kezelés
    • List, Queue, Set, Map, Iterable interfészek
    • Vector, LinkedList, ArrayList
    • LinkedHashMap, HashMap, TreeMap, SortedMap, NavigableMap
    • HashSet, LinkedHashSet, TreeSet, SortedSet
    • Deque, BlockingQueue, PriorityQueue, ArrayDeque
J2SE 1.3 (2000: Kestrel)
  • HotSpot JVM
  • RMI - CORBA tuning
  • JavaSound
  • JNDI
  • Java Platform Debugger Architecture (JPDA)
  • Synthetic proxy classes
J2SE 1.4 (2002: Merlin)
  • assert kulcsszó
  • reguláris kifejezések Perl mintára
  • kivétel kezelés bővítése (eredeti, lower-level kivétel beágyazása)
  • IPv6 támogatása
  • non-blocking IO (NIO)
  • logging API
  • image I/O API (pl.: JPEG,PNG)
  • XML parszolás, XSL transzformáció (JAXP)
  • Biztonsági és titkosítási kiterjesztések (JCE, JSSE, JAAS)
  • Java Web Start (JAWS) applet-ek helyett
  • Preferences API
J2SE 5.0 (2004: Tiger)

J2SE 5.0 megnevezések bevezetése

  • Generikusok fordítási időben biztosított tipus biztonság ( pl.: List<String> )
  • Metadata, más néven Annotation
  • Autoboxing/unboxing, alap típusok automatikus konvertálása alap típusokat csomagoló objektumokba és vissza ( pl.: int - Integer )
  • Enumerations: típus biztonság felsorolásnál ( pl.: enum Day.MONDAY, Day.TUESDAY, stb.)
  • Varargs: az utolsó paraméter lehet változó számú ( pl.: void drawtext(String... lines) )
  • Kibővített for each ciklus: minden tömb és Iterable interfészt implementáló osztályokra, mint a Collection osztályok
  • Java Memória Modell változtatások: korábban alkalmazott modell letisztultabbá vált a szálak kommunikációjánál
  • Statikus import: ( pl.: import static java.lang.Math.*; y = PI * x)
  • automatikus stub generálása RMI objektumokra
  • Swing: új sminkelhető külső (synth)
  • Concurrency segédletek a java.util.concurrent csomagban
  • Scanner osztály a különböző input streamekre és bufferekre
  • 64 bites processzorok támogatása ( pl.: Core 2 Duo és magasebb )
Java SE 6 (2006: Mustang)

Java SE 6 megnevezések bevezetése

  • Script nyelvek használata ( Mozilla JavaScript Rhino )
  • Drasztikus gyorsítása a központi platformnak és a Swing-nek
  • Web Service támogatása a JAX-WS-en keresztül
  • JDBC 4 támogatás
  • Java Compiler API (programozott fordítás)
  • Frissítés JAXB 2.0-ra, StAX parser integrálása
  • pluggable annotations
  • sok GUI hatékonyság növelő megoldás, mint pl. a SwingWorker integrációja, táblázatok sorba rendezése és szűrése, és double-buffering (megszüntette a szürke-terület effektust).
  • JVM hatékonyság növelés: a szinkronizáció és a fordítás gyorsabb és hatékonyabb lett, új algoritmusok a meglévő GC (garbage collection) algoritmusokhoz, alkalmazás indítás gyorsítása

Javítások és új funkciók 2007 májusától 2013 október közepéig

  • u4 (2008.01.14): HotSpot VM 10
  • u7 (1.6.0.7): utolsó támogatott verzió a Win98 alapú
    operációs rendszerekhez
  • u10 (2008.10.15): HotSpot VM 11
    • Java Deployment Toolkit: közzétételt segítő JavaScript funkciók applet és Java Web Start alkalmazásokhoz
    • Java Kernel
    • frissítés kezelő
    • Pack200 támogatás
    • Java Quick Starter: gyors programindítás
    • Java2D hatékonyság növelés Windows Direct3D és hardver gyorsítás
    • Nimbus Swing kinézet, synth-re alapuló sminkeléssel
    • Java Plug-in-ek új generációja: appletek külön processzben futnak, és a Web Start alkalmazások támogatása
  • u12 (2008.12.12.): 64 bites böngészőkbe 64 bites Java Plug-in-ek támogatása, Windows Server 2008 támogatása, grafikus teljesítmény növekedés, JavaFX alkalmazások
  • u13 (2009.03.24.): megváltozik az LDAP-ban tárolt Java objektumok JNDI-n keresztül történő elérése, JMX változás (createMBeanunregisterMBean)
  • u14 (2009.05.28.):
    • HotSpot VM 14, JIT fordító teljesítmény növekedés, 64 bites gépeken tömörített mutatók, G1 (Garbage First) csökkentett futást felfüggesztő szemétgyűjtő
    •  -XX:+DoEscapeAnalysis: HotSpot JIT fordítóba escape analízis a lokális objektumok tárolási helyének meghatározásához (heap helyett a stack használata)
  • u18 (2010.01.13.):
    • Hotspot VM 16
    • operációs rendszerek támogatása: Ubuntu 8.04 LTS, Win7, RHEL 5.3
    • Firefox 3.6 támogatása
    • VisualVM 1.2
    • Java DB frissítés
  • u21 (2010.07.07.): Hotspot VM 17, Customized Loading
    Progress Indicators támogatása, VisualVM 1.2.2
    • operációs rendszerek támogatása: RHEL 5.4 és 5.5, Oracle Enterprise Linux 4.8, 5.4, 5.5
    • Chrome 4 támogatása
  • u23 (2010.12.08.): Hotspot VM 19, jobbról balra író nyelvek jobb támogatása
  • u24 (2011.02.15.): Java DB frissítés
  • u25 (2011.03.21.):
    • Hotspot VM 20
    • IE-9, Firefox 4, Chrome 10 támogatás
    • hatékonyabb BigDecimal
    • Server VM, Client VM: -server és -XX:+TieredCompilation fordítási opció
    • az utolsó Windows Vista SP1-et támogató verzió
  • u27 (2011.08.16.): Firefox 5 tanusitvány
  • u33 (2012.06.12.): hatékonyabb VM configurációs file
    betöltés
Java SE 7 (2011: Dolphin)
  • JVM támogatás a dinamikus nyelvek kezeléséhez
    (invokedynamic, JSR-292), Multi Language Virtual Machine
  • 64 bites tömörített mutatók használata
    (-XX:+UseCompressedOops)
  • Coin projekt:
    • String kezelés switch elágazásokban
    • automatikus resource kezelés try..catch kezelésben
    • generikusok kezelésének egyszerűsítése (diamond operator <>)
    • egyszerűsített varargs metódusok
    • binaris szám kezelés (pl: int anInt1 = 0b10100001010001011010000101000101)
    • aláhúzások szám kifejezésekben (pl.: long creditCardNumber = 1234_5678_9012_3456L)
    • kivételeknél több kivétel osztály egyszeri kezelése
  • Concurrency segédlet (JSR166)
  • új file I/O (meta-adat és link kezelés) java.nio.file,
    java.nio.file.attribute
  • Timsort tömbök rendezése merge sort helyett
  • elliptic curve cryptography algoritmus függvénykönyvtár
    szinten
  • XRender pipe-line Java2D-hez, modern GPU-k támogatásával
  • 6u10-ben bevezetett nem támogatott grafikus fejlesztések
    hivatalossá tétele
  • új hálózati protokollok SCTP és Sockets Direct Protocol
  • Upstream frissítés XML és Unicode-hoz
Java2SE 8 (2014. 03. 18.)
  • Nashorn (Javascript)
  • Lambda függvények
  • Többszörös öröklődés az interfészeken és az alapértelmezett
    metódusokon keresztül
    default public void
    exampleDefaultMethod()
  • Unsigned Integer
  • Date and Time API
  • Statikusan csatolt JNI könyvtárak
  • @Repeatable meta-annotatáció
  • Annotation on Java Types
  • Közvetlen JavaFX JAR futtatás (javafxpackager, javafx-maven-plugin)
  • Eltávolított permanent generation (osztályok és objektumok
    tárolása kettéválasztva)
  • Windows XP-n nem támogatott a telepítő, zip fájlból
    kicsomagolva használható (update 11-től)
  • u11 (2014. 07. 15.)
    • Java Dependency Analysis Tool (jdeps)
    • JAR file attribute – Entry-Point;
    • JAXP processing limit property – maxElementDepth
Java SE 9 (2017)
  • Moduláris felépítés (Project Jigsaw)
    Skálázható platform
    - Monolitikus rendszerről modulárisra váltva kisebb számítási igényű rendszerek fejleszthetők, kevesebb memória igény, gyorsabb indulás, jobb performancia.
    - Biztonságosabb a csomagolás, mert a platformon jobban konfigurálható melyik modulból mit exportálunk, és milyen más modulokra van szükségünk (belső API-k elrejtése).
    - Könnyebben fejleszthető a platform, modulonként különálló fejlesztő csoportok, egyszerűbb verziókezeléssel
  • JShell
  • GraalVM
Java SE 10 (2018)
  • Fél évenkénti verzió kiadás bevezetése (a páratlan sorszámú a major verzió)
  • Memória kezelés hatékonyabb GC-vel
  • önmagát fordító JVM (fordítása GraalVM)