Skriptbibliotheken für jeden Einsatz

20.09.2007 von Bernhard Steppan  
Die große Popularität von Skriptsprachen erklärt sich nicht zuletzt durch die vielen dafür verfügbaren Bibliotheken.

Die Kombination von Skriptsprachen mit einem leistungsfähigen Framework ist insbesondere dann nicht zu schlagen, wenn man ein überschaubares Programmierproblem schnell lösen möchte. Ob ein einfacher Effekt benötigt wird oder eine große Funktionssammlung zum Aufbau einer kompletten Anwendung: Skriptbibliotheken bieten für fast jeden Anwendungsfall eine Lösung.

Javascript

Die Website der New Yorker Schallplattenfirma Serious Business Records setzt die Javascript-Bibliotheken Prototype und Script.aculo.us ein. Der Warenkorb funktioniert denkbar einfach per Drag and Drop.

Javascript hat nur wenig mit der Compiler-Sprache Java gemein. Es wird im Gegensatz zu Server-seitigen Technologien wie Java und PHP auf der Client-Seite von Web-Anwendungen oder einfachen Web-Seiten eingesetzt. Javascript ist zwar sehr vielseitig und lässt sich zur Entwicklung ganzer Web-Anwendungen einsetzen. Die Bibliotheken konzentrieren sich jedoch hauptsächlich auf die Programmierung benutzerfreundlicher Web-Oberflächen.

Bei der Entwicklung von bedienerfreundlichen Web-Seiten empfiehlt es sich, die Benutzereingaben vorab auf dem Client zu überprüfen. Für diese schnelle Validierung gibt es eine Reihe von fertigen Lösungen, die von einem kleinen Codeausschnitt bis zu einer großen Bibliothek reichen. Kleinere Skripte für diese Validierungen findet man zum Beispiel bei W3-Schools, einer Sammlung von Online-Tutorials, oder bei How-to-Create. Möchte man sich ersparen, Skripte zu einer eigenen Bibliothek zusammenzustückeln, greift man besser zu einer fertigen Bibliothek, wie sie bei Open-Source-Marktplätzen gehostet werden.

Ein Beispiel hierfür ist die Javascript-Bibliothek "Form Validation Library". Sie bietet Funktionen für die häufigsten der üblichen Eingabeüberprüfungen. Man kann zum Beispiel feststellen, ob der Anwender ein Feld leer gelassen oder eine ungültige E-Mail-Adresse oder Text in einem numerischen Feld eingegeben hat. Natürlich gibt es eine Reihe von Fällen, in denen eine generische Bibliothek keine vollständig fertige Funktion liefern kann. Für diese Fälle stellt sie einen Rahmen für eine eigene Validierung (Custom Validation) zur Verfügung.

Glossar

  • Ajax: Ajax bedeutet Asynchronous JavaScript and XML. Darunter sind verschiedener Techniken rund um JavaScript und XML zu verstehen, durch die Web-Anwendungen ähnlich schnell wie Desktop-Anwendungen auf Benutzereingaben reagieren können.

  • Apache myFaces: Quelloffenes Web-Framework der Apache Group, das Suns Java Server Faces implementiert und um eigene Komponenten erweitert.

  • Validierung: In der Regel die Überprüfung Benutzereingaben.

  • Client-seitige Validierung: In diesem Fall wird der Code, der die Überprüfung vornimmt, in Form eines Skripts direkt in die Web-Seite eingetragen. Der Hauptvorteil des Verfahrens ist die unmittelbare Reaktion der Web-Seite. Ein nochmaliger Aufbau der Seite ist nicht notwendig.

  • Server-seitige Validierung: Im Fall der Server-seitigen Validierung überprüft ein Softwaremodul die Eingaben, wenn sie beim Server angekommen sind. Die ausschließliche Server-seitige Validierung hat den Nachteil, dass sie den Server belastet und einen erneuten Aufbau der Web-Seite erfordert.

  • Widgets: Widgets sind die Bausteine einer grafischen Oberfläche, mit denen der Benutzer das Programm steuern kann, wie zum Beispiel Schaltflächen. Sie werden auch häufig Controls, Beans oder im Bereich der Java-Programmierung JavaBeans genannt.

Wer Effekte für seine Website abseits der bekannten Ajax-Bibliotheken wie Script.aculo.us sucht, sollte sich moo.fx ansehen. Die leichtgewichtige Bibliothek kann zum Beispiel mit der Ajax-Bibliothek Prototype oder mit dem Mootools-Framework eingesetzt werden. Moo.fx hat nur einen Umfang von rund 3 KB, kann aber mit einer Menge von Effekten aufwarten. Eine größere Bibliothek, die sich aber nicht ausschließlich auf Effekte konzentriert, ist X-Library. Sie bietet außerdem Funktionen, die die Bedienung der Website verbessern, so zum Beispiel Drag-and-Drop-Unterstützung und Widgets wie Fortschrittsbalken und Menüs.

Navigation ist eine der wichtigsten Anwendungen für Javascript. Daher befassen sich viele Funktionen diverser Bibliotheken mit der Programmierung von Menüs. Eine der bekanntesten Javascript-Bibliotheken, die es hierzu gibt, ist Heng Yuans bewährtes "JSCookMenu". Die kleine Skriptsammlung lässt sich in vielen Produkten und Techniken (zum Beispiel mit PHP) einsetzen oder ist in einigen Bibliotheken und Content-Management-Systemen bereits integriert (etwa in Apaches JSF-Implementierung myFaces, Joomla). Das JSCookMenu gestattet, Pull-down-Menüs zu programmieren, die sich in mehreren Stilen (Schemata) und Effekten darstellen lassen.

So populär Javascript in der Vergangenheit aufgrund der hier vorgestellten Funktionen auch war – erst im Zuge von Ajax hat die Skriptsprache eine enorme Renaissance erfahren. Ajax verbindet eine Reihe von Technologien so, dass sich Web-Anwendungen und Websites genauso flüssig bedienen lassen wie Rich Clients. Leider ist eine selbst entwickelte Ajax-Integration mit viel Programmierung verbunden. Bibliotheken erlauben es, eine Ajax-Kommunikation auf vergleichsweise einfache Art in eigene Websites zu integrieren.

Ajax-Bibliotheken

Eine der populärsten Ajax-Bibliotheken ist Dojo. Das Framework ist eine hervorragende Basis für Rich-Client-Web-Anwendungen, die konventionellen Rich Clients zum Verwechseln ähnlich sehen. Dojo bietet eine vielfältige Sammlung von Widgets, darunter vorgefertigte Dialoge, Bäume, Symbolleisten, Editorkomponenten und Menüs. Integrationen in andere Techniken und Produkte wie Java Server Faces und Eclipse sind ebenfalls verfügbar.

Die Bibliothek Prototype bildet die Grundlage für eine Reihe von Ajax-Bibliotheken (zum Beispiel Prototype Window, Rico, Script.aculo.us) und ist auch in Server-seitigen Frameworks bereits integriert (Ajax4jsf). Prototype konzentriert sich auf die für Ajax notwendigen Basiskonzepte wie die Verarbeitung von Daten (Arrays, Strings etc.). Wer eine Erweiterung für die Erzeugung von Dialogen sucht, wird bei Prototype Window fündig. Es liefert vorgefertigte Fenster (Login-Dialog, Mitteilungsfenster) in den verschiedensten Stilen mit Ein- und Ausblendeffekten.

Wer auf interessante Effekte steht, ist mit der derzeit vielleicht coolsten Ajax-Bibliothek namens Script.aculo.us bestens bedient. Sie baut wie das konkurrierende Produkt Rico auf der schon erwähnten Bibliothek Prototyp auf. Beide bieten eine Fülle von Effekten. Besonders die von Script.aculo.us lassen vollkommen vergessen, dass darauf aufbauende Web-Seiten ohne Flash auskommen. Positiver Nebeneffekt: Script.aculo.us ist in einer Vielzahl von Bibliotheken und Techniken bereits integriert, wie zum Beispiel in Ruby on Rails, Perl, PHP und Java. Auch Eclipse bietet seit geraumer Zeit eine Werkzeugintegration für die Bibliothek.

Abseits vom Ajax-Rummel gibt es noch viele andere Anwendungen für Javascript. Weitere interessante Bibliotheken, über die man leider selten etwas hört, sind zum Beispiel Log4js und JsUnit. Log4js ist ein Logging-Framework für Javascript, das erlaubt, die Javascript-Verarbeitung zu protokollieren. JsUnit ist eine Portierung des bekannten Java-Testframeworks JUnit auf Javascript. Mit Hilfe dieser Bibliothek kann der Javascript-Programmierer wiederholbare Tests schreiben. Beide Bibliotheken werden auf dem Open-Source-Marktplatz BerliOS gehostet.

Open-Source-Marktplätze

Mit über 150.000 Projekten von BitTorrent-Client bis zur Java-Datenbank ist Source Forge der größte Anbieter von quelloffener Software. Alternativen zu Source Forge sind vor allem die Free Software Foundation (rund 2.800 Projekte) und BerliOS vom Fraunhofer-Institut Berlin (rund 5.000 Projekte). Weitere Portale sind die Eclipse Community und die Apache Foundation.

Die führende Stellung von Source Forge zeigt sich auch bei der Anzahl der Programmierbibliotheken. Die Website listet rund 120 Javascript-, 35 Perl- und rund 400 PHP-Bibliotheken auf. Anhand der letzten Aktualisierungen kann man leicht abschätzen, ob die Projekte eingefroren sind oder laufend bearbeitet werden. Source-Forge-Projekte haben in der Regel eine Liste der Bugs sowie ein Forum, in dem sich Anwender und Entwickler austauschen. Mit Hilfe der Bug-Liste und durch die Foren lassen sich leicht Rückschlüsse auf die Qualität des Produkts ziehen.

PHP

PHP erfreut sich besonders in der Kombination Linux, Apache, MySQL, PHP (LAMP) großer Beliebtheit. Entsprechend breit ist auch hier das Angebot von Lösungen, die von Codefragmenten bis zu größeren Bibliotheken reichen. Wer kleinere Lösungen sucht, findet in einschlägigen PHP-Sites Hilfe. Viele größere Bibliotheken sind bereits im PHP-Standard integriert. Wer darüber hinaus noch Bedarf an speziellen Lösungen hat, könnte bei Source Forge fündig werden.

Allen voran ist sicher Pear (PHP Extension and Application Repository) zu nennen. Pear ist nicht nur eine quelloffene Bibliothek, sondern bietet neben Entwicklern eine Infrastruktur für den Vertrieb von Quellcode. Das Ziel der Pear-Entwicklergemeinde ist es, eine Sammlung ausgereifter, wiederverwendbarer Komponenten zu schaffen. Um höchstmögliche Konsistenz zu sichern, gibt es Codierungsrichtlinien, die dafür sorgen sollen, dass der Quelltext einheitlich aufgebaut ist. Das Framework ist in rund 450 Packages gegliedert, die Lösungen von Authentifizierung über Micro-Payment bis zu Web-Services enthalten.

Natürlich lassen sich in PHP-Applikationen die genannten Javascript-Bibliotheken verwenden. Aber wer zum Beispiel Ajax in seine PHP-Seiten integrieren möchte, kann auch zu bereits konfektionierten Lösungen greifen. Als Beispiel sei AjaxAC genannt. AjaxAC ist ein Framework ohne Schnickschnack, das sich vor allem darauf konzentriert, dass Benutzereingaben ad hoc ohne nochmaligen Aufbau der Web-Seite verarbeitet werden können. Einige Beispiele zeigen, wie sich Textfelder oder Drop-down-Listen dynamisch füllen lassen.

Eine weitere, noch sehr junge Ajax-PHP-Bibliothek ist xaJax. Wie AjaxAC erleichtert xaJax die schnelle Verarbeitung von Benutzereingaben, ohne dass man sich in der Tiefe mit Ajax-Programmierung auseinandersetzen muss. Abseits der Ajax- und PHP-Standardbibliotheken finden sich weitere interessante PHP-Lösungen, zum Beispiel das quelloffene Framework Swat. Swat ist primär eine Widget-Bibliothek, die hochwertige Komponenten für nahezu jeden Anwendungsbereich enthält. Die Bandbreite reicht von der einfachen Schaltfläche über eine Kalenderkomponente und hervorragende Menüs bis zu einem kleinen Texteditor. (ue)

Fazit

Dieser Artikel hat nur einen winzigen Ausschnitt aus der Welt der Skriptbibliotheken zeigen können. Angesichts des gewaltigen Angebots ist das Problem für den Entwickler zurzeit weniger, irgendeine passende Bibliothek zu finden, als die Spreu vom Weizen zu trennen. Hier helfen die genannten Open-Source-Marktplätze, ein Blick in die dort gelisteten Bug-Listen und der Austausch mit anderen Entwicklern in den entsprechenden Foren.