Eclipse Orion: Coding on the Web

Die Architektur: ein Überblick

Im ersten Teil des Artikels wurden Designstrategien und einige der Task-Seiten in Orion besprochen und technische Details ausgespart. Orion ist eine Webapplikation, umfasst also sowohl einen Client als auch einen Server. Der Orion-Client ist in reinem HTML, CSS und JavaScript geschrieben und kann auf jedem Standardwebserver gehostet werden. Der Orion-Server ist, was wenig erstaunen dürfte, Java-basiert und wurde unter Verwendung von Equinox-Servertechnologien aufgebaut. Der Orion-Client – wie erwähnt in HTML, CSS und JavaScript – macht keinerlei Gebrauch von Server-Templates oder dynamischen Inhalten. In unserer UI verwendet er Dojo, RequireJS für unsere Komponenten und ist relativ offen für HTML5-Technologien. Deswegen müssen Nutzer über das verfügen, was gemeinhin als „Moderner HTML5-Browser“ bezeichnet wird; jeder der aktuell gängigen Browser ist geeignet. Da Orion dafür bestimmt ist, von Seiten des Clients erweitert zu werden, zeichnet er sich durch eine neue Art von Plug-in aus.

Modularität: Betrachtet man die JavaScript-Dateien in Orion, so sieht man, dass jedes Skript in eine define()-Funktion eingepackt ist. JavaScript-Komponenten in Orion verwenden, wie bereits erwähnt, RequireJS [2] als Bibliothek. Diese implementiert Asynchronous Module Definition (AMD), um Abhängigkeiten zu verwalten. RequireJS stellt sicher, dass Skripte in korrekter Reihenfolge geladen werden und unterstützt zudem Performanceverbesserungen wie das parallele Herunterladen von Skripten. Durch die Verwendung von AMD werden Namespacing-Probleme umgangen. Zudem stehen Metadaten zur Verfügung, um die Komponenten zu analysieren. Um ein konkretes Beispiel zu nennen: Wenn man die Komponentenabhängigkeitsbäume durchgeht, lassen sich die notwendigen Skripte für eine Seite in einer einzigen Datei kombinieren, das Resultat also verkleinern, um eine höhere Ladeperformance zu erzielen.

Erweiterbarkeit: Ein Knackpunkt bei der Verwendung von Modularität in Orion ist der, dass JavaScript-Komponenten von anderen Seiten niemals dynamisch auf unsere Seiten geladen werden. Beliebigen Quellcode von externen Seiten zu laden ist keine besonders sichere Art, eine Webanwendung zu erweitern und würde Orion ein weites Feld an Sicherheitsproblemen bescheren. Die bereits erwähnte besondere Art des Plug-ins, die bei Orion verwendet wird, nutzt die browsereigene Sicherheit, um die Implementierung des Plug-ins von der Host-Seite zu isolieren. Ein Orion-Plug-in ist ein HTML-Dokument, das üblicherweise keine Benutzerschnittstelle hat, sondern in einem iframe läuft, der von einer der Orion-Task-Seiten gehostet wird. Das HTML5 API „window.postMessage“ ist der einzige Kommunikationsmechanismus zwischen den beiden Seiten, ansonsten ist das Plug-in völlig isoliert und hat keinerlei Einfluss auf die Host-Seite. Ein Plug-in stellt Metadaten zur Verfügung, die die Fähigkeiten und Services beschreibt, die es anbietet, ist in dieser Hinsicht also vergleichbar mit dem Extension-Point-Mechanismus des Eclipse-Desktops. Eine weitere Parallele zum Eclipse-Desktop besteht darin, dass die Plug-in-Metadaten gecacht werden, sodass sie, falls benötigt, nur per Lazy Load geladen werden können. Dadurch reduziert sich der Overhead, gleichzeitig werden Seiteninhalte aber trotzdem mit maximaler Geschwindigkeit geladen.

Orion stellt eine Task-Seite bereit, die installierte Plug-ins anzeigt und es zusätzlich ermöglicht, neue hinzuzufügen, zu entfernen oder zu untersuchen. Der Orion-Client macht von Plug-ins starken Gebrauch, weswegen sich ein genauer Blick auf diese Task-Seite empfiehlt, um unsere Vorgehensweise nachvollziehen zu können und einen Eindruck zu gewinnen, wie sich nützliche Erweiterungen entwickeln lassen (Abb. 4).

Abb. 4: Task-Seite für Plug-insAbb. 4: Task-Seite für Plug-ins (Vergrößern)

Server: Um einerseits die Orion-Client-Architektur zu validieren und andererseits bei der Eclipse-Foundation selbst hosten zu können, haben wir für Eclipse einen headless Workspace-Server entwickelt, der sich als mögliche Basis für weitere zukünftige Aufgaben herauskristallisiert. Der Orion-Server hostet nicht nur die Clientwebdateien, sondern stellt auch die Standard-Backend-Implementierungen für Authentifikation, File Service, Suche, Präferenzen und Git-Integration bereit. Eine Reihe von Eclipse-Projekten weist bereits jetzt Funktionalitäten auf, von denen der Erfolg von Orion entscheidend abhängen wird. Beispielsweise stellt der JDT-Core Best-of-Breed-Technologien zur Verfügung, die wir verwenden können, um die serverseitigen Anteile der Sprachwerkzeuge in Java zu erstellen. Andererseits legen wir Wert darauf, den Orion-Client nicht an eine spezifische Implementierung auf dem Orion-Server zu binden. Die Interaktion zwischen Client und Server ist sehr flexibel. Sie soll es ermöglichen, mehrere Server zu verwenden, auf Proxys zu verzichten und eine beliebige Anzahl verschiedener Serviceimplementierungen zu unterstützen.

Fazit

Aufgrund der viermonatigen Releasezyklen wird das nächste geplante Release kurz vor der EclipseCon U.S. im März lieferbereit sein. Wir planen dafür unter anderem die folgenden neuen Features:

  • Syntax-Coloring für deutlich mehr Programmiersprachen als bisher und verbesserte Unterstützung beim Hinzufügen eigener Sprachen
  • Neuerungen im Bereich der mobilen Benutzung und Vereinfachungen in den Workflows
  • Verbesserungen bei den Plattformservices, die z. B. entscheidend sind für Benutzereinstellungen, Lokalisierung von Benennungen und um unsere Basiskomponenten anzunehmen

Ein weiteres Release steht im Juni 2012 an, im Zusammenhang mit Juno. Dann wird unser Augenmerk der Stabilisierung der 1.0-Version gelten. Im Herbst 2012 werden wir besonders am API und der Dokumentation feilen. Für diejenigen, die Orion selbst ausprobieren möchten, hostet die Eclipse Foundation eine Testversion. Dazu empfiehlt es sich, unter [3] einige Einführungsvideos anzusehen und einen eigenen Account anzulegen. Weitere Informationen sind in unserem Wiki nachzulesen [4]. Folgen Sie dort den Links, um Ihre eigene lokale Kopie von Orion herunterzuladen und mehr über den Hintergrund des Projekts zu erfahren. Oder Sie lassen sich in die Entwickler-Mailingliste aufnehmen, um mit dem Entwicklerteam zu kommunizieren. Orion ist ein webbasiertes neues Projekt, das gedeiht und Spaß macht – wir hoffen, Sie stoßen dazu.

Simon Kaegi ist Softwareentwickler bei IBM Rational in Ottawa/Kanada. Er leitet das Orion-Projekt und ist Mitglied des Eclipse-Kernteams. Frühere Projekte, an denen er beteiligt war: Equinox (Serverseite, p2 und Kompendium), e4 (JavaScript-Modularität und Debug) und JSDT.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.