JavaOne 2016 häämöttää

Viikko vielä aikaa JavaOne seminaariin – viikon päästä paikallista aikaa sunnuntaina olen paikan päällä San Franciscossa, pää pyörällä jetlagista ja sessioista, absorboimassa kaiken tiedon ja vaikutelmat mitä saatavilla on. Pitäisi olla mielenkiintoinen viikko tulossa.

Yli neljästäsadasta sessiosta on jotakuinkin mahdotonta valita edes suurin osa mikä kiinnostaa. Itse priorisoin Java 9 asioita, Docker ja Microservices asioita, ja sitten hiukan Java EE 8 puolta myös. Voisin löydä vetoa että sitä valaistaan muutenkin keynoteissa. Ohjelman ulkopuolella on myös muutama kiinnostava yhteisötapaaminen ja keskustelu luvassa, ja tietenkin yritän bongata mahdollisimman paljon suomalaisia Javastajia.

 

 

Nyt olisi tarkoitus bloggailla paikan päältä päivittäin jotain pientä, vaikutelmia ja highlighteja. Blogaus tapahtuu tällä kertaa englanniksi, Solitan dev-blogin puolella, eli sitä kannattaa pitää silmällä. Sitä kannattaa muutenkin pitää toki silmällä – raudankovaa settiä tulossa usealta muultakin kirjoittajalta taas lähiaikoina:

http://dev.solita.fi/

 

Java One 2015 käynnissä – tynnyritiukkaa Javaa 20 vuoden ajalta

Jokavuotinen Java-kehittäjien ykköstapahtuma pärähti juuri käyntiin San Franciscon suunnilla. Tänä vuonna en ole itse paikan päällä mukana, mutta seuraan mielenkiinnolla uutisia. Ennalta voi arvata jo standardipuolella pääfokuksena olevan tuleva Java 9, Java EE 8, sekä Jigsaw. Mutta mielenkiintoisinta on se, mitä ei voi ennalta arvata. Kyseessä on kuitenkin vuoden ykkösseminaari kaikille maailman Java-kehittäjille – ja heitähän riittää. Hyvä huomata että seuraavat mietinnät ovat ihan puhtaasti vaikutelmia omasta vinkkelistä ja pöhinästä mitä seminaarin ympärillä on tänne asti aistittavissa.

Java täyttää 20 vuotta – ja tämä JavaOne on yhdeksästoista mitä on järjestetty sitten vuoden 1995 kun tämä uusi tuntematon ohjelmointikieli tunki markkinoille ja Appletit olivat se killer app. Viskimitalla tämä 20-vuotias laajalle levinnyt ja maailmaa muuttanut ohjelmointikieli on nyt ’cask strength’ 😉

Hauskaa on se, miten Javan avoimuus puree tässä vähän itseään jalkaan. Open source projekteissa on vaikeata jemmata tai piilotella uusia piirteitä ja julkistuksia – joten niistä puhutaan jo ennen tapahtumaa. Siinä mielessä Java 9 /Jigsaw tavarat ovat aika ilmeisiä ja vähän hype-inflaatiotakin kokeneita.

Kokemuksesta tiedän, että painopistettä on myös teknologioilla jotka itsestä tuntuvat jo muinaisilta – kuten Java 8 ja Java EE 7. Niitä on tullut itse hyödynnettyä tuottavassa softatehtailussa jo vuosien ajan – kun taas monet muut tekevät niihin vasta siirtymää. Isojen valmistajien sovelluspalvelimissa eritoten ei ole aina mahdollistakaan saada tuoreinta versiota, saati sitten päivitellä sitä. Itse taas kun pyörin Spring Boot+Glassfish+JBOSS ympyröissä enimmäkseen, voi nautiskella aika aikaisinkin uusien versioiden eduista. Mutta tuolla seminaarissa siis monessa paikkaa vielä käsitellään vasta siirtymää näihin, mikä on hyvä. Kaikki ajallaan, ja aihe on kiinnostava, monelle myös uusi.

Tuolta löytyy ihan mielenkiintoista dzone tutkimustietoa mm. Java EE 7 käyttöönotoista, samoin kuin esim. Spring Frameworkin osalta: https://blogs.oracle.com/theaquarium/entry/developers_affirm_strong_support_for

Eipä silti, en itsekään ole tuotantoympäristöön tuikkailemassa Java 9:ää. Mutta omaan tyyliin on aina kuulunut perehtyä tulevaan mahdollisimman ajoissa. Yksi Spring Boot alustan kiva piire on, että sinne voi ottaa helpommin yksittäisten rajapintojen ja kirjastojen uusimpia versioita, kunhan vain pystyy elämään potentiaalisten konfliktitilanteiden kanssa. 🙂

Seminaarissa on aina kosolti piiloteemoja, eli jotain yksityiskohtia siitä mitä Javalla tehdään. Näyttää siltä että micro/nano/picoservicet ovat yksi päivän kuumia aiheita. Eikä ihme. Lupaavaa tavaraa, joka monella taholla on vielä lastenkengissään, ja vielä useammassa paikkaa täysin mahdoton ajatus. Adam Bien on aina ollut ajan hermolla, ja piti täälläkin esityksen ”Building Nanoservices with Java EE and Java 8” joka veti jo ennakkoon salin täyteen.

Oracle julkaisi oman Java SE pilvipalvelunsa, joka on myös microservice-yhteensopiva: https://cloud.oracle.com/javase. Siellä voi ajella esim. Tomcat tai Spring Boot sovelluksia modernin kaavan mukaan – ilman raskaita full Java EE stack-sovelluspalvelimia (tai no voihan sellaisenkin varmaan tuonne rakentaa jos ehdottomasti haluaa 😉

Kannattaa jatkossakin pitää silmällä Project Valhallaa – hautomoa radikaalimmille Java kielen/virtuaalikoneen tason muutoksille. Se ei ole varsinaisesti mikään uusi juttu mutta muodostanee pohjan Java 9, 10 ja 11 versioille: http://openjdk.java.net/projects/valhalla/. Hyvä kuitenkin muistaa että hautomossa on ideoita joista osa kypsyy, mutta osa putoaa kylmästi pois.

IoT on yksi piiloteemoja, mikä ei ole suuri yllätys. Javan juurethan ovat syvällä tässä: Network IS the computer. Varmastikin yksi Java 9 modulaarisuuden vaikuttimia on juuri mikrolaitteiden älykkyys, kyky ajaa Javaa muuallakin kuin työasemissa, palvelimissa tai vaikka puhelimissa.

Mutta siinä omia ensivaikutelmia täältä etäältä mitattuna. Tuolta voi kurkata avaus-keynotet, ja show on vasta käynnistymässä…

https://www.oracle.com/javaone/on-demand/index.html#javaonekeynotes

JavaOne 2014 käynnissä

Jep, JavaOne 2014 on taas käynnissä San Franciscossa. En ole tänä vuonna itse paikan päällä, mutta aika on merkattuna kalenteriin ja seuraan mielenkiinnolla etänä.

Missä mennään tällä hetkellä on Java 8 SE käyttöönotto Lambdoineen kaikkineen, ja ME 8 on myös julkaistu, ja EE 8 työn alla seuraavaksi. Olen blogaillut aiemmin jo Javan seuraavista askelista, Java SE 9 tulee ehkä viimein näyttämään mitä Project Jigsaw – Javan modulaarisuusjärjestelmä tarkoittaa. Se ei ole lopulta erityisen seksikäs aihe, mutta se on tärkeä. Javasta on vuosien saatossa tullut aikamoinen bloat, turvoke 😉 Ajatus modulaarisemmasta Javasta on hyvä skaalatessa pienempään päin, ja Mavenin suosio näyttää että moduulien avulla skaalaus ylöspäin on myös tärkeää. Jos viimein saadaan Javaan tukea myös moduulien versioiden huomioimiseen ihan ydintasolla, paketista tulee aika kova. Brian Goetz valitettavasti komennettiin alas lavalta kesken Java 10 mallailun 😉

Jigsaw projektissa on hyvä huomata kaksi vaihetta. Vaihe 1 on purkaa Javan hurja ristiinviittaus-spaghetti pakettien välillä ja saada Javan parikymmentämegaisesta ytimestä aidosti modulaarisempi. Tätähän aloitettiin jo joskus Java 6u10 aikoihin nimellä kernel. Toinen askel on sitten alkaa käyttämään tätä moduulijärjestelmää omien ohjelmistojen kehitykseen yhtälailla, Mavenin tapaan. Tarkoituksena ei näillä näkymin ole kuitenkaan korvata Maveniä repository-puolella, lähinnä moduulien riippuvuuksien julistuksessa. Riippuvuudethan sitten voivat olla paikallisia tai verkon yli noudettavia.

Vaikka on mukava tarkkailla mitä tulevaisuus tuo mukanaan, Java 9 on vielä aika kaukaista. Tämä vuosi 2014 on edelleen Java version 8 ramp-up aikaa: Lambdoissa, rajapintojen oletusmetodeissa, ja kokoelmakirjastojen uusissa stream-piirteissä on sulateltavaa runsaasti ja harva niitä vielä arjessa käyttää. Sertifiointi Java 8:lle on tätä kirjoittaessa vasta beta-tasossa, ja sekin mielenkiintoisella tavalla uusittu.

Tuolla tech keynote joka on klassisesti ollut kiinnostava avaus koko tapahtumalle:

http://medianetwork.oracle.com/video/player/3811045975001

Goetz saa kyytiä kohdassa 34:27 alkaen 😉

Codenvy ja koodausta pilvessä

JavaOne seminaarissa yksi mieleen jääneistä asioista oli Codenvy pilvipalvelu, jossa poiketen monesta muusta tarjolla olevasta, malli ei ole serveri pilvessä, vaan malli on kehitysympäristö pilvessä. Kehitysympäristö joka kytkeytyy tarpeen mukaan erilaisiin alustoihin testausta varten, joiden kautta voi saada mm. Android emulaattoritestausta pilvipalveluna – tai ihan tavallista serveripään kamaa.

IDE pilvessä herätti itselle mielenkiinnon koska se tarkoittaa että taas kerran voi varata kapasiteettia tarpeen mukaan, ja ympäristöjä on helppo monistaa, ne toimivat aina samalla tavalla toisin kuin IDE omassa kannettavassa tai työkoneessa. Ja niitä voi käyttää tabletilla (itse käytän bluetooth näppistä koodatessani).

Olen pystyttänyt muutaman työtilan Codenvyyn, ja tässä on factory jonka kautta niiden pitäisi aueta. Peruskäyttö pilvessä on maksutonta, mutta tuttuun tapaan ruokahalun kasvaessa tulevat maksutkin peliin. Tässä on esimerkki factorystä Spring työtilaan:

Linkki Codenvy Spring-työtilaan

Itse saatan kokeilla jakaa jatkossa koodinpätkiä tätä kautta – saa enemmän interaktiivisuutta aikaan. Osan asioita voi tehdä kirjautumatta, osan voi tehdä luomalla maksuttomat tunnukset kuten itsellä on, ja osa piirteitä aukeaa kaupallisen tilin myötä.

codenvy

Pikkasen kutkuttaisi tutkia mahdollisuuksia myös koulutuskäytössä ympäristönä. Alkaa olla vanhentunutta itse ylläpitää koneita ja ympäristöjä, koodatahan voisi vaikka ipadeillä.. Tai millä ikinä koneella haluaakaan.

Harmi ettei sinne (tietääkseni) saa vielä Java 8 tai Java EE 7 ympäristöjä. Mutta Springilläkin saa monenmoista ja Maven näyttää olevan peruskauraa.

JavaOne seminaarissa oli tosiaan monenmoista pilvipalvelua, pitänee perehtyä myös testauksen palveluihin jatkossa, mutta Codenvyn tutkiminenkin on vielä itseltä kesken. Pidemmän päälle tietenkin kiinnostaa vakaus ja lähdekoodin versionhallinta.

Esineiden Internet

JavaOne 2013 seminaarin yllättävä teema IoT – Internet of Things jäi jylläämään päähän seminaarin jälkeen – eniten ehkä siksi että vaikka olen aina ennustellut monipuolisempien päätelaitteiden tulemista, en ymmärtänyt että sitä ei tarvitse enää odotella – se on jo täällä.

2013-09-23 09.40.24

Mutta näin teema avasi silmät siihen miten IoT on jo läsnä, olemassa, ja sitä käytetään isojenkin yritysten toimesta isoissa asioissa. Sen puitteissa on myös kunnon vanhan ajan innovaatiota, sitä paljon kuulutettua sykettä, ja nykyään on hauskoja aloittelijapaketteja joilla pääsee vauhtiin kokeilemaan ideoitaan. Tässä on vanhaa kunnon propellihattu-menoa. Ja kaiken keskelle Java EE 7 serveri kaikkine hienouksineen. 😉

Itsellenihän jäi seminaarista käteen yksi Raspberry Pi mikrotietokone. Olen sillä hieman jo leikkinyt, mutta ajanpuutteen vuoksi en ole ehtinyt mitään kovin ihmeellistä tehdä. Kuitenkin, tuohon 30$ laitteeseen olen asennellut langattoman verkon ja säätänyt sen toimimaan headless moodissa eli ilman näyttöä, näppistä tai hiirtä, asennellut siihen Java 7 u 40 SE version, ja ajellut PI4J kirjaston avulla ohjelmia jotka käskyttävät myös sitä mielenkiintoista GPIO porttia johon voi kytkeä kaikenlaisia vimpaimia. Ledivalot vilkkuvat jo iloisesti Javan käskemänä. Tilasin jenkeistä Adafruitin servonohjaus-piirisarjan (vielä kun ehtii kolvata) ja muutaman servomoottorin sen puolen testailuja varten.

Raspberry PI GPIO väylä on sen parasta antia

Originaali ajatukseni on ollut että nämä Internetin esineet ovat huokeita ympäristöään aistivia sensoripaketteja – jotka lähettävät aistimansa prosessoitavaksi keskuskoneelle. Osoittautui että ajatus oli varsin vaatimaton. Laitteet toimivat myös toiseen suuntaan, aistimisen ohella osaavat myös vaikuttaa ympäristöönsä. Koska tämä puoli on itselle uudempi, sinnehän pitää sukeltaa. 😉 Kehitysympäristönä Netbeans ja Maven.

Muutakin kiintoisaa osuu silmiin. Eilen verkkokauppa.com julkaisi tarinaa  etäläsnä-olosta myymälässä liikkuvalla robotilla. Selkeää propellihattuhommaa, ja kiintoisaa. IT viikon päivän aihe on tänään: Robottiautot tulevat, lait puuttuvat. VTT:n suunnalta on tullut julkaisua otsikolla: Esineiden ja asioiden Internet- seuraava teollinen murros.

Remote presence robot

Älykkäät serveriin ja toisiinsa kytketyt tabletteja tai edes älykelloja monimuotoisemmat vimpaimet tulevat ja ovat jo täällä. Tulevaisuuden keittiö tarjoaa ruokareseptejä ja apua kokkaukseen. Tulevaisuuden kotisairaala tarkkailee terveystietojasi kotosalla tai toimistossa ja osaa kiinnittää huomion muutoksiin ja poikkeuksiin. Tulevaisuuden auto osaa pysäköidä itsensä ilman että kuski on edes sisässä – tai navigoida ja ajaa itsenäisesti kohteeseensa. Sanoinko tulevaisuuden? Tulevaisuus on jo täällä, kaikki tämä toimii jo nyt. Ne pitää vain pakata 10x pienempään nättiin muovikoteloon ja lyödä hintalappu päälle.

 

(Mutta huoh, se tietoturva!)

Ja tuossa muutama IoT linkki näistä aiheista mistä puhuin, jos joku haluaa seurata polkuja tai vain sivistää itseään uuteen suuntaan 😉

http://www.youtube.com/watch?v=Holq_Oz6T3Q

http://www.itviikko.fi/uutiset/2013/10/14/verkkokauppacom-testaa-robottivierailuja-kaupassa/201314252/7

http://www.itviikko.fi/teknologia/2013/10/15/robottiautot-tulevat-lait-puuttuvat-emme-aio-olla-jarruna/201314258/7

http://www.vtt.fi/files/news/2013/smart_lightning/Esineiden_ja_asioiden_internet_Ailisto.pdf

http://www.tietoviikko.fi/kaikki_uutiset/esineiden+internet+voi+mullistaa+ruuanlaiton/a933023

http://www.cooking-hacks.com/documentation/tutorials/ehealth-biometric-sensor-platform-arduino-raspberry-pi-medical

JavaOne 2013 loppuraportti – executive summary (RasPI, IoT, Lambdas)

Jälleen oli työntäyteinen viikko San Franciscossa – yllättävänä bonuksena aurinkokin pilkisteli hieman. Konferenssi oli Javaa työkseen käyttäville suunnattu – paikalla oli Java kehittäjiä/koodaajia runsain mitoin, mutta samoin myös testaajia, projektinvetäjiä, konsultteja, ylläpitäjiä, ja jonkun verran myös business-puolen ihmisiä. Aurinkoa tuli nähtyä vaikka erityisen lämmintä ei ollutkaan, pääosin kuitenkin aika kului pimeissä konferenssihuoneissa. Yli 20 000 osallistijaa – yli  400 esitystä viikon ajalle jaettuna – valintoja oli tehtävä. Sykettä ja suoranaista innostusta oli taas ilmassa. Wired raportoi Javan renessanssista – tai uudesta tulemisesta. Twitter toteaa miten Java on heille ainoa mahdollinen alusta (Hylättyään Rubyn aikoja sitten Javan hyväksi).

2013-09-22 22.14.05

Ja tähän se yhteenvedon yhteenveto: Uudet versiot Java SE 8 ja Java EE 7 ovat tärkeitä ja merkittäviä päivityksiä. Java alustana elää ja voi vahvasti. Se on siirtynyt entistäkin enemmän avoimen lähdekoodin maailmaan. Jo pitkään hypetetty pilvi on saapunut, se on jo täällä. Se tarjoaa uusia mahdollisuuksia ja Java on nihiin valmis. Nykypäivän ja tulevaisuuden älykkäät päätelaitteet mukaanlukien mobiililaitteet, mutta myös autot ja älykodit kytketään serveripäähän, tyypillisesti HTML5+JavaScript tekniikoin – mutta tilanteen mukaan millä vain. Vuoden 2014 trendejä ovat em ohella Lambdat ja Websocketit, sekä HTML5 ja Javascript. Niitä voivat käyttää jo nyt Glassfish palvelimien käyttäjät (Kuten Tieturi), mutta ensi vuonna myös muilla palvelimilla homma hoituu. Ja aina voi vuokrata pilven päältä viipaleen tilaa itselleen. Lambdat ovat Java-kielen tasolla huomattavasti suurempi muutos kuin esim. Generics aikoinaan.

Yksi piiloteema on myös alustan yhdenmukaistuminen: Java ME 8 + Java SE 8 yhdistyminen lähemmäs toisiaan, jatkuu versiossa 9 toivon mukaan Project Jigsawn kera.  Jatkossa on tarkoitus synkronoida myös SE ja EE julkaisuja enemmän samaan tahtiin. Erittäin mielenkiintoinen huomio taas siitä mitä ei ole: Yhden yhtä Java ME demoa puhelimessa en nähnyt, eli alusta on karkaamassa jo kansoitetusta puhelin ja tablet alustasta (niitä hoidetaan HTML5+Javascript mallilla tai sitten vain natiivikoodauksella ja RESTful web serviceilä) – kohden todellisia sulautettuja järjestelmiä: Kulunhallintaa, kapasiteetin hallintaa, käytön hallintaa, kunnon hallintaa.

Mitä uutta Javasta?

Varsinaiset uutuudet olivat tietysti Javan uudet ja tulevat versiot. Tärkein niistä oli Java EE 7 palvelinstandardi, joka julkaistiin jo viime kesänä ja alkaa nyt valumaan pikkuhiljaa Java-serveriympäristöihin. Toinen tärkeä uutuus on ensi vuonna alkupuolella julkaistava Java SE 8, joka pistää käytännössä kaiken Javan uusiksi – hyvällä tavalla. Vanha Java-koodi tulee toimimaan, kuten aina ennenkin, edelleen ilman muutoksia. Mutta kaikki tulevat rajapinnat tulevat rakentumaan niin vahvasti Java 8 Lambda expression malleihin – ja olemassaoleviakin on jo Java 8 osalta päivitety rajusti – että koodaajilla on edessään suuri osaamisen päivitys. Väittäisin että suurempi kuin Java versiossa 5 aikanaan.

2013-09-25 11.59.55

Rivien välissä oli myös muuta tarinaa trendeistä luettavissa. Näytteilleasettajien puolella oli hurjasti pilvipalveluita tarjolla niille jotka haluavat ja uskaltavat ulkoistaa infransa vuokrattavaksi. Pilvipohjaista kehitysympäristöä, testausympäristöä, entistä helpompaa pilvipohjaista ajoympäristöä sovelluksille, jne. Pilvi on tullut ja on jo osa elämää ja rutiinia. Yhtenä haasteena paikan päällä koodasin CloudFoundry pilveen Spring Tool Suitella tehdyn Spring web-sovelluksen jossa integroin JavaOne tweettejä twitteristä – helppoa kuin heinänteko. Codenvy tarjosi kehitysympäristöä pilveen – jossa voi vuokrata kapasiteetin. Sauce Labs tarjosi testausta pilvessä, web ja mobiilisovelluksille, mahdollisuus testata automatisoidusti yli 150 selain/käyttöjärjestelmäkombinaatiolla.  New Relic tarjoaa edelleenkin ulkoistettua serverin monitorointia pilvessä.

Internet of Things – robottien maihinnousu

Itselleni yllättävä painotus oli Internet of Things – IOT ihan kaikkialla. Konferenssissa esiteltiin Raspberry Pi- tuttavallisemmin RasPi – pohjaisia robotteja, tabletteja, kotiautomaatiota, klustereita, autojen toiminnan etälukua langattomasti, Raspberry Pi esiintyi niin monesti esityksissä että oli pakko ostaa tuliaisiksi itsellekin sellainen – maksaahan yksikkö vain 30 dollaria ja sillä voi sentään ajaa Linuxia ja Javaa! 😉 Tosin omana mielipiteenä on, että mielenkiintoinen sulautettujen yksiköiden suunta on käytetyt matkapuhelimet – pari kolme generaatiota vanha Android on äärimmäisen hyvin ohjelmoitavissa ja niitä saa tyyliin ilmaiseksi kun jaksaa vain kärrätä pois, etenkin käytettynä. Tässäpä olisi business idea: Rakenna klusteroitu supertietokone käytetyistä Android laitteista ja myy sieltä pilvikapasiteettia käyttäjille. Tai tee niistä kodintekniikan keskuksia.

Java embedded-haasteessa joku rakensi sydänmonitorin jossa oli mukana Java, RasPI, sekä Google Glass 😉

Shakinpeluurobotti

Tuotteistettunakin löytyy jo E-Health alusta, joka rakentuu RasPI tai Arduino alustojen päälle, ja mittaa mm. pulssia, hapen määrää veressä, hengitystä, ruumiinlämpöä, EKG:tä, verensokeria, hikoilua, verenpainetta, potilaan asentoa, ja lihaksiston kuntoa – ja lähettää tiedot reaaliajassa analysoitavaksi.

Piiloviesti tämän alla valkeni vasta muutaman esityksen katsottuani: yhteistä IoT esityksille oli vahva Java EE 7 serveri pinnan alla, jossa on tila ja logiikka. Java EE 7 tarjoaa entistäkin helpomman tavan rakennella sovelluksen sydänlogiikka – ja niitä voi viskata pilveen ellei halua omaa serveriä ostaa. Toinen mielenkiintoinen teema oli EE 7 uusi websocket mallin käyttö: Se muuttaa ohjelmoinnin siitä että asiakkaat hakevat aktiivisesti sisältöä sellaiseksi että lukuisat erilaiset asiakasohjelmat vastaanottavat tapahtumia ja sanomia kun serverillä tapahtuu jotain. Näin pystyvät esim. ipad, laptop, ja robotti keskustelemaan sulavasti keskenään. Ideana on että IoT on (mikro- ja muiden) laitteiden pilvi jotka tuottavat sekä Big Dataa että Fast Dataa. Keskellä olevan Java EE 7 serverin rooli on yhdistää, prosessoida ja suodattaa datamääriä. Kyseessä on eräänlainen väylä-ajattelu, vähän eri näkökulmasta.

Hazelcast Lego-Pi cluster

IoT on myös nykyisellään puhdasta villiä länttä. Innovointi on vahvaa, ja se tarkoittaa että tietoturvaa ei yleensä ole juuri ollenkaan. Jo nyt on kertomuksia miten hakkerit ovat murtautuneet auton viihdejärjestelmän kautta sisään ja onnistuneet ohjaamaan pyöriä – tai miten hotellin valonohjaus on otettu haltuun tökkäämällä pistorasiaan oma kontrollimoduuli – tai miten Android puhelimella on hakkeroitu lentokoneen järjestelmiä. Tietoturva on osa-alue joka nousee aina vain tärkeämmäksi jatkossa, koska IoT laitteiden tietoturvahaavoittuvuuksissa voi olla seurauksena loukkaantumisia tai jopa hengen menetyksiä – toisin kuin ennen vanhaan jos joku virus päätti pistää koneen levyasemat tasaiseksi.

Ihmisiä valuu luentosaliin

Eurotech demonstroi myös IoT ajattelua toteuttamalla JavaOne kävijämäärien laskureita luentosaleihin ja auloihin. Uutta oli se että ne ovat langattomia laskureita, kytkettynä Oraclen pilveen ja antavat reaaliaikatietoa siitä miten paljon missäkin on ihmisiä. Näitä on toteutettu mm. wc-tilojen puhdistusaikataulutukseen, bussien kapasiteetinohjaukseen, taksijonojen optimointiin, jne.

Entä akronyymit? Mikä on kuumaa ja mikä kylmää?

Tässä vielä teknisempää trendilistaa. Mielestäni nousussa ovat:

Java EE 7, etenkin EJB 3.2 ja Websocket sekä CDI ihan kaikkialla.

– Netbeans – jopa Gosling kyykytti Eclipseä ja kehui netbeansiä. Se on mainettaan paljon parempi kapistus ja 7.4 versiosta alkaen myös HTML5 + JavaScript ovat saaneet ainutlaatuisen hyvän tuen. Tukee tottakai kaikkea mitä Java EE 7 voi antaa.

Glassfish. No, nopea, kevyt, maksuton serveri. On se kova. Ei niin ettei myös JBOSS olisi. Ei pidä unohtaa myöskään TomEE palvelinta tai Jettyä. Yhä enemmän tehdään joka tapauksessa open sourcella.

HTML5, JavaScript – mahdollistavat sen että varsinaista serveripään web sovelluskehystä ei aina tarvita. Tässä saa olla hieman tarkkana tietoturvan kanssa mutta valmiita kirjastoratkaisuja löytyy kuten Vaadin, Project Avatar, ja mikä hyvänsä javascript kirjasto.

– GPU kiihdytys, eli grafiikkapiirien käyttäminen laskemiseen. Se on jo ennestään kova juttu tietoturvamaailmasta, mutta nyt myös tietokanta ja sovelluspalvelinmaailmassa hyödynnetään – case IBM ja Oracle.

– Tietoturva. No joo, sen pitäisi aina olla nousussa. Lisätään monimuotoisemmat ympäristöt ja EU:sta päin tulevat lainsäädännölliset paineet niin ehkä tähänkin aletaan budjetoimaan enemmän.

Laskussa ovat:

– JavaServer Faces JSF – murheellista sanoa, mutta vaikka JSF on standardi se ei ole ainoa vaihtoehto käyttöliittymiin. Se on edelleen aivan mainio kohtuukokoisille yrityssovelluksille missä projektin kustannustehokkuus on kaiken a ja o ja pitää saada nopeasti hyvää jälkeä aikaan. Mutta IoT maailmassa vaihtoehdot ovat tärkeitä. Niitä voi olla vaikkapa juuri open sourcattu Project Avatar, joka sisältää mm. Node.js tekniikasta päivitetyn JVM version.

Todettakoon kuitenkin että JSF 2.2 on myös aika hieno, sieltä löytyy mm. HTML5 leiskapohjamalli – ei ole siis pakko käyttää jsf tagejä. Sieltä löytyy JSF Flow malli jolla voi määritellä miten sivuilla liikutaan. Sieltä löytyy entistä enemmän mahdollisuuksia tilattomuuteen jos niin haluaa.

Kaupalliset serverit ja kehitysvälineet. Tästä voi olla montaa mieltä – mutta jos katsoo meidänkin asiakaskuntaamme niin yhä harvemmalla on satojentuhansien lisenssillä varustettua serverisoftaa tai tuhansien eurojen lisenssillä varustettua kehitysympäristöä Javan tekemiseen. Toki rahalla saa – sekä Oracle että IBM julkistivat mahtavia parannuksia serverituotteisiinsa joissa teemana on että kytkintä kääntämällä saa lisää vääntöä, tai operaatio voidaan tehostaa 48 kertaa nopeammaksi.

Seuraavien asioiden status ei mielestäni ole nousussa tai laskussa, niitä käytetään kun ne sopivat: JavaFX, RESTful web services, Spring Framework (jos seminaarin luennoitsijoilta kysytään, se on kuitenkin kirjastoraskasta legacymoskaa josta pitäisi pääästä eroon ja siirtyä uuteen kauniiseen Java EE 7 aikaan 😉

Miten päivitetään taidot vuoden 2014 tasoon?

Eli meidän asiakkaillemme koulutusterveisiä: Kannattaa tarkistaa että koodaajilla on modernit Java versiot hallussa – tällä hetkellä Javan uudet piirteet versiosta 5.0 versioon 7.0 – ja pian myös 8.0. Kannattaa myös tarkistaa että Java EE 7 taso ja paletti on hallussa – EJB, CDI ja JPA niistä tärkeimpinä. Ehdottoman tärkeää on tarkistaa että suunnittelijat tietävät missä mennään – Java EE 7 ja Spring Frameworkin uusimpiin versioihin tutustuminen ei ole huono idea.

Jos kaipaa parempia tuotteita sovelluksen seurantaan, niitä olisi tarjolla maailmalla, eikä edes maksa paljoa. Javan ei tarvitse olla musta laatikko. Samoin jos pilvi kiinnostaa, niin ei ole mitään syytä miksi sinne ei voisi mennä vaikka heti. Vaihtoehdot kuten Jelastic, Google App Engine, CloudFoundry, Oracle Public Cloud – ovat valmiina Java EE sovelluksille samantien. Voi myös miettiä onko sovelluskehitysympäristö tai testausympäristö pilvessä jotain mikä voisi kiinnostaa – itseäni kiinnostaa, koska skaalautuvuus ja käyttöönoton vaivattomuus on tällaisessa omaa luokkaansa. Ja voi koodata vaikka Nexus 7 tabletilla seminaariluentoja katsellessaan.. :p

Niin, vuosi 2014 tulee nopeammin kuin voi arvatakaan, osaamisen päivittämistä on jo korkea aika suunnitella. Edelleenkin koulutuksissa käy ilmi että kaikki koodaajaresurssit eivät ole täysin tuttuja Java 5 uusien piirteiden kanssa – ja nyt puhutaan kuitenkin Java versioista 7 ja 8, ja uudet piirteet ovat kaikkialla rajapinnoissa käytössä. Edelleen kuulee myyttejä jotka perustuvat vanhaan J2EE maailmaan: monimutkaisuus ja suorituskyky sekä ORM tekniikoiden uskottavuus. Ei kannata tehdä olettamuksia ellei ole toteuttanut projektia Java EE 7:llä  -se on hauskaa, helppoa ja varsin uskottavaa.

Vanhoilla teknologioilla projektien tekeminen on kuin lähtisi ajelemaan maanteille T-mallin fordilla: Voihan sitä huvikseen tehdä ellei ole erityistä kiirettä.

Täältä niitä koulutuksia löytyy jos tarvetta ilmenee:

http://www.tieturi.fi/java

Ja tuossa Wired artikkeli samasta seminaarista:

http://www.wired.com/wiredenterprise/2013/09/the-second-coming-of-java/all/

JavaOne 2013 – Torstai

Oracle järjesti seminaarin kunniaksi taas kerran iltatapahtuman Treasure Islandissa. Lavalla oli Maroon 5 ja Black Keys, ja juhlistettiin samalla Oraclen tiimin voittoa Americas Cup-purjehduskisassa. Kun muutama kymmentä tuhatta ihmistä pakkautuu pieneen tilaan saa varautua jonottamaan ihan kaikkialle. Jouduin itse irtautumaan myös inhottavan ajoissa koska torstainakin oli ohjelmaa heti aamusta.

Oracle Appreciation Event, Treasure Island

Pistetäänpä vielä sananen Project Avatarista. Se on niin tuore juttu että kyse ei ole yhteisön standardointityöstä tai Java-tyylisistä akronyymirajapinnoista vaan ihan innovointi-open source alustasta. Selkeästi haetaan tällä näkemystä siitä mitä pitäisi olla Single page app malli Javassa. Sen voi standardoida kun se on valmis. Nyt se on vain yksi monista lisäkirjastoista joita Javan päälle saa.

Project Avatar julkistettiin jo 2011 JavaOne konferenssissa, mutta paljon sen enempää siitä ei ole kuulunut ennen kuin tällä viikolla, kun se avattiin avoimen lähdekoodin projektiksi. Se rakentuu vahvasti Java EE 7 piirteiden varaan (kuten Websocket) – joten aiempia EE versioita käyttämään joutuvien ei kannata Avatarista vielä haaveilla. Idea on vähän kuin GWT:ssä – eli Java-koodista generoitua javascriptiä. Lisäksi projektissa on yhteinen malli server ja client pään tekemiseen.

Community Keynote oli kuten arvata saattaa enemmän tuote-esittelyä ja parteripuheenvuoroja. Homma muuttui kiintoisammaksi kun lavalle asteli Aditya Gupta, Arun Guptan 10-vuotias poika – joka demosi Minecraft-koodausta Eclipsellä ja pisti sikoja lentämään ja räjähtelemään. Tämä liittyi laajempaan aiheeseen tulevien sukupolvien kouluttamisesta. Jos 10-vuotiaskin oppii koodaamaan Javaa, kääntämään lähdekoodit bytecodesta, ja tulemaan toimeen Eclipsen kanssa, homma ei voi olla kovin vaikeaa :p Mutta toden puhuakseni itse törmäsin muutama vuosi taaksepäin problematiikkaan miten 15-vuotias saadaan oppimaan Javaa – asiakas pisti poikansa kurssille saamaan etulyöntiasemaa yliopistoon mennessä, ja kävi ilmi että perinteiset business esimerkit kuten asiakasrekisteri tai pankki eivät oikein väräytä. Hoksasin ottaa mukaan jotain visuaalista, siirryttiin väreihin, muotoihin, spriteihin, säikeisiin, synkronointiin, ja johan alkoi homma luistamaan. Lapsia koulutettaessa visuaalisuus on hyvästä ja tärkeintä on löytää motivaatio – kaikki muu seuraa lähes itsestään sen perässä. Hetki – samahan pätee aikuisiinkin 😉

James Gosling tuli lavalle esittelemään omia projektejaan Liquid Robotics yrityksessä. He valmistavat meressä liikkuvia autonomisia tutkimuslaitteita, Glidereita, joita voi ohjata ja käskyttää etäältä – mutta joissa on myös Java-logiikkaa ohjaamassa, esim. estämässä törmäyksiä ja hoitamassa navigoinnin tulkkausta liikkuvassa vedessä. Robotin autonominen törmäyksen esto-ohjema on itse asiassa niin pätevä, että kerran kun venemiehistö oli yrittänyt poimia robottia kyytiin pitkään tuloksetta, he huomasivat sen johtuvan siitä että törmäyksenesto oli jäänyt vahingossa päälle – ja Goslingilla oli hauskaa 😉

Demojumalat eivät olleet suosiollisia, verkkoyhteyksien kanssa oli ongelmaa, mutta Gliderista saatiin mereltä live videokuvaa, ja sitä käskytettiin niin scriptillä webistä kuin graafisemmilla ohjelmilla. JavaFX clientin suorituskyky oli huimaava, zoomatessa sisään ja ulos ei ollut havaittavissa mitään viiveitä. Aiemmin NASA:n edustajat kävivät myös lavalla esittelemässä aiemmin mainitsemaani satelliittien hallinta ja visualisointi-ohjelmistoa joka on niinikään JavaFX pohjainen.

Muuten oli taas aikaa katsella muistiinpanoja jo käydyistä asioista. Vaikka Android puheevuoroja ei juuri ollutkaan, jotain mielenkiintoista jäi haaviin. Esitys jossa puhuttiin Mobile Google Web Toolkitistä, eli GWT jolla kehitetään suoraan mobiiliin siirtyviä Cross-platform sovelluksia. Sotketaan soppaan vielä Phonegap, tarjoamaan rajapinnat puhelimen palveluihin (geolokaatio, kamera, kiihtyvyysanturi, kompassi,yhteystiedot ja puhelinluettelo,levyjärjestelmä,nfc), ja tässä olisi jälleen uusi HTML5+JavaScript mobiililaite-kehitysympäristö.. https://code.google.com/p/mgwt/ – ja tällä yhdistelmällä siis päräyttää sovellukset niin iPadiin, iPhoneen, kuin Androidiinkin.

Juuri ennen lähtöä kentälle ehdin vielä osallistua kuulemaan ajatuksia siitä mitä Java EE 8 tuo tullessaan. selkeästi vielä aikaista ennustella tarkemmin, mutta fokuksena näyttäisi olevan standardointi ja helponnukset, ei uuden innovointi. Aikanaan hehkutetut pilvipiirteet jäävät vielä toistaiseksikin vähälle; Javahan on jo pilveen valmis.

Väsyttava reissu, nyt lennän loppuun asti paluumatkan, ja vetäydyn kammiooni mietiskelemään hetkeksi, sitten on loppuraportin aika.