Джакартский язык выражений
Это обеспечивает недостаточный контекст для тех, кто не знаком с предметом . ( Ноябрь 2017 г. ) |
Язык выражений Jakarta ( EL ; ранее язык выражений и унифицированный язык выражений ) — это язык программирования специального назначения , который в основном используется в веб-приложениях Jakarta EE для внедрения и оценки выражений на веб-страницах. Авторы спецификаций и группы экспертов по технологиям веб-уровня Java EE работали над унифицированным языком выражений, который сначала был включен в спецификацию JSP 2.1 (JSR-245), а затем определен сам по себе в JSR-341, части Java EE. 7.
История
[ редактировать ]Происхождение как JSTL
[ редактировать ]Язык выражений зародился как часть стандартной библиотеки тегов JavaServer Pages (JSTL) и первоначально назывался SPEL (самый простой возможный язык выражений), затем просто язык выражений ( EL ). Это был язык сценариев, который позволял получить доступ к компонентам Java ( JavaBeans ) через JSP . Начиная с JSP 2.0 , он использовался внутри тегов JSP для отделения кода Java от JSP и обеспечения более легкого доступа к компонентам Java (чем в коде Java).
JSP 2.0
[ редактировать ]С годами язык выражений развивался и включал в себя более продвинутые функциональные возможности, и он был включен в спецификацию JSP 2.0. Написание сценариев стало проще для дизайнеров веб-контента, которые мало или практически не знают основного языка Java. Этот язык сценариев сделал JSP языком сценариев в истинном смысле этого слова. До EL JSP состоял из некоторых специальных тегов, таких как скриптлеты , выражения и т. д., внутри которых явно записывался код Java. При использовании EL дизайнеру веб-контента нужно только знать, как правильно вызывать основные методы Java.
EL был как синтаксически, так и семантически похож на JavaScript выражения :
- нет никакого приведения типов
- преобразования типов обычно выполняются неявно
- двойные и одинарные кавычки эквивалентны
object.property
имеет то же значение, что иobject['property']
EL также освободил программиста от необходимости знать особенности фактического доступа к значениям: object.property
может означать (в зависимости от того, что object
есть) либо object.get("property")
или object.getProperty("property")
или object.getProperty()
и т. д.
2.1
[ редактировать ]Во время разработки 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).
3.0
[ редактировать ]Версия 3.0 языка выражений (унифицированный язык больше не считался необходимым) была разработана в JSR, независимом от спецификаций JSP и JSF в JSR-341 . Были добавлены некоторые новые функции, в первую очередь EL-эквиваленты потоков Java 8 и лямбда-выражений. [1]
4.0
[ редактировать ]Версия 4.0 была выпущена 7 октября 2020 г. [2] API перешел из пакета javax.el в пакет jakarta.el в рамках перехода от Java EE к Jakarta EE.
Функции
[ редактировать ]Унифицированный EL представляет собой объединение языков выражений JSP и JSF. В дополнение к функциям, уже доступным в JSP EL, унифицированный EL имеет следующие возможности:
- Отложенная оценка
- Поддержка выражений, которые могут устанавливать значения, и выражений, которые могут вызывать методы.
- Подключаемый API для разрешения выражений
Примеры
[ редактировать ]Это показывает простой пример использования Unified EL в теге JSTL «c:out»:
<c:out value="${myBean.myField}" />
Выражение, вызывающее метод с параметром:
${myBean.addNewOrder('orderName')}
Реализации
[ редактировать ]- Язык выражений Java (JEXL) — это библиотека, предназначенная для облегчения реализации динамических функций и функций сценариев в приложениях и средах, написанных на Java. Последний выпуск, версия: 3.2.1, 25 июня 2021 г.
- JUEL — это с открытым исходным кодом реализация унифицированного языка выражений (EL) , указанная как часть стандарта JSP 2.1 (JSR-245). Он считается стабильным и полнофункциональным и распространяется по лицензии Apache License 2.0 . JUEL также подходит для использования в приложениях, отличных от JSP. Последний выпуск, версия 2.2.7, 6 февраля 2014 г.
- Apache Commons EL — это интерпретатор JSP 2.0 EL от Apache. Последний выпуск, версия 1.0, 20 июня 2003 г. Ссылки на скачивание исходного кода и двоичного файла не работают.
См. также
[ редактировать ]- OGNL — EL с открытым исходным кодом, используемый WebWork (и Struts 2).
- MVEL — EL с открытым исходным кодом, используемый во многих проектах на основе Java.
- SpEL — Spring Expression Language, EL с открытым исходным кодом, который является частью Spring Framework . В основном он используется в проектах портфолио Spring, но, поскольку он не зависит от технологии, его можно использовать и в других проектах.
- Ant-Flaka — предназначен для упрощения сценариев сборки Ant с помощью EL.
- CEL – EL с открытым исходным кодом, разработанный Google.
Ссылки
[ редактировать ]- ^ «Стандартное отклонение: иллюстрация языка выражений 3.0 в среде сервлетов | Java.net» . Архивировано из оригинала 27 сентября 2013 г. Проверено 24 сентября 2013 г.
- ^ «Джакартский язык выражений 4.0.0» . Архивировано из оригинала 9 января 2021 г. Проверено 05 января 2021 г.
Внешние ссылки
[ редактировать ]- Официальный сайт
- JSR 245: страницы JavaServer 2.1
- Унифицированный язык выражений (статья в Sun Developer Network (SDN)
- Язык выражений
- Унифицированный язык выражений для JSP и JSF (статья на java.net)