Googles Java i skyen er tynget af begrænsninger

ANALYSE: Der er ingen baggrundsprocesser, tråde eller kø-systemer i Googles beta-version af sky-tjenesten App Engine i Java-aftapning. Det begrænser anvendelsen væsentligt.

Google har indfriet, hvad firmaet har lovet i et godt stykke tid: At tilføje Java til firmaets udvalg af teknologier, der kan anvendes i sky-tjenesten App Engine.

Googles sky har været i luften i 12 måneder, og indtil videre har Google App Engine været en Python-applikationsserver med adgang til nogle af Googles kerneteknologier såsom Bigtable, der er Googles distribuerede database.

Men det højeste ønske på brugernes ønskeliste har ifølge Google været muligheden for at benytte Java. Google har netop åbnet for et beta-program, der tilbyder Java til udviklerne, og det foregår i sædvandlig Google-stil ved at man skrives op til adgang. Det har Version2 gjort, og vi fik åbnet kontoen allerede dagen efter tilmelding.

I modsætning til App Engines Python-miljø, som byggede på Googles egne ideer, er Java-miljøet en gængs Java-webserver, også kendt som en Servlet-container i jargonen. Men en række muligheder er fjernet fra Googles løsning, og det sætter begrænsninger på, hvilke slags webapplikationer, man kan udvikle.

Google giver som forventet ikke adgang til et underliggende filsystem, men det er heller ikke det store problem.

Datatjenester er helt fornuftigt implementeret som JDO (Java Data Objects), som er Javas persistence-teknologi, der binder objekter sammen med datakilder. Googles JDO-implementering benytter firmaets cloud-filsystem nedenunder.

Men ligesom med App Engines Python-miljø, er det ikke muligt at skabe baggrundsprocesser i Googles Java-webserver. Det betyder, at det ikke er muligt at starte nye tråde eller benytte standard-biblioteker, der starter nye tråde. Det gælder eksempelvis parallelprogrammerings-klasserne i pakken java.util.concurrent. Disse klasser gør det nemt at skabe kø-baseret processering, som ofte kræves til løsning af backend-opgaver.

Google stiller heller ikke nogen alternativ kø-mekanisme til rådighed, så som konkurrenten Amazons SQS. I dokumentationen antydes det, som det også blev gjort i Python-dokumentationen, at man kunne benytte tidsstyrede kald til tjenesten som alternativ til denne type opgaveudførsel. Men det er sandt for dyden en ringe løsning.

Ligesom Python-miljøet er Googles Java-bud på linje med den PHP-hosting, som utallige små internet-udbydere kan tilbyde. Her skal alle kald være overstået i en ruf, og reelt er klassen af problemer, der kan løses med denne model, i al væsentlighed identisk med CRUD-baserede informationssystemer, hvor tekststumper puttes ind i en skabelon (Create, read, update, delete - de fire mest almindelige databaseoperationer), samt mashups, hvor flere eksterne datakilder samles i en webapplikation.

Der er mange problemer, som kan løses med disse modeller, hvilket PHP's popularitet vidner om, men der er også mange, som kræver flere boller på suppen. Her kan Google ikke levere varen i forhold til Amazon og Microsoft - i hvert fald ikke endnu.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (2)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Tobias Tobiasen

Det har altid været dårlig stil at starte nye tråde i servlets. Ligesom kø-baseret processering også er dårlig stil.
Det smarte ved servlets er jo netop at app serveren kan migrere din session til en anden server i dit cluster. Det bliver jo helt umuligt hvis du har lavet dine egne tråde.
Google tvinger dig altså bare til at lave fornuftige valg.

  • 0
  • 0
Anders Reinhardt Hansen

Du har kun ret i den sammenhæng at hele din applikation kører i servlets. Der er dog ingen fornuftige mennesker der laver en ny applikation kun ved brug af servlets. En java applikation er jo meget mere end servlets idag. Derfor kan brugen af tråde jo helt oplagt være berettiget hvis vi snakker applikationslaget eller datalaget. Hvis vi f.eks. snakker søgning efter data i en større datamængde kan det være en fordel at benytte flere Threads. Men baggrunden for at google har lavet dette valg tror jeg er fordi at deres formål med App Engine og Cloud er at lave weborienterede produkter og ikke beregningstunge apps. Det er dog også rigtig dårlig stil kun at tillade visse dele af java og dermed afskære brugerne fra at bruge alle bibilioteker.

Hvis du kigger her http://groups.google.com/group/google-appengine-java/web/will-it-play-in...

kan du se alle de frameworks der er tilngængelige i App Engine

  • 0
  • 0
Log ind eller Opret konto for at kommentere