Google App Engine pilvipalvelu ja Java EE 6, osa 2

Jahas, seuraava episodi pilvipalveluiden opiskelussa. Virittelin Maven 3 projektin siten että sen ohella että pilvipalveluiden Hello World onnistuu, myös JSF 2.0 ja JPA on tuettuna. Näin on mahdollista tehdä Solakka Java-periaatteiden mukaan hyvinkin nopeasti ja helposti yksikkötestattavaa sovelluskoodia. Samalla kävi ilmi myös Google App Engine JPA:n rajoitukset:

– JPA 1.0 on tuettuna, JPA 2.0 ei ole (ainakaan nyt). Erona on lähinnä piirteet joita en muutenkaan käyttäisi, Criteria Query on yksi niistä.
– Alla oleva DataNucleus engine EI ole relaatiotietokanta, vaan se on NoSQL kanta, joten kaikki JPA piirteet eivät toimi ollenkaan, esim.
– Many-to-Many ei toimi,
– Join kyselyt eivät toimi (lapsi-entiteetin kenttiä ei voi käyttää hakuehtoina),
– group by, having, sum, avg, max, min ei toimi
– polymorfiset kyselyt eivät toimi

Aika tyly lista rajoituksia, siis. Kuitenkin.. Kaikki nuo piirteet tulevat relaatiokantateorian puolelta, ja tässä meillä on uuden ajan kanta jota käytetään uudella tapaa. Aika näyttää riittääkö siinä rahkeet, mutta hieman pitää suunnittelua miettiä tarkemmin.

Aluksi oli hieman ongelmia sen kanssa että mitä kirjastoja tarvitaan, ja puuttuvat kirjastot antoivat kryptisiä virheilmoituksia. Hyvä myös huomata että  DataNucleus käyttää bytekoodin vahvistamista, eli tarvitaan post-processor plugin maveniin kääntäjän lisäksi. Lisäksi CDI:n ja injektioiden sijaan pelasin toistaiseksi varman päälle ja en käyttänyt niitä, vaan EntityManagerFactory saadaan singletonilta, ja annotaatioissa käytin JSF:n omia ManagedBean jne annotaatioita, enkä CDI:n Named ja Inject annotaatioita. Jatkossa tarkoitus muokata ympäristöstä parempaa, mutta nyt se näyttäisi toimivan kivasti, ja App Enginestä löytyy jopa työkalut joilla voi tarkastella logeja ja tietokannan sisältöä.

Lueksin että Spring framework toimii ongelmattomammin App Enginessä, ja JDO on JPA:ta luontevampi rajapinta tässä tapauksessa, kun kanta ei olekaan relaatiokanta. Mutta itselleni tärkeämpää on standardoidut rajapinnat ja ydinstandardit ohi kolmannen osapuolen frameworkien, eli katsotaan miten tässä käy.

Mainokset

Google App Engine pilvipalvelu ja Java EE 6, osa 1

Olen aivan pilvessä.

No niin, vaikka Pilvi on uusi trendi, tuo on jo vitsinä vanha. Joka tapauksessa, tänään oli hetkonen aikaa kokeilla Google App Engine viritystä vähäsen, olen jo aiemmin sinne tehnyt palveluita mutta nyt ehti hetken kokeilla ajatuksella.

Google App Engine ideana on hostata ympäristö josta voi ostaa skaalautuvasti prosessointitehoa ja muistia ja levytilaa, niinsanotusti vääntöä. Palvelusta löytyy myös tietokantaratkaisuja, ja tukea löytyy useammalle ohjelmointikielelle. Liikkeellelähtö on ilmaista, mutta jos kapasiteetin tarpeet kasvavat, skaalautuvuutta saa rahalla.

Minua tietysti kiinnosti miten uudet Java EE 6 solakat ohjelmointitekniikat siellä pelaavat, ja pelasivathan ne, pienin virityksin. Sain iltapäivän aikana Maven vetoisen projektin nykäistyä kasaan, sinne tuki EE 6 piirteille kuten JSF 2, ja tietysti Netbeans editorina. Mitään kovin ihmeellistä en ole vielä koonnut palveluun mutta tämä on silti hyvä alku. Tuli peräti lämmin tunne kun omin silmin näki miten jsf softa jota hetki sitten oli ajanut omalla koneellaan pyöri nyt hostattuna Googlen myllytyksessä. Ja niillä pojilla muuten myllyä piisaa.

Tämä oli alku, ja jatkossa aion kytkeä CDI mekanismit päälle, tutkia miten JPA 2 alustalla pelaa, ja tehdä sinne jonkun sovelluksen. Tällä hetkellä kallistuisin työajanseurannan puoleen, ne ovat aina hätäisesti tehtyjä virityksiä ja tässä olisi tilaisuus tehdä helposti skaalattava softa suht vähällä vaivalla ja pistää pilvi koetukselle. Katsotaan miten käy. Jatko-osia siis tulossa jahka löydän lisää aikaa.

Java ja OpenJDK tulevaisuus

Nyt on taas tapahtunut lyhyessä ajassa Java puolella paljon, ainakin mitä tulee pelureihin ja alustan tulevaisuuteen. Javan ydin on tietysti Java SE, ja sen ensi vuonna tuleva versio 7 muovaa suunnan mihin ollaan menossa. Tämän verran tiedämme OpenJDK 7:stä:

– Oracle yhdistää JRockit ja HotSpot virtuaalikoneiden parhaat piirteet ja siitä syntyy uusi JRE eli Javan virtuaalikone

– OpenJDK:n takana seisovat nyt myös IBM ja Apple, Apple lakkasi tekemästä omaa virtuaalikonettaan ja IBM näyttäisi olevan irtautumassa myös omastaan sekä kenties Apache Harmonystä

– Toisaalta, ei niin hyvää ettei jotain huonoakin. Apache on kiukustunut Harmony projektin saamasta kohtalosta niin paljon että uhkaa äänestää Java SE 7 spesifikaation nurin ellei homma muutu avoimemmaksi. Ei ole ensimmäinen kerta että spesifikaatioita pidetään panttivankina, mutta mielenkiintoista on että Apachella on aika paljon kuuluvuutta ja uskottavuutta, organisaationa Apache nauttii suurta luottamusta ja suosiota.

– Sitten on tietysti Oracle-Google oikeusjupakka, joka ei suoranaisesti liity OpenJDK:hon. Siinä viimeisin juonne on, että Oracle listasi tiettyjä spesifisiä kohtia Android alustassa joissa olisi kopioitu koodia. Googlen vastaus on että koodit eivät ole heidän tekemiään vaan kolmansien osapuolien, avoimella alustalla. Erään asiantuntijan mukaan myös koodien välillä oli suuria eroavaisuuksia, ja vedottiin siihen että on lopulta vain rajattu määrä eri tapoja tehdä sama tietty asia, eli jos esim. autoa ollaan keksimässä, voi kaksi insinööriä erillään päätyä siihen että pyörä toimii muotona paremmin kuin neliö, mitä auton renkaisiin tulee. Mielenkiintoista pöllytystä, saapa nähdä miten tilanne kehittyy. Jos nuo tekijänoikeusjutut kiinnostavat, hyvä huomata että sekä openjdk että android ovat open sourcea eli lähdekoodit voi ladata ja eroavaisuuksia/samankaltaisuuksia arvioida ihan itse.

Pistetään loppuun vielä aivan täysin asiaan liittymätön kuva Dukesta rokkaamassa.

Solakka Java

Sain valmiiksi koulutuksen jota alamme ensi vuonna pitämään, aiheena siis Solakka Java. Ideana on tarjota vakuuttava vaihtoehto Spring Frameworkin käytölle, pelkin standardi Java EE teknologioin. Koulutusta valmistellessa tulin itsekin myydyksi ratkaisun osalta siten että tätä olen soveltanut myös käynnissä oleviin sovelluskehityshankkeisiin.

Solakka Java löytyy muiden java kurssien joukosta osoitteesta http://www.tieturi.fi/java

Mikä tuossa on sitten niin jännää? Pähkinänkuoressa Java EE 6 uudet pienet parannukset jotka yhdessä summaantuvat.. Yksinkertaisempi paketointi, EJB Lite standardi, JSF 2.0, JPA 2.0, asynkroninen EJB, parannetut ajastimet, parempi tuki AJAX:lle, lisää annotaatioita, vähemmän xml:ää, vähemmän liikkuvia osia. Hoidetaan vielä homma Mavenillä ja Netbeansillä ja meillä on todella kovan tuottavuuden alusta jossa siltikin asioita pääsee puukottamaan halunsa mukaan tarvittaessa. Ja jossa kasvuvaraa piisaa.

Pakko tykätä. Minun ainakin 😉 Kehitys on kaunista. Ja nyt Scalan pariin takaisin.

Java, IBM, Oracle, Apple ja Google

Java rintamalla on ollut kiintoisaa liikehdintää viime aikoina. Ensin Oracle haastoi Googlen oikeuteen, aiheena Java-alustan lisensoimaton käyttö Android puhelimissa. Tämän jälkeen Oracle ja IBM tekivät yhteistyösopimuksen OpenJDK kehittämisestä. Lopputuloksena vaakalaudalla on Apachen Harmony-projekti, jota mm. Android alusta käyttää.

Viimeisin uutinen on Apple-alustalta, jossa Applen Java on merkattu deprekoituneeksi eli vanhentuneeksi teknologiaksi. Toisin sanoen, Applelta ei uutta Javaa tule – nykyiset pelaavat aikansa mutta esim. App Storessa ei saa deprekoituneita tekniikoita käyttää. Ja kun Appleen ei näin ollen ole tulossa bugifiksejä eikä ensi vuonna julkaistavaa Java 7 versiota, alusta ei tule olemaan erityisen miellyttävä Javan kannalta. Applehan veti tiukan linjan aiemmin Flashin suhteen, eli tarkoituksena on ilmeisesti että kaikki koodataan Applen omalla ObjectiveC kielellä natiivina. Hyvästit siis siirrettäville ohjelmistoille jotka toimisivat kaikilla alustoilla ilman muutoksia.

Outo maailma missä elämme. Oraclen luulisi hyötyvän siitä että Java kielenä on mahdollisimman laajalti käytössä, suosiossa ja elossa. Applen luulisi hyötyvän siitä että myös Java-kehittäjät ostavat Apple kannettavia ja iPadejä, ja siitä että niille saadaan aikaan mahdollisimman paljon softaa saataville ja valinnanvaraa. Mutta kuten aina, pölyn laskeutuessa lasketaan voittajat. Rohkeita vetoja joka tapauksessa, aika näyttää mitä tästä kaikesta seuraa.

Kenties Oracle saa Googlen pelaamaan kiltimmin osana standardoituja Java alustoja – tai tyytyy ottamaan oman viipaleensa hurjasti kasvavasta Android kakusta. Kenties Apple on oikeassa rajatessaan kaikki ei-natiivit tekniikat pois alustoiltaan – se on jokatapauksessa johdonmukaisessa linjassa sen kanssa miten Apple laitteet ovat aina toimineet. Suljettua teknologiaa valikoiduille käyttäjille jotka niitä arvostavat. Se on business mallina toiminut ennenkin. Toki yhden kehitysvälineen alusta on myös vakaampi – toisaalta huonoa softaa saa aikaan myös ObjectiveC:llä. Kenties Oracle hyppää puikkoihin ja alkaa valmistamaan virtuaalikonetta myös Apple alustalle – näin saataisiin virtuaalikonepäivitykset samanaikaisiksi kaikille pääalustoille ja Apple puolellakin loppuisi uusien piirteiden odottelu.

Kiintoisia aikoja elämme kun vuosi käy viimeisiä kuukausiaan.