Open Source im professionellen Einsatz
Linux-Magazin 09/2010

Hop - ein scheme-atisches Web-Framework

Web-Wunder

Mit Scheme setzt das freie Web-Framework Hop eine ziemlich esoterische Programmiersprache ein. Seine Architektur und Flexibilität machen es jedoch zu einer spannenden Alternative zu Django & Co.

524

Wer nicht jede Komponente seiner Webanwendung von Hand programmieren möchte, greift zu einem Framework. Das Angebot ist breit gefächert und reicht von Cake PHP über Ruby on Rails bis zum Python-Framework Django. Von diesen bekannten Namen hebt sich der leistungsfähige Exot Hop [1] durch zweierlei ab: seine eigenwillige Architektur und die verwendete Programmiersprache Scheme. Sonst hält sich das GPL-lizenzierte Framework an Standards wie HTTP, CSS, DOM und Javascript und eignet sich für alle modernen Browser.

Hop enthält eine respektable Sammlung an Widgets, mit denen der Entwickler Desktop-ähnliche Oberflächen baut (Abbildung 1): Schieberegler, Fenster, aufklappbare Bäume, Texteditoren und vieles mehr. HTML-5-Features wie das Video-Tag und die Zeichenfläche Canvas sind ebenfalls umgesetzt.

Abbildung 1: Hop bietet eine stolze Widget-Sammlung für Weboberflächen.

Zudem gibt es eine eingebaute Benutzerverwaltung und Funktionen zum Verarbeiten von Bild- und Audiodateien. Hop beherrscht außerdem das Chat-Protokoll XMPP und kann per IMAP auf Mails zugreifen. Daneben existieren Hop-Anwendungen, etwa der Musikabspieldienst Hop Audio für das vernetzte Zuhause und eine X10-Schnittstelle für die Heimautomation.

Code-Verschmelzung

Während andere Web-Frameworks Datenspeicher, Programmlogik und Präsentation in getrennten Schichten umsetzen (N-Tier-Architektur), geht Hop einen anderen Weg: Den Code für Server und Client integriert es in einer einzigen Quelltextdatei, die somit eine durchgängige Programmlogik erkennen lässt.

Damit sich alles zu einer Einheit fügt, muss es sich der Syntax der Sprache Scheme unterordnen. In Hop reicht beispielsweise zum Schließen eines HTML-Tag eine einfache Klammer. Aus dem HTML-Code »<H1>Überschrift</H1>« wird »(<H1> "Überschrift")«, was den Quelltext kompakter macht.

Das Übersetzen des Code erfolgt automatisch, wozu der freie Scheme-Compiler Bigloo [2] zum Einsatz kommt. Er kompiliert den Clientcode zu Javascript, das der Webbrowser ausführt. Die Anweisungen für den Server übersetzt er in Bytecode. Nach Angaben des Hop-Projekts ist die Performance der aktuellen Hop-Version 2.1.0 einem Apache-Webserver mit PHP-Modul ebenbürtig.

Listing 1 zeigt das Zusammenspiel von Client und Server. Zeile 1 definiert die Funktion »<ROW>« zum Anzeigen einer Tabellenzeile »<TR>«. Die Map-Anweisung in Zeile 2 generiert für jedes Element einer Liste eine eigene Zelle »<TD>« mit Javascript-Alert. Dabei greift der Servercode mit dem Präfix »~« auf die Clientfunktion »alert« zu, der Clientcode referenziert die Servervariable mit Dollar-Präfix als »$i«. Die restlichen Zeilen beschreiben eine einfache Webseite und rufen die Row-Funktion auf.

Listing 1: Hop-Code

01 (define (<ROW> . l)
02    (<TR> (map (lambda (i) (<TD> :onclick ~(alert $i) i)) l)))
03 
04 (<HTML>
05    (<TABLE>
06       (<ROW> 1 2 3)))

Der Code stammt aus einem einführenden Vortrag des Hop-Erfinders Manuel Serrano [3], der das Framework am französischen Forschungsinstitut INRIA weiterentwickelt.

Kurz und knackig

Zugegeben, die in Hop eingesetzte Sprache Bigloo-Scheme ist gewöhnungsbedürftig. Andererseits braucht der Anwendungsentwickler nur wenige Regeln zu lernen, um sie benutzen zu können. Vor allem aber produziert das Framework aus übersichtlichen und kurzen Quelltexten beeindruckende Ergebnisse.

Infos

[1] Hop-Homepage: [http://hop.inria.fr]

[2] Compiler Bigloo: [http://www-sop.inria.fr/indes/fp/Bigloo/]

[3] Manuel Serrano, "Programming Diffuse Applications with Hop": [http://hop.inria.fr/talks/hopdiffuse.xhtml.gz]

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

comments powered by Disqus

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.