<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Apache Wink : 1 Introduction to 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 : 1 Introduction to Apache Wink
                                                    </span>
				    </div>
				    <div class="pagesubheading">
					    This page last changed on Sep 12, 2009 by <font color="#0050B2">bluk</font>.
				    </div>

				    <h1><a name="1IntroductiontoApacheWink-IntroductiontoApacheWink"></a>Introduction to Apache Wink</h1>

<p>Apache Wink 1.0 is a complete Java based solution for implementing and consuming REST based Web Services. The goal of the Wink framework is to provide a reusable and extendable set of classes and interfaces that will serve as a foundation on which a developer can efficiently construct applications.
<br clear="all" /></p>

<p>Wink consists of a Server module for developing REST services, and of a Client module for consuming REST services. It cleanly separates the low-level protocol aspects from the application aspects. Therefore, in order to implement and consume REST Web Services the developer only needs to focus on the application business logic and not on the low-level technical details.
<br clear="all" /></p>

<p>The Wink Developer Guide provides the developer with a rudimentary understanding of the Wink framework and the building blocks that comprise it.
<br clear="all" /></p>

<h2><a name="1IntroductiontoApacheWink-WelcometoApacheWink"></a>Welcome to Apache Wink</h2>

<p>Wink is a framework for the simple implementation and consumption of REST web services. REST is an acronym that stands for REpresentational State Transfer. REST web services are "Resources" that are identified by unique URIs. These resources are accessed and manipulated using a set of "Uniform methods". Each resource has one or more "Representations" that are transferred between the client and the service during a web service invocation.
<br clear="all" /></p>

<p>The central features that distinguish the REST architectural style from other network-based styles is its emphasis on a uniform interface, multi representations and services introspection.
<br clear="all" /></p>

<p>Wink facilitates the development and consumption of REST web services by providing the means for modeling the service according to the REST architectural style. Wink provides the necessary infrastructure for defining and implementing the resources, representations and uniform methods that comprise a service.
<br clear="all" /></p>

<h3><a name="1IntroductiontoApacheWink-RESTArchitecture"></a>REST Architecture</h3>

<p>For a detailed understanding of the REST architecture refer to the description by Roy Fielding in his dissertation, <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm">The Design of Network-based Software Architectures</a>.  In particular, <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm">Chapter 5 Representational State Transfer (REST)</a> describes the principles of the architecture.</p>

<h4><a name="1IntroductiontoApacheWink-RESTWebService"></a>REST Web Service</h4>


<p>Figure 1: REST Web service design structure</p>

<p><br clear="all" />  <img src="attachments/2328642/2523181.jpg" align="absmiddle" border="0"/><br clear="all" /></p>


<p><br clear="all" />
Figure 1 demonstrates the design principles and components that comprise a REST web service. Wink reflects these design principles in the implementation of web services.
<br clear="all" /></p>



<h2><a name="1IntroductiontoApacheWink-ApacheWinkOpenDevelopment"></a>Apache Wink Open Development</h2>

<p>The purpose of this document is to provide detailed information about Wink 1.0 and describe the additional features that the Apache Wink 1.0 runtime provides in addition to the JAX-RS Java API for REST Web Service specification.
<br clear="all" /></p>

<p>In addition to the features description, this document also provides information regarding implementation specific issues.
<br clear="all" /></p>

<p>This document provides the developer with a rudimentary understanding of the Wink 1.0 framework in order to highlight the underlying concepts and precepts that make up the framework in order to create a basis for understanding, cooperation and open development of Wink.</p>

<div class='panelMacro'><table class='tipMacro'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="images/icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b>JAX-RS Specification Document</b><br /> For more information on the JAX-RS functionality, refer to the JAX-RS specification document, available at the following location:<br/>
<a href="http://jcp.org/aboutJava/communityprocess/final/jsr311/index.html">http://jcp.org/aboutJava/communityprocess/final/jsr311/index.html</a> </td></tr></table></div>


<h2><a name="1IntroductiontoApacheWink-JAXRSCompliancy"></a>JAX-RS Compliancy</h2>


<p>Apache Wink 1.0 is a complete implementation of the JAX-RS v1.0 specification.
<br clear="all" /></p>

<p>JAX-RS is a Java based API for RESTful Web Services is a Java programming language API that provides support in creating web services according to the Representational State Transfer (REST) architectural style. JAX-RS uses annotations, introduced in Java SE 5, to simplify the development and deployment of web service clients and endpoints. </p>

				    					    <br/>
                        <div class="tabletitle">
                            <a name="attachments">Attachments:</a>
                        </div>

                        <div class="greybox" align="left">
                                                            <img src="images/icons/bullet_blue.gif" height="8" width="8" alt=""/>
                                <a href="attachments/2328642/2523182.jpg">REST Web Service.jpg</a> (image/jpeg)
                                <br/>
                                                            <img src="images/icons/bullet_blue.gif" height="8" width="8" alt=""/>
                                <a href="attachments/2328642/2523181.jpg">REST Web Service.jpg</a> (image/jpeg)
                                <br/>
                                                    </div>
				    
                    			    </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>