Skip to main content

skip to main content

developerWorks  >  Open source  >

What to plug into Eclipse

There's more to Eclipse than writing Java code

developerWorks
Document options

Document options requiring JavaScript are not displayed


My developerWorks needs you!

Connect to your technical community


Rate this page

Help us improve this content


Level: Intermediate

Peter Nehrer (pnehrer@ecliptical.ca), Freelance Writer, Consultant

30 May 2006

Throughout the Java™ developer community, Eclipse is best known for its industry-leading Java Development Tools (JDT). But Eclipse was built to encourage the use of plug-ins, and in that respect, it is wildly successful. Find out about some of the capabilities that have been built into Eclipse plug-ins, such as the ability to program in other languages like Ruby or to build interactive multimedia with environments such as OpenLaszlo.

Introduction

A growing number of Java developers have come to appreciate the productivity and quality gains provided by Eclipse's JDT. The Eclipse support for writing Java code is truly state of the art. Its Java editor provides functions like syntactic highlighting, formatting, folding, content assistance, code templates, and many more -- which most of us can no longer imagine living without. Its ever-growing set of available refactorings and code-generation functions allow you to manipulate your code at a higher level and automate often coding-intensive and error-prone tasks. And, once you've developed your code and unit-tested it using JDT's built-in support for writing and executing JUnit tests, you can debug any issues you encounter at runtime using Eclipse's world-class Java debugger.

In addition to JDT, the Eclipse SDK -- the most popular Eclipse.org download -- contains the Plug-in Development Environment (PDE). PDE extends JDT with functionality specific to building Eclipse plug-ins -- the fundamental building blocks of any Eclipse-based application. In fact, it is the ability to extend existing Eclipse applications, or even create entirely new ones, using tools provided by Eclipse itself that allows it to reach far beyond Java development.



Back to top


The sum of all plug-ins

If you've used Eclipse for a while, you may have run into the term "plug-in." Architecturally, Eclipse consists of a small run-time layer that hosts a number of functional modules, or "plug-ins," in Eclipse terminology. Plug-ins are the components that provide all functionality in an Eclipse application. They collaborate together through their APIs to deliver the end-result. In Eclipse, even the most fundamental functionality, such as finding and starting the installed plug-ins, is encapsulated in a plug-in.

To extend or build upon existing Eclipse functionality, plug-ins contribute concrete extensions to extension points exposed by other plug-ins. Typically, a plug-in focuses on a specific area of responsibility and delegates the rest to others by means of one or more extension points. For example, a plug-in that allows you to visually compare the contents of two files side by side doesn't concern itself with how to read these files or even how to interpret their structure; that is the job of another plug-in. When comparing two files, the plug-in first checks if there is another plug-in that can interpret the structure of these files. If one is found, it then asks the discovered plug-in for the files' structure and uses this information during comparison.

As you can see, its modular architecture gives Eclipse enormous flexibility and makes for a platform that can support a variety of applications unforeseen by the original authors.



Back to top


Installing Eclipse plug-ins

When looking for new plug-ins online, you're likely to find them available as downloadable archives -- zip or JAR files. The plug-in's publisher should provide instructions for installation. Typically, stand-alone plug-ins published as JAR files may be saved directly into your plug-in directory in your Eclipse installation (the eclipse directory). In some cases, multiple plug-ins may be packaged together, and the archive file may already have them under a plugins directory. If this is the case, you must extract the archive file into your eclipse directory. After installing new plug-ins, you must restart your workbench for changes to take effect.

Note: Make sure to add -clean to your command line when you restart your Eclipse workbench (eclipse -clean). This will ensure that your Eclipse plug-in configuration is up to date.

Multiple plug-ins may also be published as a feature. The Eclipse Update Manager, which is part of the workbench, uses the concept of features as a way of grouping related plug-ins for installation and configuration purposes. In such cases, the only difference you will notice is that the published archive file contains a features directory in addition to the plug-ins directory.

The Update Manager is a powerful tool for managing your Eclipse configuration and keeping it up to date. For detailed instructions on how to use the Update Manager, please refer to your Eclipse Help's Workbench User Guide > Tasks > Updating features with the update manager.



Back to top


A universal IDE

When initially released, Eclipse was touted as a universal tool integration platform, seeded with a set of capable Java development tools. The hope was that development tool industry leaders would adopt Eclipse as the underlying platform for their best-of-breed tool offerings.

To that end, Eclipse has fulfilled its promise. The number of available Eclipse IDE plug-ins and even entire development suites continues to grow. The Eclipse Foundation alone oversees the development of a number of projects that extend the original Eclipse IDE with other programming languages and platforms. More companies continue to join the Eclipse Foundation, and new projects are created and contributed to.

Enterprise Java and Web Application Development

Even though developing J2EE applications typically involves Java programming, many other technologies are also involved. Thus, building enterprise-grade software requires an entirely new set of tools.

The Eclipse Foundation itself hosts the Web Tools Project (WTP), which seeks to provide tools and tool frameworks for developing J2EE Web application. Though several Eclipse-based J2EE development suites have been available in the commercial market for a while, WTP is a relative newcomer. It is actually an umbrella project for three subprojects: Web Standard Tools (WST), J2EE Standard Tools (JST), and Java Server Faces (JSF) Tools.

WST provides feature-rich editors for a number of Web standards, such as HTML, XML, CSS, JavaScript, SVG, XML Schema, XSLT, SOAP, WSDL, SQL, and more. It also supports the deployment and monitoring of Web artifacts on a range of HTTP servers.

JST extends this feature set to support development of full-featured, multitiered J2EE applications. With JST, you can create dynamic Web applications using JSPs and servlets, as well as EJB components and Web services. You can also edit the deployment descriptors for all your components and test-run your application directly in your workbench on a variety of supported J2EE application servers.

JSF Tools aims to add support for developing JSF-based Web applications. It is a new subproject with only one released milestone, but plans exist to include it in the WTP V1.5 release.

There are several commercial software development suites available that support the creation of J2EE applications. IBM® Rational® Application Developer for WebSphere® covers several stages of the enterprise software development life cycle, including design, development, testing, deployment, and configuration management of J2EE applications.

To support the creation of dynamic Web applications, BEA's Workshop Studio utilizes its patent-pending AppXRay technology, which tracks and validates the state of application artifacts. It also includes Hibernate-to-EJB3 ORM mapping workbench and support for the Spring framework.

MyEclipse IDE, developed by Genuitec, is a low-cost alternative to the large development suites. It provides a full set of J2EE development tools focusing on open source technologies such as Spring, Hibernate, Tapestry, and Struts.



Back to top


Desktop application development

The resurrection of Java on the desktop can be to a large extent attributed to Eclipse. While it hasn't become an exclusive Java desktop platform, the success of Eclipse seems to have stimulated improvements in the Java platform itself and contributed to re-evaluation of Java as a viable platform for desktop applications.

While it is possible (and in fact, preferred by many) to create user interfaces directly in Java, large productivity gains can be achieved with the right kind of visual UI development tool. The fact that such a tool didn't exist in the Eclipse space for some time (at least not as an Open-Source project) was viewed by many as an obstacle to an even greater rate of adoption of Eclipse as a rich-client application platform.

The Visual Editor project was created to provide frameworks for GUI builders, but fully functional SWT and Swing UI builders are also included. Visual Editor allows programmers to create SWT and Swing-based user interfaces quickly and efficiently, using the popular drag-and-drop technique. Even though this approach takes manual programming out of UI development, programmers don't have to sacrifice control over the resulting code. Rather than rely on some external UI descriptor files, Visual Editor actually uses the Java code as its UI definition format. That is, it parses existing Java user interface creation code and modifies it or generates new code based on the developer's visual editing actions.

There are several commercial products whose aim is to ease UI development. Instantiations' WindowBuilder is a pioneer in the field. In addition to the base functionality provided by Visual Editor, it supports advanced features, such as the Eclipse Forms API. Matisse4Eclipse is part of MyEclipse IDE and essentially brings Sun Microsystems' Project Matisse Swing UI builder to the Eclipse platform.

Other platforms and programming languages

True to its mission as the universal tool integration platform, Eclipse supports software development in programming languages other than the Java language. The Eclipse Foundation itself hosts the C/C++ Development Tools project (CDT) with the goal to provide a development environment for C/C++ developers that is no less than equal in features and capabilities to the one used by Java programmers. Currently, CDT provides a C/C++ source editor with syntax highlighting, content assistance, code completion, a GDB-based debugger, C/C++ application launcher, search engine, Makefile builder, and many other features.

Other programming language projects hosted by Eclipse.org include legacy languages such as COBOL and Fortran (project Photran), but also modern languages and programming techniques, such as AspectJ (which brings Aspect-Oriented Programming to Java technology), Web Services Business Process Execution Language (WS-BPEL), Laszlo IDE (Laszlo is an open source platform for the development and delivery of rich Internet applications), and Lepido (tools for the Apache Cocoon Web application framework). A broad initiative to create best-of-breed tools for developing Ajax applications (the Rich Ajax Platform) is also being proposed, and the recent announcement of a newly approved Eclipse PHP IDE project means that state-of-the-art support for the popular PHP scripting language is also in the works.

Support for additional languages is available from third-party providers. Omondo UML offers a set of Unified Modeling Language (UML) modeling tools that integrate well with the JDT. However, because UML is programming language-independent, it can be used in projects that don't necessarily involve Java technology. The PyDev project is a set of open source development tools for the Python programming language. xored software provides commercial support for Python programming in its TruStudio Professional (its TruStudio Foundation is licensed under EPL). Another open source project, Ruby Development Tools (RDT) provides a full set of tools for programming in Ruby. Finally, you can design your own programming or domain-specific language with the help of ANTLR Studio, which lets you create context-free grammar definitions based on the ANTLR framework. ANTLR Studio is a commercial product developed by Placid Systems.

Core tools and technologies

An important segment of the Eclipse community is software that is used as the foundation of, or a complement to, other products or development tools. While you are not likely to download and use these plug-ins as end-user tools, they make it possible for others to create high-quality software based on common standards or augment the functionality of existing products.

In this category, the Eclipse Foundation hosts several projects. The Eclipse Modeling Framework (EMF) is a software modeling framework with support for automatic code generation. It is used in many other projects that benefit from model-driven software development. While EMF only uses a subset of UML tools, the UML2 project extends it to provide support for the full UML2 standard.

The Graphical Editor Framework (GEF) is a framework for creating rich graphical editors for arbitrary object models. This framework is also used in many other projects that provide visual editing functionality, such as UML diagram, figure, and workflow editors. The Graphical Modeling Framework (GMF) extends GEF and EMF to add visual editing capabilities to arbitrary EMF models.

The Data Tools Platform (DTP) project aims to create a common tool set for using a variety of relational data sources. It provides tools for managing database connectivity, as well as creation and execution of SQL scripts.

The Eclipse Test and Performance Tools Platform (TPTP) consists of four subprojects: a common TPTP Platform, Monitoring Tools for application monitoring and logging, Tracing and Profiling Tools, and finally, Testing tools. These tools allow you to monitor, profile, and test Java applications in a variety of execution environments.

Business Intelligence and Reporting Tools (BIRT) add business reporting capabilities to existing applications. BIRT supports a variety of media, including HTML and PDF.

The Device Software Development Platform (DSDP) aims to provide a set of tools for developing software for embedded devices. A related project, the eRCP, seeks to extend the Rich Client Platform (RCP) to embedded devices.

The mission of the SOA Tools Platform (STP) is to build frameworks and exemplary extensible tools that enable the design, configuration, assembly, deployment, monitoring, and management of software designed around a service-oriented architecture (SOA). It consists of several subprojects, such as the Core Frameworks, SOA System, Service Creation, BPEL2Java, and BMPN.

Several subprojects are hosted under the umbrella of the Eclipse Technology project, which servers as an incubator for interesting ideas that may potentially benefit other new or existing projects. Some of the projects that haven't already been mentioned elsewhere include the Eclipse Communication Framework (ECF), which provides a common set of APIs and components for building real-time communication and collaboration applications, the Higgins Trust Framework, which is an extensible framework for virtual integration of identity, profile, and relationship data in various group contexts, and the Voice Tools Project, which extends WTP to support creation of speech recognition applications.



Back to top


Eclipse as an RCP

With the momentum behind Eclipse gaining, many companies and developers have discovered that Eclipse is not only a great platform for integrated tools but it could also be used for other types of feature-rich client-side applications, such as in business and collaboration. Thus, starting with version 3.0, Eclipse has extended its reach beyond tools and is now officially supported as a Rich Client Platform (RCP).

RCP applications share all the flexibility and extensibility characteristics of their tool-oriented counterparts in that they, too, are composed of plug-ins. However, the set of common RCP plug-ins is much smaller, and one cannot just drop another plug-in into an RCP application unless that application specifically supports it.

IBM's Workplace Client Technology is a commercial example of an entire Eclipse RCP-based platform. In terms of architecture, it is to client-side collaboration tools what the Eclipse IDE is to development tools. IBM Workplace is a family of products that includes information management and team collaboration using centrally managed rich client technology. It provides instant messaging, Web conferencing, shared calendar scheduling, and more.

Two popular examples of open source applications based on Eclipse RCP are Azureus and RSSOwl. Azureus is a powerful BitTorrent client that allows you to download large files distributed using the BitTorrent technology. It supports its own growing set of plug-ins. RSSOwl is a feature-rich syndicated news reader and aggregator. It allows you to search, subscribe to, and read news and blogs published using one of the many popular syndication formats, such as RSS, RDF, and Atom.

Eclipse RCP is also becoming popular in the academic field and research applications. For instance, NASA's Jet Propulsion Laboratory (JPL) chose Eclipse RCP as the foundation for its Maestro project, which is a set of tools for managing the high-level operation of NASA's Mars Exploration Rovers. The software is used for planning the rovers' surface activities, such as where to go and how many pictures to take.

There are many other commercial and open source applications based on Eclipse RCP. They span myriad fields, including biomedical research (Bioclipse, Sequence Scanner Software), modeling for mathematics and physics (BrainBox, GumTree, Kalypso), communication and collaboration (WiredReach), business and finance (Eclipse Trader, BSI CRM, eClarus, Logic MindGuide), and many more.



Back to top


Summary

Thanks to its plug-in-based architecture, Eclipse is a versatile platform for integrated development tools, as well as many other kinds of applications. As an IDE, Eclipse may not only be used to write Java code but also to develop in other programming languages. As a Rich Client Platform, it can even be used to perform a wide range of nonprogramming tasks. The availability of commercial and open source applications utilizing Eclipse technology for a variety of purposes continues to expand.



Resources

Learn

Get products and technologies

Discuss


About the author

Peter Nehrer is a software consultant living in Toronto, Ontario. He specializes in Eclipse-based enterprise solutions and J2EE applications. His professional interests include development tools, model-driven software development, and information sharing. He is the author and contributor to several Eclipse-related open source projects. He is an IBM Certified Solutions Developer for XML and related technologies. He holds a master's degree in computer science from the University of Massachusetts at Amherst.




Rate this page


Please take a moment to complete this form to help us better serve you.



 


 


Not
useful
Extremely
useful
 


Share this....

digg Digg this story del.icio.us del.icio.us Slashdot Slashdot it!



Back to top