Ich habe über JSF gelesen, dass es ein UI-Framework ist und einige UI-Komponenten bereitstellt. Aber wie ist es besser oder anders als die Anzahl der Komponenten, die von jQueryUI, AngularJS, ExtJS oder sogar einfachem HTML, CSS und JavaScript verfügbar sind?
Warum sollte jemand JSF lernen?
user-interface
jsf
javascript-framework
Sushil Bharwani
quelle
quelle
Antworten:
JSF zu einfachem JSP / Servlet / HTML / CSS / JS ist wie jQuery zu einfachem JS: Mit weniger Code mehr erreichen. Um PrimeFaces (basierend auf jQuery + jQuery UI) als Beispiel zu verwenden, durchsuchen Sie das Schaufenster , um vollständige Codebeispiele anzuzeigen. BootsFaces (jQuery + Bootstrap UI-basiert) bietet auch ein Schaufenster mit vollständigen Codebeispielen. Wenn Sie diese Beispiele genau studieren, werden Sie feststellen, dass Sie grundsätzlich eine einfache Javabean-Klasse als Modell und eine XHTML-Datei als Ansicht benötigen.
Beachten Sie, dass Sie JSF nicht als Ersatz für HTML / CSS / JS sehen sollten, sondern auch den serverseitigen Teil berücksichtigen sollten (insbesondere: JSP / Servlet). JSF macht das Boilerplate überflüssig, HTTP-Anforderungsparameter zu erfassen, zu konvertieren / validieren, die Modellwerte zu aktualisieren, die richtige Java-Methode für die Geschäftsabwicklung auszuführen und den HTML / CSS / JS-Boilerplate-Code zu generieren. Mit JSF erhalten Sie im Grunde eine XHTML-Seite als Ansichtsdefinition und eine Javabean-Klasse als Modelldefinition. Dies beschleunigt die Entwicklung erheblich.
Wie bei jedem komponentenbasierten Web-MVC-Framework haben Sie in JSF eine weniger fein abgestimmte Kontrolle über das gerenderte HTML / CSS / JS. Das Hinzufügen von benutzerdefiniertem JS-Code ist nicht so einfach, da Sie auch den JSF-Ansichtsstatus auf der Serverseite berücksichtigen müssen (z. B. wird durch Aktivieren einer deaktivierten Schaltfläche auf der JS-Seite die Schaltfläche auf der JSF-Seite nicht aktiviert, was wiederum a ist großer Sicherheitsvorteil). Wenn dies jedoch ein wichtiger Showstopper ist, suchen Sie lieber nach einem aktionsbasierten Web-MVC-Framework wie Spring MVC . Sie werden nur berücksichtigen, dass Sie den gesamten HTML / CSS / JS-Code selbst schreiben müssen . Auch wenn Sie von Facelets auf JSP zurückgreifen, werden Sie auch erweiterte Vorlagenfunktionen vermissen.
Wenn Sie jedoch eine große JSP / Servlet / HTML / CSS / JS / jQuery-basierte Website haben und den wiederholten JSP / Servlet / HTML / CSS / JS / jQuery-Boilerplate-Code in wiederverwendbare Komponenten umgestalten möchten, dann Eine der Lösungen wäre JSF. Benutzerdefinierte Vorlagen, Tagfiles und Komponenten können dabei helfen. In dieser Perspektive steht JSF über JSP / Servlet / HTML / CSS / JS / jQuery (und deshalb ist es auch ziemlich wichtig, diese Grundlagen zu verstehen, bevor Sie in JSF eintauchen).
Ein reales JSF-basiertes Kickoff-Projekt finden Sie hier: Java EE Kickoff App . Sie werden sehen, dass es neben JSF auch gutes HTML5 , CSS3 und jQuery enthält .
Siehe auch:
quelle
JSF wurde erstellt, damit Java-Shops nicht wie jQuery lernen und komplexe JS erstellen müssen, sondern sich auf einen reinen Java-Stack konzentrieren müssen. In einer Welt, in der Zeit Geld ist und viele Orte sich bereits auf die Java-Entwicklung konzentrieren, macht eine Sprache weniger im Stapel das Training und die Wartung schneller und damit billiger.
Ich möchte hinzufügen, dass JavaScript in großen Teams leicht zu einem Alptraum für die Wartung wird, insbesondere wenn einige der Entwickler des Projekts nicht sehr web-versiert sind.
quelle
Mit Javascript und Frameworks wie jQuery haben Sie volle Flexibilität und volle Kontrolle. Mit ext's usw. verlieren Sie viel Kontrolle und müssen sich an das Framework anpassen. Mit JSF verlieren Sie die Kontrolle und müssen sich vollständig an das Framework anpassen. Sie werden in Lebenszyklen usw. aufgerufen und haben schließlich keine Kontrolle darüber, wann der Anruf beim Server getätigt werden kann und wo nicht. Wenn Sie etwas tun wollen, das als "besonders" gilt, sind Sie in einer sehr schwierigen Position. Und in der JSF-Welt werden selbst grundlegende Dinge wie mehrspaltige Tabellensortierung oder Felder, in die Sie nur einen begrenzten Satz von Zeichen eingeben können (z. B. ein Zahlenfeld), als "speziell" betrachtet.
Je mehr Flexibilität Sie haben, desto mehr Fehler oder schlechte Praktiken können Sie machen. Hohe Flexibilität funktioniert nur mit hochintelligenten Programmierern, andere machen das Projekt zu einem unüberschaubaren Albtraum.
Aber mit JSF und seiner begrenzten Flexibilität gibt es immer nur wenige (oder sogar nur einen) richtigen Weg, um etwas zu tun. Sie sind sehr eingeschränkt, Sie können keine Verknüpfungen erstellen, Sie müssen mehr XML usw. schreiben. Wenn Sie sich jedoch an den Standard anpassen, können Sie den Code, den unerfahrene oder gering qualifizierte Programmierer erstellen, besser kontrollieren. Aus diesem Grund lieben große Unternehmen JSF, weil es für sie „sicherer“ ist.
Als ich von GWT zu JSF wechselte, war ich schockiert, wie viele Dinge, die für mich natürlich waren, als höchst untypisch angesehen wurden und wie viele einfache Dinge so schwer zu erreichen waren. Selbst wenn kleinste Änderungen vorgenommen wurden, z. B. das Hinzufügen eines ':' - Zeichens nach dem Etikett, das in der GWT / jQuery-App eine Funktion zum Generieren des Etiketts ändern würde, mussten Dutzende von Dateien mit lokalisierten Eigenschaften geändert werden, was von nicht einmal berücksichtigt wurde jemand außer mir seltsam ...
quelle
Die Vorteile der Verwendung von JSF liegen nicht nur in der Generierung von xhtml + css + js. Manchmal legt JSF eine Einschränkung für das Markup fest, das Sie generieren können, wie bei jedem komponentenbasierten Framework. Aber JSF ist nicht nur dafür, sein Lebensstil hilft sehr. Nach der Überprüfung der Eingabe kann das Modell aktualisiert und Ihre serverseitigen Beans ohne Aufwand synchronisiert werden. Sie sagen einfach "Was auch immer der Benutzer hier eingibt, prüfen Sie, ob es sich um eine Zahl handelt, wenn ja, speichern Sie sie in der Eigenschaft YY in Objekt XX", und JSF erledigt das alles.
Ja, Sie können weiterhin JQuery, JS usw. verwenden. JSF bietet jedoch viele Vorteile beim Schreiben von serverseitigem Code und erspart Ihnen viel Kesselplatte.
quelle
Ich bin nicht der Meinung, dass jsf etwas hinzufügt. Es fügt nur Overhead hinzu. UI-Sachen auf dem Server zu machen ist das Lächerlichste, was ich je gehört habe. Und Javascript in großen Teams funktioniert hervorragend - es wird als Wiederverwendungscode bezeichnet.
Wickeln Sie die JQuery einfach in einige JSP-Tags, das ist alles, was Sie brauchen und was Sie getan haben, und ertragen Sie die Probleme mit Fesseln und Skalierbarkeit mit JSF und RichFaces nicht.
quelle
Nachdem ich mit JSF, Spring MVC, Struts, Grails, JQuery und ExtJS gearbeitet habe, bin ich der Meinung, dass Grails + ExtJS eine leistungsstarke Kombination ist.
Ich würde jeden Tag Grails über JSF pflücken. Ich mag die Vollständigkeit von ExtJS als clientseitiges Framework und Bibliothek, aber es hat eine steilere Lernkurve als JQuery.
quelle
Hier sind die größten Unterschiede zwischen jQuery und JSF:
jQuery sollte niemals als Full-Stack-Webframework verwendet werden. Es war eher dazu gedacht, JS-Code auf niedriger Ebene zu ersetzen, damit das Schreiben von JS in weniger Codezeilen einfacher und leistungsfähiger wird.
Daher sollte es hauptsächlich zum Hinzufügen von Verhalten zu HTML-Elementen verwendet werden.
quelle
Nachdem ich das ExtJS-Framework für eine große Webanwendung verwendet habe, weiß ich, wie einfach es zu verwenden ist. Das ExtJS (Schena) eignet sich am besten für (Oracle 11g) Datenbankinteraktionen in der MVC-Architektur. Die Ansicht war für die visuellen / Benutzerinteraktionen. Der Controller gab die 'Verarbeitung' und die Trigger an, die für die PLSQL-Pakete verwendet werden mussten (die API für die CRUD-, SQL-Auswahlabfragen usw.). Das Modell und die Speicherdateien wurden verwendet, um die Datenelemente dem Viewer / den Eingaben zuzuordnen.
ExtJS ist nicht für nicht datenbankintensive Webschnittstellen geeignet, bei denen Angular JS möglicherweise besser geeignet ist.
quelle