Phobos lichtgewicht en scripting-vriendelijk?

15 January 2007 4:10 Remco van 't Veer Algemeen

Phobos - De grootste maan van Mars

Project Phobos is een beetje een bizarre naam voor een project dat zichzelf beschrijft als een lichtgewicht, scripting-vriendelijk, web applicatie framework voor het Java Platform. Voor zover ik weet is Phobos de grootste maan van Mars en heeft z’n naam te danken aan de term phobia, Grieks voor angst. Lomp en griezelig?

Ruby on Rails?

De inspiratie voor het Phobos project komt voort uit de populariteit van het Ruby on Rails framework welke ongeveer samen valt met de introductie van Java6 met het scripting interface.

Net als Rails is Phobos een MVC web framework. Phobos lijkt, net als Rails, “convention over configuration� te prefereren. Ook is Phobos (gedeeltelijk) reloadable, wat wil zeggen dat de applicatie niet geherstart hoeft te worden als er code is aangepast. Het ondersteunt ook een soortgelijk routing systeem als Rails waarmee gemakkelijk “mooie� URL’s gemaakt kunnen worden.

Phobos is echter niet “full-stack�, zoals Rails, het biedt geen eigen ORM. Niet zo raar misschien omdat het Java Platform overloopt van de ORM’s, maar aan de ander kant kan je dat ook van Web Frameworks zeggen. In de Phobos CVS repository is voorbeeldcode te vinden waarin JPA gebruikt wordt om de “M� van MVC in te vullen. JPA is prachtig maar vergeleken met Active Record van Rails is het als aan de handrem trekken op de snelweg. Of is het mijn onwil tot het schrijven van Java code?

JavaScript?

Phobos is gebaseerd op JavaScript. JavaScript wordt in Java6 standaard meegeleverd als onderdeel van “Scripting Engine Framework� ook wel bekent als JSR 223: Scripting for the Java™ Platform. De implementatie die meegeleverd wordt is Rhino, een zeer volwassen engine (komende herfst wordt de 10de verjaardag alweer gevierd) en volgens sommigen de beste JavaScript implementatie op alle fronten.

JavaScript is een prachtige dynamische taal en het gemak waarmee je uit een script Java code aanroept maakt het een waardige complement op Java. Een groot gedeelte van Phobos is ook geïmplementeerd in JavaScript waardoor het framework gemakkelijk uit te breiden is. Met z’n krachtige combinatie van een dynamische taal en ongelimiteerde toegang tot Java code blijft ik een eigen ORM interface zoals Active Record of Grails’ GORM missen. De ontwikkelaars van het Grails project hebben een waanzinnige interface gebouwd bovenop Hibernate 3, maar zij zijn ook al sinds medio 2005 bezig.

Lichtgewicht?

Lomp is het niet maar is het wel lichtgewicht? Wat betekent lichtgewicht eigenlijk? Is het een lichtgewicht omdat het niet veel voorstelt? Daarmee zou je Phobos tekort doen.

Is het dan lichtgewicht omdat het niet in de weg zit? Het is reloable en de default routes zijn zinnig, je kan dus meteen aan de slag. Maar de interface met Java is nou ook weer niet naadloos, een Java Collection wordt bijvoorbeeld niet automagisch voor je omgezet naar een JavaScript array. Dat kan dus in de weg zitten.

Is het dan lichtgewicht omdat het klein is? Tja, wat is klein? De “examples� applicatie is 16Kb. Dit is kale applicatie code, dus geen Phobos framework, geen jar-files, web.xml of wat dan ook. Met 100Mb aan GlassFish server kan je deze applicatie as-is draaien. Oké, misschien is GlassFish wel lomp. Met framework komt je op een applicatie van minstens 5Mb. Klein?

De term lichtgewicht wordt een beetje te vaak gebruikt voor software. In vergelijking tot andere Web Frameworks op het Java Platform is het zeker lichtgewicht. Maar daar buiten zijn frameworks te vinden!

Scripting-vriendelijk?

Griezelig is Phobos zeker niet. Sterker nog je hebt vrij snel iets in elkaar gezet. Met de NetBeans AJAX modules kan je klikker-de-klik projecten aanmaken, draaien en er zelfs met de debugger doorheen lopen.

Maar scripting-vriendelijk is iets anders, het pretendeert dat het niet uitmaakt welke scripting engine je wilt gebruiken. Of je nou JavaScript, Groovy, JRuby of Jython wilt gebruiken, Phobos is je web framework.

Helaas, zo vriendelijk is Phobos niet. Omdat een groot gedeelte van het framework in JavaScript geschreven is, blijft er maar weinig over als je met JRuby aan de slag wilt bijvoorbeeld. Model (van MVC) had je toch al niet maar je zult het ook zonder View en Controller moeten doen.

Wat is er dan wel? Een Phobos applicatie bevat een soort cgi-bin directory genaamd scripts. Hierin kan je je JRuby scripts kwijt en kan je CGI/Servlet-achtige dingen doen. Phobos zorgt dat de JRuby engine draait en requests door je script afgehandeld kunnen worden.

Ongezouten mening!

Wat mij betreft stelt Phobos teleur. Toen ik een paar maanden geleden de aankondiging last was ik erg enthousiast. Ik kreeg weer een warm gevoel van Sun, ze nemen scripting serieus (hoewel de term me blijft irriteren) en nu komen ze ook nog met een scripting-vriendelijk framework dat nog lichtgewicht is ook! Beiden claims lijken jammer genoeg maar weinig met de werkelijkheid te maken te hebben.

Ze zijn pas sinds mei bezig en misschien wordt het nog wel wat, maar ik zie voorlopig geen reden om me hiermee bezig te houden. Als ik lichtgewicht wil, ga ik voor dat ene framework. Als ik RAD en Agile wil zijn, ga ik voor Ruby on Rails. En als ik dat op het Java Platform wil doen, steek ik liever tijd in Grails.

Reageer

RSS feed for comments on this post · TrackBack URI