24.6.2008

SproutCore

Surffailin vähän Applen uuden MobileMe-palvelun esittelysivuja. Itse palvelua kiinnostuneempi olin websovellusten hyvin työpöytämäisistä käyttöliittymistä. Selaimessa toimivat versiot sovelluksista muistuttavat hämmästyttävän paljon Mac OS X:ssä toimivia esikuviaan. Webmail muistuttaa käyttöliittymältään todella paljon Mac OS X:n Mail ohjelmaa ja samoin kalenteri iCalia. Näppäinoikotiet toimivat, hakutulokset päivittyvät lennossa, drag'n'drop toimii, yms. Ero selaimessa toimivan sovelluksen ja normaalin tietokoneohjelman välillä ei enää ole iso.

Tähän mennessä tällaiset palvelut ovat yleensä perustuneet joko Flashin tai Javan käyttöön. Kummankaan käyttö ei ole kovin hyvä ratkaisu. MobileMe-palvelu ei pohjaudu näistä kumpaankaan, vaan se on toteutettu SproutCore-nimiseen sovelluskehyksen avulla. SproutCore on tietysti Open Sourcea. SproutCore käyttää työpöytämäisten websovellusten luontiin Ajaxia eli se kykenee toimimaan selaimessa olevilla standarditeknologioilla eli JavaScriptillä, HTML:llä ja CSS:llä. Tällä hetkellä Firefox ja Safari ovat tuettuja. IE7 tuki on tulossa. Javaa tai Flashiä ei siis enää tarvita vaikka haluaisi luoda hyvin tavallisia ohjelmia muistuttavia websovelluksia.

Tekniikasta SproutCoren wiki sanoo:

SproutCore is also a set of development tools influenced by Rails and adopting Javascript best practices. A standard application directory tree is auto-generated, as are models, views, and controllers. HTML is written with the erb (embedded Ruby) templating system using helpers to generate boilerplate HTML and Javascript for UI elements. Testing is built-in. For deployment, the build system consolidates distributed segments of HTML, CSS, and Javascript (and minimizes the Javascript) producing a small set of completely static files.


SproutCore ei yritä tarjota kokonaisratkaisua kolmitasoarkkitehtuurin toteuttamiseen vaan keskittyy asiakaspäähän, eli selaimessa toimivaan käyttöliittymään. Palvelin ja tietokantakerroksen toteuttamiseen pitää käyttää muita ratkaisuja. Eli:
SproutCore is Server-agnostic
SproutCore applications are deployed as a directory of files: no dynamic server-side code is required. You can deliver a SproutCore application to the browser from any web server or web host without special configuration.

In addition, SproutCore can interact with any HTTP application server at runtime including Rails, Tomcat, WebObjects, and WebDav, via XHR calls. SproutCore includes out-of-the-box support for ReST-style backends that accept and receive JSON-formatted data.

Hieman raskas SproutCore on, kuten varmaan moni muukin JS-kehys. Pikaisessa testissäni huomasin, että parin rivin "Hello World"-sovelluksen mukana pitää siirtää lähes satoja kilotavuja JavaScript-koodia. Muilta osin ensivaikutelmani oli hyvin positiivinen.

Applen päätös käyttää SproutCorea mailin web-versioon on kuitenkin mielestäni vähän kyseenalainen. Käyttöliittymästä tulee varmaan aivan mainio, mutta epäilen että ratkaisusta tulee liian raskas. Webmailia kuitenkin tulee käytettyä monesti huonoilla laitteilla ja epämääräisten verkkoyhteyksien päästä. Googlen gmail-tyylinen kevyt käyttöliittymä sopii webmailiin paremmin.

Webissä on tarvetta niin erilaisille palveluille, että tietenkään mikään sovelluskehys ei tietenkään ratkaise kaikkia tarpeita. Flash on edelleen paras ratkaisu peleihin ja multimediaan. SproutCore näyttäisi sopivan hyvin silloin kun ei olla tekemässä vain sivua vaan selaimessa toimivia hyötyohjelmia, joissa tarvitaan työpöytämäinen käyttökokemus. Kevyemmät ratkaisut taas sopivat normaaleille sivustoille.

2 kommenttia:

Anonyymi kirjoitti...

Hei,

Olen kielitieteilijä, joka on siirtymässä ohjelmoijaksi. Tarkoituksena olisi tehdä avoimen lähdekoodin ohjelmia kielitieteilijöille. Nettisovellusten tekeminen kiinnostaa ja siksi olen kiinnostunut SproutCoresta. Mutta koska minulla ei ole ohjelmointitaustaa, en pysty arvioimaan sitä. Yksi ohjelmointikaverini sanoi, ettei javaskriptillä kannata tehdä mitään, koska se on selainherkkää tekniikkaa. Hänen kaverinsa teki viikon töitä pieneen javaskriptiohjelmaan, kun Firefox päivittyi 2:sta 3:een.

Sinulla oli myönteisempi asenne SproutCoreen. Mitä vastaisit?

Ystävällisin terveisin,
Kari Valkama

PS. Olisi kiva vaihtaa ajatuksia sähköpostitse, jos se sinulle sopii. Omani on:
karivalkama (at) mac.com

Rivitutkija kirjoitti...

Moi,

Pahoittelut vastauksen viivästymisestä, mutta näin loma-aikaan, en ole juuri ollut koneen äärellä.

Tekstissä olen yrittänyt viestittää ajatusta, että SproutCore ja sen kaltainen JavaScriptin käyttö sopivat ympäristöön jossa tarvitaan mahdollismman "työpöytämäinen" käyttöliittyämä (näppäinoikoteitä, drag'n'dropt, jne).

Yleemsä "Webmäinen" käyttöliittymä, kuten vaikkapa Googlessa (selvät linkit, urlit, yms), on itseasiassa paljon parempi kuin työpöytämäinen, jolloin JavaScriptiä käytetään vain avustavassa roolissa eli sivusto toimii ilman JavaScriptiäkin.

Mielestäni SproutCore on siis hyvä teknologia, mutta sitä tulee käyttää vain hyvin perustein. Sitä ei kannata käyttää jos halu on tehdä normaaleja Web-sivuja, vaan vain jos tarpeena ja tavoitteena on tehdä työpöytämäisempiä web-sovelluksia.

Tavallisten Web-sivujen toimivuutta ja hyödyllisyyttä ei pidä aliarvioida. Päinvastoin! Pitää pyrkiä luomaan palvelut tavallisina WWW-sivuina ja vain jos on aivan varma, että työpöytämäinen tapa on kyseiseen tarpeeseen parempi, niin sitten kokeilla SproutCore-tyylisiä kirjastoja.