Java 7 ja Java 8

Yksi JavaOne julkistuksista oli tarkempi selvyys Java SE versioiden roadmapistä ja sisällöistä. Java 7 on tuloillaan nyt vuoden 2011 puolessavälissä, ja Java 8 julkaistaan jo vuonna 2012 – tosin loppupuolella – eli aika pikatulta!

 

Java 7 osoittautui alunperin liian kunnianhimoiseksi tavoitteiltaan ja siitä karsittiin nyt osia jotka päätyvät Java 8:n. Yksi päämuutos oli siirtää Project Jigsaw Java 8:n puolelle. Samoin LamdaJ ja Closures siirtyi vuodelle 2012.

Mitä sitten on lupa odottaa ensi vuonna Java 7 versiossa?  Tässä tuorein feature list:

  • Support for dynamically-typed languages – InvokeDynamic (JSR 292)
  • Small language enhancements – Project Coin (JSR TBD)
  • Updated class loader architecture
  • Method to close a URLClassLoader
  • Concurrency and collections updates
  • Unicode 6.0
  • Locale enhancement – Support for IETF BCP 47 and UTR 35
  • More new I/O APIs for the Java platform – NIO.2 (JSR 203)
  • TLS 1.2
  • Elliptic-curve cryptography (ECC)
  • JDBC 4.1
  • New platform APIs for 6u10 graphics features
  • Swing Nimbus look-and-feel
  • Swing JLayer component
  • Updated XML stack

Mitä tuo kaikki tarkoittaa? Ehkä kiinnostavin muutos on Project Coin – eli small change. Java 5 aikanaan ensi kertaa koski kielen perusrakenteisiin – esiteltiin Annotations ja Generics – ja monet koodaajat katsoivat silmät kierossa uutta Javaa jossa monet asiat näyttivät kovin oudoilta. Coin ei tee niin dramaattisia muutoksia – mutta esim. switch lause jossa vertaillaan merkkijonoja, ja try-catch poikkeuskäsittely jossa voi käsitellä monta poikkeusta yhdessä catch lohkossa vaativat varmasti totuttelua. Samoin type inference helpottaa generics käsittelyyn liittyvää turhaa toistoa ja näin lyhentää taas koodin määrää mitä tarvitaan. Ja moni varmaan tykkää kovasti autoclose-toiminnosta ja Closeable rajapinnasta: ei enää unohtuneita tiedoston tai tietokannan sulkemisia! 😉

Nimbus on uusi vektorigrafiikkapohjainen Swing plaf – se ei merkitse mitään jos et käytä Swingiä, mutta jos käytät se merkitsee paljonkin. Vektorigrafiikka kun on bittikarttoja skaalautuvampaa ja myös vähemmän muistisyöppöä – ja Nimbus on tietysti uutena kirjastona myös paljon kauniimpaa kuin vanha Swing – pähkinänkuoressa pyöristetympää, tyylitellympää, varjostetumpaa, vähemmän neliskanttista ja latteaa.

Ja lopuksi: InvokeDynamic a la Da Vinci Machine Project antaa entistä paremman rajapinnan dynaamisten koodiosien suoritukseen, kuten Groovy, Ruby ja JavaScript. Odotettavissa on siis parempaa suorituskykyä ja kaksisuuntaisia kutsuja. Dynaaminen scriptikoodi pystyy siis paremmin hyödyntämään äärimmilleen viritetyn virtuaalikoneen tehokkuutta. JSR223 eli scripting komponentti oli esiaskel, mutta tässä mennään paaaaljon syvemmälle. Ja siksi siis JSR292 – parempi tuki ei-staattisesti tyypitetyille kielille.

Tuolta voi ihmetellä lisää:

http://openjdk.java.net/projects/jdk7/features/

Java 8 tulee sisältämään seuraavaa:

  • Module system and modularization (JSR TBD, JSR 294)
  • Closures – Project Lambda (JSR TBD)
  • Annotations on Java types (JSR 308)
  • Language support for collections – Project Coin, part 2 (JSR TBD)

Eli vaikka lista on lyhyt, ensimmäinen osa eli JigSaw on MIELETTÖMÄN iso muutos – modulaarisuusjärjestelmä tapaan Maven/Ivy/OSGI – mutta rakennettuna javan ytimeen. Päästäänkö viimein eroon jar/classpath helvetistä? En tiedä, mutta yritys on kova. Paljon kysytty piirre on myös Closures ja LambdaJ – jotka tuovat funktionaalisten kielten voimaa olio-javaan.

En aio ennustella tulevaa Java 8:aa turhan paljoa nyt, koska vielä voi paljon muuttua matkalla joten arvailuksi menisi. Mutta Java siis pitkästä aikaa elää ja voi vahvasti, ja tulevat vuodet tuovat mielenkiintoisia lisäpiirteitä ihan kaikkeen Java kehitykseen. Ja pienet muutokset kasautuvat nopeasti…

Advertisements

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s