Tamuno - ein neues Java Web-App Framework mit einzigartigen Funktionen
Das Tamuno Framework ist ein von mir entwickeltes Java Framework zur Entwicklung von J2EE Web-Anwendungen. Grundgedanke war dabei die Entwicklung eines modularen MVC Web Frameworks auf Servlet Basis, welches die normale Java Typsicherheit auf allen Ebenen bietet, Refactoring unterstützt, Hohe Performance bei geringem Overhead hat und gleichzeitig Programmierer- und Designer freundlich ist.
Inhaltsverzeichnis |
Warum noch ein Framework ?
Es gibt eine Unzahl an Frameworks zur Webentwicklung mit Java - alle zu nennen wäre ein Ding der Unmöglichkeit. Die meisten dieser Systeme fallen momentan in eine von 4 Kategorien
- Reine JSP/Servlet Anwendungen
- Template basierte Systeme mit (i.A.) strikter Trennung von Model, View und Controller (z.B. Struts oder Rife)
- Komponentenbasierte Systeme - dass HTML, CSS und Javascript für das Userinterface und HTTP als Transportprotokoll verwendet werden, wird grösstenteils wegabstrahiert. (z.B. Google Web Toolkit)
- Frameworks auf Basis einer dynamischen Sprache, die eine direkte Interoperabilität mit Java Bibliotheken und Backend-Code ermöglichen. (z.B. JRuby (on Rails) oder Groovy / Grails)
Typsichere Templates
Jedes dieser Systeme hat seine individuellen Stärken und schwächen. Tamuno zielt darauf ab, die Vorteile des reinen Servlet/JSP Ansatzes mit den Vorteilen von Template- und Komponentenbasierten Frameworks zu kombinieren. Beim Tamuno Framework dient - wie auch bei JSPs - Java selbst als Template-Sprache.
Im Gegensatz zu JSPs sind Templates jedoch ganz gewöhliche Java Methoden, die mittels einer @Template Annotation markiert, und vom Tamuno Präprozessor in ein JSP-artiges Template, und wieder zurück in eine Java Methode, verwandelt werden können. Das Ziel ist es dabei, beliebige Methoden zu generieren die dynamisch einen Text erzeugen. Wie dieser Text anschliessend verwendet wird, ist egal. Durch die Integration des Tamuno Präprozessors in den Ant Build-Prozess, und in die Netbeans IDE ist hohe Produktivität sichergestellt.
Trennung von Model, View und Controller
Bei Tamuno wird eine klare Trennung von Model, View und Controller angestrebt - allerdings nicht erzwungen. Das Tamuno Framework richtet sich an erfahrene Entwickler, die die nötige Disziplin aufbringen können die ihnen geboteten Möglichkeiten nicht zu missbrauchen. Tamuno bietet Methoden zum typsicheren Interfacing zu Backend Datenbanken via SQL (Tamuno SQL Code Generator). Sowie die Möglichkeit Java Methoden via Annotation als @Action zu HTTP Controllern zu machen. All diese Tools sind ebenfalls als Ant-Tasks und integriert in Netbeans verfügbar.
IDE Integration
Tamuno bietet eine exzellente Integration in das Netbeans IDE, eine führende Java Entwicklungsumgebung. So gibt es Wizards zum Anlegen eines Tamuno Projektes, und die Möglichkeit, mit einer einfachen Tastenkombination zwischen der Template-Text und der Java Ansicht eines Tamuno Templates hin und her zu schalten. Zudem einen Datenbank-Browser der es erlaubt zu bestehenden Tabellen automatisiert Code für den Tamuno SQL Generator zu erstellen.
Visuelles Editieren von Designs
Trotz der Tatsache dass eine HTML Seite aus möglicherweise dutzenden von Fragmenten besteht, kann ein HTML Frontend Designer das Layout komplett im Browser betrachten und dort mit sofortigem visuellem Feedback den HTML und CSS Quellcode manipulieren. Die vorgenommenen Änderungen können daraufhin aus dem Browser heraus gespeichert, und - mit Sicherheits-Rückfragen gesichert - auf die entsprechenden Templates und deren Java Quellcode verteilt werden. Der HTML und CSS Code kann - je nach Vorliebe - sowohl in Firefox als auch in Netbeans bearbeitet werden.
Komponentenbasierte Entwicklung
Visuelle Komponenten wie komplette HTML Seiten. Navigationselemente, Formulare oder Rahmenlayouts sind normale Java Objekte mit ggf. multiplen Sub-Templates. Dies erlaubt zudem eine Polymorphie des Layouts - d.h. verschiedene visuelle Komponenten können Eigenschaften voneinander erben, und Sub-Klassen von Basiselementen können leicht Eigenschaften anpassen. So kann man z.B. auf leichte und wartbare Weise Skinning und unterschiedliche Rahmenlayouts für unterschiedliche Bereiche eines Portals realisieren. Parameter für Templates können Typsicher als Member-Variablen von Komponenten oder als Methodenparameter von Template Methoden übergeben werden.
Kurze Entwicklungszyklen
Controller und Template Klassen werden während der Entwicklungsphase der Anwendung dynamisch rekompiliert sobald eine Änderung im Java Code oder einem der Templates dies nötig macht. Dies sorgt für schnelles Feedback in der Entwicklung, ein enorm wichtiger Faktor um Anwendungen schnell zu entwickeln.
Typsicheres SQL Interface - ergänzt O/R Mapper wie Hibernate
Ein weiterer Bereich der leicht unübersichtlichen und häufig schlecht validierten Code hervorbringt, ist das Interface zu SQL Datenbanken. O/R Mapper wie Hibernate bieten hier zwar Abhilfe, dennoch muss man häufig gerade komplexe SQL Statements häufig noch von Hand zusammenbauen. Das Tamuno Framework bietet auch hier Abhilfe, indem aus einer erweiterten SQL Syntax direkt Java Code generiert wird, welcher wiederum SQL Statements generiert, und dabei Sektionen des SQL Statement ein- oder ausblendet, je nachdem welche (optionalen) Parameter verfügbar sind. Durch Trennung von Interface und Implementation, und durch die Bereitstellung von Hooks kann leicht Unabhängigkeit vom verwendeten SQL Dialekt erreicht werden.
Pilotprojekte
Diese Webseite selbst wurde von Grund auf mit dem Tamuno Framework entwickelt, und dient als ein Pilot- und Testprojekt.
Lizenz
Das Tamuno Framework wird aller Wahrscheinlichkeit nach demnächst von mir unter der Apache Lizenz 2.0 veröffentlicht. Momentan arbeite ich noch an der Dokumentation des Frameworks, und unterziehe das Framework einigen Praxistests die es zunächst bestehen muss bevor ich es öffentlich freigebe.
Beta Version
Wer interesse an einer Beta-Version hat, kann sich gerne bei mir per Email melden (Kai -punkt- Londenberg -at- googlemail - punkt - com)