Java 20 vuotta

Jep, tämä on se vuosi. Vuonna 1995, toukokuussa, Sun Microsystems puski jakoon 1.0 version Javasta. Se sai huimasti sykettä ja suosiota ja nousi yhdeksi suosituimmista työkaluista. Ihan vain sen kunniaksi, hiukan muisteloita ja hajatuksia tästä.

Nillittäjät voivat huomata että vuoden 95 Java oli lähes käyttökelvotonta Alpha ja Beta versiota, ja vasta -96 saatiin vakaa 1.0 JDK. Ehkä synttäreitä voi siis juhlia uusiksi ensi vuoden tammikuussa 😉

The Duke

Vuonna 95

Tarina alkoi jo kauan ennen vuotta 95, työnimellä Oak – ja alunperin kohteena älykkäät kodinkoneet ja PDA laitteet. Vuoden 95 julkaisussa nimi muuttui Javaksi, ja fokus kiteytyi WORA periaatteeseen: Write Once, Run Anywhere. Tässä oli jotain uutta ideaa, kun ei tarvinnut tehdä natiivikäännöksiä joka alustalle softasta. Sekä lähdekoodi että binäärit olivat kaikilla tuetuilla alustoilla toimivia. Tämän mahdollisti virtuaalikonearkkitehtuuri, jota sittemmin menestyksellä kopioitiin muuallakin.

Mitä muuta meni nappiin? Yksinkertaisuus – kieli ei ollut aiempia monimutkaisempi tai monipuolisempi, vaan ohjelmoijalta abstraktoitiin pois mm. pointteriaritmetiikka ja muistinhallinta – virtuaalikone hoiti ne pinnan alla. Paradigmaksi valittiin objektiorientaatio, ja toimntaympäristöksi hajautettu ja monisäikeinen. Network is the computer.

java-duke-guitar

Kolikolla oli kääntöpuolensakin. Etenkin alkuaikojen Java oli tunnettu surkeasta suorituskyvystään: Kymmeniä kertoja C++ koodia hitaampaa. Sillä ei voinut tehdä ollenkaan kaikkea: suora pääsy virtuaalikoneen ulkopuolella käyttämään ympäristön natiiviominaisuuksia ei ollut helppoa eikä hauskaa (JNI). Appletit olivat suosituin tekniikka, pelit ja vilkkuvat bannerit, ja tietoturvaongelmat alkoivat nostamaan päätään heti kun annettiin voimaa ja valtaa asiakaspuolelle. Swing oli sinällään hieno käyttöliittymäkirjasto joka pyöri kaikkialla, mutta oli toisaalta yhtä tympeän karu ja hidas kaikkialla.

Muutama vuosi myöhemmin mentiin pykälällä eteenpäin: JIT eli Just-In-Time käännökset antoivat potkua suoritukseen, ja nopeasti sen perässä tulikin jako kolmeen: J2ME, J2EE, J2SE – eli Javaa pieniin ja suuriin ympäristöihin. Mobiililaitteiden myötä Javaa ajavien ympäristöjen määrä räjähti pilviin, ja serveripuolella tuli käyttöön standarditapoja tehdä asioita – ja ajaa samaa koodia SUN, IBM, Oracle, BEA alustoilla (Sittemmin lista on kaventunut, koska yritysostot 😉

2000-luku

2000-luvulle siirryttäessä Java alkoi näyttää vanhalta ja kankealta. Markkinoille tuli paljon uutta ja hyvää. Ruby, Rails, C# ja .NET, PHP ja JavaScriptin uusi tuleminen. Yhtäkkiä Java olikin se kankea perinnealusta joka ei ollut inspiroivaa koodata. Java oli se uusi Cobol.

Onneksi heiluri heilahti takaisinpäinkin. Siinä missä Microsoft otti huomattavasti inspiraatiota Javasta omaan .NET alustaansa ja C#-kieleen, Java 5 otti taas hienoja asioita siltä puolen ja antoi ne Java-kehittäjille. Osa päivityksistä oli kiistanalaisia ja hieman päälle laastaroituja, mutta silti, Generics, ja annotaatiot, toivat ruutia alustaan. Samalla avoin lähdekoodi saavutti Javan, ja alkoi tulemaan pilvin pimein hienoja tuotteita joiden koodi oli avointa ja käyttöönotto mutkatonta ja nopeaa. Eclipse, Tomcat, JBOSS avasivat tietä, ja saivat nopeasti lukuisia kilpailijoita.

IMG_3013

Sitten tuli turbulenssin aika, ja pari vähäisempää Java-versiota – Java 6, ja Java 7. Niiden suunnitelmat olivat kunnianhimoisia, mutta Sun Microsystems ajautui Oraclen sulauttamaksi, ja kaikkeen meni enemmän aikaa kuin arvioitiin – Java 7 suunnitellut muutokset valuivatkin eteenpäin tuleviin julkaisuihin.

Olisiko Sun Microsystemsin kirouksena ollut liiketoimintamallin puute? Java mahdollisti softan kehityksen ja ajon melkein missä vain – eikä sitonut tietyn valmistajan alustaan tai tuotteisiin. Sen käytöstä ei hurjia tuottoja tippunut eikä se sitonut kotiinpäin asiakkaita. Siitä tuli liiankin avointa ja vapaata.

Fast forward to Now

Nyt eletään vuotta 2015 – ja Oraclen valtakautta, kuudetta vuotta. Käytössä on Java 8 ja ysiversiota rakennetaan jo. Java 8 otti paljon vaikutteita erinomaisen Scala-kielen pohjalta, ja muualtakin, ja Lambat ja Streamit ja parannetut päivämääräkirjastot maistuvat kieltämättä hyvältä. Kieli on onnistunut uudistumaan mukavasti vaikka on jo ajat sitten saavuttanut täysi-ikäisyyden. Se on pysynyt markkinoilla validina. Mikä vielä kiehtovampaa, virtuaalikonearkkitehtuuri on osoittanut hyötynsä, ja Java-kielen rinnalla voi tuottaa toimivia ratkaisuja mm. Scala, Groovy, tai Clojure-kielellä – joissa kaikissa on omat vahvuutensa. Uusia Javantappajia ei ole näköpiirissä – ellei noita edellämainittuja kieliä lasketa. Java-koodaajia on maailmanlaajuisesti yli 10 miljoonaa.

Uuden maailman ilmiöitä ovat mainitut Lambdat, streamit, niiden ohella funktionaalinen ohjelmointi, ja rohkea yhdistäminen Javascript-raskaisiin käyttöliittymiin – Angular, React, Aurelia. Staattisen tyypityksen voi kyseenalaistaa esim. Clojurella – tai tiputtaa koodin määrää 90% melkein millä vain noista edellämainituista virtuaalikonekielistä. Java toimii kaikkialla missä ennenkin – ja monessa uudessa paikassa. Androidin myötä se valloitti mobiililaitteet rytinällä – ja nyt on IoT valloitus kovassa käynnissä. Eli vahvasti mennään taas.

IMG_8068

Ainoa ongelma on se kun tajuaa koodanneensa Javaa alkuajoista asti. Sehän tuntuu kuin olisi saanut alkunsa eilen? Samaa hommaa tehdään siis edelleen – vain tukkaa on vähemmän. Olisiko aika jollekin uudelle ja virkistävälle kielelle? 😉

Mainokset

2 thoughts on “Java 20 vuotta

  1. Ja keskeisiä kysymyksiä: monessako kodissa on jääkaappi, jossa Javaa? Vaikka hieman vihjaankin tällä siihen, että ehkäpä ne villeimmät unelmat eivät ole vielä toteutuneet (taisivat olla vain parhaiten levinneitä use case:ja innottamassa kehitystä), niin tosiasia lienee että kukapa tietää – Java kun voi olla aikalailla piilossakin. 🙂

    • Jep, aina tulevaisuutta maalaillessa jotkut selvältä tuntuvat visiot eivät koskaan toteudu – ja toiset joita on vähätelty muodostuvatkin maailmaa syleilevän tärkeiksi. En tiedä onko Samsungin älyjääkaapeissa Javaa, mutta älyjääkapit sinällään eivät näytä olevan kovin kuuma aihe.
      Sensijaan, itse olen törmännyt Javaan mm. tietysti enimmässä osassa kännyköitä ja huomattavassa osassa tablettejakin, viivakoodinlukijoissa, autoissa, pelikonsoleissa, kynissä, kameroissa, vahvistimissa, televisioissa, ja tietysti nyt IoT myötä raspberry Pi härveleissä, ja taisi Google julkaista juuri uutta Android IoT alustaakin.

      Sinänsä on aika ironista että Javan suurin menestystarina ja syke muualla kuin palvelimissa on Googlen käsialaa – ja verisen oikeudenkäynnin kohde 😉 Sun tai Oracle ei koskaan todella onnistunut breikkaamaan dieetti-Javaa läpi muualle kuin J2ME low end puhelimiin – ainakaan isossa määrin.

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s