platform-update-home/doc/products-and-extension.html

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4, Fri Jun 21 19:01:42 2002 UTC revision 1.5, Fri Dec 6 21:22:53 2002 UTC
# Line 1  Line 1 
1  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2  <html>  <html>
   
3  <head>  <head>
4    
5  <meta http-equiv="Content-Language" content="en-us">  <meta http-equiv="Content-Language" content="en-us">
6  <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">  
7      <meta http-equiv="Content-Type"
8     content="text/html; charset=windows-1252">
9    
10  <meta name="GENERATOR" content="Microsoft FrontPage 4.0">  <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
11    
12  <meta name="ProgId" content="FrontPage.Editor.Document">  <meta name="ProgId" content="FrontPage.Editor.Document">
13  <title>Eclipse-based Products and Extensions</title>  <title>Eclipse-based Products and Extensions</title>
14  </head>  </head>
   
15  <body>  <body>
16    
17  <h1> Eclipse-based Products and Extensions</h1>  <h1> Eclipse-based Products and Extensions</h1>
18  <p>Last modified 14:00 Friday June 21, 2002</p>  
19  <p>Eclipse technology is the foundation of, and provides building blocks for,  <p>Last modified 16:00 Friday December 06, 2002<br>
20  products aimed at the software development tools market. Commercial software  </p>
21  vendors are expected to build, brand, and package products using the Eclipse  <p><b>Change History:</b> </p>
22  platform as the nucleus, to sell these products into the development tools  
23  marketplace, and to support them once in the field.</p>  <ul>
24  <p>The Eclipse platform itself is not a &quot;product&quot; in any of these    <li><small>2.0.1</small><small><br>
25  senses. Eclipse is an open source project that provides raw ingredients without      </small>
26  box, label, or price tag. The closest that the Eclipse project gets to a      <ul>
27  packaged form is the Eclipse SDK, which can be downloaded from <a href="http://www.eclipse.org">eclipse.org</a>,        <li><small>added: <big><code>feature.default.plugin.id</code></big></small></li>
28  installed, and used as a full-service Java IDE which also happens to include      </ul>
29  special support for developing Eclipse plug-ins (PDE).</p>    </li>
30  <p>This note describes how the Eclipse platform is designed to be turned into products.  </ul>
31  The license governing the Eclipse platform gives a software vendor almost  
32  complete freedom over how to built a product. So anyone building a product is  <p>Eclipse technology is the foundation of, and provides building blocks
33  free to ignore this advice. However, as is often the case with standards,  for, products aimed at the software development tools market. Commercial
34  adhering to the same rules as everyone else has its rewards: it fosters greater  software vendors are expected to build, brand, and package products using
35  interoperability between products, and makes it easier for the end user because  the Eclipse platform as the nucleus, to sell these products into the development
36  different products behave in similar ways.</p>  tools marketplace, and to support them once in the field.</p>
37  <p>Eclipse plug-ins are intended to packaged and delivered to the customer into  
38  one of two forms: either as self-contained Eclipse-based products, or as add-on  <p>The Eclipse platform itself is not a "product" in any of these senses.
39  extensions to Eclipse-based products. We'll first explain what we mean by  Eclipse is an open source project that provides raw ingredients without box,
40  Eclipse-based product since it is the more basic notion.</p>  label, or price tag. The closest that the Eclipse project gets to a packaged
41    form is the Eclipse SDK, which can be downloaded from <a
42     href="http://www.eclipse.org">eclipse.org</a>, installed, and used as a
43    full-service Java IDE which also happens to include special support for developing
44    Eclipse plug-ins (PDE).</p>
45    
46    <p>This note describes how the Eclipse platform is designed to be turned
47    into products. The license governing the Eclipse platform gives a software
48    vendor almost complete freedom over how to built a product. So anyone building
49    a product is free to ignore this advice. However, as is often the case with
50    standards, adhering to the same rules as everyone else has its rewards: it
51    fosters greater interoperability between products, and makes it easier for
52    the end user because different products behave in similar ways.</p>
53    
54    <p>Eclipse plug-ins are intended to packaged and delivered to the customer
55    into one of two forms: either as self-contained Eclipse-based products, or
56    as add-on extensions to Eclipse-based products. We'll first explain what
57    we mean by Eclipse-based product since it is the more basic notion.</p>
58    
59  <h2>Eclipse-based products</h2>  <h2>Eclipse-based products</h2>
60    
61  <p>An Eclipse-based <b>product</b> is a stand-alone program build with Eclipse.  <p>An Eclipse-based <b>product</b> is a stand-alone program build with Eclipse.
62  Products are self-contained in that all code and plug-ins needed to get up and  Products are self-contained in that all code and plug-ins needed to get up
63  running are included; this includes a Java runtime environment (JRE), and the  and running are included; this includes a Java runtime environment (JRE),
64  code for the Eclipse platform itself. After installing a product on a computer  and the code for the Eclipse platform itself. After installing a product
65  with a conventional native installer, the user launches the product (via its  on a computer with a conventional native installer, the user launches the
66  product executable) and is presented with an Eclipse workbench configured  product (via its product executable) and is presented with an Eclipse workbench
67  appropriately for the purposes that product was designed to support (be it  configured appropriately for the purposes that product was designed to support
68  developing enterprise web servers, developing C++ programs, or developing  (be it developing enterprise web servers, developing C++ programs, or developing
69  whatever). Products are intended to be updated, either with a conventional  whatever). Products are intended to be updated, either with a conventional
70  native installer, or with the build-in Eclipse update manager, which is always  native installer, or with the build-in Eclipse update manager, which is always
71  available to the user from the Eclipse workbench (&quot;Update Manager&quot; on  available to the user from the Eclipse workbench ("Update Manager" on the
72  the &quot;Help&quot; menu).</p>  "Help" menu).</p>
73  <p>If we looked more closely at how the Eclipse parts of the product are  
74  organized, we would see that all plug-ins that go into a product are grouped  <p>If we looked more closely at how the Eclipse parts of the product are organized,
75  into <b>features</b>. &quot;Feature&quot; is an Eclipse update manager notion: a  we would see that all plug-ins that go into a product are grouped into <b>features</b>.
76  feature is the smallest unit of separately downloadable and installable  "Feature" is an Eclipse update manager notion: a feature is the smallest
77  functionality. Features also play a secondary role in how the Eclipse platform  unit of separately downloadable and installable functionality. Features also
78  runs.</p>  play a secondary role in how the Eclipse platform runs.</p>
79    
80  <p>To make things a bit more concrete, the top level structure of an installed  <p>To make things a bit more concrete, the top level structure of an installed
81  Eclipse-based product looks like this (italics indicate product-specific file  Eclipse-based product looks like this (italics indicate product-specific
82  names):&nbsp;</p>  file names): </p>
83    
84  <p><code>&lt;<i>install</i>&gt;/<br>  <p><code>&lt;<i>install</i>&gt;/<br>
85  &nbsp; <i>acmeproduct</i>.exe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </code>product     <i>acmeproduct</i>.exe      </code>product executable<code><br>
86  executable<code><br>     eclipse/             </code>container for installed Eclipse files<code><br>
87  &nbsp;       .eclipseproduct        </code>marker for Eclipse product install<code><br>
88  eclipse/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       eclipse.exe            </code>Eclipse executable launcher<code><br>
89  </code>container for installed Eclipse files<code><br>       startup.jar            </code>Eclipse Java launcher<code><br>
90  &nbsp;&nbsp;&nbsp; .eclipseproduct&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </code>marker       install.ini            </code>install info<code><br>
91  for Eclipse product install<code><br>       .config/               </code>install info (computed at install time
92  &nbsp;&nbsp;&nbsp; eclipse.exe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  with -initialize option)<code><br>
93  </code>Eclipse executable launcher<code><br>          platform.cfg           </code>default platform configuration<code><br>
94  &nbsp;&nbsp;&nbsp; startup.jar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       jre/                   </code>Java runtime environment (JRE)<code><br>
95  </code>Eclipse Java launcher<code><br>       features/                               </code>installed feature versions<code><br>
96  &nbsp;&nbsp;&nbsp; install.ini&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;         <i>com.example.acme.acmefeature</i>_<i>1.0.0</i>/        </code>primary
97  </code>install info<code><br>  feature for product<code><br>
98  &nbsp;&nbsp;&nbsp; .config/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           feature.xml                                </code>feature manifest
99  </code>install info (computed at install time with -initialize option)<code><br>  file<code><br>
100  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; platform.cfg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;         org.eclipse.platform_2.0.0/                </code>feature for Eclipse
101  </code>default platform configuration<code><br>  platform<code><br>
102  &nbsp;&nbsp;&nbsp; jre/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;         org.eclipse.platform.win32_2.0.0/          </code>feature for Eclipse
103  </code>Java runtime environment (JRE)<code><br>  platform<code><br>
104  &nbsp;&nbsp;&nbsp;       plugins/                                </code>installed plug-ins and
105  features/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fragment versions<code><br>
106  </code>installed feature versions<code><br>   </code> <code>     <i>com.example.acme.acmefeature</i>_<i>1.0.0</i>/        
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>com.example.acme.acmefeature</i>_<i>1.0.0</i>/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
 </code>primary feature for product<code><br>  
 &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; feature.xml&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
 </code>feature manifest file<code><br>  
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.eclipse.platform_2.0.0/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
 </code>feature for Eclipse platform<code><br>  
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.eclipse.platform.win32_2.0.0/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
 </code>feature for Eclipse platform<code><br>  
 &nbsp;&nbsp;&nbsp; plugins/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
 </code>installed plug-ins and fragment versions<code><br>  
 </code>&nbsp;<code>&nbsp;&nbsp;&nbsp;&nbsp; <i>com.example.acme.acmefeature</i>_<i>1.0.0</i>/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
107  </code>product-specific plug-in<code><br>  </code>product-specific plug-in<code><br>
108  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; plugin.xml&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           plugin.xml                                  </code>plug-in manifest
109  </code>plug-in manifest file<code><br>  file<code><br>
110  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; about.ini&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           about.ini                                   </code>about info for
111  </code>about info for product<code><br>  product<code><br>
112  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>acme</i>.gif&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           <i>acme</i>.gif                                    </code>window
113  </code>window icon for product<code><br>  icon for product<code><br>
114  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; plugin_customization.ini&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           plugin_customization.ini                    </code>about info for
115  </code>about info for product<code><br>  product<code><br>
116  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; splash.png&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           splash.png                                  </code>product splash
117  </code>product splash screen<code><br>  screen<code><br>
118  </code>&nbsp; <code>&nbsp;&nbsp;&nbsp;&nbsp; <i>com.example.acme.myplugin</i>_<i>1.0.0</i>/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </code>  <code>     <i>com.example.acme.myplugin</i>_<i>1.0.0</i>/          
119  </code>product-specific plug-in <code><br>  </code>product-specific plug-in <code><br>
120  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; plugin.xml&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           plugin.xml                                  </code>plug-in manifest
121  </code>plug-in manifest file <code><br>  file <code><br>
122  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>myplugin</i>.jar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           <i>myplugin</i>.jar                                </code>code for
123  </code>code for product-specific plug-in<code><br>  product-specific plug-in<code><br>
124  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.eclipse.platform_2.0.0/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;         org.eclipse.platform_2.0.0/                </code>Eclipse platform
125  </code>Eclipse platform plug-in<code><br>  plug-in<code><br>
126  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.eclipse.platform.win32_2.0.0/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;         org.eclipse.platform.win32_2.0.0/          </code>Eclipse platform
127  </code>Eclipse platform plug-in<code><br>  plug-in<code><br>
128  &nbsp;&nbsp;&nbsp; &nbsp; org.eclipse.core.boot_2.0.0/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;         org.eclipse.core.boot_2.0.0/               </code>Eclipse platform
129  </code>Eclipse platform plug-in<code><br>  plug-in<code><br>
130  &nbsp; &nbsp;&nbsp;&nbsp; org.eclipse.core.runtime_2.0.0/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;         org.eclipse.core.runtime_2.0.0/            </code>Eclipse platform
131  </code>Eclipse platform plug-in<code><br>  plug-in<code><br>
132  &nbsp; &nbsp;&nbsp;&nbsp; org.eclipse.core.resources_2.0.0/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;         org.eclipse.core.resources_2.0.0/          </code>Eclipse platform
133  </code>Eclipse platform plug-in<code><br>  plug-in<code><br>
134  &nbsp;&nbsp;&nbsp; &nbsp; org.eclipse.ui_2.0.0/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;         org.eclipse.ui_2.0.0/                      </code>Eclipse platform
135  </code>Eclipse platform plug-in<code><br>  plug-in<code><br>
136  &nbsp; &nbsp;&nbsp;&nbsp; (more org.eclipse.* plug-in directories)<br>         (more org.eclipse.* plug-in directories)<br>
137  &nbsp;&nbsp;&nbsp;       links/                                   </code>links to extensions
138  links/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  (see next section)<code><br>
139  </code>links to extensions (see next section)<code><br>         <i>com.example.wiley.anvilfeature</i>.link        </code>link to separately-installed
140  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>com.example.wiley.anvilfeature</i>.link&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  extension<code><br>
 </code>link to separately-installed extension<code><br>  
141  </code></p>  </code></p>
142  <p>Each product should partition its own plug-ins into one or more features. The  
143  Eclipse platform itself is partitioned into three major features, Platform, JDT,  <p>Each product should partition its own plug-ins into one or more features.
144  and PDE. There are also a bunch of lesser features, including documentation,  The Eclipse platform itself is partitioned into three major features, Platform,
145  examples, and OS-dependent portions of Platform. The binary distribution of the  JDT, and PDE. There are also a bunch of lesser features, including documentation,
146  Eclipse 2.0 release makes each of these features available as a separate zip.  examples, and OS-dependent portions of Platform. The binary distribution
147  This allow a product packager to download and unzip just the pieces needed for a  of the Eclipse 2.0 release makes each of these features available as a separate
148  particular product offering.</p>  zip. This allow a product packager to download and unzip just the pieces
149    needed for a particular product offering.</p>
150    
151  <p>To the user, an installed product usually shows up on the desktop as a  <p>To the user, an installed product usually shows up on the desktop as a
152  shortcut. Opening the shortcut starts the product. For a simple product that  shortcut. Opening the shortcut starts the product. For a simple product that
153  does nothing other than run an Eclipse workbench, the shortcut target is the  does nothing other than run an Eclipse workbench, the shortcut target is
154  Eclipse executable launcher (<code>&lt;<i>install</i>&gt;/eclipse/eclipse.exe</code>).  the Eclipse executable launcher (<code>&lt;<i>install</i>&gt;/eclipse/eclipse.exe</code>).
155  For products that have other things to do as well, the shortcut targets the  For products that have other things to do as well, the shortcut targets the
156  product's own executable (<code>&lt;<i>install</i>&gt;/<i>acmeproduct</i>.exe</code>),  product's own executable (<code>&lt;<i>install</i>&gt;/<i>acmeproduct</i>.exe</code>),
157  which invokes <code>eclipse.exe</code> at some point.</p>  which invokes <code>eclipse.exe</code> at some point.</p>
158  <p>Whenever the Eclipse platform is run, exactly one feature gets to control the   Whenever the Eclipse platform is run, exactly one feature gets to control
159  overall personality of the Eclipse platform. This is the called the product's <b>primary  the overall personality of the Eclipse platform. This is the called the product's
160  feature</b>, and it controls highly visible things including the splash screen,  <b>primary feature</b>, and it controls highly visible things including the
161  window branding images, the about box, the welcome page, the default  splash screen, window branding images, the about box, the welcome page, the
162  perspective, and customization of the default settings of plug-in preferences. The typical product has  default perspective, and customization of the default settings of plug-in
163  just one eligible primary feature, and it is determined by the &quot;<code>feature.default.id</code>&quot;  preferences. The typical product has just one eligible primary feature, and
164  property of the product's <code>install.ini</code> file. If there are multiple  it is determined by the "<code>feature.default.id</code>" property of the
165  eligible primary features, the <code>-feature</code>  product's <code>install.ini</code> file. If there are multiple eligible primary
166  command line option to <code>eclipse.exe</code> overrides the choice made in the  features, the <code>-feature</code> command line option to <code>eclipse.exe</code>
167  <code>install.ini</code>.&nbsp;</p>  overrides the choice made in the <code>install.ini</code>. If the property
168    "<code>feature.default.plugin.id</code>" exists, it declares the identifier
169    of the primary plugin. If the property does not exist, the primary plugin
170    must have the exact same identifier as the primary feature.
171  <p>Summary of characteristics of products:</p>  <p>Summary of characteristics of products:</p>
172    
173  <ul>  <ul>
174    <li>a product is installed in a single directory tree</li>    <li>a product is installed in a single directory tree</li>
175    <li>a product includes copies of the org.eclipse.* plug-ins that it needs</li>    <li>a product includes copies of the org.eclipse.* plug-ins that it needs</li>
# Line 159  Line 177 
177      in a product install</li>      in a product install</li>
178    <li>a products is installed and uninstalled by a native installer only</li>    <li>a products is installed and uninstalled by a native installer only</li>
179    <li>more than one product may be installed on the same computer</li>    <li>more than one product may be installed on the same computer</li>
180    <li>a product is installed, updated, and uninstalled independently of other     <li>a product is installed, updated, and uninstalled independently of
181      Eclipse-based products</li>  other     Eclipse-based products</li>
182    <li>a product is updated by a native installer or by the Eclipse update    <li>a product is updated by a native installer or by the Eclipse update
183      manager</li>      manager</li>
184    <li>a product can have one or more primary features, and any number of other     <li>a product can have one or more primary features, and any number of
185      features</li>  other     features</li>
186    <li>a primary feature determines the Eclipse workbench overall appearance and     <li>a primary feature determines the Eclipse workbench overall appearance
187      personality</li>  and     personality</li>
188    <li>the default primary feature is specified in the product-specific    <li>the default primary feature is specified in the product-specific
189      install.ini file</li>      install.ini file</li>
190    <li>the update manager can update the features and plug-ins installed with the     <li>the update manager can update the features and plug-ins installed
191      product</li>  with the     product</li>
192    <li>the update manager can install and configure additional features and    <li>the update manager can install and configure additional features and
193      plug-ins into the product</li>      plug-ins into the product</li>
194    
195  </ul>  </ul>
196    
197  <h2>Extensions to Eclipse-based products</h2>  <h2>Extensions to Eclipse-based products</h2>
198    
199  <p>An <b>extension</b> is bundle of Eclipse-based features designed to be  <p>An <b>extension</b> is bundle of Eclipse-based features designed to be
200  installed separately and used with any Eclipse-based product. In contrast to a product,  installed separately and used with any Eclipse-based product. In contrast
201  an extension includes neither eligible primary features, nor a copy of the Eclipse platform, nor its own JRE.</p>  to a product, an extension includes neither eligible primary features, nor
202    a copy of the Eclipse platform, nor its own JRE.</p>
203    
204  <p>The same installed base of files for an extension can be used from several  <p>The same installed base of files for an extension can be used from several
205  Eclipse-based products. This means an extension only needs to be updated in one  Eclipse-based products. This means an extension only needs to be updated
206  place, while having the updated features available to all products linked to that extension.</p>  in one place, while having the updated features available to all products
207  <p>To keep things concrete, the top level structure of an installed  linked to that extension.</p>
208  Eclipse-based extension looks like this:&nbsp;</p>  
209    <p>To keep things concrete, the top level structure of an installed Eclipse-based
210    extension looks like this: </p>
211    
212  <p><code>&lt;<i>extension install</i>&gt;/<br>  <p><code>&lt;<i>extension install</i>&gt;/<br>
213  &nbsp;     eclipse/             </code>container for installed Eclipse files<code><br>
214  eclipse/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       .eclipseextension      </code>marker for Eclipse extension install<code><br>
215  </code>container for installed Eclipse files<code><br>       features/                               </code>installed feature versions<code><br>
216  &nbsp;&nbsp;&nbsp; .eclipseextension&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </code>marker         <i>com.example.wiley.anvilfeature</i>_<i>1.0.0</i>/        </code>feature
217  for Eclipse extension install<code><br>  for extension<code><br>
218  &nbsp;&nbsp;&nbsp;           feature.xml                                </code>feature manifest
219  features/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  file<code><br>
220  </code>installed feature versions<code><br>       plugins/                                </code>installed plug-ins and
221  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>com.example.wiley.anvilfeature</i>_<i>1.0.0</i>/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fragment versions<code><br>
222  </code>feature for extension<code><br>   </code> <code>     <i>com.example.wiley.anvilfeature</i>_<i>1.0.0</i>/        
 &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; feature.xml&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
 </code>feature manifest file<code><br>  
 &nbsp;&nbsp;&nbsp; plugins/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
 </code>installed plug-ins and fragment versions<code><br>  
 </code>&nbsp;<code>&nbsp;&nbsp;&nbsp;&nbsp; <i>com.example.wiley.anvilfeature</i>_<i>1.0.0</i>/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
223  </code>extension-specific plug-in<code><br>  </code>extension-specific plug-in<code><br>
224  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; plugin.xml&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           plugin.xml                                  </code>plug-in manifest
225  </code>plug-in manifest file<code><br>  file<code><br>
226  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; about.ini&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           about.ini                                   </code>about info for
227  </code>about info for feature<code><br>  feature<code><br>
228  </code>&nbsp; <code>&nbsp;&nbsp;&nbsp;&nbsp; <i>com.example.wiley.otherplugin</i>_<i>1.0.0</i>/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </code>  <code>     <i>com.example.wiley.otherplugin</i>_<i>1.0.0</i>/         
229  </code>extension-specific plug-in <code><br>  </code>extension-specific plug-in <code><br>
230  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; plugin.xml&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           plugin.xml                                  </code>plug-in manifest
231  </code>plug-in manifest file <code><br>  file <code><br>
232  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>otherplugin</i>.jar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           <i>otherplugin</i>.jar                             </code>code for
233  </code>code for extension-specific plug-in</p>  extension-specific plug-in</p>
234    
235  <p>Characteristics of extensions:</p>  <p>Characteristics of extensions:</p>
236    
237  <ul>  <ul>
238    <li>an extension is installed in a single directory tree (separate from    <li>an extension is installed in a single directory tree (separate from
239      products or other extensions)</li>      products or other extensions)</li>
240    <li>an extension does not include a copy of the Eclipse platform plug-ins, a     <li>an extension does not include a copy of the Eclipse platform plug-ins,
241      JRE, or an executable</li>  a     JRE, or an executable</li>
242    <li>OS-dependent code for multiple operating environment can sit side-by-side    <li>OS-dependent code for multiple operating environment can sit side-by-side
243      in an extension install</li>      in an extension install</li>
244    <li>an extension is installed and uninstalled by a native installer only</li>    <li>an extension is installed and uninstalled by a native installer only</li>
245    <li>more than one extension may be installed on the same computer</li>    <li>more than one extension may be installed on the same computer</li>
246    <li>an extension is installed, updated, and uninstalled independently of other     <li>an extension is installed, updated, and uninstalled independently
247      Eclipse-based products</li>  of other     Eclipse-based products</li>
248    <li>an extension is updated by a native installer or by the Eclipse update    <li>an extension is updated by a native installer or by the Eclipse update
249      manager</li>      manager</li>
250    <li>a product can have one or more features</li>    <li>a product can have one or more features</li>
251    <li>an extension does not define primary features</li>    <li>an extension does not define primary features</li>
252    <li>to be useful, an extension must be associated with an Eclipse-based    <li>to be useful, an extension must be associated with an Eclipse-based
253      product</li>      product</li>
254    <li>an extension can be associated with one or more products at the time the     <li>an extension can be associated with one or more products at the time
255      extension is installed</li>  the     extension is installed</li>
256    <li>an extension can be associated with a product via the update manager</li>    <li>an extension can be associated with a product via the update manager</li>
257    <li>the update manager can update the features and plug-ins installed with the     <li>the update manager can update the features and plug-ins installed
258      extension</li>  with the     extension</li>
259    <li>the update manager can install and configure additional features and    <li>the update manager can install and configure additional features and
260      plug-ins into the extension</li>      plug-ins into the extension</li>
 </ul>  
261    
262    </ul>
263      <br>
264  </body>  </body>
   
265  </html>  </html>

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5