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

Mainokset

jenv ja virtuaalikoneiden ihanuus

Olen ihastunut.

Työssäni tulee käyteltyä Javan eri versioita vieläkin, koska vaikka maailma alkaa olla Java8-valmis, vieläkin tulee vastaan ympäristöjä jotka eivät toimi kuin vanhemmilla versioilla. Toisaalta uutta on aina kiva kokeilla. Java 9 tekee tuloaan ensi vuonna, ja siitä on jo esiversiota tarjolla.

Ikuinen ongelma on ollut useamman virtuaalikoneen, saati sitten JDK version hallinnoiminen koneessa – tai edes sen pääasiallisimman valitseminen oikein jos useampi JDK on asennettuna. Homman salaisuus on alkanut JAVA_HOME ja PATH ympäristömuuttujien hyvästä hallinnasta, mutta asiaa sotkevat myös erinäiset rekisteriasetukset ja/tai symboliset linkit. Kysymys kuuluu: kun kirjoitat komentoriville

java -version

javac -version

… niin mikä sieltä vastaa? Ja onko se mitä haluat? Vai vastaako mikään?

Windows maailmasta huonoja uutisia: Windowsin rekisteriin tallettuville jämille on vaikeata tehdä mitään. Java Windowsilla, sen kanssa voi pärjätä, mutta ei se hauskaa ole. Tokkopa on tarkoituskaan olla.

Nykyisin Mac-käyttäjänä olen onneksi päässyt rekisterihelvetistä eroon. Mutta koska tälläkin alustalla problematiikkaa riittää, eksyin tutustumaan jenv-työkaluun, joka osaltaan helpottaa hommaa. Valitettavasti vaatii toimiakseen bash-valmiin käyttöjärjestemän, eritoten Mac OSX tai Ubuntu pelittää hienosti.

Jenv löytyy osoitteella http://www.jenv.be/ – ja toki myös GitHubista suoraan. Itse tuikkasin sen Maciini Homebrew:llä, kuten monet muutkin kivat jutut. Jahka se löytyy komentoriviltä, tärkeimmät komennot ovat:

jenv add /PATH/TO/VM

jenv versions

jenv shell java-version-that-i-want-to-use

Noista on paljon hyviä esimerkkejä heti pääsivulla. Toki voi myös asettaa pysyvämmin default virtuaalikoneen käyttöön, mutta esim. tuo jenv shell-komento antaa mahdollisuuden kokeilla Java 9 prereleasea turvallisesti sotkematta silti vakaampia projektejaan. Ja mikä mukavinta- toimii myös ANT ja Mavenissä suoraan.

Jenv ja JDK 9 vauhdissa

Edellämainitun lisäksi toki on monta muutakin virtuaalikone-ulottuvuutta: Mitä virtuaalikonetta selaimesi käyttää (jos käyttää), entä IDE ympäristösi? Maven? Eli ei ihan yksinkertainen asia. Hyvä kuitenkin aloittaa perusteista, eli siitä että ainakin yhdessä paikassa homma toimii juuri kuten haluat.

Toinen jenv löytyy muuten osoitteessa http://jenv.io/ – näyttäisi tukevan myös Windows hommeleita.

Raspberry Pi ruudulla

Minä kun harrastan noita Raspberry Pi-tietokoneita niin tulee aina välillä varusteltua. Kirjoitin aiemmin kakkosmallin tehokkuudesta – se on jo varsin tehokas pikku taskupalvelin, vetäen vertoja low-end pilvipalvelimille. Yleensä olen nähnyt nämä IoT-laitteet tiedonkerääjinä, sensoreina, ja kontrollereina – ne tarjoavat palveluita ja niiden käyttöliittymät ovat esim. mobiilisoftia.

Nyt tuli kuitenkin hommattua jotain erilaista: 2.7″ tft näyttö jolla voi näyttää esim. xwindows näkymää, JavaFX käyttöliittymää, linux konsolia, tai mitä mieleen juolahtaa.

Raspi ja näyttö

Tuliko mainittua että se on kosketusnäyttö? Luo vähän puhtia ajatuksiin esim. olohuoneen mediapömpelistä. Ja varsin kätevä myös kun mystisestä syystä linukka kuolee tai menee outoon tilaan – ellei nyt logien kauhomisesta niin innostu. Ja se JavaFX… Nam.

Näitä näyttöpatentteja on ollut ennekin, mutta tämä Adafruitin näyttö on kyllä harvinaisen kätevä ja nopea asentaa.. Ainoa huono juttu, että se syö signaalipinnejä, käytännössä peittäen ne kaikki. Mutta sen alla on myös liitäntä cobblerille jota kautta voi ainakin osan ottaa uudestaan käyttöön.

Vielä ei paljon hajuakaan siitä mitä aion tehdä tällä, mutta kiinnostava se on joka tapauksessa. Tykkään pi-laitteista. Ne ovat halpoja, helppoja, ja inspiroivia.

Ja tuolla se siis on: https://www.adafruit.com/products/1601

Android 6 Marshmallow

Nyt se tupsahti. Virallisesti tarjolla parin viikon sisään OTA päivityksinä, mutta esim. Nexus 7 laitteille jo saatavana. Puhe on siis Android-päivityksestä Isolla versionumerolla 6, Marshmallow eli vaahtokarkkia tällä kertaa.

Android 6 settings

Mitä uutta? Omaan silmään ei mitään jäätävän isoa. Kehitys kehittyy kuitenkin. Luvassa on esim. parempaa muistinhallintaa ja monitorointia, erilainen launcher (vertikaalinen, hakutoiminnolla, valunut jo aiemmin kännyköihin),

Android 6 muistinhallintaaAndroid 6 ja se pääsiäismuna

Android 6 asetukset Android 6 ja maksa napauttamalla

Lisää juoruja esim. https://www.androidpit.com/android-m-release-date-news-features-name