Web-Technologien: Überblick, Vor- und Nachteile

Werbung
Web-Technologien: Überblick, Vor- und Nachteile,
Entscheidungshilfen
Markus Stiegler
XDEV Software Corp. Deutschland GmbH
Kirchheim-Heimstetten
Einleitung
Wer heutzutage eine Web-Anwendung für den professionellen Einsatz im Unternehmen
entwickeln möchte, hat wie nie zuvor in der Software-Entwicklung die Qual der Wahl.
Mittlerweile existiert ein ganzer Dschungel an Skriptsprachen, Frameworks und APIs, der an
allen Ecken und Enden nahezu unkontrolliert weiter wuchert. Fachzeitschriften zaubern
immer wieder neue Web-Frameworks aus dem Hut, um ihren Lesern etwas Neues bieten zu
können. Zahlreiche Lösungen bauen aufeinander auf, ergänzen sich oder funktionieren fast
identisch, während sich andere komplett unterscheiden. Die Entwicklung von Frameworks
schreitet sogar so rasant voran, dass die Hersteller kaum noch mit ihrer eigenen
Dokumentation, geschweige denn mit Übersetzungen hinterher kommen. Häufig sind
aufwändige Recherchen notwendig und die Kenntnis anderer Technologien sogar
Grundvoraussetzung, um überhaupt das Funktionsprinzip einer Technologie verstehen und
deren Vorteile erkennen zu können. Die Vielfalt ist bereits so groß, dass man als Entwickler
gar nicht mehr die Zeit aufbringen kann, alle Ansätze für eine objektive Beurteilung
ausführlich genug testen zu können. Viele Entwickler und Projektleiter fühlen sich
mittlerweile von der rasanten Entwicklung förmlich abgehängt.
Umso schwieriger wird es, wenn man sich für die Umsetzung eines wichtigen Projektes für
eine oder mehrere Technologien entscheiden und auch noch die Verantwortung für den
Projekterfolg tragen muss.
Im Folgenden erhalten Sie einen Überblick über die wichtigsten Web-Technologien, deren
Funktionsprinzip sowie deren Vor- und Nachteile. Um die Prinzipien, Vor- und Nachteile
besser nachvollziehen zu können, lohnt es sich ganz an den Anfang des Web zu gehen und die
Evolution von HTML in Kürze Revue passieren zu lassen, denn in der Vergangenheit findet
man häufig entscheidende Details für die Funktionsweise moderner Technologien.
HTML
In den Anfangszeiten des World-Wide-Webs diente das Internet zur Verteilung von
statischen, meist wissenschaftlichen Textseiten. Um solche Texte besser strukturieren und
formatieren zu können, entwickelte Tim Berners-Lee 1989 HTML. HTML ist eine rein Textorientierte Auszeichnungssprache, die zur Strukturierung und Formatierung Textkürzel, sog.
Tags verwendet. Auch die ersten Textverarbeitungsprogramme verwendeten Tags. Da es noch
keine grafischen Oberflächen gab, musste man dem Programm mit Hilfe eines Tags klar
machen, dass der nachfolgende Text z.B. fett gedruckt werden soll. Erst 4 Jahre später konnte
man erstmals auch Bilder in ein HTML-Dokument einbinden. 1995 kamen mit HTML 2.0
Formulare dazu, 1997 Tabellen, Textfluss um Bilder sowie die Einbindung von Java Applets,
bevor 1997 mit HTML 4.0 CSS und Frames eingeführt wurden.
Für die Darstellung von HTML ist der Web-Browser zuständig. Was also bei einem
klassischen Computer-Programm der Interpreter ist, ist der Browser für HTML.
JavaScript
Da HTML lediglich statische Seiten anzeigen kann, wurde 1995 die Skriptsprache JavaScript
entwickelt, mit der man HTML-Code und somit eine aktuelle HTML-Seite direkt im Browser
ändern kann. Erst damit wurden interaktive Webseiten möglich, die auf Nutzeraktionen
reagieren können, z.B. Rollover-Effekte bei Menüpunkten.
Im Gegensatz zu HTML ist JavaScript eine leistungsfähige Sprache, welche sogar
objektorientiertes Entwickeln unterstützt. Entwickelt wurde JavaScript von Sun Microsystems
und Netscape und erhielt wegen der Java-ähnlichen Syntax unglücklicherweise den Namen
JavaScript, wodurch die Skriptsprache bis heute selbst von Fachleuten immer wieder
irrtümlich mit der Programmiersprache Java verwechselt wird.
Während JavaScript vor wenigen Jahren noch stark verrufen war (Viren und Dialer wurden
i.d.R. in JavaScript geschrieben) und viele Internet-Nutzer JavaScript aus Sicherheitsgründen
über die Browser-Einstellungen einschränkten oder sogar deaktivierten, ist JavaScript heute
die zentrale Technologie von Ajax und dem Web 2.0.
Die Oberfläche einer modernen Rich-Internet-Application besteht fast nur noch aus
JavaScript Elementen. Tab-Panes, sprich Registerreiter, Pulldown- und Kontextmenü,
Fenstertechnik, Andock-Funktionen oder schlichtes Drag&Drop im Browser ist nur mit
JavaScript möglich, da der Browser lediglich wenige Standard-Controls wie Buttons und die
Standard-Formular-Komponenten bietet. Da die Programmierung von OberflächenElementen äußerst schwierig und enorm wartungsaufwändig ist, gibt es inzwischen zahlreiche
JavaScript Frameworks, welche dem Entwickler alle wichtigen Controls zur Verfügung
stellen.
Wie HTML wird JavaScript vom Web-Browser ausgeführt. Der Browser ist also der
Interpreter.
CSS
Mit der Einführung von Stylesheets 1993, ging man dazu über, die Formatierungen für das
Design vom eigentlichen Inhalt zu trennen, indem man die Formatierungen für das Design in
unabhängige CSS-Dateien auslagerte.
Neben Angaben zu Farben und Schriften bietet CSS vor allem die Möglichkeit, SeitenElemente frei zu positionieren.
Mit diesen Eigenschaften ist CSS eine entscheidende HTML-Erweiterung.
Wie HTML und JavaScript wird auch CSS vom Web-Browser ausgeführt.
Dynamische Webseiten
Eine statische HTML-Seite kann nur Informationen enthalten, die der Autor bei der
Entwicklung in das Dokument schreibt. Moderne Web-Anwendungen sind damit jedoch nicht
denkbar, denn bei Online-Foren, Wikis, Social Networks und andere sog. Web 2.0
Anwendungen wird der maßgebliche Content nicht vom Entwickler der Seite, sondern von
anderen, im Grunde anonymen Internet-Anwendern produziert.
Damit dies möglich wird, muss der fremde Content zunächst auf dem Server gespeichert
werden, und zwar entweder in einer Datei, z.B. Text oder XML, oder in einer Datenbank.
Beim Aufruf der Seite muss dieser Content dann wieder ausgelesen und zusammen mit den
für die Darstellung notwendigen HTML-Tags in die statische HTML-Seitenvorlage
geschrieben werden, bevor die fertige Seite an den Browser ausgeliefert wird. Man spricht
dann von einer dynamischen HTML-Seite.
Die Generierung von dynamischen HTML-Seiten wird von einem Skript durchgeführt,
welches auf dem Server läuft. Entsprechende Skripte kann man grundsätzlich in jeder
beliebigen Programmier- oder Skriptsprache schreiben. Voraussetzung für die Ausführbarkeit
ist immer, dass auf dem Server ein entspr. Interpreter für die gewählte Sprache zur Verfügung
steht.
Perl
Die Programmiersprache Perl wurde von Larry Wall für die übersichtliche Auswertung
verstreuter Logdateien auf UNIX-Rechnern für die NSA entwickelt. Im Focus stand die
schnelle und einfache Programmierung. Die Stärken von Perl liegen in der Verbindung
inkompatibler Software.
Da in den Anfangszeiten des Webs nahezu alle Server unter UNIX liefen und die Stärken von
Perl in der Verbindung inkompatibler Software liegt, wurde Perl zunehmend für die
Entwicklung dynamischer Webseiten benutzt und wurde schnell zum De-facto-Standard für
die Web-Entwicklung.
Später wurde Perl immer stärker von PHP verdrängt.
PHP
PHP wurde 1995 von Rasmus Lerdorf, Gutmans und Suraski, den Gründern von Zend
Technologies Ltd., als Ersatz für eine Sammlung von Perl-Skripten entwickelt. PHP ist Perl
sehr ähnlich, gilt jedoch als einfacher erlernbar. Da auch PHP unter der GPL Open Source
Lizenz steht, wurde PHP fester Bestandteil fertiger LAMP und WAMP Pakete, bestehend aus
Apache Webserver, MySQL Datenbank und PHP, welche die Installation aller wichtigen
Server-Komponenten erheblich vereinfachen. Eines der beliebtesten Pakete ist XAMPP, das
auch für Solaris und Mac OS-X verfügbar ist. PHP wurde vor allem mit LAMP zu einer
Standard-Server-Komponente, zum De-facto Standard bei Internet-Service-Providern und
somit für die Web-Entwicklung im Allgemeinen. Als Folge wurde Perl gleichzeitig
weitestgehend von PHP verdrängt.
Durch die rasante Verbreitung ist PHP zeitweise ungesteuert gewachsen. Viele StandardBibliotheken sind noch prozedural programmiert, nicht objektorientiert. Zudem wird die
fehlende Durchgängigkeit bemängelt, fehlendes Threading sowie fehlende Möglichkeiten
zum Debuggen. Dass PHP im Vergleich zu Perl oder Python als langsamer gilt, dürfte in der
Praxis eher selten entscheidend sein. Vor allem im deutschsprachigen Raum verfügt PHP über
eine sehr große Community.
ASP
ASP wurde 1996 von Microsoft entwickelt und gilt als Pendant zu Perl und PHP. Mit
Einführung des .NET Frameworks 2002 wurde ASP eingestellt und wird seitdem als
ASP.NET weiterentwickelt.
Mit ASP.NET stehen dem Web-Entwickler alle Vorteile und Möglichkeiten des
leistungsfähigen .NET Frameworks zur Verfügung. ASP.NET Anwendungen lassen sich
dadurch in allen .NET Sprachen schreiben, u.a. C#, VB.NET und J#. Da es sich bei ASP.NET
um eine Compiler-Sprache handelt, werden sämtliche Fehler bereits beim Compilieren
sichtbar. Zudem lassen sich die Anwendungen wie andere .NET Programme sehr gut
debuggen.
Für ASP.NET sind sehr viele Frameworks, insbesondere von Drittherstellern wie Telerik, für
die Entwicklung grafischer Web-Oberflächen verfügbar, welche alle erdenklichen
Oberflächen-Controls aufbieten.
Als .NET Sprache lässt sich ASP.NET jedoch nicht so einfach erlernen wie Perl oder PHP.
Zudem legt man sich mit ASP.NET zwangsweise auf eine Microsoft Infrastruktur fest. U.a.
sind Windows als Server-Betriebssystem sowie ein Microsoft Application-Server (z.B. IIS
oder Visual Studio .NET) die Voraussetzung. Das Angebot an Hosting-Paketen mit entspr.
Voraussetzungen ist vergleichsweise gering.
Mit Mono existiert eine, hauptsächlich von Novell vorangetriebene, freie und Plattformunabhängige Implementierung des .NET-Frameworks, welche seinem Vorbild jedoch
hinterher hinkt.
JSP
JSP (Java Server Pages) basiert auf der Java Technologie von Sun Microsystems und ist wie
ASP.NET eine Compiler Sprache, was auch dem JSP-Entwickler erhebliche Vorteile beim
Debuggen und Testen seiner Anwendungen im Vergleich zu anderen Skriptsprachen
einbringt. JSP wurde entwickelt, um die Entwicklung dynamischer Webseiten mit Java im
Vergleich zur Servlet-Programmierung erheblich zu erleichtern.
Bei JSP lassen sich in statische HTML und XML Dokumente dynamische JSP-Aktionen mit
Hilfe spezieller JSP-Tags einbinden. Bei diesen JSP-Aktionen handelt es sich um fertige Java
Klassen, die in sog. Tag-Libraries zusammengefasst werden. Wichtige Tag-Libraries sind u.a.
die JSTL (JavaServer Pages Tag Library), Jakarta (setzt auf JSTL auf) sowie Struts. Auch die
Entwicklung eigener JSP-Aktionen ist möglich, wofür dem Entwickler der komplette
Sprachumfang von Java zur Verfügung steht.
Beim Compilieren einer JSP erzeugt der JSP Compiler Java Code (Servlet), den der Java
Compiler dann in Java Bytecode umwandelt.
Für die Auslieferung einer JSP an den Browser ist eine Servlet-Engine notwendig, die im
Grunde alle wichtigen Application-Server bieten, u.a. Tomcat, Glassfish, Websphere oder
Weblogic. Da Standard-Webpakete i.d.R. keinen Application-Server bieten, benötigt man für
JSP min. einen eigenen V-Server.
Durch die Plattform-unabhängigkeit von Java lässt sich eine JSP-Anwendung unter allen
gängigen Server-Betriebssystemen ausführen, u.a. Windows, Linux, Solaris, Mac OS-X und
anderen UNIX-Derivaten.
Wie ASP ist auch JSP schwerer erlernbar als Perl oder PHP, da JSPs sehr viel Java Code und
Java Konzepte enthalten.
Servlets
Als Servlet wird ein Java Programm bezeichnet, das auf dem Server läuft. Auch mit einem
reinen Java-Programm lassen sich dynamische Webseiten generieren. Für die Entwicklung
von Servlets steht dem Entwickler der komplette Funktionsumfang der Programmiersprache
Java zur Verfügung, allerdings gilt die Entwicklung von Servlets im Vergleich zu
Skriptsprachen als erheblich schwieriger, was der Grund für die Einführung von JSP war.
Ruby
Ruby wurde Mitte der Neunziger Jahre von Yukihiro Matsumoto aus Unzufriedenheit über
verfügbare Skriptsprachen entwickelt und wurde in Japan so beliebt wie Perl in Europa. Ruby
ist eine vollständig objektorientierte Sprache. Ruby-Programme werden zuerst in einen
Bytecode umgewandelt und anschließend von einer Virtual Machine interpretiert, welche für
Linux, Mac OS-X sowie für Windows verfügbar ist.
JRuby ist eine Implementierung des Ruby-Interpreters in Java, um Ruby nahtlos in die JavaPlattform zu integrieren. Mit IronRuby und Gardens Point Ruby.NET soll Ruby ins .NETFramework integriert und in C# implementiert werden.
Ajax
Bei Ajax handelt es sich nicht um eine Sprache, sondern vielmehr um eine Technik zur
Übertragung der Daten zwischen Server und Browser.
Bei der herkömmlichen Übertragung dynamischer HTML-Seiten wird bei jeder Anfrage an
den Server eine komplett neue Seite geladen, was zu den allgemein bekannten, lästigen
Wartezeiten bei Webseiten führt. Web-Portale und Onlineshops könnte man damit bereits
realisieren, „echte Software-Anwendungen“ jedoch kaum, da die Performance für die meisten
Einsatzbereiche unakzeptabel ist.
Mit Hilfe der XMLHttpRequest-Technik lassen sich Daten asynchron nachladen und mit
Hilfe eines speziellen JavaScripts in eine HTML-Seite direkt im Browser einbinden, ohne
dass dabei die komplette Seite neu geladen werden muss. Die nachzuladenden Daten werden
dabei in XML oder JSON, ein auf JavaScirpt zugeschnittenes, XML-ähnliches Format,
übertragen.
Durch dieses unbemerkte Nachladen lässt sich die Performance dynamischer Webseiten
erheblich steigern, sodass dadurch auch die Umsetzung leistungsfähiger BusinessApplikationen als Web-Anwendung möglich wurde.
Dadurch wurde Ajax zu dem Hype der vergangenen Jahre.
JavaScript Frameworks
Während Programmiersprachen wie Java, C#, Visual Basic oder Delphi dem Entwickler alle
wichtigen Steuerelemente für die Entwicklung grafischer Benutzeroberflächen zur Verfügung
stellen, u.a. Menüsleisten, Kontextmenüs, Register-Reiter, Fenster, Trees etc., bietet ein
Browser lediglich Buttons und die Standard-Formular-Komponenten. Alle anderen
Oberflächen-Elemente müssen für eine HTML-Seite in JavaScript nachprogrammiert werden.
Mittlerweile gibt es für nahezu alle wichtigen Web-Sprachen entsprechende JavaScript
Frameworks, die häufig von großen Webseiten-Betreibern wie Yahoo, Google oder 1&1
entwickelt und als Open Source frei gegeben werden.
Yahoo! UI Library
YUI ist ein JavaScript-Framework zur Erstellung von Web-Applikationen. YUI verwendet
Ajax und DHTML. Das Framework steht unter der BSD-Lizenz.
DOJO
Dojo ist eine freie JavaScript-Bibliothek, die von der Dojo Foundation entwickelt wird und
unter der BSD-Lizenz steht. Die Bibliothek ist mächtig und bietet Menüs, Tabs, sortierbare
Tabellen, dynamische Diagramme, 2D-Vektorgrafik, Animationseffekte, Trees, FormularValidierung, Kalenderfunktionen, Widgets für barrierefreie Webseiten sowie einen RichText-Editor. Entwickler können auch eigene Controls entwickeln. DOJO benutzt die
asynchrone Kommunikation zwischen Browser und Server und ist somit Ajax-fähig.
Als Schwachpunkt des Projekts gilt noch immer die Dokumentation, die mit der Entwicklung
bislang nicht Schritt halten kann und derzeit nur in englischer Sprache verfügbar ist.
qooxdoo
qooxdoo ist ein Ajax-fähiges JavaScript Framework, welches von 1&1- und GMXMitarbeitern als Open-Source-Projekt gestartet wurde. Das Aussehen der Komponenten
gleicht klassischen Desktop-Anwendungen.
Java Server Faces
JSF basiert auf der JSP-Technologie und somit auf Java. JSF umfasst eine Tag-Bibliothek mit
JSF-Oberflächenkomponenten sowie eine Java-API zur Kontrolle von Bedienelementen inkl.
Event-Handling und Validierung. Seit Version 1.2 ist JSF Open Source.
Für die Erweiterung einer JSF-Anwendung mit Ajax-Funktionalität muss JSF mit einem
weiteren Framework ergänzt werden, z.B. RichFaces von Red Hat, ICEfaces von IDEsoft,
Trinidad von der Apache Foundation oder jQuery4jsf.
Apache MyFaces
MyFaces ist eine Open-Source-Implementierung der JavaServer-Faces-Spezifikation. Im
Vergleich zu JSF bietet MyFaces mehr Oberflächenkomponenten, u.a. eine KalenderKomponenten sowie einen HTML-Editor. Zudem sind neuere Controls Ajax-fähig.
GWT
Das Google Web Toolkit ist ein Java Framework, welches die Möglichkeit bietet, WebAnwendungen vollständig in Java zu schreiben, also auch die Oberfläche. Ein spezieller
Compiler generiert anschließend die für die Oberfläche notwendigen JavaScripts. Grafische
Oberflächen können somit wie mit Java Swing entwickelt werden.
Vaadin
Vaadin setzt auf GWT auf und nutzt GWT um die Webseite zu rendern. Während GWT nur
clientseitig operiert, fügt Vaadin eine serverseitige Datenvalidierung zu allen Aktionen hinzu.
Apache Wicket
Wicket ist ein komponentenbasiertes Web-Framework für Java, welches sich an erfahrene
Java Programmierer richtet. Für Wicket sind ausschließlich Java- und (X)HTML-Kenntnisse
erforderlich. Für Ajax-Funktionalität stehen fertige Klassen zur Verfügung, sodass dafür
keine JavaScript-Kenntnisse erforderlich sind. Allen Komponenten kann grundsätzlich AjaxFunktionalität über Behaviors hinzugefügt werden. Die Entwicklung eigener Komponenten ist
zudem sehr leicht.
Wicket nutzt intensiv objektorientierte Konzepte wie abstrakte Klassen und Interfaces und
setzt gezielt auf die Leistungsfähigkeit von Java. Für unerfahrene Java Programmierer ist
daher der Einstieg nicht ganz so einfach wie bei anderen Frameworks.
WingS
Wie GWT ist auch wingS ein Framework, mit dem man Web-Anwendung vollständig in Java
schreiben kann. Das Ziel von wingS ist es dabei, sich so gut wie möglich an Swing zu halten,
sodass sich wingS Anwendungen nahezu genauso wie mit Swing schreiben lassen. WingS
bietet keine eigenen Oberflächen-Komponenten, sondern nutzt die Controls der Yahoo! UI
Library. WingS ist Ajax fähig und managed auch die komplette Kommunikation zwischen
Server und Client automatisch. Das Framework steht unter der LGPL Open Source Lizenz.
Ruby on Rails
Rails ist ein Web-Application-Framework auf Basis von Ruby, welches agile
Softwareentwicklung ermöglicht. Rails verwendet wie Java die Model-View-Control
Architektur.
Telerik
Telerik ist ein Hersteller kommerzieller JavaScript Controls für Microsoft Technologien,
insbesondere für ASP.NET und Silverlight.
Bindows
Eine weitere kommerzielle JavaSript Bibliothek ist Bindows, welche alle wichtigen
Oberflächen-Komponenten bietet, die sich am Design von Windows-Komponenten
orientieren.
Fazit
Für die Entwicklung moderner Web-Anwendungen auf Basis von Ajax muss der Entwickler
i.d.R. eine Vielzahl verschiedener Basistechnologien beherrschen oder anwenden können. Es
ist deshalb ratsam Frameworks einzusetzen, die bereits eine Vielzahl benötigter Funktionen
und Features bieten, sodass Sie das Rad nicht jedes Mal neu erfinden müssen. In der Praxis
entscheiden sich die meisten Entwickler für ein Framework, dessen Basistechnologie sie
bereits beherrschen, wie Java oder .NET. Dennoch sollten Sie sich auch die Funktionsweise
anderer Frameworks ansehen. Bei wichtigen Projekten sollten Sie auch kritische
Überlegungen anstellen, ob die Weiterentwicklung einer Technologie gewährleistet ist. Denn
anders als bei Java, Basic oder C++ Programmen, die einmal geschrieben auch in 10 Jahren
noch laufen werden (siehe DOS- und Cobol-Anwendungen), muss eine Web-Anwendung
sowie die dafür verwendeten Frameworks auf Grund der ständigen Browser-Updates immer
wieder überprüft und abgeändert werden. Gerade bei Open Source Projekten ist die Gefahr
groß, dass diese vernachlässigt werden (müssen) und daher Updates verspätet kommen, die
Hauptentwickler abgeworben werden oder das Projekt einfach im Sande verläuft.
In jedem Fall sollten Sie die Weiterentwicklung aller wichtigen Frameworks aufmerksam mit
verfolgen, denn damit ist inzwischen viel mehr möglich als die meisten Entwickler ahnen.
Kontaktdaten:
Markus Stiegler
XDEV Software Corp. Deutschland GmbH
XDEV Java Tool Division
Sonnenallee 1
D- 85551 KIRCHHEIM-HEIMSTETTEN
Telefon:
Fax:
Email:
09682 915 148
09682 912 35
[email protected]
Herunterladen