JEXL - это библиотека, предназначенная для облегчения реализации динамических функций и функций сценариев в приложениях и средах, написанных на Java.

JEXL - это библиотека, предназначенная для облегчения реализации динамических функций и функций сценариев в приложениях и средах, написанных на Java.

Из официальной документации:

JEXL реализует язык выражений на основе некоторых расширений языка выражений JSTL, поддерживающих большинство конструкций, представленных в сценариях оболочки или ECMAScript. Его цель - предоставить возможности сценариев, которые могут использовать технические специалисты или консультанты, работающие с корпоративными платформами.

Библиотека предоставляет небольшой API -интерфейс - основные функции соответствуют 3 классам и 10 методам - ​​которые можно использовать в различных условиях:

  • Возможности скриптинга:
    • Ваше приложение позволяет (опытным) пользователям оценивать или определять некоторые простые выражения, например формулы вычислений.
  • Конфигурация модуля или компонента:
    • В вашем приложении есть файлы конфигурации (в конечном итоге генерируемые модулем дизайна), потребляемые модулем конечного пользователя, который выиграет от использования переменных и выражений.
    • Когда было бы удобно использовать IOC, но общая сложность не требует (или не может зависеть) полноценной библиотеки (Spring, Guice...).
  • Слабая связь интерфейсов и реализаций или утиная типизация:
    • У вас есть необязательные классы, которые ваш код не может рассматривать как зависимости компиляции.
    • Вы должны интегрировать и вызывать "устаревший" код или использовать компоненты, от которых вы не хотите сильно зависеть.
  • Возможности простого шаблона:
    • У вашего приложения есть базовые требования к шаблону, а JSP или скорость будут излишними или слишком неудобными для развертывания.

Имя JEXL расшифровывается как Java EXpression Language, простой язык выражений, изначально вдохновленный Apache Velocity и языком выражений, определенным в стандартной библиотеке тегов JavaServer Pages версии 1.1 (JSTL) и JavaServer Pages версии 2.0 (JSP). JEXL 2.0 добавил функции, вдохновленные Unified EL. Синтаксис теперь близок к сочетанию ECMAScript и "сценария оболочки", что упрощает освоение техническими специалистами или консультантами. Очевидно, что обнаруженные объекты и их поведение должны быть задокументированы...

API и язык выражений используют шаблоны именования Java-bean-компонентов посредством интроспекции, чтобы выявить средства получения и установки свойств. Он также рассматривает поля общедоступного класса как свойства и позволяет вызывать любой доступный метод.

JEXL пытается донести некоторые уроки, извлеченные сообществом Velocity о языках выражения в шаблонах, до более широкой аудитории. Commons Jelly нуждался в доступе к методу Velocity, он просто должен был быть у него.

Следует отметить, что JEXL не является совместимой реализацией EL, как определено в JSTL 1.1 (JSR-052) или JSP 2.0 (JSR-152). Для совместимой реализации этих спецификаций см. Проект Commons EL.