<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Apache Wink : 3 Getting Started with Apache Wink</title>
	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">	    
    </head>

    <body>
	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
		    <tr>
			    <td valign="top" class="pagebody">
				    <div class="pageheader">
					    <span class="pagetitle">
                            Apache Wink : 3 Getting Started with Apache Wink
                                                    </span>
				    </div>
				    <div class="pagesubheading">
					    This page last changed on Sep 23, 2009 by <font color="#0050B2">michael</font>.
				    </div>

				    <h1><a name="3GettingStartedwithApacheWink-GettingStartedwithApacheWink"></a>Getting Started with Apache Wink</h1>


<p>Apache Wink consists of a main library and an additional set of dependant libraries. The Apache Wink distribution also includes an "<b>examples</b>" folder that contains all of the "<b>example projects</b>" referred to in this developer guide.</p>

<h3><a name="3GettingStartedwithApacheWink-Thissectioncontainsthefollowing%3A"></a>This section contains the following:</h3>

<ul>
	<li><a href="#3GettingStartedwithApacheWink-ApacheWinkDistributionFiles">Apache Wink Distribution Files</a></li>
	<li><a href="#3GettingStartedwithApacheWink-CreatingaProjectusingtheApacheWink">Creating a Project using the Apache Wink</a></li>
	<li><a href="#3GettingStartedwithApacheWink-TestingtheProjectDeployment">Testing the Project Deployment</a></li>
	<li><a href="#3GettingStartedwithApacheWink-HelloWorldDetailedDescription">HelloWorld Detailed Description</a></li>
	<li><a href="#3GettingStartedwithApacheWink-HelloWorldJ2EEDeploymentDescriptorweb.xml">HelloWorld J2EE Deployment Descriptor - web.xml</a></li>
	<li><a href="#3GettingStartedwithApacheWink-HelloWorldSpringDeploymentDescriptorHelloWorldContextserver.xml">HelloWorld Spring Deployment Descriptor HelloWorldContext-server.xml</a></li>
	<li><a href="#3GettingStartedwithApacheWink-BookmarkExampleApplication">Bookmark Example Application</a></li>
	<li><a href="#3GettingStartedwithApacheWink-ApacheWinkGettingStartedSummary">Apache Wink Getting Started Summary</a></li>
</ul>


<h1><a name="3GettingStartedwithApacheWink-GettingStartedwithApacheWinkOverview"></a>Getting Started with Apache Wink Overview</h1>

<p>In order to gain an in-depth understanding of the Apache Wink SDK a series of example projects have been designed to help the developer clarify the underlying principles and usage of the Apache Wink.<br/>
The following sections provide a detailed step-by-step implementation and deployment of the HelloWorld example application using the Eclipse IDE as the default development environment.</p>

<h2><a name="3GettingStartedwithApacheWink-ApacheWinkDistributionFiles"></a>Apache Wink Distribution Files</h2>

<p>TBD</p>

<h2><a name="3GettingStartedwithApacheWink-CreatingaProjectusingtheApacheWink"></a>Creating a Project using the Apache Wink</h2>

<p>TBD</p>

<h2><a name="3GettingStartedwithApacheWink-TestingtheProjectDeployment"></a>Testing the Project Deployment</h2>

<p>TBD</p>

<h2><a name="3GettingStartedwithApacheWink-HelloWorldDetailedDescription"></a>HelloWorld Detailed Description</h2>

<p>TBD</p>

<h2><a name="3GettingStartedwithApacheWink-HelloWorldJ2EEDeploymentDescriptorweb.xml"></a>HelloWorld J2EE Deployment Descriptor - web.xml</h2>

<p>TBD</p>

<h3><a name="3GettingStartedwithApacheWink-HelloWorldSpringDeploymentDescriptorHelloWorldContextserver.xml"></a>HelloWorld Spring Deployment Descriptor HelloWorldContext-server.xml</h3>

<p>TBD</p>

<h2><a name="3GettingStartedwithApacheWink-BookmarkExampleApplication"></a>Bookmark Example Application</h2>

<p>TBD</p>


<h2><a name="3GettingStartedwithApacheWink-ApacheWinkGettingStartedSummary"></a>Apache Wink Getting Started Summary</h2>

<p>TBD</p>

				    
                    			    </td>
		    </tr>
	    </table>
	    <table border="0" cellpadding="0" cellspacing="0" width="100%">
			<tr>
				<td height="12" background="http://cwiki.apache.org/confluence/images/border/border_bottom.gif"><img src="images/border/spacer.gif" width="1" height="1" border="0"/></td>
			</tr>
		    <tr>
			    <td align="center"><font color="grey">Document generated by Confluence on Nov 11, 2009 06:57</font></td>
		    </tr>
	    </table>
    </body>
</html>