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