## Products and features

An Eclipse based product is a stand-alone program built with the Eclipse platform. A product may optionally be packaged and delivered as one or more features, which are simply groupings of plug-ins that are managed as a single entity by the Eclipse update mechanisms.

Products include all the code and plug-ins needed to run them. This includes a Java runtime environment (JRE) and the Eclipse platform code. The plug-in code, JRE, and Eclipse platform are typically installed with a product-specific installation program. Product providers are free to use any installation tool or program that is appropriate for their needs.

Once installed, the user launches the product and is presented with an Eclipse workbench configured specifically for the purpose supported by the product, such as web development, C++ program development, or any other purpose. The platform makes it easy to configure labels, about dialogs, graphics, and splash screens, so that the user has no concept of a platform workbench, but instead views the workbench as the main window of the product itself.

The top level directory structure of such a product looks something like this for a hypothetical product called "AcmeWeb" that has been installed on a Windows platform:

    acmeweb/
    	acmeweb.exe		(product executable)
    	eclipse/		(directory for installed Eclipse files)
    		.eclipseproduct	(marker file)
    		eclipse.exe
    		startup.jar
    		configuration/
    			config.ini
    		jre/
    		features/	(installed features if any)
    			com.example.acme.acmefeature_1.0.0/
    				feature.xml
    			...
    		plugins/
    			com.example.acme.acmefeature_1.0.0/
    				plugin.xml
    				about.ini
    				about.html
    				about.mappings
    				about.properties
    				acme.png
    				splash.jpg
    			com.example.acme.acmewebsupport_1.0.0/
    			...
    		links/
    			...

There are actually two ways of defining a product in Eclipse. The preferred mechanism is to use the products extension point. This extension point allows you to define your product and customize branding such as splash screens, window icons, and the like. The older mechanism (used in Eclipse 2.1) uses features, and in particular assumes the existence of a primary feature. Under the covers, Eclipse now uses the products extension point mechanism, but provides compatibility functions that integrate the legacy definitions into the new model if necessary.

We'll look at both mechanisms and how they are used to customize a product. Even when the products extension point mechanism is used, features can still be used as a way to group functionality that is delivered by the update manager. In the next few topics, we'll assume that feature groupings are present in our plug-in, in addition to product definitions.