J2SE 1.5 Tiger

Érdemes néha beletekinteni a JSR-ek közé, hiszen néha nagyobb meglepetéseket rejthet. Gondolom már sokan várjátok a J2SE 1.5 változatát, kódnevén “Tiger” (a J2SE 1.4.1 kódneve “Hopper”, a J2SE 1.4.2 kódneve “Mantis”), melynek újdonságairól eddig csak netes beszélgetésekből (pl. Joshua Bloch-val), interjúkból lehetett értesülni. Érdemes megnézni a 175-ös számú Specification Request-et, mely a nyelvi módosításokat tartalmazza, a 201-es számú request-et, mely metadata facility-t vezetne be nyelvi szinten a Java-ba, a 14-es requestet, mely a generikus típusokat vezetné be, és a 133-as requestet, mely a Memory Model-t és Thread Spcification-t módisítaná.

Az új verzió fejlesztésekor főleg négy területet tartanak szem előtt: a fejlesztés kényelme, monitorozás és managelhetőség, skálázhatóság és teljesítmény, valamint XML és kliens oldali Web szolgáltatások támogatása.

A 201-es kiterjesztené a Java nyelvet enumeration típussal, autoboxing-gal, továbbfejlesztett ciklusokkal és statikus importtal. A linkelt dokumentumok részletesen leírják az új nyelvi elemek működését, szintaxisát. Az enum típus hasonlít a C és Pascal nyelvekben használatoshoz, de jelentős többlet lehetőséget is nyújtanak. Használatukkal elérhetünk fordítási idejű biztonságot, sebességnövekedést az int típusok konstansok használatához képest, namespace-t minden enumhoz (konstans nevek minősíthetőek), könnyebb olvashatóságot (nem a konstans érték jelenik meg, hanem már a név). Használhatók kollekciókban, mezők és metódusok adhatók hozzá, switch kifejezésben is használható. Az enum deklaráció egy speciális osztály deklaráció, mely önleíró tagokkal rendelkezik, melyek neve enum konstansok.

A boxing tulajdonképpen automatikus típuskonverziót jelent a primitív típusok, és az ezeket burkoló, hozzájuk tartozó osztályok között. A kiterjesztett ciklus definíció egy egyszerűbb szintaxist ad a keszünkbe iterátoron való végiglépkedéshez. A statikus import megengedi statikus tagok (változók és metódusok) importálását, így elhagyható ezek minősítése.

A metadata tulajdonképpen olyan spaciális adat, mely mezőkhöz, metódusokhoz és osztályokhoz kapcsolódik. Ilyen speciális adatok kellenek már JavaBeans esetén is (setter, getter metódusok), de általában a fejlesztő és deployment tool-ok is használnak ilyeneket. Cél egy olyan nyelvi elem kifejlesztése, melyekkel ezek az addícionális információk standard módon megadhatók (pl. @meta JavaDoc megjegyzéssel, vagy meta kulcsszóval), deployment vagy futási időben lekérdezhetők, illetve hozzájuk namespace rendelhető az azonos nevű attribútumok összekeverésének megelőzésére.

Az egyik legizgalmasabb mégis a generikusok bevezetése, mely már sok (C++-ban jártas) programozónak hiányzott. A generikusok tulajdonképpen lehetővé teszik a paraméterezhető poliformizmust.

A monitorozással és managelhetőséggel kapcsolatban nem fognak meglepődni azok, akik a JMX-et már használták a J2EE alkalmazásokban, hiszen már a J2SE környezetben is lehetséges lesz a telepített alkalmazások épségének vizsgálata (kevés mamória, hibakezelők és a stack trace API).

Bekerül az XML 1.1, SAX 2.0 és DOM Level 3 szabványok támogatása is, viszont a többi XML-lel és webszolgáltatásokkal kapcsolatos API-kat ezután is a Web services pack-ben kell keresni. Emellett új opciók a sebesség növelésére és az indulás gyorsítására, mind kliens, minds szerver oldalon, megújult Look&Feel-ek és skin-ezhetőség, Unicode 3.1 támogatás, továbbfejlesztett asynchronous IO, minden, mi szem-szájnak ingere.

Benedek Balázs, a 24 órás programozói verseny főszervezője volt a vendége az Origó Társalgójának. Az elektronikus elődöntő most szombaton!