platform-update-home/doc/products-and-extension.html
Parent Directory
|
Revision Log
Revision 1.5 - (view) (download) (as text)
| 1 : | droberts | 1.4 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
| 2 : | vlad | 1.1 | <html> |
| 3 : | <head> | ||
| 4 : | celek | 1.5 | |
| 5 : | <meta http-equiv="Content-Language" content="en-us"> | ||
| 6 : | |||
| 7 : | <meta http-equiv="Content-Type" | ||
| 8 : | content="text/html; charset=windows-1252"> | ||
| 9 : | |||
| 10 : | <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> | ||
| 11 : | |||
| 12 : | <meta name="ProgId" content="FrontPage.Editor.Document"> | ||
| 13 : | <title>Eclipse-based Products and Extensions</title> | ||
| 14 : | vlad | 1.1 | </head> |
| 15 : | celek | 1.5 | <body> |
| 16 : | |||
| 17 : | vlad | 1.1 | <h1> Eclipse-based Products and Extensions</h1> |
| 18 : | celek | 1.5 | |
| 19 : | <p>Last modified 16:00 Friday December 06, 2002<br> | ||
| 20 : | </p> | ||
| 21 : | <p><b>Change History:</b> </p> | ||
| 22 : | |||
| 23 : | <ul> | ||
| 24 : | <li><small>2.0.1</small><small><br> | ||
| 25 : | </small> | ||
| 26 : | <ul> | ||
| 27 : | <li><small>added: <big><code>feature.default.plugin.id</code></big></small></li> | ||
| 28 : | </ul> | ||
| 29 : | </li> | ||
| 30 : | </ul> | ||
| 31 : | |||
| 32 : | <p>Eclipse technology is the foundation of, and provides building blocks | ||
| 33 : | for, products aimed at the software development tools market. Commercial | ||
| 34 : | software vendors are expected to build, brand, and package products using | ||
| 35 : | the Eclipse platform as the nucleus, to sell these products into the development | ||
| 36 : | tools marketplace, and to support them once in the field.</p> | ||
| 37 : | |||
| 38 : | <p>The Eclipse platform itself is not a "product" in any of these senses. | ||
| 39 : | Eclipse is an open source project that provides raw ingredients without box, | ||
| 40 : | 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 : | vlad | 1.1 | <h2>Eclipse-based products</h2> |
| 60 : | celek | 1.5 | |
| 61 : | <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 | ||
| 63 : | and running are included; this includes a Java runtime environment (JRE), | ||
| 64 : | and the code for the Eclipse platform itself. After installing a product | ||
| 65 : | on a computer with a conventional native installer, the user launches the | ||
| 66 : | product (via its product executable) and is presented with an Eclipse workbench | ||
| 67 : | configured appropriately for the purposes that product was designed to support | ||
| 68 : | (be it developing enterprise web servers, developing C++ programs, or developing | ||
| 69 : | 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 | ||
| 71 : | available to the user from the Eclipse workbench ("Update Manager" on the | ||
| 72 : | "Help" menu).</p> | ||
| 73 : | |||
| 74 : | <p>If we looked more closely at how the Eclipse parts of the product are organized, | ||
| 75 : | we would see that all plug-ins that go into a product are grouped into <b>features</b>. | ||
| 76 : | "Feature" is an Eclipse update manager notion: a feature is the smallest | ||
| 77 : | unit of separately downloadable and installable functionality. Features also | ||
| 78 : | 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 | ||
| 81 : | Eclipse-based product looks like this (italics indicate product-specific | ||
| 82 : | file names): </p> | ||
| 83 : | |||
| 84 : | vlad | 1.1 | <p><code><<i>install</i>>/<br> |
| 85 : | celek | 1.5 | <i>acmeproduct</i>.exe </code>product executable<code><br> |
| 86 : | eclipse/ </code>container for installed Eclipse files<code><br> | ||
| 87 : | .eclipseproduct </code>marker for Eclipse product install<code><br> | ||
| 88 : | eclipse.exe </code>Eclipse executable launcher<code><br> | ||
| 89 : | startup.jar </code>Eclipse Java launcher<code><br> | ||
| 90 : | install.ini </code>install info<code><br> | ||
| 91 : | .config/ </code>install info (computed at install time | ||
| 92 : | with -initialize option)<code><br> | ||
| 93 : | platform.cfg </code>default platform configuration<code><br> | ||
| 94 : | jre/ </code>Java runtime environment (JRE)<code><br> | ||
| 95 : | features/ </code>installed feature versions<code><br> | ||
| 96 : | <i>com.example.acme.acmefeature</i>_<i>1.0.0</i>/ </code>primary | ||
| 97 : | feature for product<code><br> | ||
| 98 : | feature.xml </code>feature manifest | ||
| 99 : | file<code><br> | ||
| 100 : | org.eclipse.platform_2.0.0/ </code>feature for Eclipse | ||
| 101 : | platform<code><br> | ||
| 102 : | org.eclipse.platform.win32_2.0.0/ </code>feature for Eclipse | ||
| 103 : | platform<code><br> | ||
| 104 : | plugins/ </code>installed plug-ins and | ||
| 105 : | fragment versions<code><br> | ||
| 106 : | </code> <code> <i>com.example.acme.acmefeature</i>_<i>1.0.0</i>/ | ||
| 107 : | vlad | 1.1 | </code>product-specific plug-in<code><br> |
| 108 : | celek | 1.5 | plugin.xml </code>plug-in manifest |
| 109 : | file<code><br> | ||
| 110 : | about.ini </code>about info for | ||
| 111 : | product<code><br> | ||
| 112 : | <i>acme</i>.gif </code>window | ||
| 113 : | icon for product<code><br> | ||
| 114 : | plugin_customization.ini </code>about info for | ||
| 115 : | product<code><br> | ||
| 116 : | splash.png </code>product splash | ||
| 117 : | screen<code><br> | ||
| 118 : | </code> <code> <i>com.example.acme.myplugin</i>_<i>1.0.0</i>/ | ||
| 119 : | vlad | 1.1 | </code>product-specific plug-in <code><br> |
| 120 : | celek | 1.5 | plugin.xml </code>plug-in manifest |
| 121 : | file <code><br> | ||
| 122 : | <i>myplugin</i>.jar </code>code for | ||
| 123 : | product-specific plug-in<code><br> | ||
| 124 : | org.eclipse.platform_2.0.0/ </code>Eclipse platform | ||
| 125 : | plug-in<code><br> | ||
| 126 : | org.eclipse.platform.win32_2.0.0/ </code>Eclipse platform | ||
| 127 : | plug-in<code><br> | ||
| 128 : | org.eclipse.core.boot_2.0.0/ </code>Eclipse platform | ||
| 129 : | plug-in<code><br> | ||
| 130 : | org.eclipse.core.runtime_2.0.0/ </code>Eclipse platform | ||
| 131 : | plug-in<code><br> | ||
| 132 : | org.eclipse.core.resources_2.0.0/ </code>Eclipse platform | ||
| 133 : | plug-in<code><br> | ||
| 134 : | org.eclipse.ui_2.0.0/ </code>Eclipse platform | ||
| 135 : | plug-in<code><br> | ||
| 136 : | (more org.eclipse.* plug-in directories)<br> | ||
| 137 : | links/ </code>links to extensions | ||
| 138 : | (see next section)<code><br> | ||
| 139 : | <i>com.example.wiley.anvilfeature</i>.link </code>link to separately-installed | ||
| 140 : | extension<code><br> | ||
| 141 : | </code></p> | ||
| 142 : | |||
| 143 : | <p>Each product should partition its own plug-ins into one or more features. | ||
| 144 : | The Eclipse platform itself is partitioned into three major features, Platform, | ||
| 145 : | JDT, and PDE. There are also a bunch of lesser features, including documentation, | ||
| 146 : | examples, and OS-dependent portions of Platform. The binary distribution | ||
| 147 : | of the Eclipse 2.0 release makes each of these features available as a separate | ||
| 148 : | 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 | ||
| 152 : | 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 | ||
| 154 : | the Eclipse executable launcher (<code><<i>install</i>>/eclipse/eclipse.exe</code>). | ||
| 155 : | For products that have other things to do as well, the shortcut targets the | ||
| 156 : | product's own executable (<code><<i>install</i>>/<i>acmeproduct</i>.exe</code>), | ||
| 157 : | vlad | 1.1 | which invokes <code>eclipse.exe</code> at some point.</p> |
| 158 : | celek | 1.5 | Whenever the Eclipse platform is run, exactly one feature gets to control |
| 159 : | the overall personality of the Eclipse platform. This is the called the product's | ||
| 160 : | <b>primary feature</b>, and it controls highly visible things including the | ||
| 161 : | splash screen, window branding images, the about box, the welcome page, the | ||
| 162 : | default perspective, and customization of the default settings of plug-in | ||
| 163 : | preferences. The typical product has just one eligible primary feature, and | ||
| 164 : | it is determined by the "<code>feature.default.id</code>" property of the | ||
| 165 : | product's <code>install.ini</code> file. If there are multiple eligible primary | ||
| 166 : | features, the <code>-feature</code> command line option to <code>eclipse.exe</code> | ||
| 167 : | 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 : | vlad | 1.1 | <p>Summary of characteristics of products:</p> |
| 172 : | celek | 1.5 | |
| 173 : | vlad | 1.1 | <ul> |
| 174 : | celek | 1.5 | <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> | ||
| 176 : | <li>OS-dependent code for multiple operating environment can sit side-by-side | ||
| 177 : | vlad | 1.1 | in a product install</li> |
| 178 : | celek | 1.5 | <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> | ||
| 180 : | <li>a product is installed, updated, and uninstalled independently of | ||
| 181 : | other Eclipse-based products</li> | ||
| 182 : | <li>a product is updated by a native installer or by the Eclipse update | ||
| 183 : | vlad | 1.1 | manager</li> |
| 184 : | celek | 1.5 | <li>a product can have one or more primary features, and any number of |
| 185 : | other features</li> | ||
| 186 : | <li>a primary feature determines the Eclipse workbench overall appearance | ||
| 187 : | and personality</li> | ||
| 188 : | <li>the default primary feature is specified in the product-specific | ||
| 189 : | install.ini file</li> | ||
| 190 : | <li>the update manager can update the features and plug-ins installed | ||
| 191 : | with the product</li> | ||
| 192 : | <li>the update manager can install and configure additional features and | ||
| 193 : | vlad | 1.1 | plug-ins into the product</li> |
| 194 : | celek | 1.5 | |
| 195 : | vlad | 1.1 | </ul> |
| 196 : | celek | 1.5 | |
| 197 : | vlad | 1.1 | <h2>Extensions to Eclipse-based products</h2> |
| 198 : | celek | 1.5 | |
| 199 : | <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 | ||
| 201 : | 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 | ||
| 205 : | Eclipse-based products. This means an extension only needs to be updated | ||
| 206 : | in one place, while having the updated features available to all products | ||
| 207 : | linked to that extension.</p> | ||
| 208 : | |||
| 209 : | <p>To keep things concrete, the top level structure of an installed Eclipse-based | ||
| 210 : | extension looks like this: </p> | ||
| 211 : | |||
| 212 : | vlad | 1.1 | <p><code><<i>extension install</i>>/<br> |
| 213 : | celek | 1.5 | eclipse/ </code>container for installed Eclipse files<code><br> |
| 214 : | .eclipseextension </code>marker for Eclipse extension install<code><br> | ||
| 215 : | features/ </code>installed feature versions<code><br> | ||
| 216 : | <i>com.example.wiley.anvilfeature</i>_<i>1.0.0</i>/ </code>feature | ||
| 217 : | for extension<code><br> | ||
| 218 : | feature.xml </code>feature manifest | ||
| 219 : | file<code><br> | ||
| 220 : | plugins/ </code>installed plug-ins and | ||
| 221 : | fragment versions<code><br> | ||
| 222 : | </code> <code> <i>com.example.wiley.anvilfeature</i>_<i>1.0.0</i>/ | ||
| 223 : | vlad | 1.1 | </code>extension-specific plug-in<code><br> |
| 224 : | celek | 1.5 | plugin.xml </code>plug-in manifest |
| 225 : | file<code><br> | ||
| 226 : | about.ini </code>about info for | ||
| 227 : | feature<code><br> | ||
| 228 : | </code> <code> <i>com.example.wiley.otherplugin</i>_<i>1.0.0</i>/ | ||
| 229 : | vlad | 1.1 | </code>extension-specific plug-in <code><br> |
| 230 : | celek | 1.5 | plugin.xml </code>plug-in manifest |
| 231 : | file <code><br> | ||
| 232 : | <i>otherplugin</i>.jar </code>code for | ||
| 233 : | extension-specific plug-in</p> | ||
| 234 : | |||
| 235 : | vlad | 1.1 | <p>Characteristics of extensions:</p> |
| 236 : | celek | 1.5 | |
| 237 : | vlad | 1.1 | <ul> |
| 238 : | celek | 1.5 | <li>an extension is installed in a single directory tree (separate from |
| 239 : | vlad | 1.1 | products or other extensions)</li> |
| 240 : | celek | 1.5 | <li>an extension does not include a copy of the Eclipse platform plug-ins, |
| 241 : | a JRE, or an executable</li> | ||
| 242 : | <li>OS-dependent code for multiple operating environment can sit side-by-side | ||
| 243 : | vlad | 1.1 | in an extension install</li> |
| 244 : | celek | 1.5 | <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> | ||
| 246 : | <li>an extension is installed, updated, and uninstalled independently | ||
| 247 : | of other Eclipse-based products</li> | ||
| 248 : | <li>an extension is updated by a native installer or by the Eclipse update | ||
| 249 : | vlad | 1.1 | manager</li> |
| 250 : | celek | 1.5 | <li>a product can have one or more features</li> |
| 251 : | <li>an extension does not define primary features</li> | ||
| 252 : | <li>to be useful, an extension must be associated with an Eclipse-based | ||
| 253 : | vlad | 1.1 | product</li> |
| 254 : | celek | 1.5 | <li>an extension can be associated with one or more products at the time |
| 255 : | the extension is installed</li> | ||
| 256 : | <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 | ||
| 258 : | with the extension</li> | ||
| 259 : | <li>the update manager can install and configure additional features and | ||
| 260 : | vlad | 1.1 | plug-ins into the extension</li> |
| 261 : | celek | 1.5 | |
| 262 : | vlad | 1.1 | </ul> |
| 263 : | celek | 1.5 | <br> |
| 264 : | vlad | 1.1 | </body> |
| 265 : | celek | 1.5 | </html> |
| help@eclipse.org | ViewVC Help |
| Powered by ViewVC 1.0.3 |
