Oracle Certified Professional Java Programmer 7

Piipahdin tänään päivittelemässä sertifikaattia ja sehän meni liehuvin lipuin läpi. Sertifikaatin vaikeustasoa on kuitenkin selkeästi nostettu. Ensinnäkin ollakseen OCP pitää ensin olla OCA – ellei aiempaa Programmer tason serttiä löydy päivitettäväksi. Eli pitää aloittaa ketju suorittamalla ensin Oracle Certified Associate – sitten Oracle Certified Programmer. Sitten aukeavat muut mehukkaat sertit.

Läpäisytaso on asetettu 65% – se ei kuulosta pahalta. Tietty osa kysymyksistä on kuitenkin useamman vaihtoehdon kysymyksiä, testissä on kyllä kerrottu montako on oikein, tyypillisesti 2-4 oikeaa vastausta. Näissä ei arvaamalla pitkälle pötki.

Häijyjä kysymyksiä tuli tällä kertaa parista alueesta joissa piti muistaa ulkoa virallista JDK rajapintaa: JDBC 4.1, johon ehdin onneksi prepata vähän, ja NIO.2 File rajapinnat – johon olen kyllä perehtynyt, mutta josta tuli aika metkoja kysymyksiä koskien todella pedanttisia yksityiskohtia metodien parametreissa. En uskaltaudu menemään yksityiskohtiin mutta jos joku aikoo sertifikaattia suorittaa kannattaa näitä prässätä.

Perussyntaksimuutokset Java 7:ssa eivät olleet pahoja, aikanaan Java 5 versiosta sai paljon häijympi (ja samoin tulevasta Java 8 versiosta saadaan HÄIJYJÄ). Switch lausekkeet, poikkeuskäsittelyn muutokset, alaviivat ja binäärivakiot olivat fokuksessa, mutta niistä selviää terveellä järjellä kun on vähän prepannut. Jotenkin tuo API opettelu ulkoa tuntuu vähän nuijalta, mutta toisaalta jotenkin pitää se taso varmentaa, ja miksei prässättäisi sitä että jossain kohtaa on osannut keskeisimpiä rajapintoja hyvin perusmekanismien ohella.

No niin, joka tapauksessa, takaisin Java 8 pariin.

Mainokset

Java 7 hiipi ulos

No niin, Java versio 7:ää onkin jo odotettu. Tyypillinen julkaisuväli Java versioilla oli n. 1-2 vuotta, mutta Java 7 on ollut työn alla viitisen vuotta. Sen oli alunperin tarkoitus olla vielä kunnianhimoisempi päivitys, mutta muutama suurempi palanen kuten Jigsaw ja Lambda siirrettiin versioon 8 joka tulee nyt pian perässä.

JDK 7 on toinen OpenJDK:hon perustuva Java, ja sen mukana tulee suuri kasa bugikorjauksia ja uusia rajapintoja, päivityksiä virtuaalikoneeseen, roskankeruuseen, jne. Yksi mielenkiintoinen osa on Project Coin (Smallest change..), jossa on jälleen kielen perusrakenteisiin puututtu. Paljon pieniä muutoksia jotka taas kumulativisoituvat. Yhteensä muutoksia on enemmän kuin aikanaan Java 5:ssa, mutta ne eivät ole niin laajavaikutteisia kuin aikanaan Generics ja Annotations. Mark Reinholdkin totesi että kyseessä ei ole ’revolutionary’ vaan ’evolutionary’ julkaisu. Tuleva Java 8 voi sitten olla se vallankumous.

Oraclen JRockit alkaa myös hivuttautumaan HotSpot koneen rinnalle ja sitä viedään pidemmälle tulevissa JDK 7 Update versioissa. Luin jostain, että kun virtuaalikoneet on saatu fuusioitua täysin yhteen, uusia piirteitä on tullut noin 15 prosenttia.. Suurin osahan niissä on hyvinkin samaa.

Edit:

No niin, saatiinhan se esitekin ulos Tieturin kurssista: Löytyy siis osoitteesta http://www.tieturi.fi/kurssit/kurssi.html?course=83904105&category=Open%2BSource%2BJava&training=04.11.2011 kaikille niille jotka ovat kiinnostuneita syleilemään uutta alustaa 😉

 

 

Joka tapauksessa, JDK 7 on ladattavissa vaikka tänään tutusta osoitteesta http://www.oracle.com/technetwork/java/javase/downloads/index.html – tosin lienee syytä antaa varoituksen sana, joidenkin Apachen open source pakettien kanssa on todettu bugeja JDK 7:ssä, jotka varmaan korjaillaan pikaisella päivityksellä. Joka tapauksessa, uunituore JDK 7 GA kannattaa testata rauhassa toimivuuden osalta.

http://blogs.oracle.com/henrik/entry/java_7_is_ga

http://www.eweekeurope.co.uk/news/apache-developers-java-7-contains-bugs-35619

 

 

 

 

 

 

 

 

 

 

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…