Zum Inhalt springen

Unified Expression Language

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 25. Februar 2019 um 21:32 Uhr durch Predatorix (Diskussion | Beiträge) (Erstellt durch Übersetzen der Seite „Unified Expression Language“). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die Java Unified Expression Language (dt. vereinheitlichte Ausdrucksprache) ist eine special purpose programming language, die hauptsächlich in Java Web-Anwendungen zum Einbetten von Ausdrücken in Web-Seiten verwendet wird. Die Java-Spezifikationsersteller und Expertengruppen der Technologie der Java Web-Ebene have worked on a unified expression language die erstmal in der JSP 2.1-Specification (JSR-245) integriert, und später spezifiziert durch sich selbst in JSR-341, als Teil von Java EE 7.

Geschichte

Die Expression Language begann als Teil der JavaServer Pages Standard Tag Library (JSTL) und wurde ursprünglich SPEL (Simplest Possible Expression Language), nachfolgend jedoch nur noch Expression Language (EL) genannt. Es war eine Skriptsprache, die den Zugriff auf Java-Komponenten (JavaBeans) über JSP erlaubte. Seit JSP 2.0 wurde sie innerhalb von JSP-Befehlen genutzt um Java-Quelltext von JSP zu trennen und leichteren Zugriff auf Java-Komponenten (als mittels Java-Code) zu ermöglichen.

Über die Jahre hat sich die Expression Language weiterentwickelt, fortgeschrittenere Funktionalität integriert und wurde letztlich in die JSP 2.0-Spezifikation aufgenommen. Das Erstellen von Skripten wurde für Gestalter von Web-Inhalten vereinfacht, da diese üblicherweise über wenige bis keine Kenntnisse der Kernsprache Java verfügen. Diese Skriptfunktionalität machte aus JSP ein Skriptsprache im ursprünglichen Sinn. Vor der EL bestand JSP aus wenigen speziellen Befehlen, wie Scriptlets, Ausdrücken, usw. in die expliziter Java-Quelltext eingefügt wurde. Seit der Integration der EL müssen Gestalter von Web-Inhalten nur noch wissen, wie die Java-Kernmethoden korrekt aufzurufen sind.

EL war, sowohl syntaktisch als auch semantisch, ähnlich zu JavaScript-Ausdrücken:

  • es gibt keine ausdrückliche Typumformung
  • Typumwandlungen erfolgen üblicherweise implizit
  • doppelte und einfache Anführungszeichen sind gleichbedeutend
  • object.property hat die selbe Bedeutung wie object['property']

EL also liberated the programmer from having to know the particularities of how the values are actually accessed: object.property can mean (depending on what the object is) either object.get("property") or object.getProperty("property") or object.getProperty() etc.

Während der Entwicklung von JSP 2.0, wurde die Technik JavaServer Faces veröffentlicht, die ebenfalls eine Expression Language benötigte. Jedoch genügte die, in der JSP 2.0-Spezifikation definierte, Expression Language nicht allen für die Entwicklung mit JSF nötigen Anforderungen. Die offensichtlichsten Einschränkungen lagen darin, dass deren Ausdrücke unmittelbar ausgewertet wurden und dass JSF-Komponenten keine Methoden auf server-seitigen Objekte aufrufen konnten. Deshalb wurde eine mächtige Sprache mit den folgenden neuen Eigenschaften geschaffen:

  • Verzögerte Ausdrücke, die nicht unmittelbar ausgewertet wurden
  • Ausdrücke die Daten sowohl lesen, als auch schreiben können
  • Methodenausdrücke, die Methoden aufrufen können

Die neue Expression Language funktionierte gut für JSF-Belange. Jedoch führte das Integrieren der JSP-EL mit der JSF-EL zu Konflikten. Auf Grund dieser Inkompatibilitäten wurde die Initiative für die Unified Expression Language gestartet um diese Expression Languages zu vereinheitlichen. Mit der Spezifikation JSP 2.1 wurden die Ausdrucksprachen von JSP 2.0 und JSF 1.1 in eine einzige vereinheitliche Expression Language (EL 2.1) zusammengeführt.

Version 3.0 der Expression Language (das vereinheitlicht wurde nicht länger als nötig erachtet) wurde in JSR-341 unabhängig von den JSP- und JSF-Spezifikationen entwickelt. Einige neue Funktionen wurden hinzugefügt, vor allem die EL-Äquivalente zu Streams and Lambda-Ausrücken aus Java 8.[1]

Besonderheiten

Die neue vereinheitlichte EL ist eine Verbindung der JSP- und der JSF Expression Languages. In addition to the features already available in the JSP EL, the unified EL has the following features:

  • Verzögerte Auswertung
  • Unterstützung für Ausdrücke, die Werte setzen können und Ausdrücke, die Methoden aufrufen können
  • Eine austauschbare API zum Auflösen von Ausdrücken

Beispiele

Ein einfaches Beispiel der Unified EL wie sie innerhalb eines JSTL "c:out"-Befehls verwendet wird:

<c:out value="${myBean.myField}" />

Ein Ausdruck, der eine Methode mit einem Parameter aufruft:

${myBean.addNewOrder('orderName')}

Implementierungen

  • Java Expression Language (JEXL) is a library intended to facilitate the implementation of dynamic and scripting features in applications and frameworks written in Java. Latest release, Version: 3.1, 14 April 2017.
  • JUEL is an open-source implementation of the Unified Expression Language (EL), specified as part of the JSP 2.1 standard (JSR-245). It is considered stable and feature complete and is licensed under the Apache License 2.0. JUEL is also suitable for use in non-JSP applications. Latest release, Version 2.2.7, 6 Feb 2014.
  • Apache Commons EL is the JSP 2.0 EL interpreter from Apache. Latest release, Version 1.0, 20 Jun 2003. Download links to source and binary are broken.

Siehe auch

  • OGNL – Eine quelloffene EL die von WebWork (und Struts2) verwendet wird.
  • MVEL – Eine quelloffene EL die in vielen Java-basierten Projekten verwendet wird.
  • SpEL – Spring Expression Language, eine quelloffene EL die Teil des Spring Frameworks ist. Sie wird hauptsächlich in Projekten des Spring-Portfolio verwendet, aber da sie technikunabhängig ist, könnte sie auch in anderen Projekten verwendet werden.
  • Ant-Flaka - Intended to simplify Ant build scripts with the help of EL.
  • CEL – An open source EL developed by Google.

References

  1. Archived copy. Archiviert vom Original am 27. September 2013; abgerufen am 24. September 2013.

Externe Verweise

[[Kategorie:Skriptsprache]] [[Kategorie:Java (Programmiersprache)]] [[Kategorie:Wikipedia:Seite mit ungeprüften Übersetzungen]]