回答:
2002年6月:JSTL 1.0がELで初めて導入されました。${}
JSTLタグでのみ機能するものでした。これは、Javabean get
メソッドを呼び出すように設計されています。
2003年11月:JSP 2.0が導入され、ELがjavax.servlet.jsp.el
パッケージ内のJSTL 1.0からJSP 2.0に移動し、J2EE 1.4標準の一部として標準ELになりました。JSTL 1.1はELなしで出荷されました。今${}
だけでなくJSPテンプレートテキスト内の外側のJSTLタグを動作します。
2004年3月:JSF 1.0が導入され、遅延ELがjavax.faces.el
パッケージ化されました。#{}
JSFタグ内でのみ機能するものでした。標準のJSP ELとの違い${}
はget
、実行できるだけでなく、実行できることですset
。これは、マネージドBeanの自動作成と入力コンポーネントの値の設定に必須でした。標準EL ${}
はJSF出力タグでも機能しますが、スコープ内にまだ存在しない場合はBeanを自動作成せず、入力値を設定しません。
2005年5月:2006年5月にリリースされる新しいJSP 2.1の準備をしながら、据え置きEL #{}
がJSFから抽出さ${}
れ、javax.el
パッケージ内の標準ELと結合されました。その時点で、JSF 1.2で導入され、後にJSP 2.1およびJava EE 5標準の一部となった統合ELになりました。は#{}
、JSPタグでget
値に使用できますが、値には使用できませんset
。${}
今JSPでも管理対象Beanを自動作成することはできませんが、set
値。
2006年11月:FaceletsがJSPの後継として導入されました。属性なしの#{}
代わりに、JSFタグの外のテンプレートテキストでの使用を許可しました<h:outputText>
。また、${}
としても扱われる#{}
ため、Faceletsではどちらも同じように動作します。
2009年12月:ELはJSP仕様から抽出され、JSPから独立して維持されるスタンドアロン仕様になりました。最初のバージョンは、JSP 2.2に類似したEL 2.2(JSR-245)です。主な新機能は#{}
、構文内でJavabean getter / settersを呼び出すだけではなく、パラメーター化されたメソッドを呼び出すことです#{bean.method(argument)}
。さらに、FaceletsはJava EE 6標準の一部になりました。
2013年6月:スタンドアロンのELプロセッサーを搭載したEL 3.0が導入され、プレーンなJava SEアプリケーションで使用できるようになりました。その他の主な新機能は、新しい文字列連結演算子+=
、コレクションオブジェクトの新しい操作です。これには、ストリームやラムダ式->
(Java 6/7でも)などが含まれ、定数をELスコープにインポートします。
BalusCの答えに追加...
ELはもともと2001年にArt Technology GroupのNathan Abramsonによって考案され、実装されました。その実装は、当時、最も単純な式言語(SPEL)として知られていました。実装は後でJSTL1.0に含まれました。ネイサンはJSR-052エキスパートグループの一部であり、式言語の原動力としてJSTL仕様に認定されました。
「JSTLで導入された式言語の原動力であるNathan Abramsonへの特別な言及」