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.

Kuka kerää roskasi?

Jep, tämä ei ole menneen Vihreä IT- trendin artikkeli, vaan sanoilla leikittelyä jälleen kerran. Java- koodaajat tietävät mitä tarkoittaa automaattinen roskienkeruu, garbage collection. Se tarkoittaa että koodaaja ei erityisesti varaa eikä vapauta muistia vaan käyttää olioita, ja ympäröivä virtuaalikone/framework hoitaa tämän perusaskaren. Tämä taas johtaa helpompaan koodiin ja parempaan toimintavarmuuteen – noin keskiverrosti. Java-kielen ja -alustan keskeinen piirre on ollut automaattinen roskankeruu.

Monet koodaajat eivät kuitenkaan pohdi roskankeruun toimintaa sen enempää. Meidän optimointikursseillamme opetetaan sen syvempää ymmärrystä, seurantaa ja analysointia, ja myös sen perusteella millainen koodi on tehokasta ja millainen ei. Tyypillinen roskankeruualgoritmi nimittäin tekee ’stop the world’-paussin ja pysäyttää koodin aina roskia kerättäessä. Jos roskia syntyy paljon, pausseja on siis paljon ja ne ovat pidempiä. Pahimmillaan huono sovellus voi käyttää suurimman osan aikaa roskankeruussa, ja vain murto-osan koodia ajaessa.

Roskankeruuhun liittyy paljon säätöjä ja mitättömin niistä ei ole roskankeruualgoritmin valinta. Vaihtoehtoja on monia, ja hyvä algoritmi riippuu siitä mitä koodi tekee ja miten koodi toimii, mutta myös siitä millaiset fyysiset resurssit ympäristössä on käytössä. Oli osittain yllätys – osittain ei- nähdä tuore tutkimus jossa mainittiin että suurin osa ihmisistä ajelee Javaa vaativissakin ympäristöissä oletusasetuksin. Osittain johtuu siitä että ei ole tietoa paremmasta. Varmasti osittain myös siitä että ei ole tarvetta – rauta on verrattain halpaa ja resursseja piisaa useimmiten tuhlattavaksi. Eniten optimoinnista hyötyvät ne, joiden softan pitää toimia äärimmäisen niukissa olosuhteissa – tai sitten äärimmäisen runsaissa, kuten Twitterin 64-gigaiset konehirviöt.

Joka tapauksessa, Performance Zone tekemän tutkimuksen mukaan 13% on säätänyt virtuaalikonealgoritmia, 87% jättää sen oletuksille. Joka on hyvä, oletusalgoritmi on useimmiten oivallinen. Mutta kun tarjolla on mm. rinnakkaisroskankeruuta, lyhyiden paussien algoritmeja, ja uusin G1, vaihtoehtojakin on. Toki oletuksetkin vaihtuvat virtuaalikoneen version ja ympäröivän koneen luokituksen mukaan (Server/Workstation).

Mielenkiintoista on myös että uusin ja kaunein G1 on myös kiistanalaisin – tutkimuksessa ihmetelläänkin miten niin monet ovat sen jo päälle kääntäneet, vaikka se ei tuo välttämättä useimmissa tapauksissa yhtään hyötyjä suorituskykyyn vaan pikemminkin hidastaa – myös omiin kokemuksiin perustuen. Kuinka ollakaan, Performance Labin kaverit ovat kenties unohtaneet mikä on G1 mallin todellinen hyöty: Roskankeruupaussien minimointi. Se on suunniteltu ennen muuta massiivisille heap muisteille joissa perinteinen roskankeruu voi pysäyttää toiminnan järkyttävän pitkiksi ajoiksi. Joka ei ole serverilläkään hyvä asia, saati sitten itseohjautuvassa älyautossa. Pienemmilläkin heap muisteilla sillä voi pyrkiä tasoittamaan roskankeruupausseja – joka toki yleensä tekee roskankeruusta kaiken kaikkiaan hitaampaa – mutta tasaisempaa. Try it!

Tässä lähdelinkki tutkimukseen:

http://java.dzone.com/articles/what-garbage-collector-are-you

Ja jos se optimointi kiinnostaa niin tässä härski puffi oman firman koulutukseen:

http://www.tieturi.fi/kurssit/kurssi.html?course=83901618

Blogeissahan ei saa nykyisellään kauhean vaivihkaisesti mainostaa joten pitäisi varmaan suurentaa tuota fonttia ja kirjoittaa disclaimer: Kaikki mitä täällä kirjoitan saattaa johtaa addiktioon seurata blogia jatkossakin, sekä mahdolliseen ostopäätökseen itseään kehittävien koulutusten suhteen – joko meiltä tai muilta 😉

http://www.kkv.fi/Page/d45bee63-a3a7-49a1-b8c8-5d6fa02a6dba.aspx

Goodbye Glassfish

Juuri kun sinänsä erinomainen Glassfish Java EE palvelin alkoi saamaan suosiota ja jopa kiihtyvyyttä tuli uusia uutisia. Sen kaupallinen tuki lakkautetaan, ja Oracle keskittyy jatkossa myymään ja tukemaan Weblogic Application Server tuotteitaan. Muodollisesti lasikalaa toki edelleen kehitetään Java EE referenssitoteutuksena, mutta voipi arvata mm. hallintatyökalujen, monitoroinnin ja klusterituen, tietoturvapiirteiden sekä yleensä Java EE ulkopuolisen innovaation hiipuvan.

Dead_fish_on_the_beach

Tämä ei ole mitenkään suuri yllätys ja kysymysmerkiksihän jää miten puhdas tukematon open source puoli toimii Glassfishille – mutta useimpien kommentaattorien mukaan – kuten esim. Markus Eisele – ei kovinkaan hyvin:

http://java.dzone.com/articles/oh-lord-wont-you-buy-me

Harmin paikka. Glassfish on ollut yksi suosikkiservereitäni koska siinä on aina uusimmat EE piirteet ensimmäisenä, hyvät graafiset hallintanäytöt, helposti pystytettävissä ja hallittavissa, ja aivan riittävän stabiili ja skaalautuva omiin tarpeisiin. Jos tästä jotain hyvää saa irti niin veikkaisin että JBOSS/WildFly saa tästä aivan uutta buustia ja sekin on erinomainen palvelintuote, johon saa tukea tarvittaessa. (Ja Tieturillta RedHat sertifioitua koulutusta, wink wink 😉

Mitäpä muuta uutta? Kiireitä ollut koulutusten ja tulevien Java versioiden kanssa, mutta Android 4.4 KitKat on ulkona, samoin ensimmäinen sitä tukeva puhelin, Nexus 5, johon aion perehtyä juurta jaksain. Virallisten faktojen ohella uumoilen että laite petaa ensi vuonna julkaistavaa Google Glass älylasijärjestelmää. Kenties toiveajattelua, mutta itse odottelen noita laseja enemmän kuin mitään muuta gadgettiä, koska keksin niille oitis runsaasti käyttöä ja softamahdollisuuksia. Tuon ohella mukana mm. parempaa tukea auton bluetooth verkoille, infrapunakaukosäädinsoftille, parempaa vääntöä ja samalla parempaa akunkestoa monellakin saralla, parempaa soveltuvuutta myös nöyremmän pään puhelimiin, OpenGL 2:sta, tukea pilvivarastointi ja pilvitulostuspalveluille, jne.

Nexus 5

Hullun tiedemiehen labrassa on tosiaan liike- ja ajatuksen voimalla ohjausta, ja niitä on tarkoitus kehittää eteenpäin kun aikataulu antaa periksi. Mielenkiintoisinta noissa oli että ne todella toimivat jo nykyisellään. Valitettavasti LeapMotion + Android ei toimi nykyisellään, samoin kuin LeapMotion + RasPi – kiukkuista postia vain kehittäjille jotka eivät ARM prosessoritukea viitsi toimittaa. Sensijaan MindWave tukee täydellisesti Android alustan kehitystä ja laitteille onkin jo paljon sovelluksia jotka toimivat ajatuksen voimalla. Vielä kun saisi aivot toimimaan koherentimmin.

MindWave

LeapMotion

Joka tapauksessa, vaikka vuosi lähestyy loppuaan, tekemistä ja väännettävää riittää. Eli takaisin sorvaamaan.

Ja tässä ne linkit Java ja JBOSS koulutuksiin, jos on aikaa ja resursseja kehittää itseään:

http://www.tieturi.fi/java

http://www.tieturi.fi/haku.html?qc=jboss

Movember – miesten terveyden puolesta

Vaihteeksi taas ei koodaushommiin liittyvä päivitys. Minut on aina ollut helppo saada mukaan kaikkeen hulluun – ja tänä vuonna osallistun viimein jo muutamana vuonna kiinnostusta herättäneeseen Movemberiin.

http://mobro.co/artosantala

Tarkoitus on valistaa miesten terveydestä, kerätä lahjoituksia sen eteen, ja tietenkin kasvattaa viiksiä. Lahjoitusten keruu voi jäädä vähän niin ja näin, ja ainakaan täällä en valista sen enempiä, mutta kannattaa käydä tuolla sitella lukemassa asiaa aiheesta. Olen vähän jälkijunassa tässä liikkeellä, monet muut firmat ja yksilöt ovat jo veteraaneja hommassa, mutta joskus se kai on syytä aloittaa.

Asia on hyvä ja lahjoittaa toki kannattaa. Se on ihan sama kelle nimelle tai naamalle pistää parikymppiä menemään, hyvään tarkoitukseen se menee. Jos kiinnostaa tarkemmin mihin niin sivuilta löytyy siitäkin tietoa, mutta miesten terveyden edistämiseen ja painopiste esim. syöpätutkimuksella. Mutta puoli edistystä on jo tiedotus ja tietous, tässäkin.

Ai niin, ja marraskuun koulutuksiin tulevilla voi siis olla kyseenalainen kunnia todistaa hentoja viiksenhaituvia. Pahoittelen etukäteen. 😉