webentwicklung-frage-antwort-db.com.de

Unterschied zwischen JSP EL, JSF EL und Unified EL

Ich würde gerne den detaillierten Unterschied zwischen den Ausdruckssprachen (EL) kennen. Es gibt JSP EL, JSF EL und Unified EL.

Ich würde gerne wissen, welche Geschichte hinter der EL steckt und was die neueste EL ist, die in Java EE-Anwendungen verwendet wird. Ist die EL in den neuesten Versionen für alle View-Technologien gleich?

122
Krishna
  • Jun 2002: JSTL 1.0 wurde zum ersten Mal mit EL eingeführt. Es waren diese ${} Dinge, die nur in JSTL-Tags funktionieren. Es wurde entwickelt, um Javabean-get -Methoden aufzurufen.

  • November 2003: JSP 2.0 wurde eingeführt und EL wurde in javax.servlet.jsp.el Paket von JSTL 1.0 auf JSP 2.0 verschoben und es wurde Standard-EL als Teil von J2EE 1.4 Standard. JSTL 1.1 wurde ohne EL ausgeliefert. Jetzt funktioniert ${} Auch außerhalb von JSTL-Tags im JSP-Vorlagentext.

  • März 2004: JSF 1.0 wurde mit dem Paket Deferred EL in javax.faces.el eingeführt. Es waren diese #{} Dinge, die nur in JSF-Tags funktionieren. Der Unterschied zu Standard-JSP-EL ${} Besteht darin, dass es nicht nur get ausführt, sondern auch set ausführt. Dies war für die automatische Erstellung verwalteter Beans und das Festlegen der Werte von Eingabekomponenten obligatorisch. Die Standard-EL ${} Funktioniert auch in JSF-Ausgabe-Tags, aber sie erstellen keine Beans automatisch, wenn sie noch nicht im Gültigkeitsbereich vorhanden sind, und sie legen keine Eingabewerte fest.

  • Mai 2005: Während der Vorbereitung auf die Veröffentlichung von JSP 2.1 im Mai 2006 wurde die zurückgestellte EL #{} Aus JSF extrahiert und mit der Standard-EL ${} In javax.el Paket. Zu diesem Zeitpunkt wurde es Unified EL, das mit JSF 1.2 eingeführt wurde und später Teil von JSP 2.1 und Java EE 5 wurde. Der #{} Kann jetzt auch in JSP-Tags für get Werte, nicht jedoch für set Werte verwendet werden. Der ${} Kann jetzt in JSP auch automatisch verwaltete Beans erstellen, aber keine set Werte.

  • Nov 2006: Facelets wurde als Nachfolger von JSP eingeführt. Es erlaubte die Verwendung von #{} In Vorlagentexten außerhalb von JSF-Tags als Ersatz für <h:outputText> Ohne Attribute. Außerdem wird ${} Als #{} Behandelt, sodass sich beide in Facelets gleich verhalten.

  • Dezember 2009: EL wurde aus der JSP-Spezifikation extrahiert und wurde zu einer eigenständigen Spezifikation, die unabhängig von JSP verwaltet wird. Die erste Version ist EL 2.2 (JSR-245), analog zu JSP 2.2. Die wichtigste neue Funktion ist das Aufrufen parametrisierter Methoden, anstatt nur Javabean-Getter/Setter in der Syntax #{} Aufzurufen, z. #{bean.method(argument)}. Darüber hinaus wurden Facelets Teil des Java EE 6-Standards.

  • Jun 2013: EL 3.0 wurde mit einem eigenständigen EL-Prozessor eingeführt, der die Verwendung in einer einfachen Java SE-Anwendung ermöglicht. Weitere wichtige neue Funktionen sind der neue String-Verkettungsoperator +=, Neue Operationen für Sammlungsobjekte, einschließlich Streams und Lambda-Ausdrücken -> (Auch unter Java 6/7!) Und das Importieren von Konstanten in EL-Bereich.

216
BalusC

Hinzufügen zu BalusCs Antwort ...

EL wurde ursprünglich von Nathan Abramson von der Art Technology Group im Jahr 2001 konzipiert und implementiert. Zu dieser Zeit war die Implementierung als Simplest Possible Expression Language (SPEL) bekannt. Die Implementierung wurde später in die JSTL1.0 aufgenommen. Nathan war Teil der JSR-052 Expert Group und wurde in der JSTL-Spezifikation als treibende Kraft hinter der Ausdruckssprache anerkannt.

"Besondere Erwähnung für Nathan Abramson als treibende Kraft hinter der in JSTL eingeführten Ausdruckssprache"

18
jsears