Frage

Ich denke darüber nach, meine eigene Website mit Java zu erstellen und überlege, welches Framework ich verwenden soll.Bei einer schnellen Suche nach Java-Frameworks stehen jedoch mehr als 50 zur Auswahl!

Meine Website dient zunächst nur meinem eigenen Vergnügen beim Erstellen, aber wenn sie populär wird, wäre es gut, wenn sie eine gewisse Skalierbarkeit hätte oder zumindest die Möglichkeit hätte, sie dafür neu zu gestalten.

Was sind die Hauptunterschiede zwischen den bekannteren 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 erlernen und zu verwenden sind als andere.

Gibt es jemanden, der Erfahrung mit einigen dieser Frameworks hat und eine Empfehlung aussprechen kann?Dient die schiere Vielzahl an Auswahlmöglichkeiten nur als Frühwarnung, um die Java-basierte Webentwicklung nach Möglichkeit zu vermeiden?

War es hilfreich?

Lösung

Ich habe verwendet Wandteppich 3, Wicket, Echo, Und JSF ziemlich umfangreich.Ich würde Ihnen wirklich empfehlen, sich diese anzusehen und diejenige auszuwählen, die für Sie am einfachsten erscheint und am ehesten zu Ihrer bevorzugten Arbeitsweise passt.

Von ihnen war es für mich am angenehmsten, mit ihnen zu arbeiten Wicket, aufgrund der leichten Art der Komponentenerstellung und der Einfachheit der Seitenvorlage.Das gilt umso mehr, 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 dieses Produkt eine ziemlich enge Nische bedient.Sie ändern anscheinend auch das Entwicklungsmodell mit jeder größeren Veröffentlichung.

Tapisserie ist ein großartiges Produkt, aber es unterscheidet sich offensichtlich stark von den anderen, was das Entwicklungsmodell betrifft, da es hauptsächlich von einem Mann geleitet wird.Howard Lewis Ship ist zweifellos ziemlich schlau, aber ich bin enttäuscht über ihre Entscheidung, die Abwärtskompatibilität bei jeder Veröffentlichung grundsätzlich zu vergessen.Für Ihre Bedürfnisse spielt dies jedoch möglicherweise keine Rolle, und ich habe es immer als angenehm empfunden, mit den Tapestry-Produkten zu arbeiten.

JSF ist schon seit Jahren auf dem Markt und fühlt sich immer noch wie etwas an, das a Streben Kerl, der gebaut wurde, um alle Probleme von Struts zu beheben.Ohne wirklich alle Probleme mit Struts 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 für seine Zukunft.Ich denke, die nächste Version (2.0), die in JEE6 bereitgestellt wird, wird es wirklich zur Geltung bringen, mit einer neuen Vorlagensyntax (ähnlich wie Facelets) und einem vereinfachten Komponentenmodell (benutzerdefinierte Komponenten in nur einer Datei ...)Endlich).

Und natürlich gibt es eine Million kleinerer Frameworks und Tools, die ihre eigene Fangemeinde haben (Geschwindigkeit für Grundbedürfnisse, roh JSPs, Streben usw.).Allerdings bevorzuge ich selbst grundsätzlich komponentenorientierte Frameworks.

Abschließend würde ich empfehlen, einen Blick auf Tapestry, Wicket und JSF zu werfen und einfach das auszuwählen, das sich für Sie am besten anfühlt.Sie werden wahrscheinlich sehr schnell eine finden, die genau zu Ihrer Arbeitsweise passt.

Andere Tipps

Mein Favorit ist das Spring Framework.Mit 2.5 ist Spring MVC soooo umwerfend, mit neuen Anmerkungen, Konventionen über Konfigurationsfunktionen usw.

Wenn Sie nur etwas sehr Einfaches tun, können Sie auch einfach die reguläre Servlet-API verwenden und sich nicht mit einem Framework herumschlagen.

Ich empfehle die Komponentenorientierung Wicket Rahmen.Es ermöglicht Ihnen, Ihre Webanwendung in einfachem alten Java-Code zu schreiben, Sie können POJOs als Modell für alle Komponenten verwenden und müssen sich nicht mit riesigen XML-Konfigurationsdateien herumschlagen.

Ich hatte erfolgreich eine Online-Banking-Anwendung mit Struts entwickelt, als ich Wicket entdeckte und sah, wie einfach die Entwicklung von Webanwendungen sein kann!

Ich habe vor kurzem damit begonnen, das zu verwenden Streifen-Framework.Wenn Sie nach einem anforderungsbasierten Framework suchen, das wirklich einfach zu verwenden ist, Ihnen aber keine Grenzen setzt, würde ich es wärmstens empfehlen.

Es ähnelt den Streben, geht aber weit darüber hinaus.Es gibt sogar einige Plugin-Projekte, die es Ihnen ermöglichen, mit sehr wenig Konfiguration den Ruhezustand oder JPA zu verwenden.

Es gibt viele gute Frameworks, obwohl ich gehört habe, dass Wicket auch gut ist, aber ich habe es noch nicht verwendet.

Ich habe es selbst noch nicht ausprobiert, aber ich denke

http://www.playframework.org/

hat viel Potenzial...

Es kommt von PHP und klassischem ASP und ist das erste Java-Web-Framework, das für mich vielversprechend klingt ...

AKTUALISIEREN:Tapestry 5.2 ist erschienen, also nicht aufgegeben, wie es zuvor den Anschein hatte.Ich habe Erfahrung mit Tapestry 4, nicht mit 5, daher kann Ihr Kilometerstand variieren.Meine Meinung über Tapestry hat sich im Laufe der Jahre geändert;Ich habe diesen Beitrag geändert, um dies widerzuspiegeln.

Ich kann Tapestry nicht mehr wie zuvor empfehlen.Tapestry 5 scheint eine deutliche Verbesserung zu sein, aber mein Hauptproblem mit Tapestry liegt nicht in der Plattform selbst;Es liegt an den Menschen dahinter.

Historisch gesehen hat jedes größere Versionsupdate von Tapestry die Abwärtskompatibilität mit extremen Vorurteilen beeinträchtigt, weit mehr als man erwarten würde.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 etwas bedeutet.Die Entwicklung von Tapestry 5 begann fast unmittelbar nach der Auslieferung von Tapestry 4.Soweit ich das beurteilen kann, hat sich Ship intensiv damit beschäftigt und „Tapestry 4“ in die Hände anderer Mitwirkender überlassen, die meiner Meinung nach bei weitem nicht so fähig sind wie Ship.Nachdem ich den schmerzhaften Wechsel von Wandteppich 3 zu Wandteppich 4 vollzogen hatte, hatte ich fast sofort das Gefühl, verlassen worden zu sein.

Mit der Veröffentlichung von Tapestry 5 wurde Tapestry 4 natürlich zu einem Legacy-Produkt.Ich hätte damit kein Problem, wenn der Upgrade-Pfad nicht so brutal wäre wieder.Nun befindet sich unser Entwicklungsteam in einer eher wenig beneidenswerten Lage:Wir könnten weiterhin eine im Wesentlichen aufgegebene 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.

Tapestry 5 ist angeblich so geschrieben, dass die Wahrscheinlichkeit eines Update-Abbruchs von diesem Zeitpunkt 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 zahlreiche Abwärtskompatibilitätsprobleme.In Tapestry 5 sind Seiten POJOs, die zur Laufzeit über Annotationen mit dem „magischen Tapestry-Feenstaub“ angereichert werden.Solange der Vertrag für die Anmerkungen aufrechterhalten wird, haben Änderungen an Tapestry keine Auswirkungen auf Ihre Seitenklassen.

Wenn dies zutrifft, könnte das Schreiben einer neuen Bewerbung mit Tapestry 5 erfolgreich sein.Aber ich persönlich habe keine Lust, noch einmal die Hand auf den Herd zu legen.

Haftungsausschluss:Ich arbeite bei Vaadin (ehemals IT Mill)

Wenn Sie etwas RIA-artiges machen, sollten Sie es sich vielleicht ansehen Vaadin.Es handelt sich um ein Open-Source-UI-orientiertes AJAX-Framework, das für mich angenehm zu verwenden ist (ich komme selbst aus einem PHP-Hintergrund).

Da ist ein Fallstudie Das ist vergleichbar mit der gleichen Anwendung (d. h.zwei Anwendungen mit den gleichen Funktionen) in Icefaces und Vaadin.Kurz gesagt heißt es, dass die UI-Entwicklung erheblich schneller war.

Obwohl die Studie im Wiki des Unternehmens gehostet wird, kann ich versichern, dass sie objektiv, echt und wahrheitsgetreu ist, obwohl ich Sie nicht zwingen kann, mir zu glauben.

Nach langem Testen verschiedener Lösungen stellte sich für mich heraus:

  • Spring MVC für die Präsentations- und Controller -Ebene (kein Spring -Webflow, da meine Strömungen auf AJAX basieren)

  • jQuery für alle clientseitigen Dinge

  • Spring Security für den Sicherheitsaspekt

  • Ruhezustand / JPA2

  • Anlegestelle zwecks Weiterführung (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, den ganzen Java-Kram zu überspringen und stattdessen Scala/LIFT zu lernen.Meiner Meinung nach ist alles in Java, was mit modernster Webentwicklung zu tun hat (Comet, asynchrone Kommunikation, Sicherheit (Ja, sogar mit Spring Security!) ist immer noch ein bisschen ein Hack (beweisen Sie mir bitte durch Beweise das Gegenteil!).Für mich scheint Scala/LIFT eher eine „out-of-the-box“- und Komplettlösung zu sein.

Der Grund, warum ich mich schließlich entschieden habe nicht mit Scala zu gehen ist

  • Als Projektleiter muss ich die Personalressourcen berücksichtigen, und Java-Entwickler sind viel einfacher zu finden als Scala-Entwickler

  • Für die meisten Entwickler in meinem Team ist das Funktionskonzept von Scala, so hervorragend es auch ist, schwer zu verstehen

Prost er

Ich habe auch Gutes über das Spring Framework gehört.Im Allgemeinen war ich jedoch von den meisten Java-Web-Frameworks, die ich mir angesehen habe, (insbesondere Struts) enttäuscht.

Für eine einfache App würde ich auf jeden Fall die Verwendung „roher“ Servlets und JSPs in Betracht ziehen und mir keine Gedanken über die Einführung eines Frameworks machen.Wenn die Servlets gut geschrieben sind, sollte es in Zukunft problemlos möglich sein, sie bei Bedarf auf ein Framework zu portieren, wenn die App komplexer wird.

Meine Wahl ist Wicket!!

Alle - das ist das Problem ;-)

Ich denke, für Ihre bescheidenen Anforderungen müssen Sie lediglich Servlets oder einfache JSP-Seiten codieren, die Sie vom Tomcat-Server aus bereitstellen können.Ich glaube nicht, dass Sie für persönliche Website-Daten irgendeine Art von Web-Framework (wie Struts) benötigen

„JSF verwenden“ zu sagen ist etwas zu einfach.Wenn Sie sich für die Verwendung von JSF entscheiden, müssen Sie darüber hinaus eine Komponentenbibliothek auswählen.Werden Sie MyFaces Tomahawk, Trinidad, Tobago (http://myfaces.apache.org/)?Oder vielleicht ICEfaces (http://www.icefaces.org/)?Oh, und wenn Sie ICEfaces verwenden, verwenden Sie dann JSPs oder Facelets für Ihre Ansichten?

Meiner Meinung nach ist es zu schwer zu sagen.Niemand hat die Zeit, alle vielversprechenden Alternativen zu bewerten, zumindest nicht 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 nicht in einem Jahr verschwunden sind.JSF gibt es noch einige Zeit, und da es von der Sonne vorangetrieben wird, wird es es noch einige Zeit geben.Ich kann nicht sagen, ob es die beste Wahl ist, aber es wird eine gute sein.

http://zkoss.org - der Gute

Für stark frequentierte Websites 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 (Wicket ist mein Favorit) nur verwenden, wenn die Anwendung eher einer Desktop-Anwendung ähneln soll.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 verfügt es über ein seltsames, mit Annotationen überladenes Programmiermodell, das die Vorteile der statischen Typisierung nicht nutzt.Es gibt noch andere hässliche Dinge wie Ausgabeparameter in Methoden in Kombination mit einer normalen Rückgabe, sodass es zwei Ausgabekanäle einer Methode gibt.Spring MVC tendiert 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 Programmieren macht Spaß und Sie werden schnell Ergebnisse sehen.

Und vergessen Sie nicht, dass die Servlet-API mit ein paar kleinen Helfern wie FreeMarker für die Vorlagenerstellung sehr leistungsfähig ist.

Ich habe einige Frameworks und Vaadin evaluiert (http://vaadin.com/home) ist bis ganz nach oben versickert.

Sie sollten es zumindest kurz bewerten.

Prost!

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 einfach ein Service-Framework (wie Jersey/JAXRS) zusammen mit einem JavaScript-Toolkit (für kleine bis mittlere Projekte). .

Ich empfehle Seam, besonders wenn Sie Ausdauer brauchen.

Sehen Sie sich einige Kommentare zu einigen Java-Anwendungs-Frameworks an (zweiter Absatz):

http://swiss-knife.blogspot.com/2009/11/some-java-application-servers.html

Für schnell und schick GUI, mit der Sie JSF verwenden können Richfaces Bibliothek.Richfaces-UI-Komponenten sind einfach zu verwenden und praktische Referenzen mit Code-Demonstration auf der Demo-Site.Später, wenn Ihre Site wahrscheinlich mehr Daten verarbeiten muss und viele Informationen in der Datenbank verarbeitet werden müssen, können Sie jedes Datenbankzugriffsframework (ORM) damit verbinden.

Ich kann nicht glauben, dass niemand GWT erwähnt hat

Meine Lieblingsmethode für wirklich einfache Apps ist Apache VelocityTools (VelocityLayoutServlet) mit Velosurf (http://velosurf.sourceforge.net).

Für komplexere Apps Spring MVC oder Struts 2.

Probieren Sie HybridJava aus – das ist viel einfacher als alles andere.

ich würde sagen vaadin oder Tor

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top