複製鏈接
請複製以下鏈接發送給好友

統一表達式語言

鎖定
Java統一表達式語言(英語:Unified Expression Language,簡稱JUEL)是一種特殊用途的編程語言,主要在Java Web應用程序用於將表達式嵌入到web頁面。Java規範制定者和Java Web領域技術專家小組制定了統一的表達式語言。JUEL最初包含在JSP 2.1規範JSR-245中,後來成為Java EE 7的一部分,改在JSR-341中定義。
中文名
統一表達式語言
外文名
Unified Expression Language
用    途
將表達式嵌入到web頁面
領    域
計算機軟件

統一表達式語言歷史

表達式語言是以JSTL(JavaServer Pages Standard Tag Library,JSP標準標籤庫)的一部分出現的,原本被叫做SPEL(Simplest Possible Expression Language,簡單的表達式語言),後來被稱作EL(Expression Language,表達式語言)。它是一種腳本語言,允許通過JSP訪問Java組件(JavaBeans)。自JSP 2.0以來,表達式語言已經被內置到JSP標籤中,用於從JSP中分離Java代碼,並允許(比用Java代碼)更方便訪問Java組件
經過發展,表達式語言包含了更多的高級功能,並被包括在JSP 2.0規範內。對於有很少或幾乎沒有Java知識的網頁內容設計者而言,腳本的編寫變得更簡單了。表達式語言使JSP變成了真正意義上的腳本語言。在表達式語言出現之前,JSP包含了一些特定的標籤,Java代碼直接的寫在這些標籤裏。有了表達式語言,網頁內容設計者只需明白如何做出適當的Java方法調用,而無需編寫Java代碼。
EL在語法和語義上類似於JavaScript表達式:
  • 無需類型轉換;轉換通常是隱式的完成
  • 雙引號和單引號用法相同
  • object.property與object['property']的意義相同
EL也解放了程序員,讓程序員訪問object.property時,不必清楚在訪問值時涉及的細節。
JSP 2.0標準制定期間,JavaServer Faces標準的發佈也需要一個表達式語言,但在JSP 2.0規範中定義的表達式語言不足以滿足JSF技術發展的需要。最突出的限制是表達式是被立即執行的。同時,JSF組件還需要一種途徑,來調用服務器端對象的方法。因而一個更強大的語言被制定出來,並具備以下新特性:
  • 延期執行的表達式
  • 表達式既可以設定數據,也可以獲得數據
  • 可以調用方法的方法表達式
新的表達式語言符合JSF的需求,但JSP EL和JSF EL之間並不兼容。統一表達式語言計劃因此啓動。在JSP 2.1中,JSP 2.0和JSF 1.1的表達式語言已經合併成一個統一表達式語言(EL 2.1)。
EL 3.0在JSR-341中從JSP和JSF規範中獨立。新版本添加了一些新的特性,尤其是與Java 8的Streams和Lambda表達式相關的特性。 [1] 

統一表達式語言示例

下面是統一表達式語言的一個簡單的例子:使用JSTL中“c:out”標籤:
<c:out value="${myBean.myField}" />
調用一個參數的方法的表達式 [1] 
${myBean.addNewOrder('orderName')}

統一表達式語言實現

  • JUEL是一個統一表達式語言2.1版的開源實現。被認為是完整而穩定的,使用Apache許可協議2.0授權。JUEL也適用於非JSP應用。
  • Apache Commons EL是來自於Apache的JSP 2.0 EL解釋器。 [2] 

統一表達式語言表達式語言

表達式語言(Expression Language),或稱EL表達式,簡稱EL,是Java中的一種特殊的通用編程語言,借鑑於JavaScriptXPath。主要作用是在Java Web應用程序嵌入到網頁(如JSP)中,用以訪問頁面的上下文以及不同作用域中的對象,取得對象屬性的值,或執行簡單的運算或判斷操作。EL在得到某個數據時,會自動進行數據類型的轉換。 [2] 

統一表達式語言腳本語言

腳本語言(英語:Scripting language)是為了縮短傳統的“編寫、編譯、鏈接、運行”(edit-compile-link-run)過程而創建的計算機編程語言。早期的腳本語言經常被稱為批處理語言或工作控制語言。一個腳本通常是解釋運行而非編譯。腳本語言通常都有簡單、易學、易用的特性,目的就是希望能讓程序員快速完成程序的編寫工作。而宏語言則可視為腳本語言的分支,兩者也有實質上的相同之處。
雖然許多腳本語言都超越了計算機簡單任務自動化的領域,成熟到可以編寫精巧的程序,但仍然還是被稱為腳本。幾乎所有計算機系統的各個層次都有一種腳本語言。包括操作系統層,如計算機遊戲,網絡應用程序,字處理文檔,網絡軟件等。在許多方面,高級編程語言腳本語言之間互相交叉,二者之間沒有明確的界限。 [2] 
參考資料
  • 1.    Are Scripting Languages Any Good? A Validation of Perl, Python, Rexx, and Tcl against C, C++, and Java (PDF)—2003 study
  • 2.    Standard Deviation: An Illustration of Expression Language 3.0 in Servlet Environment.