PHP, Python, Ruby, Java

Web-Programmiersprachen im Vergleich

11.08.2011 von Bernhard Steppan  
Wer Web-Anwendungen entwickeln will, braucht die richtige Werkzeugumgebung. Wir haben die beliebten Skriptsprachen PHP, Python und Ruby sowie die Compiler-Sprache Java verglichen.
Der Markt für Web-Entwicklungs-Software ist relativ komplex.
Foto: Fotolia, alphaspirit

Um die richtige Technik für die Entwicklung von Web-Anwendungen zu finden, gilt es zunächst, einen relativ unübersichtlichen Markt zu durchschauen: Das Spektrum reicht von diversen Skriptsprachen über Microsofts .NET bis hin zu Sprachen für die Java-Plattform. Auch Wettbewerbe wie der Plat_Forms Context helfen nur bedingt bei der individuellen Auswahl, können diese Vergleiche doch weder die spezifischen Gegebenheiten in einer Firma berücksichtigen noch eine individuelle Gewichtung ersetzen.

Skriptsprachen stehen in dem Ruf, die Web-Entwicklung zu beflügeln, weshalb deren Verfechter Java für träge und umständlich halten. Dieser Ruf von Java rührt aus den Anfangsjahren, als selbst die Entwicklung einer einfachen Web-Anwendung nach der Maxime "Run once, test anywhere" verlief. Schon mit der zweiten Java-Generation und der Trennung von Logik und Darstellung begann Java zunehmend auch für Web-Designer interessant zu werden. Moderne Frameworks wie JavaServer Faces, Google Web Toolkit oder Apache Wicket verringerten den Abstand zu agilen Skriptsprachen weiter.

Java

Java-Anwendungen sind geradezu beliebig erweiterbar, was sich zunächst einmal wie ein großes Plus anhört - aber weniger wäre manchmal mehr. Einsteiger drohen in der Flut der Java-Frameworks zu versinken. Für den Profi bietet Java für jede Aufgabe eine passende, gute Lösung. Die Dokumentation der Bibliotheken ist meistens exzellent, die Anzahl der professionellen Buchveröffentlichungen enorm hoch.

Java gehört zu den am besten lesbaren Programmiersprachen. Durch die objektorientierte Programmierung mit der sehr guten Modularisierung ist es leicht, wartungsfreundliche Web-Anwendungen zu entwickeln. Ob das in der Praxis auch gelingt, hängt wie bei den anderen hier vorgestellten Techniken stark von der Ausbildung der Entwickler im guten Design ab. Die leichte Erweiterbarkeit von Java-Anwendungen führt bei unreflektiertem Einsatz schnell zu extrem komplexen Programmen mit unangemessen hohen Wartungsaufwänden.

Laut W3Tech-Analyse steht PHP an erster Stelle unter den für Websites verwendeten Server-seitigen Programmierspachen.
Foto: W3Tech

Java wird immer mit Robustheit gleichgesetzt, unter anderem, weil es eine Compiler-Sprache ist, wegen der bekannten Typsicherheit, des Exception-Handling-Konzepts und der ausgereiften Laufzeitumgebungen. Trotzdem bleibt festzuhalten, dass die genannten Konzepte für Java-Web-Oberflächen nur bedingt greifen. Präsentation beziehungsweise Steuerung ist bei Java-Web-Anwendungen unter Umständen weit weniger robust als der klassische Java-Code. Je nach Version der verwendeten Web-Frameworks und dem verwendeten Technik-Mix (Javascript) kann die Steuerung und Präsentation einer Java-Anwendung durchaus Probleme bereiten. Der Testaufwand ist nicht zu unterschätzen.

Clocking IT
Als umfassende Projekt-Management-Lösung hat sich "Clocking IT" vor allem unter Softwareentwicklern einen Namen gemacht.
HeaderDoc
Mit Hilfe von "HeaderDoc" können Entwickler Programmcode auf einheitliche und professionelle Weise dokumentieren.
UDID Tool
Mit dem kostenlosen "UDID Tool" können iOS-Entwickler die Identifikationsnummer eines iPhone, iPod Touch oder iPad einfach her-ausfinden.
Pastebin
Mit dem Online-Service "Pastebin" lassen sich beliebige Codeschnipsel auf bequeme und einfache Weise im Web speichern und mit Freunden und Kollegen über einen Link teilen.
JSON Editor
Das schlanke Datenaustauschformat JSON (Javascript Object Notation) wird als XML-Alternative unter Softwareherstellern immer beliebter. Vor allem wenn es darum geht, Daten mittels Ajax zwischen Client und Server zu übertragen, greifen immer mehr Entwickler auf JSON zurück.
Pieceable Viewer
Der Pieceable Viewer erleichtert die Entwicklung von iPhone-Apps.
Rhodes
Rhodes übersetzt Programmcode für Smartphone-Apps in die jeweilige Zielplattform.
Bitbucket
Der Code-Repository-Dienst "Bitbucket" von Atlassian unterstützt die verteilten Versionskontrollsysteme Git und Mercurial und ist in der Basisversion kostenlos erhältlich - auch für private Projekte.
Cloud9 IDE
Der Online-Dienst "Cloud9 IDE" zählt zu den wenigen Entwicklungsumgebungen, die ausschließlich für die Cloud konzipiert sind und vollständig auf dem Browser laufen. Damit können Entwickler ihre Javascript-Projekte zentral in der Cloud verwalten und auf ihren Code immer und von überall aus zugreifen.
Jo
Mit "Jo" erhalten Entwickler ein interessantes HTML5-Framework, das speziell für die Entwicklung mobiler Apps konzipiert wurde.
Maqetta
Das Entwicklungs-Tool "Maqetta" hat IBM als Antwort auf Flash und Silverlight entwickelt. Das Ziel: die Defizite von Ajax-Umgebungen gegenüber diesen pro-prietären Lösungen ausgleichen.
TextMate
"TextMate" ist ein mächtiger Editor für Mac OS X, der sich mit Funktionen wie Syntaxhervorhebung, Codefaltung, Makros und Shell-Integration in erster Linie an Programmierer richtet.
Grails
Von "Ruby on Rails” inspiriert bringt "Grails” die Flexibilität und Effizienz, die das beliebte Web-2.0-Framework populär gemacht haben, in die Welt der Java-Programmierung.
JavaScriptMVC
"JavaScriptMVC” basiert auf dem erprobten Model-View-Controller-Muster und bietet umfangreiche Unterstützung beim Dokumentieren, Debuggen und Testen von Web-Frontends.
Pixelwindow
Mit "Pixelwindow” können Pixelmaße auf dem Bildschirm ganz einfach ausgemessen werden.
Play-Framework
Mit "Play” stellt sich ein Framework für Web-Anwendungen vor, das die Vorteile von Java als Programmiersprache und Plattform mit der Flexibilität und Effizienz von "Ruby on Rails” vereinen will.
Titanium Mobile
Mit dem quelloffenen Framework "Titanium Mobile” können auch Web-Entwickler ohne Java- oder Objective-C-Kenntnisse native Anwendungen für Android und iPhone implementieren.
Django
Als Python-Gegenstück zum populären Ruby-on-Rails-Framework erfreut sich die quelloffene Web-Lösung "Django” aufgrund ihrer Einfachheit und Flexibilität zunehmender Beliebtheit.
Phonegap
Das freie Framework "Phonegap” wandelt Web-Software in native Applikationen für iOS, Android, Blackberry, WebOS, Symbian und Windows Mobile um.
Textastic
Wer mit seinem iPad Quelltextdateien bearbeiten möchte, ist mit "Textastic 1.0” gut bedient. Das Tool bietet Syntax-Highlighting für alle denkbaren Programmiersprachen.
GTmetrix
Mit "GTmetrix” können Web-Entwickler die Performance ihrer Websites online testen. Die Lösung integriert die erprobten Optimierungs-Tools "Yahoo YSlow” und "Google Page Rank”.
Apache FileUpload
Mit "FileUpload” der Apache Foundation steht Java-Entwicklern eine quelloffene Bibliothek für die unkomplizierte und flexible Implementierung von Datei-Uploads zur Verfügung.
websequencediagrams.com
Unter "websequencediagrams.com" lassen sich UML-Sequenzdiagramme im Nu erstellen und als PDF exportieren.
SQLite Expert
Die minimalistische Open-Source-Datenbank SQLite wird dank HTML5 und Smartphones wie Android und iPhone immer beliebter. Mit dem Freeware-Tool für Windows "SQLite Expert” können Entwickler solche Client-seitigen Datenbanken bequem verwalten.
Simple
Das wenig bekannte, aber mächtige Framework "Simple” erleichtert die Arbeit mit XML-Inhalten in Java-Projekten.
URL Decoder
Mit dem "URL Decoder” können Web-Entwickler Http-Anfragen mit vielen Parametern in einer Übersichtstabelle visualisieren und schnell bearbeiten.
JQuery UI
Mit Hilfe von "JQuery UI”, einem JavaScript-Framework für visuelle Effekte, Animationen und GUI-Widgets, wird es um einiges leichter, modular aufgebaute und flexible Web-Frontends zu erstellen.
MediaElementPlayer
Egal ob Internet Explorer, Firefox, Safari oder Chrome, ob auf dem PC, iPhone, iPad oder Android-Smartphone: Mit dem JavaScript-Framework "MediaElementPlayer" funktioniert HTML5-Video in jedem Browser und auf jedem Gerät.
Browserlab
Mit "Browserlab", einem kostenlosen Online-Dienst von Adobe, können Web-Entwickler schnell überprüfen, wie die verschiedenen Browser ihre Web-Seiten darstellen.
MySQL Workbench
MySQL-Anwender finden in der kostenlosen "MySQL Workbench” viele nützliche Werkzeuge, die die Arbeit mit der beliebten Open-Source-Datenbank erleichtern.
Struts
Die Apache Foundation entwickelt das Web-Framework "Struts”, das von vielen als De-facto-Standard im Bereich Java Enterprise angesehen wird.
Poedit
Bei der Lokalisierung von Software-Anwendungen werden oft Portable-Object-Dateien verwendet. Mit dem kostenlosen Tool "Poedit" lassen sie sich bequem bearbeiten.
Xampp
Ein Apache-Server mit Perl-, PHP- und MySQL-Unterstützung lässt sich nicht so einfach einrichten. Wer eine solche Umgebung lokal auf seinem Rechner braucht, der kann auf "Xampp" zurückgreifen, anstatt alles selber zu installieren.
Scriptaculous
"Scriptaculous" gehört zu den beliebtesten Javascript-Libraries für visuelle Effekte und attraktive Benutzeroberflächen mit Web-2.0-Charakter.
Cyberduck
Der kostenlose "Cyberduck" für Mac OS X bietet alles, was man von einem FTP-Client erwartet. Die vielen Extras für Entwickler und Administratoren sowie die nahtlose Integration in die Mac-Umgebung machen den Unterschied aus.
Sencha Touch
Mit dem neuen, quelloffenen HTML5-Framework "Sencha Touch" lassen sich mobile Web-Anwendungen für iPhone, iPad und Android entwickeln, die den nativen Applikationen Konkurrenz machen.
Prototype
"Prototype" erweitert Javascript um Konzepte der objektorientierten Programmierung und vereinfacht damit die Entwicklung komplexer Web-Anwendungen.
NaturalDocs
Mit "NaturalDocs" lassen sich Quelltextdateien, die in verschiedenen Programmiersprachen geschrieben sind, auf einheitliche und konsistente Weise dokumentieren.
TheGun
Editoren gibt es wie Sand am Meer. Wer jedoch mit großen Log-Files oder sonstigen unhandlichen Textdateien umzugehen hat, der wird sich über "TheGun" freuen.
CruiseControl
Das Build-Automatisierungs-Tool "CruiseControl" vereinfacht das Deployment von Softwareprojekten im Java- und .NET-Umfeld.
Launch4J
Das leichtgewichtige Open-Source-Tool "Launch4J" erlaubt es Java-Entwicklern, ihre Anwendungen in native und ausführbare Windows-Dateien umzuwandeln.
YUI Library
Mit der Bibliothek "Yahoo User Interface" (YUI) steht Web-Entwicklern ein ganzheitliches Javascript-Framework zur Verfügung, das aufeinander abgestimmte Funktionen, Komponenten und Tools bietet.
Quartz
Mit dem quelloffenen Framework "Quartz Enterprise Job Scheduler" lassen sich zeitgesteuerte Aufgaben effizient in Java-Anwendungen implementieren.
Snippely
"Snippely" ist ein kleiner Helfer, der sich auf eine einzige Aufgabe fokussiert: Code-Schnipsel und Notizen möglichst einfach zu verwalten.
JFreeChart
Mit der Open-Source-Bibliothek "JFreeChart" können Java-Entwickler interaktive und dynamische Diagramme leicht in Desktop- oder Web-Anwendungen implementieren.
Sequel Pro
"Sequel Pro" ist eine kostenlose und native Anwendung, die die Verwaltung von MySQL-Datenbanken auf dem Mac deutlich vereinfacht.
Dojo Toolkit
Wer ohne viel Programmieraufwand das Look and Feel von Desktop-Anwendungen im Web nachahmen möchte, wird beim Javascript-Framework "Dojo" fündig.
Bugzilla
Die Mozilla Foundation bietet mit "Bugzilla" ein nützliches Web-Tool zur zentralen Erfassung, Analyse und Verwaltung von Programmfehlern.
Tapestry
Mit "Tapestry" bietet die Apache Foundation ein leistungsfähiges Web-Framework für Java-Anwendungen. Es soll Entwicklern ermöglichen, möglichst viele GUI-Komponenten wiederzuverwenden.
Firebug
Zur Analyse und Optimierung von Web-Seiten hat sich das Firefox-Add-on "Firebug" als Standardwerkzeug für Web-Entwickler etabliert.
Google Web Toolkit
Mit dem "Google Web Toolkit" (GWT) steht Java-Entwicklern ein Werkzeug zur Verfügung, das die Erstellung moderner Web-2.0-Anwendungen vollständig mit Server-seitigen Technologien gestattet. Der Clou: Ein integrierter Compiler generiert automatisch Ajax-Sites aus Java-Klassen.
Adobe Spry
Mit "Spry" stellt Adobe ein kostenloses Ajax-Framework bereit, das besonders leicht zu implementieren ist.
JEdit
Mit "JEdit" steht Entwicklern ein kostenloser und plattformunabhängiger Text-Editor zur Verfügung, der Syntax-Hervorhebung für mehr als 130 Programmiersprachen bietet. Durch Plug-Ins kann der Nutzer das Tool erweitern.
Superb Batch Renamer
Mit 1-4a Rename (Superb Batch Renamer) ist dem Autor ein großer Wurf gelungen. Das Tool besticht durch klaren Aufbau, gigantischen Funktionsumfang, exzellente Performance, einen Preview-Screen und den Experten-Modus. Ein "Must-have". <br /><br /> <a href="http://www.computerwoche.de/software/office-collaboration/1911042/" target="_blank">...zum Testbericht</a>
GSpot
GSpot ist ein sehr nützliches Werkzeug für die Codec-Analyse unbekannter Media-Dateien. <br /><br /> <a href="http://www.computerwoche.de/software/office-collaboration/1911432/" target="_blank">...zum Testbericht</a>
Super
Super ist eines der leistungsstärksten Tools für Transcodierungen aller Art. Während der weit verbreitete VLC Media Player Files jeglichen Formats abspielen kann, ergänzt Super diesen noch um viele weitere sinnvolle Funktionen wie Muxen/Demuxen und Datei-Zusammenführung. Eine "Engine" wie Super, die automatisch das Eingangsformat erkennt und on the fly auf ein definiertes Zielformat konvertiert, wünscht man sich auf jedem Multimedia-Player für zu Hause. <br /><br /> <a href="http://www.computerwoche.de/software/office-collaboration/1910780/" target="_blank">...zum Testbericht</a>
CPick
CPick ist ein sehr schönes und nützliches Werkzeug für den Umgang mit Bildschirmgrafiken aller Art. Die Lupe erlaubt ein präzises Positionieren und den sofortigen Abruf der Farbinformationen. <br /><br /> <a href="http://www.computerwoche.de/software/office-collaboration/1910065/" target="_blank">...zum Testbericht</a>
XML Marker
XML Marker erlaubt die Analyse auch von großen und komplexen XML-Strukturen. <br /><br /> <a href="http://www.computerwoche.de/software/software-infrastruktur/1908141/" target="_blank">...zum Testbericht</a>
UNetbootin
Wer für bootfähige Medien umständliches CD-Brennen vermeiden will, findet in "UNetbootin" ein komfortables Werkzeug. <br /><br /> <a href="http://www.computerwoche.de/software/software-infrastruktur/1907495/" target="_blank">...zum Testbericht</a>
Xenu
Xenu arbeitet zuverlässig und schnell und ist das Schweizer Messer beim Aufspüren von Verlinkungsproblemen. <br /><br /> <a href="http://www.computerwoche.de/software/software-infrastruktur/1907252/" target="_blank">...zum Testbericht</a>
JasperReports
Gerade die Kombination aus dem komfortablen Editor iReport und JasperReports als Reporting-Engine kann sich als echte Alternative zu vielen am Markt erhältlichen kommerziellen Produkten sehen lassen. <br /><br /> <a href="http://www.computerwoche.de/software/bi-ecm/1904666/" target="_blank">...zum Testbericht</a>
IZArc
IZArc ist kostenlos und nicht so bekannt wie ezwa 7-Zip. Wer auf der Suche nach einem leistungsfähigen All-in-one-Packer ist, sollte sich IZArc anschauen. <br /><br /> <a href="http://www.computerwoche.de/software/office-collaboration/1906417/" target="_blank">...zum Testbericht</a>
Plato Free Edition
Kostenlose UML-Tools haben oft irgendeine Einschränkung. Die "Plato Free Edition" ist hier eine interessante Alternative. <br /><br /> <a href="http://www.computerwoche.de/software/soa-bpm/1900060/index.html" target="_blank">...zum Testbericht</a>
Xtext
Die Modellierung mit domänenspezifischen Sprachen reduziert ein Projekt auf das spezifische Problem und trägt damit zur besseren Kommunikation bei. Xtext ist hierfür ein einfaches, aber effizientes Tool. <br /><br /> <a href="http://www.computerwoche.de/software/software-infrastruktur/1897203/index.html" target="_blank">...zum Testbericht</a>
JMeter fühlt Web-Applications auf den Zahn
JMeter simuliert Lasttests für Anwendungen und hilft dabei, Engpässe oder Probleme frühzeitig zu erkennen.
TextUML - einfach per Text modellieren
Trotz mancher Einschränkungen bietet TextUML einen pragmatischen Ansatz, der den Umgang mit der UML sehr erleichtert.
Automatische Tests für Web-Applikationen
Das Firefox-Plug-in "Selenium" zeichnet Testabläufe auf, die modifiziert und erneut gestartet werden können.

Gutes Design, gute Performance

Java-Code haftet auch der Ruf an, langsam zu sein. Das liegt an vielen Dingen, manche davon sind Missverständnisse, andere wiederum wahr, so etwa die schwache Performance von EJB 1.0. Tatsache ist, dass Java-Programme bei schlechtem Design sehr langsam sein können. Bei gutem Design sind sie hingegen heute weit schneller als alle anderen hier genannten Techniken und liegen fast im Bereich von nativen C-Programmen.

Die Java-Laufzeitumgebungen von einfachen Servern wie Tomcat und Jetty bis hin zu Enterprise-Application-Servern wie IBM WebSphere und Oracle WebLogic garantieren bei richtigem Design eine erstklassige Performance, sehr gute Überwachbarkeit sowie eine Skalierung, die für die größten Web-Anwendungen ausreicht. Selten findet man jedoch Experten, welche die Vielfalt des Marktes beherrschen, das Tuning von Anwendungen verstehen und darüber hinaus wissen, wann man welche Umgebung unter bestimmten Voraussetzungen einsetzt. So können zum Beispiel die Kosten für das Hos-ting und die Lizenzen einer Java-Web-Anwendung ähnlich gering ausfallen wie beim Einsatz von PHP oder sehr teuer sein.

Hervorragende Tools-Landschaft

Eclipse und Netbeans sind in Java implementierte Entwicklungswerkzeuge, die nicht nur beweisen, dass man in Java hervorragende Programme entwickeln kann. Die IDEs gehören zudem auch zu den besten überhaupt erhältlichen Tools. Gerade diese ausgereiften quelloffenen Entwicklungsumgebungen und die Möglichkeiten der Fehlersuche sowie der nahtlosen Einbindung von Fremdwerkzeugen wie Build-, Test- und UML-Tools ist eine der großen Stärken von Java.

Unterm Strich ist festzuhalten, dass man relativ viel Know-how benötigt, um hochklassige Java-Web-Anwendungen zu schreiben. Ist dieses Wissen vorhanden, muss sich die Leistung einer solchen Anwendung hinter keiner verstecken, die mit einer anderen Technik entwickelt wurde.

PHP

PHP ist ungefähr zur selben Zeit wie Java entstanden und heute unangefochten die Nummer eins unter den Techniken für Web-Anwendungen. Gerade in der Lamp-Kombination (Linux, Apache, MySQL und PHP) kommt die Skriptsprache auf mehr Web-Servern zum Einsatz als alle anderen hier genannten Verfahren. Das liegt sicher zu einem Großteil an dem geringen Entwicklungsaufwand für PHP-Anwendungen, zum Teil aber auch an anderen Merkmalen.

Der Programming Community Index von Tiobe Software listet die Popularität von Programmiersprachen anhand der im jeweiligen Kontext gemessenen Aktivitäten in Suchmaschinen wie Google, Bing und Yahoo.
Foto: Tiobe Software

Für viele Entwickler bietet PHP genau das, was sie brauchen: ein performantes Datenbanksystem, einen ebenfalls performanten Web-Server und ein stabiles, kos-tenfreies Betriebssystem. Es gibt zwar mehrere Alternativen zum genannten Rüstzeug einer PHP-Anwendung, aber Entwickler werden fragen: wozu das? Das bedeutet nicht, dass PHP inflexibel ist. Es lässt sich um viele nützliche Bibliotheken erweitern, so zum Beispiel um eine Datenbank-Abstraktionsschicht mit PDO, um diverse Widget-Sammlungen, oder man verwendet gleich eine Kombination von Frameworks à la Symfony.

Viele Lücken sind geschlossen

Die Wartungsfreundlichkeit eines Programms geht mit der Unterstützung von gutem Design und guter Lesbarkeit einher. PHP wurde erst spät um heute selbstverständliche Konzepte wie objektorientierte Programmierung, Namespaces und Datenbankabstraktion erweitert. Solche und andere Lücken wurden mittlerweile immer mehr geschlossen. Der Tribut der späten Entwicklung ist, dass PHP zeitweise wild gewachsen ist, was die Lesbarkeit teilweise erschwert und zu uneinheitlichen Programmen führen kann.

PHP bildet in vielen Vergleichen das Schlusslicht in puncto Robustheit. Die schwache Typisierung der Sprache ist Teil des Konzepts, aber eben auch Fehlerquelle. Es ist ein prinzipieller Unterschied, ob Fehler zur Laufzeit oder zur Entwicklungszeit auftreten und gefunden werden können. Tatsache ist, das PHP ein Auffinden von Fehlern zur Entwicklungszeit nicht so gut unterstützt, wie es beispielsweise strikt typisierte Compiler-Sprachen erlauben.

Performance-Unterschiede

PHP-Programme werden im Gegensatz zu Java ohne Umwege interpretiert. Bei reinen Benchmark-Vergleichen schneidet die Technologie oftmals nicht so gut ab wie die Compiler-Sprache Java. Man sollte diese Benchmark-Ergebnisse zwar nicht auf die Goldwaage legen, denn je nach Architektur der Anwendung spielen Datenbankzugriff, schnelle Web-Seitendarstellung und die Anbindung von Fremdsystemen unter Umständen eine weit größere Rolle. Aber ein gewisser systembedingter Unterschied zu kompilierten Sprachen ist dennoch nicht von der Hand zu weisen.

Verglichen mit Java wird die Skalierbarkeit von PHP unter Fachleuten schlechter beurteilt. Bei diesem Vergleich sollte man allerdings fair bleiben und sagen, dass Java-Enterprise-Application-Server mit ihren verschiedenen Möglichkeiten des Load-Balancings preislich in einer vollkommen anderen Liga spielen. Das gilt auch für das System-Monitoring, das mit der Laufzeitumgebung einhergeht. Hier hat PHP dem ausgefeilten Konzept der Java Management Extensions (JMX) wenig entgegenzusetzen.

Ausreichende Tool-Unterstützung

Die Tool-Unterstützung wurde in den letzten Jahren stark ausgebaut. So kann der PHP-Entwickler nicht nur mit proprietären Umgebungen wie Zend Studio oder klassischen Web-Tools wie Dreamweaver oder Expression Web arbeiten. Auch die beiden quelloffenen Java-Entwicklungsumgebungen Netbeans und Eclipse sowie Eclipse-Derivate wie Aptana unterstützen mittlerweile PHP. Nicht zuletzt gibt es inzwischen sogar UML-Tools, die PHP-Code einlesen und erzeugen können.

Als Fazit zu PHP lässt sich sagen: Wer eine leicht erlernbare Sprache, eine nahezu kostenfreie Laufzeitumgebung sowie viele Web-Hosting-Anbote auf PHP-Basis sucht, liegt bei PHP richtig. Die vielen Web-CMS auf PHP-Basis zeigen, welchen Schwerpunkt die Sprache hat. Bei großen, unternehmenskritischen Web-Seiten mit der Anbindung von verschiedenen Fremdsystemen spielt PHP eher eine untergeordnete Rolle.

Tipps für die erfolgreiche Website
Unternehmen sollten im Design ihrer Corporate Website elementare Erfolgsregeln beachten. Welche, finden Sie hier:
Regel 1:
Story Telling - auch jenseits der aktuellen Fakten hat jedes Unternehmen interessante Geschichten zu erzählen.
Regel 2:
Texte und Bilder sollten Online-gerecht aufbereitet sein.
Regel 3:
Multimedia-Elemente machen die Seite attraktiv.
Regel 4:
Dialogorientierte Websites punkten.
Regel 5:
Das Serviceangebot muss zielgruppengerecht sein.
Regel 7:
Gängige Begriffe sind verständlicher.
Regel 8:
Die Gestaltung sollte das Corporate Design widerspiegeln und sich an Online-Styleguides orientieren.
Regel 9:
Die Zielgruppenansprache muss einheitlich sein.
Regel 10:
Eine barrierearme Programmierung erweitert das Kundenspektrum.
Regel 11:
Suchmaschinenoptimierte Seiten werden schneller gefunden.

Python

Python ist bedeutend älter als Java, aber ebenso universell ausgelegt. Die elegante objektorientierte Skriptsprache ist von Anfang an auf leichte Lesbarkeit und im Gegensatz zu Java auf syntaktische Ähnlichkeit zu Vorläufersprachen ausgelegt worden. Python ist leicht zu erlernen, besitzt wohldurchdachte, integrierte Datentypen und verwirrt nicht mit extrem vielen Frameworks und unterschiedlichen Konzepten.

Im Bereich der Erweiterbarkeit und Flexibilität kann sich Python sehr gut mit anderen Sprachen dieses Vergleichs messen. Die Anzahl der Standardbibliotheken ist gerade für die Web-Programmierung mehr als ausreichend. Mit Django gibt es zum Beispiel ein Framework mit Datenbankabstraktion und Unterstützung für Internatio-nalisierung. Die Python-Implementierung Jython geht noch einen Schritt weiter und schlägt eine Brücke von der eleganten Programmiersprache zur leichten Erweiterbarkeit der Java-Plattform.

Durchdachtes Sprachkonzept

Python-Programme gelten als sehr wartungsfreundlich. Das liegt nicht nur an der Syntax, sondern auch an dem von Anbeginn durchdachten Sprachkonzept. Gleiches gilt für die Robustheit von Programmen, denn Exception Handling war von Beginn an Bestandteil der Sprache. Wie bei allen Skriptsprachen ist die Ausführungsgeschwindigkeit nicht mit der von Compiler-Sprachen zu vergleichen. Python-Entwickler bewerten jedoch die Ausführungsgeschwindigkeit für Web-Anwendungen aufgrund der langsamen Verbindung zwischen Server und Client im WWW als eher zweitrangig. Das Prinzip ist, lieber besser lesbaren Code zu erzwingen und Performance-hungrige Anwendungsteile separat zu optimieren oder nativ zu implementieren.

Fragliche Skalierbarkeit

Es gibt nur wenige Erfahrungen und Berichte über die Skalierbarkeit von größeren Python-Anwendungen, so dass man hier keine zuverlässige Aussage treffen kann. Die Verwendung von Python für durchaus größere Websites wie Youtube mag allerdings ein Indiz sein, dass sich Python-Anwendungen durchaus skalieren lassen. Anders sieht es mit dem Monitoring aus, wo man Konzepte wie JMX vermisst.

Bei der Tool-Unterstützung liegt Python mit PHP etwa gleichauf. Die gängigen Java-IDEs verfügen zum Beispiel über Python-Plug-ins. Anfang dieses Jahres wurde sogar eine Unterstützung für Microsofts Visual Studio angekündigt.

Fazit: Python ist eine moderne, leicht lesbare, objektorientierte Skriptsprache. Sie vereint die einfache Erlernbarkeit von PHP mit vielen Vorzügen von Java. Es ist jedoch nicht so leicht, passende Entwickler für ein Python-Projekt zu finen, was den Einsatz der Sprache im Vergleich zu Java und PHP erschwert.

1. Adobe Spry
Spry ist ein leistungsfähiges Ajax-Framework, das die Entwicklung moderner Web 2.0-Anwendungen beschleunigt und vereinfacht. Selbst Designer mit geringen Javascript-Kenntnissen können damit dynamische und interaktive Seiten erstellen.
2. Dojo Toolkit
Mit Dojo lassen sich Desktop-typische Funktionen wie Drag & Drop und Kontextmenüs leicht in Web-Anwendungen implementieren. Das Framework überzeugt auch durch seine hohe Performance und Cross-Browser-Kompatibilität.
3. JQquery UI
JQuery UI liefert ein flexibles und ausgereiftes Framework, das sich in der Praxis bewährt hat. Durch Konzepte wie Modularisierung und Wiederverwendbarkeit macht es die Entwicklung komplexer Web-Frontends deutlich effizienter.
4. YUI Library
YUI dient als solides Fundament für anspruchsvolle Web 2.0-Clients. Bei der Frage nach dem richtigen Javascript-Framework für eigene Projekte sollte es unbedingt in Betracht gezogen werden.
5. Glow
Neben den Standardfunktionen, die bei keinem Javascript-Framework fehlen dürften, bietet Glow tolle UI-Widgets, eine exzellente Dokumentation, die den Einstieg erleichtert, sowie professionelle Performance.
6. Prototype
Bei komplexeren Web-Anwendungen ermöglicht Prototype Entwicklern, die bewährten Konzepte der Objekt-Orientierung auch auf der Client-Seite anzuwenden. Dass namhafte Unternehmen wie Apple und Twitter das Framework einsetzen, spricht für die hohe Robustheit und Leistungsfähigkeit der Lösung.
7. Scriptaculous
Scriptaculous überzeugt durch ein umfangreiches Feature-Set, die einfache Handhabung, sowie eine ausgezeichnete Online-Dokumentation mit vielen Code-Beispielen, die den Einstieg erleichtern.
8. MooTools
MooTools gehört zu den wichtigsten Frameworks für fortgeschrittene JavaScript-Entwickler. Dass es vom Unternehmen wie Chrysler, Ferrari, MTV Deutschland oder die Commerzbank eingesetzt wird, zeigt, dass es sich hier nicht um irgendwelches Framework handelt, sondern um eine ausgereifte und professionelle Lösung.
9. JavaScript MVC
JavaScriptMVC bringt Software-Engineering-Konzepte und -Tools der Enterprise-Klasse in die Welt der JavaScript-Programmierung. Das Framework eignet sich in erster Linie für mittelgroße und große Web-Projekte, bei denen Modularität und Wiederverwendbarkeit groß geschrieben werden.
10. Cufon
Typographie stellt ein zentrales Gestaltungselement im Web-Design dar. Dank Cufón müssen Designer keine Kompromisse mehr eingehen und können jede noch so exotische Font in ihren Web-Projekten verwenden, ohne dabei auf Flash oder externe Bildressourcen zurückgreifen zu müssen.

Ruby

Die Skriptsprache Ruby (Rubin) ist ungefähr genauso alt wie Java und stammt von dem japanischen Entwickler Yukihiro Matsumoto. Genauso wie bei Java war Auslöser der Neuentwicklung die Unzufriedenheit mit traditionellen Sprachen. Ruby ist quelloffen, plattformunabhängig und vollständig objektorientiert. Im Gegensatz zu Java gibt es also keine primitiven Datentypen und die damit verbundenen, notwendigen Wrapper-Klassen und häufig notwendigen Typwandlungen.

Die Erweiterbarkeit und Flexibilität von Ruby-Anwendungen ist exzellent. Es gibt inzwischen viele Bibliotheken, deren bedeutendste das Web-Application-Framework "Ruby on Rails" ist. Die Ruby-Implementierung JRuby basiert auf der Java-Laufzeitumgebung und verbindet die neue Skriptwelt mit der Enterprise-Architektur von Java-Anwendungen.

Nicht die Schnellste

Die Typisierung der Skriptsprache Ruby kann nicht so wie in Java auf Compiler-Prüfung ausgelegt sein, sondern funktioniert dynamisch, wobei Variablen nicht deklariert werden müssen. Was die einen als bestechenden Vorteil empfinden, kann sich bei Laufzeitfehlern als mangelnde Robustheit äußern. Es gibt Untersuchungen, die zeigen, dass Ruby die langsamste Sprache dieses Vergleichs ist. Wie bei Python bereits erwähnt, muss sich das bei einer Web-Anwendung nicht unbedingt so stark auswirken. Tatsache ist jedoch, dass sich die genannten Konzepte wie Interpreter und dynamische Typisierung im Laufzeitverhalten niederschlagen.

Kritisches in Java auslagern

Was die Skalierbarkeit von Ruby-Anwendungen angeht, gibt es keine guten Vergleiche und vor allem wenig Anwenderberichte. Es ist aber möglich, der Frage aus dem Weg zu gehen, indem man JRuby einsetzt und damit die Möglichkeit hat, den kritischen Teil des Codes in Java auszulagern. Monitoring ist wie bei den anderen Skriptsprachen zwar möglich, aber ein mit Java vergleichbares Konzept sucht man bisher vergeblich.

Als moderne Programmiersprache stehen die Lesbarkeit des Programms und die konsequente Objektorientierung im Vordergrund. Die Modularisierung und Kapselung (fünf Gültigkeitsbereiche) machen es einfach, wartungsfreundliche Programme zu schreiben.

Die Tool-Unterstützung ist im Allgemeinen nicht so gut ausgeprägt wie bei den anderen Techniken dieses Vergleichs. Dabei hat Ruby von Java-Entwicklungsumgebungen Unterstützung erhalten: Sowohl Netbeans und Eclipse als auch die interessante Eclipse-Web-Entwicklungsumgebung Aptana unterstützen inzwischen Ruby. Als Edelstein unter den Skriptsprachen konzipiert, ist Ruby hierzulande eher ein Exot. Mit Skala und anderen Sprachen, die auf der Java-Laufzeitumgebung basieren, erhält Ruby zudem Konkurrenz. Es bleibt also abzuwarten, ob sich Ruby mehr als eine Nische erobern kann.

Fazit

Mit allen hier genannten Techniken lassen sich heute sehr gute Web-Anwendungen entwickeln. Viel wichtiger als der eine oder andere Pluspunkt im Vergleich ist, dass die Sprache zum Unternehmen, seinen Mitarbeitern, seinem Anwendungsumfeld und seinem Entwicklungsmodell passen muss. Legt man Wert auf saubere Modellierung der Geschäftslogik, die Verwendung von Enterprise-Application-Servern und auf die ausgereifte Einbindung von Legacy-Anwendungen, sollte man Java auf jeden Fall in die engere Wahl einbeziehen, schon allein wegen der überzeugenden Werkzeuge. Liegt der Schwerpunkt eher auf der GUI-Präsentation und der schnellen Entwicklung, sollte man die klassischen Skript-Techniken wie PHP, Python oder Ruby ins Auge fassen. Welcher der letztgenannten man den Vorzug gibt, ist eher eine Geschmacksfrage und bedarf individueller Abwägungen. (ue/sh)

Kurzbewertung

Java

PHP

Python

Ruby

Entwicklungsaufwand

0

++

++

++

Erweiterbarkeit

++

+

+

+

Wartungsfreundlichkeit

+

0

++

++

Robustheit

+

0

+

0

Ausführungsgeschwindigkeit

+

+

0

-

Skalierbarkeit

++

+

0

0

Monitoring

++

0

0

0

Laufzeitumgebung

++

+

+

+

Hosting-Markt

0

++

0

0

Tool-Unterstützung

++

+

0

0

Benötigtes Know-how

0

++

++

++

Personalmarkt

+

++

0

0

Glossar

• Monitoring: Um Web-Anwendungen während der Laufzeit zu überwachen, gibt es unterschiedliche Tools und Verfahren. Java bietet mit den Java Management Extensions (JMX) eines der führenden Konzepte der Branche.

• Robustheit: Eine Web-Anwendung muss eine Vielzahl von Anfragen gleichzeitig beantworten. Bei dieser Aufgabe kann man nicht tolerieren, dass ein Programm des Öfteren hängen bleibt.

• Skalierbarkeit: Kann ein Programm, das für 1000 Benutzer ausgelegt ist, auch 10.000 mit überschaubaren Änderungen verkraften? Wenn dem so ist, ist das Programm skalierbar, lässt sich also an einen wachsenden Ressourcenbedarf anpassen, ohne dass die Performance leidet.

• Widgets: Widgets sind die Bausteine einer grafischen Oberfläche, mit denen der Benutzer das Programm steuern kann, so zum Beispiel über Schaltflächen. Sie werden auch häufig Controls, Beans oder Javabeans genannt.

Vergleichskriterien

Wer Techniken zur Erstellung von Web-Anwendungen vergleicht, muss Schwerpunkte setzen. Der Grund dafür ist, dass es nicht die eine Tool-Umgebung für alle Einsatzbereiche gibt. Die Bandbreite der Web-Anwendungen reicht von monolithischen, schnell zusammengeklickten und kurzlebigen Anwendungen über gut strukturierte, langlebige Programme bis hin zu unternehmenskritischen Anwendungen, bei denen die Kopplung mit Legacy-Systemen eine wichtige Rolle spielt.

Eine Möglichkeit, etwas Orientierung in einen Vergleich zu bringen, ist zum Beispiel, nach der Bedeutung des Oberflächenanteils und der der Geschäftslogik zu unterscheiden. Es gibt Web-Anwendungen mit stark ausgeprägter, komplizierter Geschäftslogik wie Web-Services, die vollkommen ohne Oberfläche auskommen. Das krasse Gegenteil sind Web-Anwendungen ohne viel Geschäftslogik, bei denen der Schwerpunkt weitgehend auf einer ausgefeilten grafischen Oberfläche liegt.

Der Beitrag vergleicht namhafte Web-Entwicklungstechniken anhand der Kriterien Entwicklungsaufwand, Erweiterbarkeit und Flexibilität, Wartungsfreundlichkeit, Robustheit, Ausführungsgeschwindigkeit, Skalierbarkeit, Monitoring, Laufzeitumgebung, Tool-Unterstützung und dem benötigen Know-how.