Suche
Angelo Zerr über den JavaScript- und AngularJS-Support in Eclipse

Eclipse Mars & JavaScript: „Eclipse muss sich im Vergleich zu IntelliJ deutlich steigern“

Hartmut Schlosser, Marc Teufel

Die JavaScript-Inferenz-Engine Tern ist mittlerweile in vielen Entwicklungsumgebungen – unter anderem in Eclipse – integriert worden. Hartmut Schlosser und Marc Teufel haben den Gründer des tern.java-Projekts und Autor des AngularJS-Plug-ins für Eclipse dazu befragt. Im Interview erläutert Angelo Zerr die Funktionsweise von tern.java und gibt einen Ausblick, was für die Fortentwicklung des AgularJS-Plug-ins geplant ist.

JAXenter: Hallo Angelo. Du bist der Autor von tern.java und dem AngularJS-Plug-in für Eclipse. Beides basiert auf dem Projekt Tern. Was genau ist Tern?

Angelo Zerr: Tern ist eine JavaScript-Inferenz-Engine, geschrieben von Marijn Haverbeke, dem Autor von CodeMirror. Tern baut auf dem toleranten JavaScript-Parser Acorn auf, der ECMAScript 6 unterstützen kann. Tern hält u. a. folgende Features bereit:

  • Autocompletion von Variablen und Properties
  • Hinweise zu Funktionsargumenten
  • Typabfrage von Ausdrücken
  • Definitionsanalyse
  • Automatische Refactorings

Tern ist flexibel durch weitere JavaScript-Plug-ins erweiterbar, wodurch sich beliebige JavaScript-Frameworks wie AngularJS, Node.js oder RequireJS unterstützen lassen. Die Liste der existierenden Tern-Plug-ins bzw. Module ist lang, eine Übersicht findet sich im Tern-Wiki.

Da Tern in JavaScript geschrieben ist, kann man es sowohl in Webbrowsern (Demo) als auch zusammen mit Node.js nutzen. Tern wird z. B. mit einem Node.js-Server gestartet und von einem Clienteditor aufgerufen, um Dinge wie Code Completion oder Refactorings bereitzustellen.

Mit anderen Worten: Im Prinzip kann jeder JavaScript-Editor von Tern profitieren. Aktuell tun das bereits Emacs, Vim, Sublime Text, Brackets, Light Table, Eclipse und generell Java-APIs. Und auch Eclipse Orion hat Tern integriert. Prinzipiell könnte Tern auch in Visual Studio, NetBeans und IntelliJ eingebaut werden, wenn diese sich dafür entscheiden würden.

JAXenter: Du hast nun das Projekt tern.java gestartet. Worum handelt es sich dabei?

Zerr: Zunächst hatte ich die Idee von tern.java im Rahmen der JUG Paris vorgestellt. Die Demo und das Video findet man im tern.java-Wiki. tern.java gibt einem die Möglichkeit, Tern im Java-Kontext zu nutzen. Das Projekt besteht aus zwei Teilen: Die Core-Komponente enthält keine Abhängigkeiten zu Eclipse. Sie bietet lediglich das Tern-Server-API und Implementierungen für Node.js und Rhino. Die Eclipse-Komponente nutzt hingegen den tern.java Core im Zusammenspiel mit SWT (tern.java lässt sich für Completion mit einem einfachen SWT-Text nutzen) und der Eclipse IDE bzw. „Tern IDE“. Mithilfe des tern.java-Projekts könnten also auch NetBeans und IntelliJ Tern in ihre IDEs integrieren.

Um die ganze Mächtigkeit von Tern zu demonstrieren, habe ich auf der Basis von tern.java die beiden Projekte AngularJS Eclipse und JavaScript Build Eclipse ins Leben gerufen – letzteres, um Grunt-/gulp-Tasks in einer Baumstruktur anzeigen zu können.

JAXenter: Welche Funktionalität stellt tern.java bereit?

Zerr: Die Tern-IDE ist nicht fest mit den Eclipse JavaScript Development Tools (JSDT) verbunden, stellt aber ein Plug-in dar, das die JSDT-Code-Completion um Tern, hover- und hyperlink-Funktionen erweitert. Die Version 0.9.0 wird semantische Validierungen für JSHint, ESLint, JSCS und Lint zur Verfügung stellen. Details dazu finden sich hier zum nachlesen.

JAXenter: Kannst du ein wenig über deine Motivation für die Entwicklung von tern.java erzählen?

Zerr: Ich habe tern.java ins Leben gerufen, weil ich Java-EE-Entwickler bin und jeden Tag auch mit der Programmierung von JavaScript-Code beschäftigt bin. Allerdings war JSDT nicht dazu in der Lage, moderne JavaScript-Frameworks zu unterstützen.

Eines Tages habe ich die VJET JavaScript IDE entdeckt und war anfangs sehr motiviert, am Projekt mitzuarbeiten – bis ich erfahren musste, dass es gar nicht mehr aktiv weiterentwickelt wird. Dann stieß ich auf Tern, das ich über CodeMirror in Eclipse integrierte. Als ich sah, dass Tern zusammen mit Node.js genutzt werden kann, lag der Schluss nah: Warum nicht die JSDT mit Tern erweitern? Das Projekt war anfangs also ein reines Spaßprojekt, das ich für meine eigenen Bedürfnisse entwickelte.

Ich hatte dann das Glück, dass JBoss, Liferay, Nodeclipse und MyEclipse an tern.java und AngularJS Eclipse interessiert waren. Heute leisten all diese Parteien Beiträge zu tern.java und AngularJS Eclipse, und es ist mir eine echte Freude, mit diesen eindrucksvollen Leuten zusammenzuarbeiten.

JAXenter: Und was sind die Pläne für die Zukunft?

Zerr: Da ich das Projekt in meiner Freizeit entwickele, habe ich keinen strikten Plan. Aber ich würde zum Beispiel gerne den JSDT-Installationspfad in tern.java nutzen können, um den Ausschluss von JavaScript-Dateien zu ermöglichen. Denn Tern kann langsam sein, wenn man viele JavaScript-Dateien parsen muss – und  das ist des Öfteren der Fall, wenn man JavaScript mit Tools wie Bower und npm kombiniert.

Außerdem wäre es spannend, einen Tern-Server mit J2V8 zu implementieren, um ihn mit Node.js zu vergleichen. Zudem würde ich gerne die Bedienbarkeit für ESLint und JSCS verbessern sowie die semantische Validierung weiter voranbringen.

JAXenter: Was planst du in Bezug auf dein AngularJS-Plug-in?

Zerr: Ich habe AngularJS Eclipse wie gesagt entwickelt, um die ganze Stärke von tern.java zu demonstrieren. Weil Angular sehr populär ist, sagte ich mir, dieses Plug-in könnte helfen, die Verbreitung von tern.java zu steigern. In Zukunft möchte ich diverse AngularJS-Features wie Code Completion für templateUrl verbessern. Außerdem sollten unterschiedliche AngularJS-Versionen unterstützt werden können.

JAXenter: Wie sieht es da mit Angular-2.0-Support aus?

Zerr: AngularJS 2.0 wird aktuell noch nicht unterstützt, weil Tern dann zuerst TypeScript und AtScript unterstützen müsste. Es laufen aber gerade einige Diskussionen um diese Dinge. Acorn wurde beispielswiese schon um Support für JSX erweitert.

JAXenter: Angelo – hast du letzte Worte an die Leser?

Zerr: Ich hoffe einfach, dass tern.java eine Hilfe für JavaScript-Entwickler ist. Was den JavaScript-Support angeht, muss sich Eclipse im Vergleich zu IntelliJ deutlich steigern.

Angelo Zerr ist enthusiastischer Java-EE-Entwickler, Eclipse Committer und Autor des Projekts tern.java, das die Basis des AngularJS-Plug-ins für Eclipse darstellt. Neben weiteren Open-Source-Projekten wie XDocReport hat Angelo die Eclipse E4 CSS Engine verfasst und Beiträge zu Eclipse Nebula geleistet. Zusammen mit dem JSDT-Projektteam arbeitet er in seiner Freizeit an einer Verbesserung des JavaScript-Supports in Eclipse. Angelo lebt in Saint Paul Trois Châteaux im Süden von Frankreich.

Verwandte Themen:

Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Content-Stratege, IT-Redakteur, Storyteller – als Online-Teamlead bei S&S Media ist Hartmut Schlosser immer auf der Suche nach der Geschichte hinter der News. SEO und KPIs isst er zum Frühstück. Satt machen ihn kreative Aktionen, die den Leser bewegen. @hschlosser
Marc Teufel
Marc Teufel
Marc Teufel arbeitet als Projektleiter und Softwarearchitekt bei der hama GmbH & Co KG und ist dort für die Durchführung von Softwareprojekten im Bereich internationale Logistik zuständig. Er ist Autor zahlreicher Fachartikel im Web-Services- und Eclipse-Umfeld. Er hat drei Bücher zu Web Services veröffentlicht, sein aktuelles Buch „Eclipse 4 – Rich Clients mit dem Eclipse 4.2 SDK“ ist kürzlich bei entwickler.press erschienen.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: