Norske Enonic har de siste ukene fått betydelig internasjonal oppmerksomhet for en lansering som til nå har blitt lite omtalt her hjemme. Det dreier seg om PurpleJS, et åpen kildekodebasert JavaScript-rammeverk som gjør det mulig å programmere både klient- og serversiden av applikasjoner i JavaScript. Utgangspunktet kan dette høres ut som at Node.js har blitt funnet opp på nytt. Men det er vesentlige forskjeller på de to løsningene.
Den sentrale er det faktum at PurpleJS kjøres på serveren i Java Virtual Machine (JVM). Vi kommer tilbake til hva dette innebærer.
Hentet ut av hovedprodukter
Rammeverket ble opprinnelig utviklet som en del av selskapets nåværende hovedprodukt, Enonic XP, en Java-basert webapplikasjonsplattform som selskapet kaller for et weboperativsystem.
Thomas Sigdestad, CTO hos Enonic, forteller til digi.no at dette ble lansert for drøyt halvannet år siden med utgangspunkt i en visjon om å forenkle digital transformasjonen.
– Ved å redusere antall bevegelige deler i infrastrukturen, reduserer vi kompleksiteten og gjør applikasjonsutviklingen mer forutsigbar. Etter å ha fått ferdig XP og modnet dette nå, så vi at det fra utviklerfellesskapet kom spørsmål som, «Ja men, hvis jeg vil bruke dette JavaScript-rammeverket, så må jeg begynne med XP da. Kan det ikke være mulig å bruke det rammeverket uten hele XP?», sier Sigdestad.
– Derfor har vi tatt det ut det ut av XP og fått det lansert som et helt eget open source-rammeverk. Det betyr i praksis at man ved å ta inn PurpleJS kan kjøre serverside JavaScript i Java-prosjekter uten å ta inn nye komponenter som for eksempel Node.js. Rammeverket bruker veldig mange av disse vanlige konseptene som JavaScript-utviklere er vant med – for eksempel require-systemet.
Driver Posten.no
– Det største som PurpleJS brukes til akkurat nå, er i praksis Postens nye nettsted, som ble lansert her om dagen, hvor rammeverket benyttes indirekte gjennom XP. Alt du ser på Posten.no er JavaScript-kodet på serveren, sier Sigdestad
Ifølge ham har JavaScript på serveren blitt veldig stort i det siste, mye på grunn av Node.js.
– Men det som er med Node.js, vel for det første er jo pakkeformatet deres litt tragisk. Men det krever også en litt annen måte å tenke på, fordi det er såkalt asynkront. Hvis du for eksempel vil utnytte en 30 kjerners prosessor, så må du starte 30 Node.js-servere. Mens med PurpleJS, fordi vi bruker JVM-en, holder det å starte bare én JVM. Dette gjør det lettere å forvalte og utvikle applikasjoner, og da har jeg ikke engang begynt å snakket om clustering, sier Sigdestad.
Ytelsen
Ytelsesmessig per prosess er ikke fordelene like klare. Ifølge Sigdestad er ytelsen i noen tilfeller bedre enn med Node.js, mens den andre ganger er Node.js dobbelt så rask. Det skal være mange faktorer som spiller inn på dette, inkludert det underliggende miljøet.
– Likevel, hvis du skal ha samme kapasitet på som med la oss si en Node.js-rigg med hundre prosesser, trenger du på grunn av flerkjernestøtten kanskje bare å dra opp 4-5 PurpleJS-servere. Ikke minst i forbindelse med nettverkstrafikk og caching vil du se at PurpleJS skalerer bedre, forteller Sigdestad.
En annen fordel med PurpleJS, framfor Node.js, er at det er uavhengig av det underliggende operativsystemet.
– Kjører du med Node-pakken, trenger du JavaScript-motor for Mac-en din, en for Linux-en og en for Windows-en. Så du er ikke garantert at du har samme miljø når du sitter og programmerer på Mac-en din, som miljøet som er i produksjon, sier Sigdestad.
Les også: Fra dette lille kontoret har Linda, Tommy og Roy 4 millioner faste brukere
Ingen Node.js-erstatter
Hovedmannen bak PurpleJS er Sten Roger Sandvik, som har stillingen VP Engineering hos Enonic.
– Mange tror at PurpleJS er en Node.js-killer, men det er det ikke. Men det er mange som vil kjøre den trygge Java-stacken sin og kvier seg for Node.js, sier Sandvik til digi.no.
Sigdestad understreker at man som JavaScript-utvikler ikke engang trenger å forholde seg til Java inne når man bruker PurpleJS – dersom man ikke vil, men samtidig at rammeverket tar med seg mulighetene og det som er bra ved Java på en naturlig måte.
– Hvis det er noen kritiske tjenester som man mener kjører fortere i Java, så kan man egentlig bare gradvis bygge det i Java – man kan ha noen tjenester i Java, andre i JavaScript, sier Sandvik.
– Det er veldig enkelt å gjøre kalle Java-kode fra PurpleJS, og tilbake får du JavaScript-objekter eller JSON, men også Java hvis du vil det. Men du skal kunne kode alt i JavaScript. Men hvis du ønsker å bruke litt mer avanserte biblioteker eller funksjoner i Java, så kan du også gjøre det, sier Sigdestad.
De fleste JavaScript-biblioteker kan kjøres i PurpleJS.
En fordel ved å bruke JavaScript framfor Java på serveren, er at ingenting behøver å kompileres. Endrer man på Java-koden, må serveren startes på nytt. Endrer man bare på JavaScript-koden, trenger man bare å laste websiden på nytt i nettleseren for å se endringen. Men omstart av PurpleJS-serveren tar under et sekund selv på en eldre Macbook Air.
Omtale og åpen kildekode
PurpleJS ble offisielt lansert under JavaZone i Oslo tidligere i høst, men ennå har man ikke kommet til versjon 1.0 med blant annet stabile programmeringsgrensesnitt.
Daglig leder Morten Øien Eriksen forteller at den internasjonale oppmerksomheten rundt PurpleJS særlig har kommet på Twitter, hvor det har vært særlig mye deling de siste to ukene. En artikkel i blant annet amerikanske Infoworld har det også blitt.
For å få enda mer oppmerksomhet framover, er planen å holde foredrag på konferanser og lignende.
Selskapet har flere hensikter med donasjonen av PurpleJS til fellesskapet. Det ene er et håp om å få bidrag tilbake, og ifølge Eriksen har det allerede kommet noe forslag.
– Vi gir det bort gratis, men indirekte reklamerer det for hva vi ellers har gjort, sier Eriksen. Enonic har kontorer i blant annet San Francisco og London, og ifølge Eriksen mener de at de med XP har det internasjonale produktet de ikke har hatt tidligere.
Inspirasjon
Sigdestad forteller at PurpleJS-navnet er inspirert av en berømt scene i Matrix-filmen hvor Thomas A. Anderson/Neo må velge mellom å ta en rød eller en blå pille. Med PurpleJS velger kan man velge både JavaScript og Java, og rødt og blått blir til sammen lilla.
PurpleJS har også en egen maskot, som heter Juke. Den er en kombinasjon av Java-maskoten Duke og de tentakellignende figurene i det gamle dataspillet Maniac Mansion: Day of the Tentacle.
Leste du denne? Facebook med raskere alternativ for håndtering av JavaScript-pakker