Ruby on Rails (RoR) macht in letzter Zeit immer öfter von sich reden - und wenn man sich umsieht, findet man immer mehr gutgelaunte Menschen, die jetzt wegen RoR noch viel besser gelaunt sind. Vorbei die Zeit, als man für ein neues Webprojekt 70% des Codes mal wieder schreiben mußte, obwohl man ihn in 10 anderen Projekten auch schon genutzt hat - nur in einer etwas anderen Weise, so daß ein erneutes Programmieren ähnlich oder weniger aufwendig ist als den alten Ansatz anzupassen.
Dabei macht man im Grunde genommen bei vielen Webprojekten immer wieder das gleiche. Ruby on Rails ist ein geschickt zusammengeschustertes Framework, das jede Menge Automagic beherrscht. Anstatt viele Dinge wieder einmal zu tun ist es eine Art installierbares Framework, das mit so gut wie keiner Konfiguration auskommt, nicht zuletzt auch weil es sich an das MVC Prinzip (Model-View-Controller) und auch konsequent an DRY (Don't repeat yourself) hält.
Ruby mag für Ruby-Fans eine schöne Sprache sein, aber gibt es denn vergleichbares auch für andere Sprachen?
Das Gute ist, es gibt solche Frameworks für PHP, Python und auch andere Sprachen die für die Webprogrammierung verwendet werden. Alle Frameworks machen einen mehr oder weniger guten Eindruck, aber keines davon scheint an RoR ran zu kommen.
Wer sich näher mit dem Prinzip MVC für Webanwendungen beschäftigen will ohne gleich eine neue Sprache zu lernen, dem kann ich schon mal ein paar Einstiegspunkte nennen, denn es gibt auch ganz gute Frameworks für PHP und Python:
MVC Frameworks für und in PHP:- CakePHP (http://cakephp.org/): Steckt noch in den Kinderschuhen, beherrscht die grundlegenden Dinge, die man für eine MVC-Implementierung braucht. Da dieses API aber noch jung ist und rasant wächst, würde ich es noch nicht produktiv einsetzen. Die Modelle müssen auch derzeit noch selbst in die Datenbank implementiert werden, die meisten RoR-Nachfolger generieren zumindest den benötigten SQL-Code dafür. Ein Vorteil von CakePHP ist, daß es auch noch mit PHP4 funktioniert.
- PHP on Trax (http://phpontrax.com/): Vielversprechend, steckt aber auch noch tief in der Entwicklung. Eine Dokumentation ist so gut wie nicht vorhanden, jedoch kann es schon die eigenen Modelle generieren um sie in die Datenbank zu bringen. PHP on Trax benötigt zwingend PHP5 und PEAR.
- Solar (http://www.solarphp.com/): Auch Solar befindet sich noch in der Entwicklung, erscheint aber schon recht weit fortgeschritten zu sein. Immerhin gibt es eine halbwegs brauchbare Dokumentation für den Einstieg und eine gute Dokumentation der API. Solar benötigt zwingend PHP5 und PEAR. Es läßt sich auch direkt per PEAR-Channel installieren.
MVC Frameworks für und in Python:
- Django (http://www.djangoproject.com/): Django hat bereits zwei Jahre Entwicklung hinter sich und erscheint als stabiles, sehr gut dokumentiertes Framework das selbst Einsteigern schnelle Ergebnisse ermöglicht. Die API ist hervorragend dokumentiert. Es erzeugt selbständig aus den definierten Modellen die Datenbank. Als Entwicklungsserver beinhaltet Django einen eigenen Webserver, der im Produktivbetrieb gegen Apache mit mod_python ausgetauscht werden kann. Es integriert sich nahtlos in die vorhandene Apache-Installation. Django ist im Grunde genommen das, was man sich wünscht.
- TurboGears (http://www.turbogears.org/): TurboGears tritt an als fast fertiges Framework, das mehrere Open-Source Programme zu einem MVC-Framework verbindet. Die Dokumentation ist gut für den Entwicklungsstand. Ein eigenes Marketing-/Howto-Video erleichtert es dem Einsteiger eine Idee zu bekommen, wie man mit dem Framework arbeitet.
Um herauszufinden, was wirklich am Hype dran ist habe ich mit Django in Python ein wenig experimentiert und war überrascht, mit welch geringem Aufwand ich schon brauchbare Ergebnisse bekam. Doch dazu bei Gelegenheit in einem Beispiel mehr...
Mein Fazit dabei ist gespalten. Einerseits freue ich mich zu sehen, daß auch die Open-Source Alternativen Innovationen bringen, die man von kommerziellen Anbietern noch nicht gesehen hat. Andererseits steckt vieles davon noch in den Anfängen und man muß sehen, wie sich die Frameworks in den nächsten Monaten entwickeln. Speziell die PHP-Frameworks scheinen alle durchweg unausgereift und leider produktiv noch nicht einsetzbar zu sein. Die Python Frameworks sind deutlich mächtiger und erwachsener, insbesondere Django, das als ernste Konkurrenz zu Ruby on Rails gesehen werden darf. Bei den meisten Webhostern dürfte zwar PHP installiert sein, aber mit Python (oder mod_python) oder Ruby dürfte die Auswahl geringer sein.