Jaiwls

Frustiert von Javas Klassenbibliothek (bzw. vorhandenen Frameworks) in Bezug auf die Möglichkeit schnell kleine Webanwendungen zu erstellen, insbesondere für Prototyping, habe ich Jaiwls (ausgesprochen we jails) erstellt. Dieses Akronym steht für Java In Web Looks Seedy, und die Bedeutung ist bewußt mehrdeutig ausgelegt ;-)

Im Gegensatz zu vielen anderen verfügbaren Frameworks wird kein zusätzlicher Web-Server benötigt, nur eine Zeile code um den integrierten zu starten. Dennoch muss gesagt werden, dass dieses Framework von seiner Struktur nicht jeden Wunsch erfüllen mag (welches Framework maßt sich schon an, derartiges zu behaupten?), dennoch ist es sicherlich für 95% der Anwendungsfälle geeignet. Jedenfalls habe ich speziell für meine Anforderungen bisher nichts effizienteres gefunden.

Das Framework befindet sich derzeit noch in einer alpha-phase, was bedeutet, dass viele Features hinzugefügt oder entfernt werden können. Ferner besteht natürlich keine Garantie auf Funktionalität. Falls diese Software Daten beschädigt oder etwas als Folge hat, was nicht erwartet wurde, ist der Autor (Torben Schinke), dafür nicht zur Verantwortung zu ziehen.

Zur Zeit basiert das System im Kern, auf der Java-Servlet Technologie, ausgeführt durch den Jetty-Webserver. Es werden statisch kompilierte Klassen unterstützt sowie dynamische Webanwendungen basierend auf Groovy-Scripten. Dieser Modus bietet den Vorteil einer typischen Webentwicklung wie man sie von PHP- oder Rubyanwendungen her kennt.

Ich halte es für ineffizient HTML-Generierung von Hand durchzuführen. Daher ist einer der Grundpfeiler der Effizienz eine HTML-Komponenten Bibliothek, die Darstellung von Webseiten (oder anderen Ausgaben) kapselt. Der Erfahrung nach steht dies auch nicht im Wiederspruch zur Trennung der Arbeit von Designern und der von Entwicklern, denn in der Regel liefern Designern nur entsprechende Designmuster in Form von statischen HTML-Seiten ab, was letztendlich bedeutet, dass die Integration tatsächlich vom Entwickler vorgenommen werden muss. Eine ordentliche Strukturierung (CSS) vorausgesetzt, dürfte dieser Teil zudem der leichteste von allen sein, und im Wesentlichen ein späterer Austausch des CSS genügen.

Der Quellcode kann aus dem SVN svn://neotos.de/jaiwls anonym ausgecheckt werden. Beachten Sie auch die beiliegenden Beispiele. Das erste stellt den einfachsten "Hallo Welt"-Fall dar. Das zweite ist etwas komplexer und zeigt einige best-practices mit dem Framework.

Kontext

Der Ursprung des Projektes geht auf einen Wochend-Hack hinaus, einem Proof-Of-Concept nur aus Interesse. Allerdings hat sich dieses Konzept als derart praktisch erwiesen, dass sogleich eine Integration in das Universitäts Projekt OLIVANDA erfolgte. Dort stellt es ein webasiertes Server-Interface zwecks Administration zur Verfügung.

Nach ein paar Monaten, kann ich nun ein veröffentlichbares, völlig neu gestaltetes Framework präsentieren. Auf Grund von einigen Sicherheitslücken und Designfehlern, wird allerdings der proof-of-concept Quellcode nicht veröffentlicht.

Features

  • Komponenten um komplexe HTML-Strukturen zu erzeugen
  • Einfach in bestehende Projekte einbindbar
  • Dynamische Webseiten mit Groovy möglich
  • Zur Laufzeit injekzierbare Singelton-Instanz
  • Ausführliche Stacktraces bei Fehlern
  • Eingebetteter Webserver
  • Geringe Ram-Belastung für compilierte Projekte
  • flexibles URL-Rewriting
  • und einiges mehr...

Lizenz

Der Quellcode ansich steht unter der Apache2 Lizenz, die voll kompatibel zur GPL v3 sein soll. Es werden allerdings einige Bibliotheken benötigt, die mitunter andere Lizenzen aufweisen. Für einen Einsatz sollten Sie diese ebenfalls prüfen, ob diese Ihren Voraussetzungen genügen.

Tutorials

Folgende Tutorials sind derzeit verfügbar:

Changelog

[29. October 2008]
Release der ersten Alpha Version 0.01. Noch keine dynamische Kompilationsfähigkeit zur Laufzeit. Dennoch recht stabil für statisch kompilierte Anwendungen.

[25. March 2009]
Release der zweiten Alpha Version 0.02. Diese Version enthält, neben einigen Bugfixes, weitgehende Scripting-Möglichkeiten mittels Groovy.

[11. Mai 2009]
Release der dritten Alpha Version 0.03. Einige kleinere API Änderungen am WebContext und WebApplication. Bugfixes.

Viel Spaß

AttachmentDatumSize
[file] jaiwls_alpha_0.01.zip31/03/09 9:48 am2 MB
[file] jaiwls_alpha_0.02.zip31/03/09 9:58 am5.74 MB
[file] jaiwls_alpha_0.03.zip11/05/09 2:18 pm18.04 MB