Ich denke darüber nach, meine eigene Website mit Java zu erstellen, und versuche zu entscheiden, welches Framework verwendet werden soll. Bei einer schnellen Suche nach Java-Frameworks stehen jedoch mehr als 50 zur Auswahl!
Meine Website wird nur zu meinem eigenen Vergnügen am Anfang erstellt, aber wenn sie populär wird, wäre es gut, wenn sie skalierbar wäre oder zumindest in der Lage wäre, sie neu zu gestalten.
Was sind die Hauptunterschiede zwischen den populäreren Frameworks? Gibt es Fälle, in denen einer die anderen deutlich übertrifft? Zum Beispiel Unternehmensanwendungen mit hohem Datenverkehr im Vergleich zu kleinen Anwendungen mit geringem Datenverkehr. Ich frage mich auch, ob einige viel einfacher zu lernen und zu verwenden sind als andere.
Gibt es jemanden, der Erfahrung mit einigen dieser Frameworks hat und eine Empfehlung aussprechen kann? Dient die bloße Auswahl nur als Frühwarnung, um eine Java-basierte Webentwicklung nach Möglichkeit zu vermeiden?
Antworten:
Ich habe Tapestry 3 , Wicket , Echo und JSF ziemlich ausgiebig verwendet. Ich würde wirklich empfehlen, dass Sie sich diese ansehen und diejenige auswählen, die für Sie am einfachsten erscheint und die Ihrer Arbeitsweise am ehesten entspricht.
Von diesen war Wicket für mich aufgrund der Leichtigkeit der Komponentenerstellung und der Einfachheit der Seitenvorlagen am bequemsten zu bearbeiten . Das geht doppelt, wenn Sie Ihren eigenen Datenbankcode anstelle von Hibernate oder einem anderen Framework verwenden (ich war mit Wicket Hibernate oder Spring Integration nie ganz zufrieden).
Echo ist großartig, wenn es Ihnen nichts ausmacht, Ihr gesamtes Layout in Java zu schreiben. Ich weiß, dass das jetzt anders ist, aber ich denke immer noch, dass das Produkt eine ziemlich enge Nische bedient. Sie ändern das Entwicklungsmodell anscheinend auch mit jeder Hauptversion.
Tapisserie ist ein großartiges Produkt, aber es unterscheidet sich offensichtlich stark von den anderen in Bezug auf das Entwicklungsmodell, da es hauptsächlich von einem Typen geführt wird. Howard Lewis Ship ist zweifellos ziemlich schlau, aber ich bin enttäuscht von ihrer Entscheidung, die Abwärtskompatibilität mit jeder Veröffentlichung grundsätzlich zu vergessen. Für Ihre Bedürfnisse spielt dies jedoch möglicherweise keine Rolle, und ich fand es immer angenehm, gegen die Tapestry-Produkte zu arbeiten.
JSF ist seit Jahren unterwegs und fühlt sich immer noch wie etwas an, das ein Struts- Typ gebaut hat, um alle Probleme von Struts zu beheben. Ohne alle Probleme mit Struts wirklich zu verstehen. Es fühlt sich immer noch unvollendet an, obwohl das Produkt offensichtlich sehr flexibel ist. Ich benutze es und habe eine gewisse Vorliebe dafür, mit großen Hoffnungen auf seine Zukunft. Ich denke, die nächste Version (2.0), die in JEE6 ausgeliefert wird, wird sie mit einer neuen Vorlagensyntax (ähnlich wie Facelets) und einem vereinfachten Komponentenmodell (benutzerdefinierte Komponenten in nur einer Datei ... endlich) wirklich zur Geltung bringen.
Und natürlich gibt es eine Million kleinerer Frameworks und Tools, die ihre eigene Anhängerschaft haben ( Geschwindigkeit für Grundbedürfnisse, rohe JSPs , Struts usw.). Generell bevorzuge ich jedoch komponentenorientierte Frameworks.
Am Ende würde ich empfehlen, nur einen Blick auf Tapestry, Wicket und JSF zu werfen und nur den auszuwählen, der sich für Sie am besten anfühlt. Sie werden wahrscheinlich eine finden, die genau zu Ihrer Arbeitsweise passt.
quelle
Mein Favorit ist das Spring Framework. Mit 2.5 Spring ist MVC soooo umwerfend, mit neuen Anmerkungen, Konventionen über Konfigurationsfunktionen usw.
Wenn Sie nur etwas sehr Einfaches tun, können Sie auch versuchen, die reguläre Servlet-API zu verwenden, ohne sich um ein Framework zu kümmern.
quelle
Ich empfehle das komponentenorientierte Wicket- Framework. Sie können Ihre Webanwendung in einfachem alten Java-Code schreiben, POJOs als Modell für alle Komponenten verwenden und müssen nicht mit riesigen XML-Konfigurationsdateien herumspielen.
Ich hatte erfolgreich eine Online-Banking-Anwendung mit Struts entwickelt, als ich Wicket entdeckte und sah, wie einfach die Entwicklung von Webanwendungen sein kann!
quelle
Ich habe vor kurzem begonnen, das Stripes Framework zu verwenden . Wenn Sie nach einem anforderungsbasierten Framework suchen, das wirklich einfach zu verwenden ist, aber Ihrer Arbeit keine Grenzen setzt, kann ich es nur empfehlen.
Es ist ähnlich wie Streben, aber es geht weit darüber hinaus. Es gibt sogar einige Plugin-Projekte, mit denen Sie den Ruhezustand oder jpa mit sehr wenig Konfiguration verwenden können.
Es gibt viele gute Frameworks, obwohl ich gehört habe, dass Wicket auch gut ist, aber ich habe es nicht verwendet.
quelle
Ich habe es nicht selbst versucht, aber ich denke
http://www.playframework.org/
hat viel Potenzial ...
Es kommt von PHP und Classic Asp und ist das erste Java-Webframework, das für mich vielversprechend klingt.
quelle
UPDATE: Tapestry 5.2 ist erschienen, daher wird es nicht aufgegeben, wie es zuvor schien. Meine Erfahrung ist mit Tapisserie 4, nicht mit 5, daher kann Ihr Kilometerstand variieren. Meine Meinung zu Tapisserie hat sich im Laufe der Jahre geändert. Ich habe diesen Beitrag geändert, um ihn wiederzugeben.
Ich kann Tapisserie nicht mehr wie zuvor empfehlen. Tapisserie 5 scheint eine signifikante Verbesserung zu sein, aber mein Hauptproblem bei Tapisserie ist nicht die Plattform selbst; Es ist mit den Menschen dahinter.
In der Vergangenheit hat jedes größere Versionsupdate von Tapestry die Abwärtskompatibilität mit extremen Vorurteilen gebrochen, weit mehr als man erwarten könnte. Dies scheint auf die Integration neuer Codierungstechniken oder -technologien zurückzuführen zu sein, die erhebliche Umschreibungen erfordern.
Howard Lewis Ship (der Hauptautor von Tapestry) ist sicherlich ein brillanter Entwickler, aber ich kann nicht sagen, dass mir sein Management des Tapestry-Projekts am Herzen liegt. Die Entwicklung von Tapestry 5 begann fast unmittelbar nach dem Versand von Tapestry 4. Nach allem, was ich sagen kann, hat sich Ship so ziemlich dem gewidmet und Tapestry 4 in den Händen anderer Mitwirkender gelassen, die meiner Meinung nach bei weitem nicht so fähig sind wie Ship. Nachdem ich den schmerzhaften Wechsel von Tapisserie 3 zu Tapisserie 4 vollzogen hatte, fühlte ich mich fast sofort verlassen.
Mit der Veröffentlichung von Tapestry 5 wurde Tapestry 4 natürlich zu einem Legacy-Produkt. Ich würde kein Problem damit haben , wenn der Upgrade - Pfad nicht so brutal war wieder . Jetzt ist unser Entwicklungsteam in einer nicht beneidenswerten Position: Wir könnten weiterhin eine im Wesentlichen verlassene Webplattform (Tapestry 4) verwenden, das abscheuliche Upgrade auf Tapestry 5 durchführen oder Tapestry ganz aufgeben und unsere Anwendung auf einer anderen Plattform neu schreiben. Keine dieser Optionen ist sehr attraktiv.
Tapisserie 5 soll so geschrieben sein, dass die Wahrscheinlichkeit eines Aktualisierungsbruchs von diesem Punkt an verringert wird. Ein gutes Beispiel sind die Seitenklassen: In früheren Inkarnationen stammten Seitenklassen von einer von Tapestry bereitgestellten Basisklasse ab. Inkompatible API-Änderungen in dieser Klasse waren die Ursache für eine große Anzahl von Abwärtskompatibilitätsproblemen. In Tapestry 5 sind Seiten POJOs, die zur Laufzeit mit dem "Magic Tapestry Fairy Dust" über Anmerkungen erweitert werden. Solange der Vertrag für die Anmerkungen beibehalten wird, wirken sich Änderungen an Tapisserie nicht auf Ihre Seitenklassen aus.
Wenn dies richtig ist, könnte sich das Schreiben einer neuen Anwendung mit Tapestry 5 als gut herausstellen. Aber ich persönlich habe keine Lust, meine Hand wieder auf den Brenner zu legen.
quelle
Disclamer: Ich arbeite bei Vaadin (früher IT Mill)
Wenn Sie etwas RIAish machen, sollten Sie sich Vaadin ansehen . Es ist ein Open-Source-UI-orientiertes AJAX-Framework, das für mich gut zu verwenden ist (ich komme selbst aus einem PHP-Hintergrund).
Es gibt eine Fallstudie , in der die gleiche Anwendung (dh zwei Anwendungen mit denselben Funktionen) in Icefaces und Vaadin verglichen wird. Kurz gesagt heißt es, dass die Entwicklung der Benutzeroberfläche erheblich schneller war.
Obwohl die Studie im Wiki des Unternehmens gehostet wird, kann ich versichern, dass sie objektiv, echt und wahrheitsgemäß ist, obwohl ich Sie nicht zwingen kann, mir zu glauben.
quelle
Nach einer langen Zeit des Testens verschiedener Lösungen stellte sich für mich heraus:
Spring MVC für die Präsentations- und Controller-Ebene (KEIN Spring Webflow, da meine Flows auf Ajax basieren)
jQuery für alle clientseitigen Inhalte
Frühlingssicherheit für den Sicherheitsaspekt
Ruhezustand / JPA2
Anlegestelle für Fortsetzungen (Komet)
Ein Monat mit einer außerordentlich steilen Lernkurve, aber jetzt bin ich glücklich.
Ich möchte auch erwähnen, dass ich nur einen kleinen Schritt davon entfernt war, all das Java-Zeug zu überspringen und stattdessen Scala / LIFT zu lernen. Für mich ist alles in Java, was mit modernster Webentwicklung zu tun hat (Komet, asynchrone Kommunikation, Sicherheit (ja, sogar mit Spring Security!)), Immer noch ein Hack (beweisen Sie mich durch Beweise falsch, bitte !). Für mich scheint Scala / LIFT eine Out-of-the-Box- und All-in-One-Lösung zu sein.
Der Grund, warum ich mich schließlich entschieden habe, nicht mit Scala zu gehen, ist
Als Projektleiter muss ich die Personalabteilung berücksichtigen und Java-Entwickler sind viel einfacher zu finden als Scala-Entwickler
Für die meisten Entwickler in meinem Team ist das funktionale Konzept von Scala, so hervorragend es auch ist, schwer zu verstehen
Prost Er
quelle
Ich habe auch gute Dinge über das Spring Framework gehört. Im Allgemeinen war ich jedoch von den meisten Java-Webframeworks, die ich mir angesehen habe (insbesondere Struts), überwältigt.
Für eine einfache App würde ich definitiv in Betracht ziehen, "rohe" Servlets und JSPs zu verwenden und mir keine Sorgen über die Einführung eines Frameworks zu machen. Wenn die Servlets gut geschrieben sind, sollte es in Zukunft unkompliziert sein, bei Bedarf auf ein Framework zu portieren, wenn die Komplexität der App zunimmt.
quelle
Meine Wahl ist Wicket !!
quelle
Alle - das ist das Problem ;-)
quelle
Ich denke, für Ihre bescheidenen Anforderungen müssen Sie nur Servlets oder einfache JSP-Seiten codieren, die Sie vom Tomcat-Server aus bedienen können. Ich glaube nicht, dass Sie irgendeine Art von Web-Framework (wie Streben) für persönliche Website-Daten benötigen
quelle
"JSF verwenden" zu sagen ist etwas zu einfach. Wenn Sie sich für JSF entscheiden, müssen Sie darüber eine Komponentenbibliothek auswählen. Verwenden Sie MyFaces Tomahawk, Trinidad, Tobago ( http://myfaces.apache.org/ )? Oder vielleicht ICEfaces ( http://www.icefaces.org/ )? Oh, und wenn Sie ICEfaces verwenden, werden Sie JSPs oder Facelets für Ihre Ansichten verwenden?
Meiner Meinung nach ist es zu schwer zu sagen. Niemand hat die Zeit, alle vielversprechenden Alternativen zu evaluieren, zumindest in den Projekten, an denen ich arbeite, weil sie nicht groß genug sind, um dreimonatige Evaluierungsphasen durchzuführen. Sie sollten sich jedoch nach einigen umsehen, die eine große und aktive Community haben und seit einem Jahr nicht mehr weg sind. JSF gibt es schon seit einiger Zeit, und da es von der Sonne geschoben wird, wird es noch einige Zeit da sein. Ich kann nicht sagen, ob es die beste Wahl ist, aber es wird eine gute sein.
quelle
http://zkoss.org - der Gute
quelle
Für Websites mit hohem Datenverkehr würde ich ein Framework verwenden, das den Clientstatus auf dem Server nicht verwaltet. Wicket, JSF und Tapestry verwalten den Clientstatus auf dem Server. Ich würde diese Frameworks nur verwenden (Wicket ist mein Favorit), wenn die Anwendung eher einer Desktop-Anwendung ähneln sollte. Ich würde jedoch versuchen, einen skalierbareren und einfacheren REST + AJAX-Ansatz zu verwenden.
Spring MVC wäre ein Kandidat, aber seit Spring MVC 3 gibt es ein seltsames, mit Anmerkungen überladenes Programmiermodell, das die Vorteile der statischen Typisierung nicht nutzt. Es gibt andere hässliche Dinge wie Ausgabeparameter in Methoden, die mit einer üblichen Rückgabe kombiniert werden. Es gibt also zwei Ausgabekanäle einer Methode. Spring MVC neigt auch dazu, das Rad neu zu erfinden, und Sie müssen im Vergleich zu anderen Frameworks mehr konfigurieren. Ich kann Spring MVC nicht wirklich empfehlen, obwohl es einige nette Ideen hat.
Grails ist eine bequeme Möglichkeit, Spring MVC und andere etablierte Frameworks wie Hibernate zu verwenden. Das Codieren macht Spaß und Sie werden schnell Ergebnisse sehen.
Und vergessen Sie nicht, dass die Servlet-API mit einigen kleinen Helfern wie FreeMarker für Vorlagen sehr leistungsfähig ist.
quelle
Ich habe einige Frameworks evaluiert und Vaadin ( http://vaadin.com/home ) ist ganz nach oben versickert.
Sie sollten es zumindest kurz bewerten.
Prost!
quelle
Meine Wahl wäre Wicket (für große Projekte und eine vorhersehbare Benutzerbasis), GWT (für große Projekte, die größtenteils öffentlich zugänglich sind) oder nur ein Service-Framework (wie Jersey / JAXRS) zusammen mit einem JavaScript-Toolkit (für kleine bis mittlere Projekte). .
quelle
Ich empfehle Seam, besonders wenn Sie Ausdauer brauchen.
quelle
Einige Kommentare zu einigen Java-Anwendungsframeworks (zweiter Absatz):
http://swiss-knife.blogspot.com/2009/11/some-java-application-servers.html
quelle
Für eine schnelle und ausgefallene Benutzeroberfläche können Sie JSF mit der Richfaces- Bibliothek verwenden. Richfaces-UI-Komponenten sind einfach zu verwenden und praktische Referenzen mit Code-Demonstration auf der Demo-Site verfügbar. Wahrscheinlich später, wenn Ihre Site mehr Daten zu verarbeiten hat und viele Informationen in der Datenbank verarbeitet werden müssen, können Sie jedes Datenbankzugriffsframework (ORM) damit verbinden.
quelle
Ich kann nicht glauben, dass niemand GWT erwähnt hat
quelle
Mein Lieblingsweg für wirklich einfache Apps ist Apache VelocityTools (VelocityLayoutServlet) mit Velosurf ( http://velosurf.sourceforge.net ).
Für komplexere Apps Spring MVC oder Struts 2.
quelle
Probieren Sie HybridJava aus - das ist viel einfacher als alles andere.
quelle
Ich würde Vaadin oder Wicket sagen
quelle