EclipseCon 2007 March 5-8, Santa Clara California

SAFARI: A Meta-Tooling Platform for Creating Language-Specific IDE's

Robert M. Fuhrer (IBM Watson Research Center), Philippe Charles (IBM Watson Research Center), Stanley M. Sutton Jr. (IBM T. J. Watson Research Center), Chris Laffra (IBM Rational)

· Long Talk

Wednesday, 16:30, 50 minutes | Grand Ballroom F


Philippe Charles

Stanley M. Sutton Jr.

Chris Laffra

SAFARI: A Meta-Tooling Platform for Creating Language-Specific IDE's

SAFARI: A Meta-Tooling Platform for Creating Language-Specific IDE's

Building a state-of-the-art Eclipse IDE for a new programming language is a difficult undertaking. Although much of this work is inevitable and requires an in-depth understanding of the language structure and semantics, a significant portion embodies common themes and code structures, and requires extensive knowledge of Eclipse API's, which represent a great opportunity for code and knowledge reuse in the form of a meta-tooling framework for IDE development.

SAFARI is an ongoing project at IBM Watson Research to develop such meta- tooling for Eclipse. The goal of the project is to ease the development of commercial-quality IDE support for new programming languages, including the following features:

We accomplish this by a mixture of language service-creation wizards, class libraries to encapsulate common language-processing infrastructure, and code skeletons to get the language service-implementer started. Moreover, the SAFARI framework has been engineered to support the incremental specification and implementation of language services for languages that derive from an existing base language, as for example our X10 concurrent programming language does from Java. In this way, IDE's built using SAFARI are themselves extensible.

SAFARI has been driven in part from the need to produce full-featured IDE's for several language research activities at IBM Research, including:

Additionally, SAFARI is being used at IBM's Tokyo Research Lab to build a JavaScript IDE, and by Chris Laffra at IBM Raleigh to experiment with existing and new languages, such as EGL (Enterprise Generation Language). Furthermore, SAFARI is already somewhat self-hosting: we are using SAFARI in the development of SAFARI itself to create DSL's for such things as presentation descriptions, language grammars, and so on.

Our framework builds on top of Chris Laffra's prototype "UIDE" (Universal IDE, demonstrated at EclipseCon 2005), the JikesPG parser generator ( /) and WALA static analysis framework ( developed at IBM Research, and, for the "Java family" of languages (including Java, XJ, and X10), the Polyglot compiler framework by Andrew Myers' group at Cornell University ( rojects/polyglot/).

Based on the enthusiastic response we've gotten to demonstrations at EclipseCon 2006 and OOPSLA 2006, we have initiated the process of creating an Eclipse technology project to make SAFARI available as open-source to the Eclipse community.

In this talk, we will present the architecture, discuss the somewhat unusual demands that a full-featured IDE place on the compiler front-end, give a brief demonstration of our prototype of the SAFARI system, and describe our plans for its future.

Robert has spent the last several years developing static analyses and advanced refactorings for Java in Eclipse, some of which are now part of the Eclipse JDT, including generics-related refactorings ("Infer Type Arguments" and "Introduce Type Parameter"), type-related refactorings ("Extract Interface" and "Generalize Type") and others (e.g. "Introduce Factory"). Robert also developed a smell detection framework for Java in Eclipse, demoed at ECOOP and OOPSLA in 2004, which includes a code duplication detector. Prior to that, Robert worked on a diverse set of projects, including two visual programming languages, a film scoring system, manufacturing optimization algorithms, and hardware synthesis and verification for asynchronous circuits. When not writing code or papers, Robert spends his spare time playing jazz, fusion and progressive rock in his home studio.

Philippe has been working in the area of compiler construction and programming language tools for several years. He was an original developer of the Jikes compiler and the principal author of the LPG parser generator. He is currently a core member of the SAFARI and X10 development teams at IBM Research.

Stan began his academic and professional career as a geologist before switching to software engineering. He received a Ph. D. in Computer Science from the University of Colorado, Boulder, in 1990 and has since worked in both academia and industry, on both research and applied projects. His main areas of interest and experience include software processes, process programming, and process modeling; aspect-oriented software development and concern modeling; and software development environments.

Chris was born in The Netherlands, obtained a MsC at the Vrije Universiteit of Amsterdam and a PhD at the Erasmus University of Rotterdam. At both IBM T.J. Watson Research Center and Morgan-Stanley, Chris worked on tools for user interfaces, component infrastructures, program analysis, debugging, visualization, compression, and optimization. He led the OTI Amsterdam lab for 3.5 years, working on WebSphere Studio Device Developer. He worked with IBM Rational in Ottawa on Java runtimes and Eclipse and in RTP on Eclipse Performance. Currently he works on EGL, IBM's 4GL solution.

Floor Plan

Gold sponsors

Ingres logo

BEA logo

IBM logo

Business Objects logo

Klocwork logo

Windriver logo

Red Hat logo

Actuate logo

Silver sponsors

Compuware logo

Sybase logo

Google logo






Code Gear




Innoopract logo

Lynux Works

Media sponsors

Eclipse Magazine logo logo

Methods and Tools logo

Eclipsezone logo

Addison-Wesley logo

Eclipse Magazin logo

Embedded Computing logo

SD Times logo

Enterprise Open Source logo

ACM Queue logo

TheServerSide Java Symposium

Eclipse Review logo

Software Test & Performance logo

Eclipse Developers Journal logo

Eclipse Source logo