# Ext JS

Ext JS ist ein clientseitiges JavaScript- bzw. Ajax-Framework für interaktive Webanwendungen, das für Open-Source-Projekte unter der GPL, für andere Projekte unter kommerziellen Lizenzen erhältlich ist. In erster Linie bietet Ext JS eine umfangreiche Sammlung von Steuerelementen.

## Geschichte

Ursprünglich war Ext JS eine Sammlung von Funktionserweiterungen für die Yahoo User Interface Library (YUI) unter dem Namen yui-ext. Aufgrund wachsenden Umfangs und steigender Popularität entwickelte sich daraus die unabhängige Bibliothek Ext JS.
In der Version 2.0 bot Ext JS unter anderem JavaScript-Erweiterungen und Klassen für Ajax-Unterstützung, zur DOM-Manipulation sowie zur Ereignis-Programmierung.
Ab Version 3.0 bringt das Framework Unterstützung für REST, Ext Direct (API zur direkten Einbindung serverseitiger Funktionen) sowie eine Chart-Engine auf Basis von Adobe Flash.
Am 15. Juni 2010 wurde angekündigt, dass Ext JS mit JQTouch und Raphaël verschmilzt. Die drei Projekte werden auf der neuen gemeinsamen Plattform unter dem Namen „Sencha“ fortgeführt. Ext JS wurde als eigenständiges Projekt auf der neu gestalteten Projekt-Webseite integriert.
Am 26. April 2011 wurde Sencha Ext JS 4.0 veröffentlicht und enthält unter anderem ein Klassensystem, die Sandbox Unterstützung verhindert Konflikte mit anderen Libraries, Unterstützung der Model-View-Controller-Architektur (MVC), Diagramm-Komponenten und verbesserte Rasteransichten (Grid Views). Das Framework ist nun mit über 4000 Unit Tests auf über 21 Webbrowsern in den Modi quirks, standard und strict getestet.
Die Version 5.0 von Ext JS wurde am 2. Juni 2014 veröffentlicht. Es ermöglicht die Entwicklung von Desktop-Anwendungen auf Geräten mit Touch-Display. Apps mit Model-View-ViewModel-Architektur (MVVM) sollen ebenso wie responsive Anwendungen nun einfacher zu erstellen sein. Ext JS 5 unterstützt alle modernen Webbrowser: Safari 6+, Firefox, Internet Explorer 8+, Chrome und Opera 12+. Auf Mobilgeräten werden unterstützt: Safari unter iOS 6 und 7, Chrome unter Android 4.1+ und Geräte mit Touch-Display und Windows 8 (z. B. Microsoft Surface) mit dem Internet Explorer 10+. Ab Version 5 können proprietäre Entwicklerlizenzen nur noch für mind. 5 Entwickler erstanden werden. Die Einzelplatzlizenzen sind entfallen.
Mit Version 6 wurden Ext JS und Sencha Touch zusammengeführt. Ein neues Design wurde hinzugefügt und die Grids überarbeitet und einige Diagrammdarstellungen aktualisiert. Seit Ext JS 6 verlangen die Entwickler, dass bei Nutzung einer GPL-Lizenz, diejenige Software, die Ext JS verwendet, nicht mehr nur unter GPL in irgendeiner Version, sondern genau unter GPL 3 lizenziert ist. Dadurch kann es zu rechtlichen Inkompatibilitäten kommen bzw. Ext JS kann so für ein Projekt unbenutzbar werden, selbst wenn dieses unter der GPL steht.
Im Jahre 2017 wurde Sencha durch Idera aufgekauft.
Am 31. August 2022 erschien Version 7.6.0. Sie beinhaltet neue Filterfunktionen für Rasteransichten, vertikale Schieberegler und mehrere kleine Verbesserungen und Bugfixes.

## Funktionen
### Programmoberfläche (GUI)

Das Ext-JS-Framework beinhaltet eine Sammlung aus verschiedenen Formular-Elementen:
* Textfelder (einzeilig und mehrzeilig)
* Kalendersteuerelemente (Drop-Down-Kalender und Terminkalender mit Tages, Wochen und Monatsansicht)
* Drehfelder und Schieberegler zur Eingabe von numerischen Daten
* Listenfelder und Auswahlboxen (Combobox)
* Schaltflächen und Umschaltflächen
* Optionsfeld (Radiobutton) und Kontrollkästchen (Checkbox)
* HTML-Eingabebereiche
Außerdem stehen verschiedene vorgefertigte Elemente, auch Widgets genannt, zur Verfügung:
* Listendarstellung (Nur-Lese- oder mit Editierfunktion, sortierbar, Spaltenreihenfolge änderbar)
* Baumstruktur
* Registerkarten-Darstellung
* Menü- und Symbolleisten
* Kontextmenüs
* Bildlaufleisten
* Fortschrittsanzeigen
* Pivot-Tabellen
* 2D- und 3D-Diagramme (Liniendiagramme, Säulendiagramme, Netzdiagramme, Kreisdiagramme etc.)
* Landkarten auf Basis von Google Maps
* Mediaplayer zur Wiedergabe von Audio- und Videodateien
* Zeichenflächen
* Dynamische Anordnung der Steuerelemente (Responsive Webdesign)
Viele dieser Elemente können direkt mittels Ajax-Technologie Daten empfangen und senden. Außerdem unterstützen einige Steuerelemente Drag and Drop. Die Entwickler-Community entwickelt das Framework ständig weiter und stellt zusätzliche Erweiterungen bereit.

### Anwendungsunterstützung

* modale Dialog-Fenster
* interaktive Validierung der Eingaben mit Rückmeldung
* Sitzungs- und Zustandsverwaltung
* unterschiedliche standardisierte Datenformate wie XML und JSON

## Support (Unterstützung)

Für aktuelle Versionen ist kostenloser Support in Foren oder kostenpflichtig über Supportverträge erhältlich. Regelmäßige Fehlerkorrekturen, sogenannte Bugfixes, werden nur Nutzern mit kostenpflichtigen Support-Verträgen angeboten.