Maven 3

Tämä ei ole varsinaisesti uutinen, mutta Maven 3 on julkaistu. Otin sen muutama päivä sitten itse käyttöön, ja siirtymä oli yllätyksellisen kivuton. Vanhat m2 projektit menivät suoraan uuden m3:sen hoteisiin, samalla korjasin pari netbeans epäkohtaa eli buildissä tulevat motkotukset profile.xml tiedostosta jota ei enää tueta jne. Mutta vanhat pom:it siis kääntyvät mallikkaasti.

Kuulin kuitenkin että koska site plugin meni käytännössä aivan uusiksi, huonoja uutisia Maven siteja ylläpitäville.. Ja joillakuilla on ollut synkeämpiä kokemuksia päivityksen kanssa. Kuten aina, muutos voi rikkoa asioita ja tulee testata huolella.

Nyt olisi tarkoitus testailla parallel build toimintoja, eli miten saadaan puristettua vielä lisää aikaa pois buildeistä jotta niitä voi tehdä vielä tiheämmin 😉

Kuka muuten tietää mitä Maven tarkoittaa? Ilman wikipediaa siis 😉

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…

IBM ja Oracle

Olen seurannut mielenkiinnolla IBM:n suhtautumista Oraclen Java-kauppoihin, koska kyseessä on isot ja vaikutusvaltaiset talot jotka sekä tekevät yhteistyötä että kilpailevat keskenään.

Uusin signaali on osunut tutkaan: http://blogs.sun.com/theaquarium/entry/ibm_and_oracle_to_collaborate

Mielenkiintoista kyllä, näyttäisi että IBM ja Oracle tiivistävät yhteistoimintaansa ja näin virallisen Javan takana on vahvasti kaksi jättipelaajaa. Tämä on vahva ennalta ehkäisevä liike Javan haarautumisen estämiseksi, ja tulevaisuus näyttää taas hyvältä. Syvempi osallistuminen näyttäisi tarkoittavan syvempää sitoutumista.

Jäämme siis mielenkiinnolla odottelemaan Java SE 7 versiota vuonna 2011, ja Java SE 8 versiota vuonna 2012. Näistä lisää seuraavassa blogissa.

Hakemisesta

No niin, vaihteeksi artikkeli joka ei käsittele Javaa – suoranaisesti. Yritin indeksoida massiivista läjää JavaOne kalvoesityksiä, pdf:iä sun muita, ja yritin tutkia samalla olisiko Windows Search kätevä tähän. Ei kyllä ollut. Kotikoneessani olen jo kääntänyt sen pois päältä koska sen hakuindeksointi on aika tehosyöppö. En pystynyt myöskään tunnin selvittelyn aikana selvittämään miten sillä aidosti löytäisi jotain. Hakusanalla javafx se löysi indeksoidusta kansiosta yhden dokumentin – sen ainoan jonka nimessä oli javafx. Minua taas kiinnostaa nimen ohella sisällöt, ja etenkin niiden priorisointi. Eli windows search service meni disabled-tilaan omassa koneessani.

Latasin piruuttani Apachen Lucene hakumoottorin. Tiedän maineelta sen olevan todella kova hakuväline, ja siihen saa liitettyä myös Apache Tika laajennuksen, joka osaa kaivella metadataa ja tietoa eksoottisemmistakin dokumenteista. Java koodaajan kannalta tämä oli erittäin helppokäyttöinen ja täysin ohjelmoitavissa, eli pistin koodit jemmaan myöhempää tutkailua varten, mutta jatkoin vielä etsintää.

Onneksi muistin Google Desktop hakukoneen. Loistava indeksoiva hakukone joka osaa kaiken mitä Google web haku, mutta lokaalisti omalla koneella. Toki Pravda kertoo että CIA rahoittaa Googlea – joten näin ollen kaikki koneesi dokumentit voivat olla isoveljen ihasteltavissa. Mutta mikäpä ei olisi nykypäivänä. Ja hakukone on kaikesta huolimatta aivan loistava. Nopea, tarkka, intuitiivinen. Haku JavaFX paljastaa 693 tiedostoa, jo osittaisen indeksin perusteella, ja mikä parasta, esikatselu ja priorisointi pelaa.

Nyt kun jotain löytyy koneelta ehkäpä saan aikaiseksi taas tehdä lisää tutkimusta ja blogiartikkeleita. 😉