<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../wtp.xsl"?>
<html>
        <head>
                <title>j2ee standard tools components</title>
        </head>
        <body>
                <h1>jst components</h1>

                <h2>Introduction</h2>
                <p>
                        This document describes the component structure for the J2EE
                        Standard Tools subproject. As the name of this subproject
                        implies, our scope includes J2EE standards, such as JSP,
                        servlet, EJB and related standards which are defined by the
                        JCP. This is in contrast to the Web Standard Tools
                        subproject whose scope is Web and related standards defined
                        by organizations such as W3C, OASIS, and ANSI. One of the
                        main organizing principles of this subproject is to group
                        all work related to a given standard within a single
                        component. For example, there are components for JSP editing
                        and J2EE projects. The other main organizing principle is to
                        create a component for each major framework. For example,
                        there are components for Server tools and the Web service
                        wizard. Finally, there are components for related sets of
                        code that do not fall into either of the two main
                        categorizations. For example, there is a common component
                        for utilities and other shared infrastructure code.
                </p>

                <h3>
                        <a
                                href="http://dev.eclipse.org/viewcvs/index.cgi/jst/components/?cvsroot=WebTools_Project">
                                CVS Repository
                        </a>
                </h3>
                <p>
                        All JST components are stored in the Eclipse CVS repository
                        at dev.eclipse.org in the path
                        /home/webtools/jst/components.
                </p>
                <p>
                        The following sections briefly describe the components and
                        their component leads.
                </p>

                <h2>Components</h2>

                <h3>
                        <a name="assembly">assembly</a>
                </h3>
                <p>
                        The assembly component contains features definitions for
                        building the JST release, its SDK, and its test suite. The
                        component lead is Naci Dai.
                </p>

                <h3>
                        <a name="jstcommon">common</a>
                </h3>
                <p>
                        The common component contains common utilities and
                        infrastructure that does not find its home elsewhere. The
                        component lead is Naci Dai.
                        <ul>
                                <li>
                                        <a href="../plans/1.5/jst/j2ee/RC5/test_plan.html">
                                                Current Test Plan
                                        </a>
                                </li>
                        </ul>
                </p>

				<h3>
					<a name="doc">doc</a>
				</h3>
				<p>
						The doc component contains the end user and ISV
						documentation for the JST subproject. This includes
						infopops and both Eclipse integrated and online help.
						The component lead is Lawrence Mandel.
						<ul>
							<!-- 
							<li>
								<a
									href="components/doc/overview.html">
									Component Overview
								</a>
							</li>
							-->
							<li>
							<a href="../plans/1.0/jst/doc/M8/milestone_plan.html">
								Current Milestone Plan
							</a>
						</li>
						<li>
							<a
								href="https://wiki.eclipse.org/index.php/Doc_Test_Plan">
								Current Test Plan
							</a>
						</li>
					</ul>
				</p>

                <h3>
                        <a name="j2ee">j2ee</a>
                </h3>
                <p>
                        The jst project component contains common j2ee models,
                        natures and builders for J2EE projects, and j2ee modules
                        views, wizards, etc. including the new support for flexible
                        project layouts. The component leads are Naci Dai and Chuck
                        Bridgham.
                        <ul>
                                <li>
                                        <a href="components/j2ee/j2ee_index.html">
                                                J2EE Main page
                                        </a>
                                </li>
                                <li>
                                        <a href="../plans/1.0/jst/j2ee/M9/milestone_plan.html">
                                                Current Milestone Plan (M9)
                                        </a>
                                </li>
                                <li>
                                        <a href="../plans/1.5/jst/j2ee/RC5/test_plan.html">
                                                Current Test Plan
                                        </a>
                                </li>
                                <li>
                                        <a href="components/j2ee/M5/news/j2ee-news-M5.html">
                                                M5 New and Noteworthy
                                        </a>
                                </li>
                        </ul>
                </p>

                <h3>
                        <a name="jsp">jsp</a>
                </h3>
                <p>
                        The jsp component contains the JSP editor, model, views,
                        wizards, etc. The component lead is David Williams.
                        <ul>
                                <li>
                                        <a
                                                href="components/jsp/overview.html">
                                                Component Overview
                                        </a>
                                </li>
                                <li>
                                        <a href="../plans/1.0/jst/jsp/M9/milestone_plan.html">
                                                Current Milestone Plan
                                        </a>
                                </li>
                                <li>
                                        <a
                                                href="../plans/2.0/jst/jsp/test_plan.php">
                                                Current Test Plan
                                        </a>
                                </li>
                        </ul>
                </p>

                <h3>
                        <a name="servlet">servlet</a>
                </h3>
                <p>
                        The servlet component contains the servlet editors, models,
                        views, wizards, etc. The component lead is Naci Dai.
                        <ul>
                                <li>
                                        <a href="components/j2ee/j2ee_index.html">
                                                J2EE Main page(Servlet info found here)
                                        </a>
                                </li>
                                <li>
                                        <a href="../plans/1.5/jst/j2ee/RC5/test_plan.html">
                                                Current Test Plan
                                        </a>
                                </li>
                        </ul>
                </p>

                <h3>
                        <a name="ejb">ejb</a>
                </h3>
                <p>
                        The ejb component contains the ejb editors, models, views,
                        wizards, etc. The component lead is Naci Dai.
                        <ul>
                                <li>
                                        <a href="components/j2ee/j2ee_index.html">
                                                J2EE Main page(EJB info found here)
                                        </a>
                                </li>
                                <li>
                                        <a href="../plans/1.5/jst/j2ee/RC5/test_plan.html">
                                                Current Test Plan
                                        </a>
                                </li>
                        </ul>
                </p>

                <h3>
                        <a name="jstserver">server</a>
                </h3>
                <p>
                        The server component contains the J2EE Server Tools
                        framework and adapters for selected popular J2EE servers
                        such as Apache Tomcat. The component leads are Tim deBoer
                        and Gorkem Ercan.
                        <ul>
                                <li>
                                        <a href="components/server/index.html">Overview</a>
                                </li>
                                <li>
                                        <a href="../plans/1.0/jst/server/M8/milestone_plan.html">Current Milestone Plan</a>
                                </li>
                                <li>
                                        <a href="components/server/test_plan.html">Current Test Plan</a>
                                </li>
                        </ul>
                </p>

                <h3>
                        <a name="ws">ws</a>
                </h3>
                <p>
                        The ws component contains the Java Web service wizard and
                        adapters for selected popular J2EE Web service engines such
                        as <a href="http://ws.apache.org/axis/">Apache Axis</a>.
                        The component lead is Chris Brealey.
                        <ul>
							<li>
								<a href="components/ws/index.html">Overview</a>
							</li>
							<li>
								<a href="../plans/1.0/jst/ws/M9/milestone_plan.html">Current Milestone Plan</a>
							</li>
							<li>
								<a href="components/ws/1.5M6/test_plan.html">Current Test Plan</a>
							</li>
                        </ul>
                </p>

        </body>
</html>
