blob: fa813df3a8d5bae1244a33d68f2da685cf0a1d3d [file] [log] [blame]
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta name="GENERATOR" content="IBM Software Development Platform" />
<title>Eclipse Webtools Architecture Overview</title>
</head>
<body>
<div align="center">
<table border="1" cellpadding="10" height="50%" width="70%">
<tbody>
<tr align="left" valign="middle">
<td valign="middle" align="left">
<blockquote style="">
<p><cite>The background and status of this document:</cite></p>
<p><cite>This version is a second draft of WTP Architecture Overview
and has incorporated comments received. Comments to wtp-dev list are welcome. </cite></p>
<p><cite> Version 0.3 December 2, 2004. </cite></p>
</blockquote>
</td>
</tr>
</tbody>
</table>
</div>
<h1>Eclipse Webtools Architecture Overview</h1>
<p>The <a href="http://www.eclipse.org/webtools/main.html">Web Tooling
Platform (WTP) Project</a> is made up of two subprojects, <a
href="http://www.eclipse.org/webtools/wst/main.html">Web Standard Tools
(WST)</a> and <a href="http://www.eclipse.org/webtools/jst/main.html">J2EE
Standard Tools (JST)</a>.</p>
<p>The <a href="http://www.eclipse.org/webtools/wst/components.html">list
of components for WST</a> and the<a
href="http://www.eclipse.org/webtools/jst/components.html"> list of
components for JST</a> give descriptions of the components and
[eventually will contain] links to that component's specific design
documents.
<p>This document describes the <b>subsystems</b> that these components
form. These divisions into subsystems are important because they form
the basis of what is available to other projects, and end-user update
manager features, and features for maintenance streams. Also, it allows
a high level description of internal and external dependancies.</p>
<p>For end-users, there is currently only one news group, <a
href="news:org.eclipse.dev/eclipse.webtools">eclipse.webtools</a>. For
developers, there are currently three mailing lists <a
href="mailto:wtp-dev@eclipse.org">wtp-dev</a>, <a
href="mailto:wtp-wst-dev@eclipse.org">wtp-wst-dev</a>, and <a
href="mailto:wtp-jst-dev@eclipse.org">wtp-jst-dev</a>. As the project
continues, if traffic seems "heavy" for a particular component, then new
mailing lists and/or news groups will be created as needed.</p>
<p>This document decribes the <a href="#subsystemview">Subsystem View</a>, <a
href="#eclipsedependancies">Dependancies on the Eclipse Project</a>, <a
href="#toolsdependancies">Dependancies on Tools Projects</a>, <a
href="#relationtootherprojects">Relation to other Projects and Products</a>, <a
href="#graphicalsummary">Summary in Graphical form</a>, and <a
href="#deployrmentview">Deployment View</a>.</p>
<h1><a name="subsystemview">Subsystem View</a></h1>
<h2>WST Project</h2>
<h3>Build and Test Subsystem</h3>
<p>For completeness, I'll mention our build and test component, highly
modeled after the base Eclipse build and test components.</p>
<ul>
<li>org.eclipse.wtp.releng</li>
</ul>
<h3>Common Subsystem</h3>
<p>Components in this subsystem have no dependancies on other webtooling
components and are not specific to web tooling functionality, but are
needed by other web tooling components.
<ul>
<li>Common Component
<ul>
<li>Extensible Navigator</li>
<li>Tabbed Property View</li>
<li>Snippets View</li>
<li>Extensible URI Resolver</li>
</ul>
</li>
<li>Validation Framework Component</li>
<li>Command Framework Component</li>
</ul>
<h3>Server Subsystem</h3>
<ul>
<li>Server Component</li>
<li>Internet Component</li>
</ul>
<h3>Database Subsystem</h3>
<p>Will be an update manager feature.</p>
<ul>
<li>RDB/SQL</li>
</ul>
<h3>XML Subsystem</h3>
<p>Will be an update manager feature.</p>
<ul>
<li>XML Component</li>
<li>Schema Component</li>
<li>DTD Component</li>
<li>SSE Component</li>
</ul>
<h3>Web Services Subsystem</h3>
<ul>
<li>WS Component</li>
<li>WSDL Component</li>
<li>WSI Component</li>
</ul>
<h3>Web Resources Subsystem</h3>
<ul>
<li>HTML Component</li>
<li>CSS Component</li>
<li>JavaScript Component</li>
</ul>
<h3>Generic Web Module Subsystem</h3>
<ul>
<li>Web Component</li>
</ul>
<h2>JST Project</h2>
<h3>Server Subsystem</h3>
<ul>
<li>Server Component</li>
</ul>
<h3>JSP Resources Subsystem</h3>
<p>Will be an update manager feature.</p>
<ul>
<li>JSP Component</li>
</ul>
<h3>Basic J2EE Subsystem</h3>
<ul>
<li>Servlet Component</li>
<li>J2EE Component</li>
</ul>
<h3>Advanced J2EE Subsystem</h3>
<ul>
<li>EJB Component</li>
<li>WS Component</li>
</ul>
<h1><a name="eclipsedependancies">Dependancies on the Eclipse Project</a></h1>
<h2>Platform</h2>
<p>All components pervasively required by both WST and JST. Note, there
might be a few not required in short term, such as debug component, but
long term it is easily imagined to be needed.</p>
<h2>JDT</h2>
<p>Not required by WST, but required by JST. Note: we don't rule out
that we might require it someday in WST ... but no known cases
currently.</p>
<h2>PDE</h2>
<p>Not required, though obviously want to verify co-existence.</p>
<h2>WebDav</h2>
<p>While not an official platform project or component, we do want to
verify co-existence.</p>
<h1><a name="toolsdependancies">Dependancies on Tools Projects</a></h1>
<p>In addition to the base Eclipse, the following projects/packages are
prerequisites of the Webtooling Platform. GEF, EMF, and XSD are
pre-req'd by enough of WST to say its always required. The JEM package
is only pre-req'd by JST.</p>
<h2>EMF</h2>
<p>EMF, <a href="http://www.eclipse.org/emf/" target="_top">Eclipse
Modeling Framework</a>, is a way to define meta models, and then
instantiate specific instances of those models. Its particularly famous
for being useful to maintain models across multiple products, especially
when the model may change from one release to another (the way that
deployment descriptors and J2EE specs change from version to version.</p>
<h2>XSD</h2>
<p>The <a href="http://www.eclipse.org/xsd/" target="_top">XSD, XML
Schema Infoset Model, Project</a> provides a model and API for querying
detailed information about schemas and manipulating them. [Note:
technically XSD Infoset is part of Technology Project, but is
distributed with EMF]</p>
<h2>GEF</h2>
<p>GEF, <a href="http://www.eclipse.org/gef/" target="_top">Graphical
Editing Framework</a>, is a framework &quot;on top&quot; of SWT that
makes it easier to develop sophisticated, highly customizable user
interfaces that go beyond typical widgets .</p>
<h2>JEM Package</h2>
<p>The JEM package, Java EMF Model, is actually part of the <a
href="http://www.eclipse.org/vep/" target="_top">VE Project</a>. The VE
team has recently made it available as separate download from their <a
href="http://download.eclipse.org/tools/ve/downloads/drops/S-1.0M2-200407301410/index.html"
target="_top">VE build pages</a>. In addition to allowing easier
interaction with other EMF models, it also incorporates BeanInfo into
its models (not just reflection). We use it in connection to our J2EE
EMF-based models. From what I hear, there's no ISV documentation for
this package, but the rose models that are used to create the meta model
can be found in CVS on dev.eclipse.org<br />
/home/tools<br />
under<br />
/org.eclipse.jem/rose<br />
To load into rose (from workspace) you'd also have to have
org.eclipse.emf.ecore in workspace, and define, in Rose, an EditPathMap
of WorkspaceRoot as what ever your workspace root is on your filesystem
(then it can find included files/models automatically).</p>
<h2>Others</h2>
<p><b>Xerces</b>. We currently ship Xerces binaries within plugin's
runtimes that require them. [There's been some discussion that with OSGI
classloading of PPS (Platform (bootloader), Pre-reqs, Self), that it
should be easier to provide a common Xerces plugin, as long as there's
no version requirements conflicts, and no custom class loaders involved,
and appropriate factories used to &quot;get&quot; the specific parts of
Xerces needed that are not part of the platforms runtime].</p>
<h1><a name="relationtootherprojects">Relation to other Projects</a> and Products</h1>
<h2>J2EE Servers</h2>
<ul>
<li>Apache Tomcat</li>
<li>JBoss</li>
<li>(Jonas)b </li>
</ul>
<h2>Database Servers</h2>
<ul>
<li>Apache Derby (Cloudscape)</li>
<li>With adapters for other products as well, db2.iseries, db2.luw, db2.zseries, informix, oracle, sqlserver, sybase</li>
</ul>
<h1><a name="graphicalsummary">Summary in Graphical form</a></h1>
<p>The following diagrams summarize the subsystem and relationships
described above.</p>
<p></p>
<p><img src="images/wstandjstdependancies.png" width="867" height="454"
border="2" /></p>
<p><br />
The darker shaded subsystems are accessible by end-users and other
components via update manager.</p>
<p><img src="images/wstsubsystems.png" width="606" height="450"
border="2" /></p>
<p><br />The darker shaded subsystem (orange) is accessible by end-users and other
components via update manager.
<br />The white subsytems indicate the &quot;links&quot; into the WST subsystem. The JDT and JEM components indicate two <br />components from other projects required in JST, but not required in WST.
</p>
<h1><img src="images/jstsubsystems.png" width="769" height="475"
border="2" /><a name="deployrmentview"><br />
Deployment View</a></h1>
<p>This section makes explicit what is currently planned to be made available as deployable features via update manager. This is paritally driven by views expressed by community users, and partially dirven by the expressed needs of other projects. It may not be the perfect &quot;slice and dice&quot; of the whole package that would suit everyone, but the expecation is that other projects can always download more than they need, and pick and choose the exact components they want to re-distribute.</p>
<p>All deployment features below will have a &quot;binary&quot; runtime
version, and an SDK version, with all source and developer
documentation. </p>
<p>At the hightest level, is JST and WST seperately. (With JST requireing
WST). </p>
<p>Within JST, user's can choose all of JST, or JSP Subsystem. </p>
<p>Within WST, users's can choose all of WST, or the XML Subsystem
(includes Schema and DTD components), or the Data Subsystem </p>
<p>Of Course, at any point of a decision, the choosen &quot;subcomponent&quot; will still &quot;pull allong&quot; all that its dependent on. </p>
<p></p>
</body>
</html>