Ich bin neu bei StackExchange, aber ich habe mir gedacht, dass Sie mir helfen können.
Wir erstellen eine neue Java Enterprise-Anwendung und ersetzen eine ältere JSP-Lösung. Aufgrund vieler Änderungen werden die Benutzeroberfläche und Teile der Geschäftslogik komplett überarbeitet und neu implementiert.
Unser erster Gedanke war JSF, wie es der Standard in Java EE ist. Anfangs hatte ich einen guten Eindruck. Aber jetzt versuche ich, einen funktionalen Prototyp zu implementieren, und habe einige ernsthafte Bedenken, ihn zu verwenden.
Zuallererst erzeugt es den schlimmsten, überladensten ungültigen Pseudo-HTML / CSS / JS-Mix, den ich je gesehen habe. Es verstößt gegen jede einzelne Regel, die ich in der Webentwicklung gelernt habe. Darüber hinaus wirft es zusammen, was noch nie so eng miteinander verbunden sein sollte: Layout, Design, Logik und Kommunikation mit dem Server. Ich verstehe nicht, wie ich diese Ausgabe komfortabel erweitern kann, ob mit CSS gestylt, UI-Bonbons hinzugefügt (wie konfigurierbare Hotkeys, Drag-and-Drop-Widgets) oder was auch immer.
Zweitens ist es viel zu kompliziert. Die Komplexität ist hervorragend. Wenn Sie mich fragen, ist es eine schlechte Abstraktion grundlegender Webtechnologien, die am Ende verkrüppelt und nutzlos ist. Welche Vorteile habe ich? Keine, wenn Sie darüber nachdenken. Hunderte von Bauteilen? Ich sehe zusätzlich Zehntausende von HTML / CSS-Snippets, Zehntausende von JavaScript-Snippets und Tausende von jQuery-Plug-Ins. Es löst wirklich viele Probleme - wir hätten es nicht, wenn wir JSF nicht verwenden würden. Oder das Front-Controller-Pattern überhaupt.
Und schließlich denke ich, dass wir in zwei Jahren von vorne anfangen müssen. Ich verstehe nicht, wie ich unser erstes GUI-Modell implementieren kann (außerdem haben wir keinen JSF-Experten in unserem Team). Vielleicht könnten wir es irgendwie zusammen hacken. Und dann wird es noch mehr geben. Ich bin sicher, wir könnten unseren Hack hacken. Aber irgendwann werden wir stecken bleiben. Aufgrund von allem, was darüber liegt, hat die Serviceebene die Kontrolle über JSF. Und wir müssen von vorne anfangen.
Mein Vorschlag wäre, eine REST-API mit JAX-RS zu implementieren. Erstellen Sie dann einen HTML5 / Javascript-Client mit clientseitigem MVC. (oder etwas Geschmack von MVC ..) Übrigens; Wir werden die REST-API sowieso brauchen, da wir auch ein teilweises Android-Frontend entwickeln.
Ich bezweifle, dass JSF heutzutage die beste Lösung ist. Da sich das Internet weiterentwickelt, verstehe ich wirklich nicht, warum wir diesen "Rechen" verwenden sollten.
Was sind nun die Vor- und Nachteile? Wie kann ich betonen, dass ich JSF nicht verwenden soll? Was sind die Stärken von JSF gegenüber meinem Vorschlag?
quelle
Antworten:
Es gibt mindestens einen sehr guten Grund, über JSF nachzudenken.
Es ist ein Standardbestandteil des Java EE-Stacks und wird daher für sehr, sehr lange Zeit in ALLEN Java EE-Containern verfügbar sein - und funktionieren . Und auch gepflegt, ohne dass Sie dies tun müssen, wenn Sie sich strikt an die Java EE-Spezifikation halten.
Wenn dies ein Problem für Sie ist, sollten Sie darüber nachdenken. Die meiste Software lebt länger als ihre Designer denken, besonders wenn dies beim Schreiben berücksichtigt wird.
quelle
Sie scheinen sich bereits über die Nachteile geeinigt zu haben, und ich muss einigen davon zustimmen (es trennt Layout und Logik nicht genug, und das resultierende HTML ist oft grausam), aber anderen widersprechen (wenn Sie es verwenden) Facelets, die ich sehr empfehlen würde, dann sollte die Ausgabe definitiv gültig sein).
Also hier sind einige Profis:
Keiner dieser Vorteile ist jedoch so groß, dass Sie JSF gegenüber einem anderen Framework verwenden sollten, mit dem Ihr Team bereits Erfahrung hat.
quelle
JSF ist ein angemessenes Stateful-Web-Framework für Java, das ein Standard ist. Dies bedeutet, dass es von vielen großen Anbietern (einschließlich FOSS) sofort unterstützt wird. Es unterstützt Bibliotheken von Drittanbietern (PrimeFaces, IceFaces usw.). Es bricht jedoch im Grunde genommen das Web aufgrund seiner staatlichen Natur (und einer Reihe anderer Dinge). Siehe Matt Raibles Vergleich von JVM-basierten Web-Frameworks .
Bearbeiten - mit JSF 2.2 - können Sie anfangen zu argumentieren, dass es das Web nicht mehr so stark beschädigt wie früher. Tatsächlich ist die HTML5-Integration nicht schrecklich :-).
quelle
Wir hatten eine ältere JSP / Struts 1.0-Anwendung. Wir haben Struts 2, JSF und alles andere, was seit Struts 1 passiert ist, übersprungen und sind zu Spring 3.0 gesprungen. Es hat Unterstützung (und eine aktive Community) für unsere Wunschliste - Eclipse IDE, MVC und REST. Außerdem haben wir unser altes, selbst entwickeltes Javascript / Ajax für jquery aufgegeben.
YMMV, aber der Frühling war für uns eine reibungslose Migration.
quelle