Welche(s) Framework(s) wären geeignet?

UnkiDunki

Bekanntes Mitglied
Hi,

mir ist bewusst, dass es schon sehr viele Threads zu diesem Thema gibt, die ich mir auch fleissig durchgelesen habe, allerdings ist ne persönliche Beratung doch irgendwie immer hilfreicher und aufschlussgebender und daher stelle auch ich diese Frage:

Welche(s) Framework(s) wären geeignet?

Ich programmiere jetzt schon einige Jahre in Java und fühle mich immer auf der Stelle tretend, obwohl ich zugeben muss, dass es im Vergleich zu meinen Anfängen doch schon ein Quantensprung zu heute ist. Trotzdem habe ich immer noch das Gefühl nie wirklich "guten" Code zu fabrizieren...
Bis heute habe ich mich vor Frameworks gesträubt. Nicht nur in Java, sondern auch in anderen Programmiersprachen und habe so immer das ein oder andere Rad neu erfinden müssen und tue es natürlich immer noch... mit zumeist unmotiverenden und sehr "zweifelhaften" Ergebnissen 🙂
Kann zwar sagen, dass ich jede Codezeile im Endeffekt selber geschrieben habe, aber sehe das jetzt im Nachhinein irgendwie als Zeitverlust an.

Daher möchte ich mich ENDLICH MAL mit Frameworks beschäftigen, wobei eigentlich der Wunsch schon häufiger aufkam, ich aber immer wieder abgeschreckt wurde, wenn sich die Erfolgserlebnisse nicht recht schnell gezeigt haben...

Mein aktuelles Projekt ist ein Warenwirtschaftssystem bzw, soll eines werden. Irgendwie trete ich, wie schon gesagt, immer auf der Stelle... ab einem gewissen Punkt gefällt mir mein Code nicht mehr und ich verbessere ihn, wodurch ich natürlich schon einiges gelernt habe, aber man halt nicht wirklich voran kommt. Zuletzt habe ich auf MVC umgestellt. Dieses Konzept macht mir wirklich Spass und ist sehr sinnvoll. Vorallem im Vergleich zu meinem vorher frabrizierten Code 🙂 Läuft auch immer besser...

Jedenfalls suche ich vorallem a) ein Framework für die GUI-Erstellung (benutze seit jeher Swing) und b) ein Framework für die Datenbankschicht, also OR-Mapping etc.

Für letzteres könnte ich mir Hibernate gut vorschlagen, aber vielleicht gibt es auch ein gutes Framework, was vorallem diese beiden Geschichten vereint...
Gibt es ein Framework, wozu es gute Tuts gibt und auch mehr oder weniger anfängerfreundlich, will sagen einsteigerfreundlich ist?

Umsteigen auf SWT und dann mit JFace arbeiten? Eclipse RCP wurde mir schon in mehreren Threads nahegelegt... Ja...

Ich weiss, dass es DAS Framework wohl nicht gibt und dass das mehr oder weniger immer eine persönliche Entscheidung ist, da es immer Pros und Contras gibt, aber genau deswegen habe ich diesen Thread erstellt.

Würde mich über Anregungen freuen und stehe für weitere Fragen gerne bereit, die eine Entscheidung meinerseits vielleicht in eine gewisse Richtung lenken könnten 🙂

Danke im Voraus
 
Was genau sind denn die Ziele? Geschaeftsanwendung mit Fontend, DB-Layer und Business-Logik?

Wir machen Spring und nutzen sehr viel von den Templates und Hilfsklassen die die zur Verfuegung stellen.

- Alle Komponenten vollstaendig per IoC-Container konfiguriert.
- DB-Layer auf Basis Oracle, ORM mit Hibernate, Transaktionskontrolle a la Spring (AOP), Caching mit EHcache, alles unter Zuhilfenahme der Spring Unterstuetzung.
- Lose Kopplung von Komponenten gern u. a. mit Spring HTTPInvokern.
- Viel eigene AOP, wobei wir unsere Advices direkt von den Spring Basisklassen ableiten. (Keine <aop😛roxy auto>-Zeugs)
- Frontend webbasiert mit Spring Webflow2 + JSF, Facelets (allerdings kein Spring WebMVC)
- Sicherung mit Spring Security.
 
Hi,

tja... was sind meine Ziele? Da dieses Projekt zu "Übungszwecken" gedacht ist, habe ich eigentlich keinerlei Auflagen außer vielleicht, dass es keine Webanwendung, sondern eine Desktopapplikation werden soll und ich gerne H2 als DBMS einsetzen möchte.
Ich wäre da also relativ flexibel. Selbst Multiuserfähigkeit müsste vielleicht anfangs garnicht mal realisiert werden, sondern könnte erstmal einem Einzelplatzrechner mit embedded DB weichen... Anforderungen sind also recht gering.
 
Ich denke, dass man am Anfangs sich zwischen den folgenden Frameworks entscheiden sollte, wenn man nicht speziellere Anforderungen hat, die dort ein spezielles erfordern.

1) Logging Framework: Logging benötigt man eigentlich in jeder Applikation und ist einfach eine Basic Sache, die man kennen sollte. Ich persönlich bevorzuge hier SLF4J und dahinter idr. Logback als eigentliches Logging-Framework. Lernt man Log4J macht man aber sicher auch keinen Fehler.

2) IoC Framework: Man hat durch IoC einfach viele Vorteile, was sein Design betrifft. Die Platzhirsche sind hier wohl Spring oder Google Guice. Bei Spring muss man eigentlich direkt noch Kleinigkeiten mit lernen und es wirkt anfangs sehr groß und unübersichtlich. Guice dagegen ist wesentlich kleiner, schlanker und meiner Meinung nach schneller gelernt.

3) ORM Framework: Hier sollte man auf jedenfall soweit es geht auf den JPA (2.0) Standard setzten. Welche eigentlichen Provider man dann im Hintergrund einsetzt ist wohl egal. EclipseLink hat hier glaube ich weniger Abhängigkeiten und ist somit für einen Anfänger vermutlich einfacher einzubinden als Hibernate mit seinen vielen Abhängigkeiten.

Ansonsten lohnt sich immer ein Blick auf kleinere Bibliotheken, die einem das leben in speziellen Situationen erleichtern, z.B. JUnit, google-collections, Mock-Framework, ...

Einige Beispiele (kleinere Lauffähige Snippets) findet du z.B. auf meiner google-code Projektseite: java-library-examples - Project Hosting on Google Code
 
Du hast nach Jahren des Programmierens JETZT "endlich" Rekursionen verstanden!?

Ich würde bei den Frameworks ansonsten auf die java-Standards setzen.. JPA für ORM, und wenns zur "Übung" ist halte ich eine Webanwendung für besser, da immer mehr dahin geht, alles mögliche als Webanwendung zu implementieren, und diese kann man ja auch lokal laufen lassen (mit einem lokal installierten Application Server, die Anwendung läuft dann halt im Browser mit localhost als URL). Dafür würde ich Dir seam sehr nahe legen. Das integriert JSF, JPA und einiges andere und ist als "Meta-Framework" ausserordentlich elegant und effizient.
 
Du hast nach Jahren des Programmierens JETZT "endlich" Rekursionen verstanden!?

Ich hätte lieber den betreffenden Eintrag http://javathreads.de/2010/04/begri...sion-anschaulich-durch-buch-glossar-erklaert/ statt des Blogs verlinken sollen, dann hätte mein Satz vielleicht den richtigen Unterton bekommen 🙂

Seam werde ich mir mal anschauen. Das bin ich bis jetzt immer übergangen, da ich auf reine Desktopapplikationen "versteift" war...

NACHTAG @JanHH: Ich muss schon sagen, dass mir, je länger ich nachdenke, der Gedanke komplett auf Webanwendung setzen irgendwie immer mehr gefällt, wobei wir dann dabei wären: Weches Webframework wäre geeignet? Gibt ja auch schon zufällig ne passende Umfrage dazu 🙂 http://www.java-forum.org/allgemeines-ee/101019-umfrage-webframeworks.html. Seam also dein Favorit 🙂
 
Zuletzt bearbeitet:
Bei dem Thema sticht man in ein Wespennest.. ich arbeite mit seam, einerseits weil ich das bei einem Projekt einfach muss (der Projektleiter hats vorgegeben), andererseits bei anderen Projekten auch, weil ichs halt will (weil ichs offenbar gut finde).

Die Argumentation des besagten Projektleiters ist, dass er es vorzieht, auf Dinge zu setzen, die dem java-EE-Standard entsprechen, da hier die grösste Akzeptanz und Zukunftssicherheit zu erwarten ist. Er kennt allerdings auch andere Sachen (Spring, Struts, etc.) und ich denke, er kann das dann auch beurteilen.

Zumindest beim ORM ist die Welt noch relativ überschaubar, an JPA und Hibernate/Toplink führt eigentlich kaum ein Weg dran vorbei (wobei JPA da wieder der offizielle java-Standard ist). Für die Applikationsschicht ein Dependency-Injection-Framework ist auch klar, wobei seam da sehr leistungsfähig ist. Fürs Frontend ist JSF halt der offizielle Standard, aber heiss umstritten, es gibt hier jede Menge Gegner.. aber ich kenne kein anderes und ich finds eigentlich ok. Die markanten Nachteile von JSF 1.2 werden von seam behoben.

Viele Sachen, die von seam kommen, haben auch Einzug in JEE 6 gefunden, z.B. quasi alle JSF-Verbesserungen (jsf1.2 + seam = jsf 2.0, grob gesagt), sowie der "kontextuelle Komponenten-Container" mit den diversen Scopes und DI usw.

Ich denke, man liegt damit zumindest nicht völlig falsch.
 

Zurück
Oben