Wir befinden uns in der Planungsphase der Migration einer großen Website, die auf einem speziell entwickelten MVC-Framework basiert, auf ein Java-basiertes Webframework, das integrierte Unterstützung für Ajax, Rich Media-Inhalte, Mashup, vorlagenbasiertes Layout, Validierung und maximales HTML / bietet. Java-Code-Trennung. Grails sah nach einer guten Wahl aus, wir möchten jedoch keine Skriptsprache verwenden. Wir wollen weiterhin Java verwenden. Das vorlagenbasierte Layout ist ein Hauptanliegen, da wir beabsichtigen, diese Webanwendung mit mehreren Websites mit ähnlichen Funktionen, aber radikal unterschiedlichem Erscheinungsbild zu verwenden.
Passt eine portalbasierte Lösung gut zu diesem Problem?
Alle Einblicke in die Verwendung von "Spring Roo" oder "Play" sind sehr hilfreich.
Ich habe ähnliche Beiträge wie diesen gefunden , aber es ist mehr als ein Jahr alt. In der Zwischenzeit haben sich die Dinge sicherlich geändert!
EDIT 1: Danke für die tollen Antworten! Diese Seite wird zur besten Quelle für Programmiererinformationen. Ich hatte jedoch mehr Informationen über die Verwendung eines Portal-CMS-Duos erwartet. Jahia sieht gut aus. Etwas ähnliches?
quelle
Antworten:
Persönlich würde ich mich von großen, fetten Portallösungen fernhalten (sie sind oft Produktivitätskiller). Ich habe zwar gute Dinge über Gatein gehört, aber ich habe keine wirklichen Erfahrungen damit.
Über Spring Roo habe ich frühere Antworten wie Spring Roo Vs (Wicket und Spring) und andere Dinge über das Internet gelesen, aber ich bin immer noch nicht überzeugt (vielleicht verstehe ich es nicht), ich bin mir nicht sicher, ob es ausgereift ist Und, was noch wichtiger ist, ich frage mich wirklich, was SpringSource mit Grails und Roo macht (nein, Grails vs Roo - warum SpringSource zwei sehr ähnliche Technologien vorantreibt? Überzeugt mich nicht, dass beide überleben werden).
Ich kann nicht viel über Play sagen. Ich habe die Demo wie jeder andere gesehen, aber ich würde gerne Feedback aus dem wirklichen Leben lesen. Bis dahin werde ich warten.
Ja und nein :) Aber lasst uns die Hölle der Präsentations-Frameworks betreten: Es gibt keine einzige Antwort auf Ihre Frage (wie vor einem Jahr), es gibt Dutzende von Frameworks und keinen klaren Gewinner. Um nur einige zu nennen:
Eigentlich würde ich vorschlagen, einen Blick auf die Präsentationen von Matt Raible zu werfen. Er hat wirklich großartige Arbeit geleistet, um Web-Frameworks zu vergleichen, ihre Stärken und Schwächen aufzuzeigen, Fakten und Zahlen zu sammeln, Trends aufzuzeigen ... Ich empfehle:
Schauen Sie sich diese Präsentationen an, sie helfen Ihnen dabei, einen geeigneten Rahmen zu finden (es gibt keine eindeutige Antwort, aber Sie können die Auswahl durch Eliminierung einschränken) und können Ihre Sichtweise ändern.
quelle
Ich benutze Spring 3 und Jquery schon eine Weile, habe aber von Play gehört und es ausprobiert. Ich mag es wirklich, Play passt hervorragend zwischen PHP und den leistungsstarken Java-Frameworks wie Spring.
Die Dinge, die ich am meisten am Spiel mag, sind:
Dinge, die ich an Play nicht mag
quelle
Die beste Wahl für mich ist Wicket . Klare Trennung von Markup und Java-Code. Sehr einfach zu schreibende und zu verwendende Komponenten. Einfach zu bedienendes Ajax, Testbarkeit. Sie können direkt in Ihre Seiten / Komponenten debuggen und erhalten keine kryptischen Fehlermeldungen von Ihrer JSF-Implementierung;)
Es gibt auch einen guten Vergleich Wicket <-> JSF in Bezug auf die Leistung
quelle
Die drei wichtigsten Optionen für mich sind (alphabetisch):
Sie:
quelle
Das Spiel ist ROR sehr ähnlich, einer ROR-Version in Java
quelle
Im Gegensatz zu anderen Antworten möchte ich die Nachteile (IMHO) beliebter Web-Frameworks hervorheben:
JSF2 - Freigegeben und bereits gealtert. Immer noch nur ein paar News / Artikel / Blogposts / Erlebnisse raus. Ich bin skeptisch. Ich warte immer noch auf die nächste Hauptversion von Richfaces / Icefaces, die jsf 2 vollständig unterstützt - derzeit können nur Alpha-Builds heruntergeladen werden.
Struts 2 - Scheint nur dann eine gute Sache zu sein, wenn Sie sich immer noch auf Struts verlassen und den größten Teil Ihres Codes umgestalten möchten. Sonst: Nicht.
GWT - Ich mag den Single-Page- und den Java-> Javascript-Ansatz nicht. Ich bin nicht sicher, ob eine Sitzung - mehrere Ansichten / Fenster leicht erreicht werden können. Für mich sollte dieses Framework für Single-Window-Rich-Internet-Anwendungen für Großbenutzer verwendet werden.
Wicket - Netter Ansatz, aber ein bisschen ausführlich und zu wenig Dokumentation verfügbar (außer dem guten Wicket im Aktionsbuch, aber dies deckt nur 1,3 ab). Außerdem fehlen mir große Projekte, die darauf aufbauen. Und ich kann derzeit nicht sehen, wohin die Straße des Wickets führt oder ob sie bereits in eine Sackgasse gefahren wurde.
Feder MVC - Ich habe dies noch nicht versucht, aber Sie müssen viele Gläser (Spring Mess) in Ihren Klassenpfad aufnehmen, um mit diesem Framework richtig arbeiten zu können. Und es basiert auf JSP (in den meisten Projekten), die ich bereits für tot halte. Und Sie erhalten nur ein reines MVC-Framework - alle anderen Dinge (Ajax und andere) müssen implementiert / integriert werden.
Streifen - Ein kleines und gut gestaltetes MVC-Framework, aber zu wenig Dokumentation, zu wenig Commits / Committer, zu wenige Releases, zu wenig Branchenunterstützung, zu weniger Mailinglistenaktivität.
Ich bin auch neugierig, ob ich da draußen ein wichtiges Framework verpasst habe (ich habe Tapestry absichtlich weggelassen), das eine Option für Sie (und auch für mich) sein könnte.
quelle
Ich habe mit JAX-RS großen Erfolg gehabt . Es ist das einzige Java Web Framework, das über eine andere JSR-Spezifikation und mehrere Implementierungen als die Servlet- und Portlet-Spezifikation verfügt (obwohl dies eine schlechte Sache sein kann).
Eine schlechte und gute Sache bei Java ist, dass Sie Frameworks auswählen und anpassen können (Python hat auch diese Funktion / dieses Problem). Es ist schön, weil Sie nicht alle Eier in einen Korb legen müssen.
Hier ist ein allgemeines Java Web Application Stack-Rezept:
Javascript / Flash + Bearbeitung von Anfragen / Antworten + Abhängigkeitsinjektion + Persistenz
Javascript: JQuery, Prototyp, Dojo
Anfrage / Antwort: Spring MVC, Stripes und mein Lieblings-JAX-RS (Jersey, Apache CXF)
Abhängigkeitsinjektion: Frühling, Guice
Beharrlichkeit: JPA (Ruhezustand, Google App-Speicher), Ruhezustand, JDO und mehr.
Ich hatte auch großen Erfolg bei der Verwendung von AspectJ, um Java "weniger saugen" zu lassen. Wenn Sie die @ Configable- und AspectJ-ITD-Mixins von Spring verwenden, können Sie Rails wie Domain-Objekte erhalten (dies ist genau das, was Roo tut, aber Sie brauchen Roo nicht, um dies zu tun).
quelle
Ich habe festgestellt, dass Streifen sehr effektiv und überraschend leicht sind. Sie sollen leichter sein als Streben . Ich habe von Freunden, die Vollzeit-Webentwickler sind, gehört, dass es sich nicht lohnt, sich mit JSF zu beschäftigen, obwohl ich keine Erfahrung aus erster Hand habe und dies nicht mit Beispielen (!) Unterstützen kann.
quelle
Schauen Sie sich RESThub an , das den gleichen Prinzipien folgt wie Play! Dies wird jedoch durch die Wiederverwendung einiger Frameworks / Tools für Unternehmen wie Maven 3 / Spring 3 / Jersey / jQuery implementiert.
RESThub ist im Vergleich zu anderen Frameworks sehr störend, da es sich um ein Full-Stack-Toolkit handelt, jedoch ohne serverseitige MVC- oder Servlet-basierte Framworks. Stattdessen wird eine auf der jQuery-Benutzeroberfläche basierende GUI verwendet, die JAX-RS (REST) -Webdienste und ein auf eingebetteten Js basierendes Javascript-Template-System verwendet.
Server sind zustandslos und wir verwenden HTML5 sessionStorage, um die Sitzung auf der Clientseite zu halten. Dieser Ansatz ist auf RIA und Skalierbarkeit ausgelegt.
Einige Demo-Anwendungen werden bereitgestellt (auch wenn sie sich im Aufbau befinden).
quelle
JSF ist ein netter Rahmen, aber JSF 1.2 hatte jahrelang keine Vision von seiner Veröffentlichung. JSF 2.0 sieht vielversprechend aus und enthält viele neue Funktionen aus JSF 1.2, wie Ajax-Unterstützung, Facelets, Annotation-Unterstützung und Standardkonventionen (weniger XML), einfache Komponentenerstellung als 1.2.
Es lässt sich auch gut in Spring integrieren, wenn Sie DI-Unterstützung benötigen.
quelle
Ich würde die Frühlingsempfehlung unterstützen. Ich bin kein großer Fan von GWT, ich glaube nicht, dass der Java -> Javascript Crosscompiler noch ganz da ist. Ich arbeite an einer AJAX-App, die Spring auf dem Server und jQuery auf dem Client verwendet. Obwohl jQuery technisch nicht sofort einsatzbereit ist, ist die Implementierung eines Spring-MVC AjaxView kinderleicht und erfordert etwa 25 Codezeilen.
quelle
Vielleicht ein bisschen spät zur Show, aber ich muss Vaadin erwähnen . Die Programmierung erfolgt ausschließlich in Java mit einem komponentenbasierten Ansatz. Bei der Client-Server-Kommunikation geht es mehr um Benutzerinteraktion als um Datentransport. Die gesamte Geschäftslogik befindet sich auf dem Server.
quelle
Ext GWT + Frühling
quelle
Ich denke, was Sie suchen, ist etwas in der Nähe von Jahia. Es unterstützt GWT, Mashups, Medieninhalte usw.
http://www.jahia.org/cms/lang/en/home/Jahiapedia/Jahia_Templates http://www.jahia.net/downloads/jahia/jahia6.0.0/readme/index.html
quelle
BACKBASE PORTAL SOFTWARE
Vor ein paar Jahren haben Portalsoftware " Backbase " verwendet, die damals noch nicht sehr ausgereift war. War aber gut und einfach für die Entwicklung.
quelle
Schauen Sie sich ItsNat an
ItsNat ist im Grunde ein Java W3C-Browser im Server, der erstaunlich einfach ist (DHTML im Server) und AJAX-intensive Single Page Interface- Anwendungen fördert
quelle
Etwas, das mehr als nur eine Kugel verdient, sind spielerbasierte RIA-Frameworks. Ex. Adobe Flex + Java (Dies kann natürlich etwas davon abhängen, ob Ihre "Site" wirklich eine "Site" oder eher eine "Anwendung" ist. Sie würden in Flex keine Blog-Site erstellen.)
Im Sinne von AJAX als Schlagwort verwendet Flex normalerweise AMF (ein Binärprotokoll, das effizienter ist als die von AJAX-Apps verwendeten Protokolle), obwohl Sie auch mit Flex streng AJAX-Aufgaben ausführen können. Flex unterstützt also AJAX, aber auch "besser als AJAX".
Da Flex auf der Flash-Plattform für virtuelle Maschinen ausgeführt wird, muss meiner Meinung nach wenig hinzugefügt werden.
Ich bin mir nicht sicher, worauf es genau ankommt, aber es klingt wie Flex mxml.
Wird natürlich unterstützt, obwohl Sie sich vielleicht dazu entschließen, einige benutzerdefinierte Dinge zu tun, wenn Sie Lust haben. (Nicht, dass Sie müssen.) Das Schöne ist, dass Sie so raffiniert werden können, wie Sie wollen - oder nicht.
Mit einem Entwicklungsansatz für virtuelle Maschinen wie Flex / Silverlight / JavaFX können Sie nicht mehr getrennt werden. Auf diese Weise können Sie Ihren Präsentationscode nicht nur von Ihrer serverseitigen Logik- und Datenzugriffsschicht getrennt halten, sondern auch sicherstellen, dass sie getrennt sind. Durch die Virtualisierung Ihrer Entwicklungsumgebung erhalten Sie browserübergreifende Kompatibilität, eine konsistente Zielplattform, keine Sorgen über neue Browser oder neue Browserversionen, die Ihre Anwendung beschädigen, erstklassige Java-ähnliche Debugging-Funktionen und ein professionelleres / beeindruckenderes Endprodukt .
quelle