Différence entre JSP EL, JSF EL et Unified EL

J’aimerais connaître la différence détaillée entre les langages d’expression (EL). Il y a JSP EL, JSF EL et Unified EL.

Je voudrais connaître l’historique de l’EL et connaître le dernier EL utilisé dans les applications Java EE. Est-ce le standard EL pour toutes les technologies d’affichage dans les dernières versions?

  • Juin 2002: JSTL 1.0 a été introduit avec EL pour la première fois. Ce sont ces choses ${} qui fonctionnent uniquement dans les balises JSTL. Il est conçu pour appeler les méthodes de jababean get .

  • Nov 2003: JSP 2.0 a été introduit et EL a été déplacé de JSTL 1.0 vers JSP 2.0 dans le package javax.servlet.jsp.el et il est devenu standard EL dans le cadre de la norme J2EE 1.4. JSTL 1.1 a été expédié sans EL. Maintenant, ${} fonctionne également en dehors des balises JSTL dans le texte du modèle JSP.

  • Mars 2004: JSF 1.0 a été introduit avec EL différé dans le package javax.faces.el . Ce sont ces #{} choses qui fonctionnent uniquement dans les tags JSF. La différence avec la norme JSP EL ${} est qu’elle ne permet pas seulement d’ get , mais qu’elle peut aussi être set . Cela était obligatoire pour la création automatique de beans gérés et la définition des valeurs des composants d’entrée. Le standard EL ${} fonctionne également dans les tags de sortie JSF, mais ils ne créent pas automatiquement les beans s’ils n’existent pas encore dans la scope et ils ne définiront pas de valeurs d’entrée.

  • Mai 2005: tout en préparant la nouvelle version de JSP 2.1 qui devrait être publiée en mai 2006, EL #{} différé a été extrait de JSF et combiné avec la norme EL ${} dans le package javax.el . À ce stade, il est devenu unifié EL qui a été introduit avec JSF 1.2 et qui est ensuite devenu partie intégrante de la norme JSP 2.1 et Java EE 5. Le #{} peut maintenant être utilisé dans les balises JSP pour get valeurs, mais pas pour set valeurs. Le ${} peut maintenant dans JSP créer automatiquement des beans gérés, mais pas set valeurs.

  • Nov 2006: Facelets a été présenté comme successeur de JSP. Il permettait d’utiliser #{} dans le texte du modèle en dehors des balises JSF, en remplacement de sans aucun atsortingbut. Il traite également ${} comme #{} , donc ils se comportent tous deux de la même manière dans Facelets.

  • Décembre 2009: EL a été extrait de la spécification JSP et est devenu une spécification autonome qui sera maintenue indépendamment de JSP, la première version étant EL 2.2 (JSR-245), analogue à JSP 2.2. La principale nouveauté est d’appeler des méthodes paramétrées au lieu d’appeler uniquement les getters / setters Javabean dans la syntaxe #{} , par exemple #{bean.method(argument)} . De plus, Facelets est devenu partie intégrante de la norme Java EE 6.

  • Juin 2013: EL 3.0 a été introduit avec un processeur EL autonome, permettant une utilisation dans une application Java SE simple. Les nouvelles fonctionnalités principales sont le nouvel opérateur de concaténation de chaînes += , les nouvelles opérations pour les objects de collection, y compris les stream et les expressions Lambda -> (même sur Java 6/7!) Et l’importation de constantes dans le périmètre EL.

Ajout à la réponse de BalusC …

EL a été initialement conçu et mis en œuvre par Nathan Abramson de Art Technology Group en 2001. À l’époque, la mise en œuvre était connue sous le nom de langage d’expression simplifiée le plus simple possible. L’implémentation a ensuite été incluse dans JSTL1.0. Nathan faisait partie du groupe d’experts JSR-052 et a été crédité dans la spécification JSTL comme le moteur derrière le langage d’expression.

“Mention spéciale à Nathan Abramson pour avoir été le moteur du langage d’expression introduit dans JSTL”