pondělí 12. února 2007

Projekt Phobos - PoC nic víc (prozatím)

Natěšen z předchozích informací a namasírován článkem Projekt Phobos - skriptovací framework pro platformu Java jsem se jal podívat Phobosu trochu na zoubek. Phobos je ve zkratce web framework integrující skriptovací jazyky (JavaScript, Ruby) s Javou na straně serveru s přidanou hodnotou v podobě DOJO a jMaki knihoven na klientu. Detailnější info viz článek.

Integrace se skriptovacími jazyky, byla jedním z témat, které se dlouhou dobu přetřásaly v rámci Javy. Sun, dobře vědom potenciálu a nebo popularity těchto jazyků, začal razit cestu konceptu JVM jako platformy pro široké spektrum různých jazyků. Díky tomu v Jave 6 přibyla integrace se skriptovacími jazyky, která je přímo reprezentována integrací s JavaScriptem.

Phobos právě na integraci s JavaScriptem staví. Nad servlet API byl vymodelován čistokrevný webový MVC framework v JavaScriptu. Vaší aplikaci tak můžete napsat na straně serveru kompletně v JavaScriptu a nebo část, například View a Controller, v JavaScriptu a část (Model) v Javě. Bylo by zavádějící mluvit jenom o JavaScriptu, protože Phobos mluví o integraci jakéhokoliv JSR-223 kompatibilního skriptovacího enginu viz Scripting Engines .

Valná většina Phobosu je napsaná v JavaScriptu a sami tvůrci doporučují používat JavaScript i pro vaší aplikaci. Z JavaScriptu můžete bezproblémově volat jakékoliv API, které je součástí Javy. Integrace například PHP by byla složitější v nutnosti mít možnost volat z JavaScriptu, resp. Phobosu v něm naimplementovánem, přímo PHP.

Pro představu bych rád úkazal část kódu aplikace vytvořené ve Phobosu.


library.common.define(controller, "form", function() {
    this.Form = function() {
        this.update = function() {
            // ... code to update the form goes here ...
        }
    }
});    
    
    

Předchozí kód patří controlleru jehož metodu update zavolá Phobos při požadavku na URL /form/update.

Výše uvedený kód vypadá dobře do doby než si představíte, že podobně napíšete dalších několik tisíc řádků kódu. Zkoušel jsem NetBeans 5.5 s Phobos podporou a umí toho celkem málo. V podstatě jen debuging z těch činností, při kterých tráví vývojář více času. Dva základní problémy Phobosu vidím v:

  • slabá podpora v IDE (to se zlepší doufejme od NetBeans 6.0)
  • JavaScript

Pokud někdo mlaská blahem nad úžasnou efektivitou skriptovacích jazyků, tak já nad nimi upřimně ohrnuji nos. Už jenom fakt, že JavaScript nepodporuje OOP mě dost zrazuje a při pohledu na výše uvedený kód mě polévá studený pot. V JavaScriptu se dá v podstatě mluvit pouze o podpoře dědičnosti. O tom, že bude existovat standardní cesta, jak objekty rozdělovat do struktur jako package nebo zapouzdřovat proměnné či funkce, si můžete nechat zdát.

Asi to nejsou problémy Phobosu jako spíše aktuální implementace. Na druhou stranu je potřeba ocenit prostřelení PoC (proof of concept) na téma integrace Javy se skriptovacími technologiemi. Phobos v současnosti nenabízí nic z hlediska funkčnosti, co by jste nedostali již dříve od současných Java web frameworků a to včetně vysoké podpory na úrovni IDE.

Můj závěr: k ničemu více než PoC se Phobos v současné verzi nehodí. To platí snad krom výjimky, že máte vývojáře znalé pouze JavaScriptu. V takovém případě by byla adaptace na Phobos, řekněme hladší, než při přechodu čistě na Javu/JSF/JSP.