Kleine Helfer

Open-Source-Frameworks für moderne Web-Anwendungen

28.06.2011 von Diego Wyllie
Web-Frameworks dienen als robustes Fundament für eigene Anwendungen und beschleunigen die Entwicklung. Wir stellen zehn bewährte Lösungen aus dem Open-Source-Lager vor, auf denen Sie setzen können.

Die Entwicklung Web-basierender Systeme ist heute schwieriger denn je. Denn mit dem Boom von SaaS und Cloud-Computing, sowie mit der rasanten Entwicklung von Smartphones steigen die Anforderungen an Web-Anwendungen immer weiter an. Diese müssen im Backend robust, hochperformant und sicher sein, Arbeitsprozesse müssen in der Anwendungslogik möglichst schnell und flexibel implementiert werden. Beim Front-End reicht es heute nicht mehr aus, die Kompatibilität der Anwendung mit den unterschiedlichen Desktop-Betriebssystemen und -Browsern zu garantieren. Von einer Web-Applikation erwarten Anwender zunehmend, dass sie sich auch auf ihren Smartphones bequem nutzen lässt. Für die Entwickler bedeutet dies oft, einen komplett neuen Client für mobile Endgeräte implementieren zu müssen. Erschwerend kommt hinzu, dass Entwicklungen im schnellen Tempo erfolgen müssen, da es auf dem Markt ein großer Konkurrenzdruck herrscht.

Vor diesem Hintergrund sind Web-Entwickler, heute mehr als je zuvor, auf leistungsfähige Frameworks angewiesen, die ein solides Fundament für ihre Anwendungen bieten und gleichzeitig die Durchführung des Projekts beschleunigen und vereinfachen können. In den folgenden Seiten werden zehn Framework-Lösungen aus dem Open-Source-Bereich aufgeführt, mit denen die gestiegenen Anforderungen an modernen Web-Anwendungen gerecht werden können.

Struts: Klassisches Framework für Java

Struts
Foto: Diego Wyllie

Struts von der Apache Foundation stellt eins der wichtigsten Open Source-Frameworks im Java-Umfeld dar. Nicht zuletzt verdankt Java den Durchbruch als Programmiersprache für Web-basierende Business-Anwendungen mächtigen Server-seitigen Bibliotheken wie diese. Mit Hilfe dieses klassischen Frameworks wird es um einiges leichter, umfangreiche und anspruchsvolle Web-Applikationen auf Basis von JSP (Java Server Pages) und Servlets zu implementieren. Dies liegt in erster Linie an dem sauberen Aufbau nach dem bewährten MVC-Muster (Model-View-Controller) und an den vielen zur Verfügung gestellten Oberflächenelementen und Funktionen.

Hauptziel von Struts ist es, die verschiedenen Systemschichten möglichst voneinander zu trennen. Dazu werden HTTP-Anfragen zunächst durch einen so genannten "Front-Controller” in einem standardisierten Prozess verarbeitet. Dann werden sie an die entsprechenden "Actions” weitergeleitet, die zentrale Komponenten des Frameworks darstellen und als Schnittstelle zwischen der Präsentations- und Steuerungsschicht dienen. Für den Einsatz von Struts sprechen zudem die vielen nützlichen Tools, die die Arbeit mit dem Framework erleichtern. So können verschiedene Plugins für Eclipse beziehungsweise Netbeans etwa den Aufbau einer Struts-Anwendung visualisieren und über Wizards Quellcode und Konfigurationsdateien automatisch generieren.

Tapestry: Komponenten-orientierte Web-Entwicklung

Tapestry
Foto: Diego Wyllie

Wer auf Java und die hohe Qualität und Robustheit der Apache-Produkte nicht verzichten, aber einen etwas moderneren Ansatz verfolgen möchte, dem sei das Framework Tapestry empfohlen. Die Lösung basiert auf einem Komponenten-orientierten Programmiermodell und vereinfacht die Entwicklung Web-basierender Java-Anwendungen durch Best-Practices wie REST Web Services, "Convention over Configuration" and "DRY" (Don't Repeat Yourself). Was das Framework jedoch einzigartig macht, ist der hohe Grad an Wiederverwendbarkeit von GUI-Elementen, die wie Objekte geschaltet, in JARs verpackt und in weiteren Projekten leicht implementiert werden können.

Die Web-Entwicklung mit Tapestry gleicht damit der Arbeit mit Swing. Eine Tapestry-Seite dient dabei als Container und besteht aus drei Dateien: Einer Seitenspezifikation im XML-Format, einem HTML-Template und einer Java-Klasse. In der XML-Datei werden die Attribute und Komponenten definiert, die innerhalb der Seite verwendet werden sollen. während das Layout in HTML spezifiziert wird. Die Java-Klasse enthält schließlich Accessor-Methoden, mit denen sich die Seitenattribute verändern lassen.

Play Framework: Robust wie Java, flexibel wie Ruby on Rails

Play Framework
Foto: Diego Wyllie

Ein weiteres modernes Java-Framework ist Play. Angelehnt an Ruby on Rails verfolgt diese Lösung das Ziel, die Robustheit, hohe Performance und Sicherheit von Java mit der Einfachheit, Flexibilität und Effizienz von Ruby on Rails zu vereinen. So bietet das Framework nicht nur Unterstützung für praxiserprobte Java-Libraries wie Hibernate oder Quartz, sondern übernimmt auch viele der lästigen Routineaufgaben, die mit diesen Produkten verbunden sind. Dem Entwickler bleibt dann mehr Zeit für das wirklich Wichtige übrig - die Implementierung der individuellen Geschäftslogik.

Ein weiterer Vorteil besteht darin, dass Play wenig Serverinfrastruktur voraussetzt. Ein Web-Server, auf dem die eigenen Anwendungen laufen, wird im Standardumfang mitgeliefert. Das Kompilieren und Deployment der Projekte erfolgt im Prinzip auf der Kommandozeile. Wer lieber mit Eclipse oder Netbeans arbeitet, wird aber auch nicht enttäuscht. Durch einfache Befehle lassen sich alle notwendigen Projektdateien erzeugen, die dann in die jeweilige Entwicklungsumgebung importiert werden können. Praktisch: Während der Entwicklung werden Änderungen am Code automatisch erkannt, so dass sich ein neues Deployment erübrigt - ein Reload der Seite genügt. Dies funktioniert übrigens auch in Produktivumgebungen.

Grails: Dynamische Web-Entwicklung mit Java

Grails
Foto: Diego Wyllie

Eine andere Java-Alternative zu Ruby on Rails bietet sich mit Grails an. Beide Frameworks arbeiten nach dem Design-Prinzip "Convention over Configuration", das besagt, dass solange sich die Entwickler an üblichen Konventionen halten, diese nicht explizit konfiguriert werden müssen. Dadurch wird die Konfiguration der einzelnen Komponenten sowie der Software als Ganzes deutlich vereinfacht, da die vielen, fehleranfälligen Konfigurationsdateien, die etwa bei Struts oder Tapestry erforderlich sind, wegfallen.

Grails basiert auf dem beliebten Spring-Framework auf und ergänzt es durch die Unterstützung der dynamischen Programmiersprache Groovy, einer Skript-Sprache, die fester Bestandteil der Java-Plattform ist und viele Ähnlichkeiten mit Ruby hat. Somit laufen Grails-Applikationen wie üblich auf der Java Virtual Machine beziehungsweise auf einem Applikations-Server wie Tomcat oder JBoss, können aber aktualisiert werden ohne den Code neu kompilieren zu müssen. Denn bei der Arbeit mit Groovy wird der Code erst zur Laufzeit dynamisch ermittelt.

Django: Python-Alternative zu Ruby on Rails

Django
Foto: Diego Wyllie

Von Ruby on Rails inspiriert ist auch das Python-Framework Django. Dieses ist wie üblich nach dem MVC-Muster aufgebaut und folgt strikt dem DRY-Prinzip, das besagt, dass Redundanzen im Code vermieden werden sollen. Entsprechend zeichnet sich Django durch einen hohen Automatisierungsgrad aus. So können sich Entwickler zum Beispiel die mühsame und nicht sonderlich kreative Arbeit ersparen, Benutzerschnittstellen zur Datenverwaltung selbst zu implementieren. Das Framework erledigt dies selbst, in dem es Administrationsoberflächen für jedes Objekt im Datenmodell automatisch generiert. Dabei werden im Handumdrehen HTML-Formulare kreiert, mit denen die Daten manipuliert werden können, inklusive Buttons zum Speichern, Aktualisieren oder Löschen. Solche Komponenten können selbstverständlich nach eigenen Bedürfnissen angepasst und erweitert werden. Datenmodelle lassen sich wiederum komplett in Python definieren. Dazu erhalten Entwickler Zugriff auf eine dynamische Datenbank-API, die ein eigenes Objektrelationales Mapping (ORM) implementiert, ähnlich wie die unter Java-Entwicklern beliebte Hibernate-Lösung.

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.

Cappuccino: Mac-Anwendungen fürs Web

Cappuccino
Foto: Diego Wyllie

Ein weniger bekanntes, aber sehr interessantes Web-Framework ist Cappuccino. Die jungen Entwickler hinter dieser vielversprechenden Lösung sind recht ehrgeizig: Ein Web-Framework, bei dem man keinen Html-Code schreiben und sich mit dem DOM (Document Object Model) nicht auseinandersetzen muss, ist allein schon ein recht mutiger Ansatz. Dazu kommt aber noch eine selbst entwickelte Programmiersprache, Objective-J, die das Beste aus zwei völlig unterschiedlichen Welten vereinen soll: Die Einfachheit von JavaScript und die Mächtigkeit der Objektorientierten Mac-Sprache Objective-C.

Das Ziel ist, die Qualität und Benutzerfreundlichkeit, durch die sich Mac-Anwendungen auf dem Desktop auszeichnen, in den Browser zu bringen. Dass dies möglich ist, hat bereits Apple mit seinen eigenen Web-Anwendungen gezeigt - so zum Beispiel mit MobileMe. Die Lösung bietet Drag & Drop, Rückgängigmachen, Copy & Paste, Kontextmenüs, innere Anwendungsfenster und weitere Funktionen, die die Bedienung von Desktop-Anwendungen so bequem machen. All das kann Cappuccino auch. So stellt es Web-Entwicklern diese und weitere Features wie beispielsweise Ajax-Unterstützung, Cross-Browser-Kompatibilität und eine leistungsfähige Grafik-Engine Out-of-the-Box zur Verfügung. Wie die Online-Präsentationssoftware 280 Slides eindrucksvoll zeigt, kann man mit diesem jungen Framework das Look & Feel von Mac-Anwendungen bis ins kleinste Detail im Web nachmachen.

Google Web Toolkit: Websites aus Java-Code

Entwickler, die auch im Front-End auf Java setzen möchten, finden in dem Google Web Toolkit, kurz GWT, ein vielversprechendes Framework, das es ihnen ermöglicht, dynamische und interaktive Web-Clients komplett Server-seitig zu realisieren. Der Clou: Aus Java-Klassen generiert ein integrierter Compiler den entsprechenden XHTML und Javascript-Code für die Applikationsseiten automatisch.

Google Web Toolkit
Foto: Diego Wyllie

Ein wesentlicher Vorteil von GWT besteht darin, dass die mitgelieferten Komponenten die fehleranfällige und mühsame Aufgabe übernehmen, die Unterschiede und Besonderheiten der unterschiedlichen Browser zu analysieren und entsprechend angepasstes Javascript zu schreiben. Beim Debugging des Web-Clients ergeben sich sogar ganz neue Möglichkeiten. So lassen sich zur Laufzeit sämtliche Ajax-Komponenten und User-Events bequem mit dem funktionsreichen Java-Debugger untersuchen. Abgerundet wird Googles Lösung mit einem eigenen XML-Parser, Internationalisierungs-Unterstützung, einer RPC-Schnittstelle (Remote Procedure Calls) sowie einem Widget-Paket zur Gestaltung der grafischen Benutzeroberflächen.

Phonegap: Web-Apps nativ auf jedem Smartphone

Phonegap
Foto: Diego Wyllie

Immer mehr Web-Anwendungen bieten ein spezielles Front-End für mobile Endgeräte. Und auf Basis von Web-Technologien lassen sich wiederum selbst komplexe Anwendungen für Smartphones realisieren. Insofern überrascht es nicht, dass mit dem Boom von iPhone, Android und Co. bereits einige tolle Frameworks entstanden sind, die die Entwicklung mobiler Web-Lösungen und -Apps vereinfachen. Dazu zählt unter anderem Phonegap. Damit können Web-Entwickler ihre Anwendungen wie gewohnt mit Html, CSS und Javascript schreiben und dann ohne großen Aufwand auf die wichtigsten mobilen Plattformen nativ deployen. Für iOS, Android, Windows Mobile und Blackberry stellt die Lösung so genannte "PhoneGap-Wrapper” bereit, die aus dem eigenen Web-Programm jeweils eine native Version für die verschiedenen Zielplattformen erzeugen. Dadurch lassen sich Phonegap-Anwendungen auch in Apples App-Store stellen, wo eigentlich nur Software erlaubt ist, die auf iOS und Objective-C basiert.

Ferner bietet das Framework eine einheitliche Javascript-API, die viele Programmierschnittstellen der nativen SDKs für die unterschiedlichen Smartphones abkapselt. Dadurch werden Entwickler in die Lage versetzt, mit Hilfe einfacher Skripte auf Hardware-Komponenten zugreifen zu können, so zum Beispiel auf die eigebaute Kamera, das GPS-System oder die Beschleunigungssensoren.

Titanium Mobile: Native Anwendungen für iPhone und Android

Titanium Mobile
Foto: Diego Wyllie

Als Alternative zu Phonegap können Entwickler auf Titanium Mobile von Appcelerator zurückgreifen. Hier werden die nativen APIs der mobilen Betriebssysteme iOS und Android in einer einheitlichen Abstraktionsschicht gekapselt. Programmiert wird hauptsächlich mit JavaScript, Html und CSS - der Einsatz von PHP, Ruby und Python ist optional auch möglich. Der große Vorteil von Titanium besteht darin, dass Entwickler ihre Applikation nur einmal schreiben müssen. Das Framework interpretiert den Quellcode auf der jeweiligen Plattform und delegiert die Funktionsaufrufe an Module, die sie nativ umsetzen. Die Entwicklungszeit kann dadurch deutlich reduziert werden.

Darüber hinaus stellt Titanium über 100 native UI-Elemente zur Verfügung und erlaubt selbst komplexe 2D- und 3D-Animationen. Zum Standard-Funktionsumfang gehören zudem unter anderem SQLite-Datenbanken und Zugang zum internen File-System, Html5- und CSS3-Support, Multimedia-Module für die Wiedergabe von Audio und Video, sowie vorgefertigte Soap- und RESTful-Komponenten, die für die schnelle Implementierung von Web-Services eingesetzt werden können.

Sencha Touch: Modernes HTML5-Framework für Mobile

Sencha Touch
Foto: Diego Wyllie

Wer mit Hilfe moderner Web-Technologien und -Tools seine Anwendungen auf Smartphones bringen will, der sollte einen Blick auf Sencha Touch werfen. Die Lösung basiert vollständig auf HTML5, Javascript und CSS3 und wartet mit einer einfachen Verwaltung für Touch-Ereignisse sowie einer umfassenden GUI-Bibliothek auf. Anders als Phonegap und Titanium Mobile werden Sencha-Anwendungen allerdings nicht in nativen Code übersetzt, sondern werden im Browser ausgeführt. Mit Ausnahme von Icons verzichtet die Library weitgehend auf Bilder und nutzt CSS3-Stylesheets zur graphischen Gestaltung der Benutzeroberflächen. Animationen lassen sich mit Hilfe von so genannten "CSS-Transitions" realisieren. Zudem macht das Framework von neuen HTML5-Funktionen Gebrauch, um die Entwicklung von Offline-Applikationen zu ermöglichen. Dabei können Anwendungsressourcen lokal auf dem Gerät gespeichert werden, so dass die Anwendung auch ohne Internetverbindung nutzbar bleibt.

Offiziell unterstützt werden derzeit die mobilen Betriebssysteme von Apple und Google. Die Library setzt jedoch ausschließlich auf moderne Web-Standards. Das heißt, dass Anwendungen, die auf dem Framework basieren, auf jedem mobilen Browser laufen sollten, der diese Standards unterstützt. (sh)