Java Framework für Webanwendungen

xardias

Mitglied
Hallo allerseits,

eins vorweg: ich habe dieses Thema bewusst nicht ins Java-J2EE Forum gesetzt, ich hoffe das ist in Ordnung so. Ich würde gerne auch die Meinung anderer Entwickler (besonders PHP) hören.. vielleicht würde man es mir erlauben ein verweisendes thema im php forum zu erstellen, diese verirren sich ja sonst kaum hierher..

Es geht um ein Framework für Java Webanwendungen, welches ich programmiere, bzw neu gestartet habe. Ich habe lange auch PHP verwendet, doch rein theoretisch finde ich, dass PHP in mancher Hinsicht ungeeignet ist um größere Webanwendungen z.b. ein Forum zu Programmieren. (Möchte ich jetzt nicht weiter drauf eingehen)

Daher bin ich irgendwann zu Java Servlets und JSP gewechselt, was einem viele Vorteile bietet. Jedoch habe ich auch gemerkt, dass JSP und Servlets ohne jede Art von Framework umständlich zu verwenden sind. Ich habe viele Frameworks ausprobiert (es gibt wirklich sehr viele), doch die meisten empfand ich ersönlich als zu kompliziert, für noch relativ simple Anwendungen wie ein Forum, andere haben konzeptuell nicht dazu gepasst.

Daher habe ich irgendwann angefangen ein eigenes Framework zu basteln, und jetzt da ich es komplett neu Entwickeln möchte habe ich mir gedacht, dass es vielleicht andere Entwicker gibt, die daran interesse haben könnten, ein einfaches Framework zu haben, welches einem die Vorteile von Java bietet und doch auch leicht zu verwenden ist, ohne J2EE zu lernen, oder lange Spezifikationen zu implementieren.

Wer interesse hat der kann sich gerne mal die Konzepte anschauen, ich würde auch gerne die Meinung von Java sowie auch von PHP Entwicklern hören.

Grundlage: Servlets/Module
In java genügt es normalerweise nicht einfach in einer globalen Variable per mysql_connect eine Datenbank Verbindung herzustellen. Man nutzt Pools um Datenbankverbindungen zu speichern. Sowas und viele anderen Sachen (z.b. UserManager, welcher eine Datenbankverbindung nutzt um Benutzer zu verwalten, logins auszuführen usw) auch können in einer globalen config Datei definiert werden.
Genauso wie Module definiert man Servlets, welche dynamische Seiten, manchmal auch dynamische Bilder o.Ä. generieren.
Code:
    <module name="usermanager" class="UserManager">
        <dependency name="databasepool" module="localdb" />
    </module>
     <module name="localdb" class="DatabasePool">
        <property name="driver" value="org.postgresql.Driver" />
        <property name="url" value="jdbc://localhost/devarea" />
        <property name="username" value="java" />
        <property name="password" value="java" />
    </module>

Template System:
Es sollen von anfang an Template und Logik getrennt werden. Jede Seite besteht aus einer Java klasse UND aus einem template. Das Template enthält nur wenig logik funktionen, kleine If Abfragen und ForEach schleifen. Die Java Klasse übernimmt das das Aufarbeiten der Daten (z.b. aus einer Datenbank) und leitet diese ans Template. Dies geschieht einfach per set("variablenname", "wert");
Kleines selbsterklärendes Beispiel, wie es so in etwa aussehen wird.
Code:
<table>
<tr><th>${titel}</th></tr>
<tr logic:foreach="$row in $list">
<td>${row.text}</td>
</tr>
<tr logic:if="$list.empty">
<td>leer</td>
</tr>
</table>

Nicht nur Seiten kann man aus einem Template und einer Klasse zusammenstellen sondern auch sog. Komponenten. Dies kann z.b. ein LoginFormular sein, oder sogar eine Abstrahierung zur Anzeige von Datensätzen aus einer Datenbank. So in etwa:
Anmerkung: Eine Komponenten muss nicht unbedingt ein Template haben, sie kann auch kein Template haben, dann wird der html code genutzt der beim einfügen im modul steht. Wenn ein Modul ein Template enthält, dann ist es rein praktisch soetwas wie ein php include.
Ein Beipsiel für die Anwendung:
Code:
<div component="DatasetList">
<parameter name="itemsPerPage" value="10" />

<h1>Eine Liste aus ${count} Datensätzen auf ${pageCount} Seiten</h1>
${pageList}

<div foreach="$row in $list">
<h2>${row.title}</h2>
${row.text}
<span class="small">gepostet von ${row.author}
</div>

${pageList}
</div>
Dies soll das Prizip zeigen, wie man Komponenten einbindet.
mit component="..." bindet man eine Komponente ein. Diese sorgt rein aktisch gesehen dafür, dass die Variablen mit Werten versehen werden. Also hier:
count - Anzahl der Einträge in der Liste
pageCount - Anzahl der Seiten auf die die Liste aufgeteilt wurde
list - Die liste mit den Einträgen, welche dann beliebige Variablen enthält die man im Code festlegen kann, oder in dem Fall aus der Datenbank ausgelesen werden.
pageList - ein text mit links ala "1 2 3 >" zum wechseln der seiten.

Mit <parameter> wurde übrigends ein Parameter an die Komponente übergeben, welche das sind kann die Komponente bestimmen, hier ist es die angabe wie viele Einträge auf einer Seite erscheinen sollen.

Der Vorteil, ist, dass man so sehr fix neue Listen einbauen kann. Ein Gästebuch ist damit eine Sache von 5 minuten. Das schöne ist auch, dass man so Seiten schon fast im LEGO stil zusammenfügen kann. Man muss oft nur noch Komponenten zusammenfügen und mit parametern anpassen.

Was nicht auf oberster priorität steht ist ein zusätzliches kleines CMS und Persistent Framework. (Waren bereits implementiert, sind aber nach dem Datenverlust verloren gegangen, daher habe ich angefangen alles neu zu beginnen).

zusammenfassend
Es soll ein Modulares einfach zu benutzendes Framework werden, welches sich in jeder erdenkichen Art und Weise von erfahrenen Entwicklern erweitern lässt, und alles in einfachen konstrukten den Benutzern zur verfügung stellt.

Das ist jetzt ja mal recht lang geworden.. Ich hoffe jemand überfliegt (oder liest sogar) den text.
Von Java Entwicklern würde ich gerne hören, was sie von dem Framework halten (abgesehen davon, dass es schon viele Frameworks gibt).
Von den PHP(oder anderen) entwicklern würde ich gerne hören, ob sie es in erwägung ziehen würden ein Framework dieser Art zu verwenden, ob es zu kompliziert wirkt, oder ihr da einfach keine Vorteile drin seht. (Da das Framework noch ganz am Anfang in der Entwicklung ist, soll das kein direktes Angebot sein).

gruß
Dennis

PS: Bei den Konzepten beziehe ich mich hauptsächlich auf meine Erfahrungen mit der lauffähigen Version, diese ist wie erwähnt teilweise beim bei einem datenverlust verloren gegangen.
 
Zuletzt bearbeitet:
Zurück