Jump to: navigation, search

Technology/Ten Eclipse Projects You Haven't Heard Enough About

This page is intended to be run as a slide show using the Eclipse Slideshow Example.

Description:

.You probably know about Eclipse Java development tools. You may even know about plug-ins, the community and ecosystem, and some of the other excitement around Eclipse. But do you know about the many projects at Eclipse targeting everything from tools and frameworks, to runtimes and systems engineering? During this talk, we will present ten projects that you may not know very much about, but probably should.

Adding slides is easy. Every heading tag contains a slide title. Level 1 headings are for "title" slides and level 2+ headings are for content. The contents follow that. Bullets are prefixed with a star (just like standard MediaWiki format). You can also add images using the standard MediaWiki tags. Don't worry about formatting; Slideshow is supposed to take care of that for you (it'll automatically position graphics and such for you).

Everything after the Contents section below will render as slides.

{Copyright:Copyright © 2009 Eclipse Foundation, Inc., Made available under the Eclipse Public License v 1.0}

Ten Eclipse Projects You Haven't Heard Enough About

Wayne Beaton, Eclipse Foundation, Evangelist

Agenda

What is Eclipse? Survey projects that you probably haven't heard enough about

  • Runtime Technology
  • Frameworks
  • Tools

What is Eclipse?

Eclipse is a Java IDE

  • Language-aware editors, views, …
  • Refactoring support
  • Integrated unit testing and debugging
  • Incremental compilation and build
  • Team development support

Eclipse is an IDE Framework

  • Eclipse + JDT = Java IDE
    • First class framework for Java, language aware editor, incremental build, integrated debugging, ...
  • Eclipse + CDT = C/C++ IDE
    • First class framework for C/C++, language aware editor, refactoring, search
  • Eclipse + PDT = PHP IDE
  • Eclipse + JDT + CDT + PDT = Java, C/C++, PHP IDE
  • Ruby, TCL, JavaScript, ...

Eclipse is a Tools Framework

  • Plug-ins make Eclipse whatever you need it to be
  • Platform of frameworks and exemplary tools
  • Tools extend the platform using bundles/plug-ins
  • Business Intelligence and Reporting Tools, Web Tools
  • Project, Data Tools Project, Eclipse Modeling Framework

Eclipse is a Application Framework

  • Remove the IDE elements; you’re left with a general-purpose application framework
    • Linux, Windows, Mac OSX, UNIX, embedded
    • Rich widget set, graphics
    • Native-OS integration (drag and drop, OLE/XPCOM integration)

A platform for rich clients

Eclipse is a Runtime Framework

  • Equinox generally useful component model
  • Headless applications, servers
  • Application Server on Equinox
    • IBM WebSphere Application Server
    • Oracle Weblogic Event Server

Eleven Top Level Projects

  • Eclipse
  • Tools
  • Web Tools Platform
  • Test & Performance Tools Platform (TPTP)
  • Business Intelligence and Reporting Tools (BIRT)
  • Modeling
  • Data Tools Platform
  • Device Software Development Platform
  • SOA Tools Platform
  • Technology
  • RT (Equinox)

Eclipse is an Open Source Community

All Eclipse projects are available for free download ~1 million downloads/month Contributors number in the thousands Committers number in the hundreds Hundreds of plug-ins provided by commercial companies, organizations, and individuals Enthusiastic blogger community Numerous Eclipse portals, etc…

Eclipse is an Eco-System

Eclipse is focused on nurturing the eco-system to complement, and enhance the Eclipse Platform Hundreds of organizations build Eclipse plug-ins Companies collaborate on Eclipse projects Companies compete with products based on Eclipse technology Many members, including major Java, Enterprise, Linux, and Embedded vendors http://www.eclipse.org/membership/

Eclipse is a Foundation

The Eclipse Foundation Manages and directs the ongoing development Provides IT infrastructure required by development teams Independent not-for-profit Foundation formed in 2004 Does not directly employ developers for Eclipse projects

Eclipse is all these things…

  • A Java IDE
  • An IDE framework
  • A tools framework
  • An application framework
  • Runtimes
  • Open source projects
  • A community
  • An eco-system
  • A foundation

What Else is There?

We know about the Eclipse IDE, what other projects are there?

Eclipse Examples Project

Eclipse Business Expense Reporting Tool

EBERT-RCP.png

  • Capture Expense information
  • Works on RCP, eRCP, and RAP
    • Many common components
    • Some platform-specific components

Technologies at Work

  • Eclipse RCP, eRCp, and RAP
  • Dependency-Injection using Equinox/OSGi Declarative Services
  • Nebula Widgets
  • User state
  • View Model

Eclipse IDE for Education

Eclipse IDE for Students

  • Eclipse-based IDE streamlined for students
    • Tasked to make the adoption of Eclipse technologies easier for first time adopters
    • Primarily targeting undergraduates
  • Streamlined Java development tools
  • Scheme, Prolog language support
  • Assignment workflow
    • Obtain/hand in assignments directly from environment

Eclipse IDE Meta-tooling Platform (IMP)

Motivation for IDE Meta-tooling

  • Many languages still don't enjoy full-featured IDE support in Eclipse.
  • Modifying existing concrete IDEs (like the JDT) not cost-effective.
    • They're huge, and not designed for extensibility.
  • Other existing frameworks (DLTK, xText) make assumptions about the type of language or its AST (Abstract Syntax Tree) representation.
  • Other frameworks tend to produce a "one-size-fits-all" (lowest-common-denominator) experience.
    • Provide little opportunity for customizing the IDE behavior to suit the language.

Enter: Eclipse IMP Technology Project

  • Eclipse-based meta-IDE for building feature-rich language-specific IDEs
  • Support for many IDE features: syntax highlighting, source code folding, outlining, source annotations, hover help, source hyperlinking from references to declarations, content assist, context-specific help, occurrence marking, incremental building with dependency tracking, auto-edit strategies, rule-based source code formatting, refactoring (in progress)
  • Implement support for the IDE features you most want
    • IMP will do the most it can with whatever you've implemented
  • Supports extensive customization of the IDE appearance and behavior - not a one-size-fits-all experience for your IDE's users
  • No bias toward any particular kind of language
  • Use any parsing/compiling technology you want (including rolling your own)
  • Already in use for nontrivial languages with a wide variety of purposes:
    • Grammar specification
    • Domain-specific languages (DSLs)
    • Modeling
    • General-purpose programming languages (X10, COBOL, etc.)
  • We eat our own dog food: we've built several IDEs using IMP that are in daily use as part of IMP

Eclipse GEF3D

Eclipse GEF3D

GEF3D-screenshot-transformationchain.png

  • 3D extension of GEF, enables full-featured 3D editors
  • existing 2D editors can easily be adapted to be used in a 3D scene
  • GEF and Draw2D programming style preserved (only little or even now 3D programming knowledge is required)
  • custom 3D figures and shapes can be created using an OpenGL like API
  • use cases:
    • visualization of inter-model relationships, e.g. mappings (see example screenshot)
    • annotation of 2D diagrams using the 3rd dimension, e.g. metrics
    • 3D notations for domain specific languages

Spatio-Temporal Epidemiological Modeler (STEM)

Spatio-Temporal Epidemiological Modeler

STEMUSA.png

  • Extensible, collaborative, framework for creating computational models for the spread of infectious disease.
  • Extensive data sets
    • Geographic and demographic data for entire planet
    • Transportation infrastructure
  • Geographic visualizations
  • Models can be composed, shared and reused
  • Built-in components
    • Sophisticated mathematical models
    • Scenarios for every country
  • Can be used for other kinds of modeling
    • Real-time situation awareness
    • Disaster planning

Eclipse Linux Tools Project

RPM .spec editor

LinuxToolsSpecEditor.png

  • Outline, folding, colourization, quick outline
  • Hover help and completion
    • Macros (%patch)
    • Requires/BuildRequires
  • rpmlint integration
  • Would love to see similar .deb tooling

RPM Stubby

LinuxToolsRPMStubby.png

  • One of our major project goals is to bring Eclipse technology to Linux distribution users
  • Transforms an Eclipse feature to an RPM .spec
  • Again, would love to see similar .deb tooling

GNU Autotools integration

LinuxToolsConfigureACEditor.png

  • Builds on CDT's builders to seamlessly call appropriate Makefile generators
  • Editors for configure.ac and Makefile.am
  • Potential contribution: a form editor!

OProfile integration

LinuxToolsOProfile.png

  • Call profiling
  • Plans include code colourization of hot spots a la Eclemma

Valgrind integration

LinuxToolsMemcheck.png

  • memcheck: check for memory errors
    • ex. malloc with no free
    • Link with source editors which have markers
    • Potential contribution: quick fixes

LinuxToolsMassif.png

  • massif: heap usage
    • Table of snapshots
    • Chart of usage
    • Linking with source editors
  • Upcoming tool in 0.2.0 release: cachegrind
    • Cache hits and misses

Java Workflow Tooling

An extensible business process modeler...

JWT Views.png

  • Extensible set of views (UML, Tech, EPC...)
  • Extensible meta-model (aspects)
  • Customizable UI

...that produces executable processes

JWT Transfos.png
  • A growing set of transformations
    • XPDL
    • BPMN
    • jPDL (incubating)
  • Incubating runtime API to facilitate development of automated tasks
  • Incubating workflow administration and monitoring component
  • http://www.eclipse.org/jwt

Nebula