Apache Wink
Abstract
Apache Wink is a project that enables development and consumption of REST style web services. The core server runtime is based on the JAX-RS (JSR 311) standard. The project also introduces a client runtime which can leverage certain components of the server-side runtime. Apache Wink will deliver component technology that can be easily integrated into a variety of environments.
Proposal
Apache Wink is a project that enables and simplifies development of REST style HTTP based services. The project includes both server and client side components that can be used independently of each other. The server side is a stand-alone component that integrates easily with many existing application servers. The client side API enables the user to develop applications that interact with server resources in a RESTful manner. The goal is to provide component technology for both RESTful services and clients that can be used in a number of contexts. These contexts could range from a full Java EE runtime environment (Geronimo) to a J2SE environment with a simple HTTP listener service.
The server component of Apache Wink will implement a TCK compliant version of the JAX-RS standard defined by JSR 311 (https://jsr311.dev.java.net/). The client side component provides a rich API for quickly developing applications that access and update server resources using JAX-RS requests. The API can accommodate data returned in several popular formats including JSON, XML, ATOM, HTML and CSV. Plans for future extensions are currently being discussed, but include a focus on ease of use through service discovery and quality of service configuration (security, caching).
Background
Over the past decade, the Representational State Transfer (REST) architectural style of web services has been gaining popularity. Introduced by Roy Fielding in 2000, the idea of providing simple HTTP based access to server resources has continued to grow even as other, more complex web service architectures have been published.
The JSR 311 standard (https://jsr311.dev.java.net) defines a standard set of annotations and a programming model for exposing java resources as REST-based resources. With the recent approval of the standard and its inclusion in Java EE 6, the use of REST and its Java programming standard (JAX-RS), will certainly be growing in the near future. As such, there will be a demand for an Apache friendly, open source implementation of the standard. Apache Wink seeks to provide this implementation in an independent manner that is not tied to any platform.
Rationale
The rationale for the project is to build an implementation of the JAX-RS specification in open source that can be certified by the applicable TCKS (JSR-311). The project would also provide integration with Geronimo and other open source-based REST communities. Building a strong, vendor-neutral community is important to the project so it that will outlast any one person's or company's participation. Code released from the project will also provide a basis to prototype and build new extensions that could eventually be taken for standardization as an extension to the JSR 311 work (such as a client API).
However, the server side is only half of the equation. Once the server provides access to a resource, there needs to be clients to access and utilize the data. As such, we want to provide a well rounded package that also supports the development of the client side of the conversation. Because of the simplicity of REST, there are a number of clients that satisfy the needs of users today (Curl, AJAX clients like Dojo and Google Web Toolkit). The client provided by Apache Wink will be strictly a Java-based client with capabilities that mirror those of server side componentry.
Initial Goals
(Covered in Rationale section)
Current Status
The IBM and HP teams each have an implementation of REST services. IBM is coming with a fully compliant JAX-RS implementation which takes some of its core implementation leveraging a few standalone utilities from the existing Apache CXF project.
HP is coming with a proven RESTful SDK composed of Client and Server components that are being used by HP products over the past two years.
Community / Meritocracy
The Apache Wink team is fully committed to working with the Apache and open source communities to build this project. We support the Apache way and desire to draw in additional developers to bring this project to its full potential. As the team already has developers experienced with the Apache way, we started working within its guidelines from the beginning of the project.
Core Developers
The core developers for Apache Wink have an extensive background in application servers and web service technology.
IBM
- Greg Truty is web services and REST architect for WebSphere.
- Nick Gallardo is an Apache committer and worked on Axis2.
- Dustin Amrhein is an Apache committer and worked on Axis2.
- Christopher Blythe is an Apache committer and is a performance tester of the IBM JAX-RS runtime.
- Bryant Luk is a developer and tester of the IBM JAX-RS runtime.
- Mike Rheinheimer is an Apache committer and worked on Axis2.
HP
- Eli Baram is leading the development of the HP REST SDK.
- Michael Elman is a senior developer in the HP REST Team.
- Nadav Fischer is a senior developer in the HP REST Team.
- Martin Snitkovsky is a senior developer in the HP REST Team.
- Tali Alsaigh Cohen is a senior developer in the HP REST Team.
Alignment
Apache Wink was created with Open Source in mind and embraces the philosophy. The project is based on and includes Apache components. Portions of the initial code base for Apache Wink were extracted from Apache CXF. Several common Apache components are used throughout the code. These include:
- commons-codec,
- commons-logging,
- commons-http-client
- Apache Abdera
In addition, Apache Wink is built using Ant or Maven
Apache Wink also uses several non-Apache Open Source products during development and testing.
Known Risks
Orphaned products
Apache Wink will not be orphaned. The major backers currently use the project for support of internal or external products. IBM has a proven track record of supporting the open source projects we sponsor. HP embeds Apache Wink in several products in order to expose and consume REST services.
Inexperience with Open Source
Apache Wink was created with open source in mind by people who know and support the philosophy. The IBM team involved has experience with several other open source and Apache projects including AXIS 2. HP is managing Wink internally in an open source fashion allowing developers from HP Software to contribute, collaborate and share information.
Homogenous Developers
Apache Wink is result of IBM and HP coming together to develop a common REST framework. As such, many people have had input to the initial product that is being submitted. We look to continue diversifying the mix of contributors as we move forward.
Reliance on Salaried Developers
Currently the main developers are salaried developers with their respective companies. Given the momentum of the REST architecture we expect the project to draw others outside the core team to contribute.
Relationships with Other Apache Products
Initial portions of the IBM codebase for Apache Wink were extracted from the Apache CXF project. These code pieces served as components upon which a lightweight runtime was built to enable the REST server capability. Ultimately, we would like to work with the CXF team to ensure uniformity in our interpretations of the JAX-RS specification and to align the technical direction where possible.
Because the goal of the project is to provide REST server componentry and not a standalone runtime, Apache Wink will rely on existing server projects like Apache Geronimo and Apache Tomcat to provide the infrastructure needed to handle service requests. Because JAX-RS will be a portion of the upcoming Java EE 6 specification, Apache Wink will be able to provide a drop-in component that Geronimo can use to certify its Java EE 6 compliance when the time comes.
A Excessive Fascination with the Apache Brand
N/A
Documentation
Apache will receive and host all Apache Wink documentation via the company submissions of their respective runtimes.
Initial Source
Apache would receive all source and documentation contributions under the Apache contributor’s agreements. Each company will seed the incubator with their own source tree (and a joint effort will take place merging the various code bases).
External Dependencies
- activation-1.1.jar
- commons-collections-3.2.jar
- commons-lang-2.3.jar
- commons-logging-1.1.jar
- jaxb-api-2.1-sources.jar
- jaxb-api-2.1.jar
- jaxb-impl-2.1.4-sources.jar
- jaxb-impl-2.1.4.jar
- spring-2.5.jar
- stax-api-1.0-2.jar
- xercesImpl-2.6.2.jar
- geronimo-j2ee_1.4_spec-1.1.jar
Cryptography
N/A
Required Resources
Mailing lists
- Mailing lists:
- Development
- User
- Commits
- Private
- Subversion repository
- Issue Tracking
- Wiki space
- Build machine (Maven and Continuum )
Subversion Directory
TODO
Issue Tracking
- JIRA
Other Resources
- none
Initial Committers
Name |
CLA |
|
Greg Truty |
gtruty@us.ibm.com |
No |
Nick Gallardo |
nlgallar@us.ibm.com |
Yes |
Dustin Amrhein |
damrhei@us.ibm.com |
Yes |
Bryant Luk |
bluk@us.ibm.com |
Yes |
Jesse Ramos |
jramos@us.ibm.com |
Yes |
Christopher Blythe |
cjblythe@us.ibm.com |
Yes |
Mike Rheinheimer |
rott@us.ibm.com |
Yes |
Eli Baram |
ebaram@hp.com |
Yes |
Michael Elman |
elman@hp.com |
Yes |
Nadav Fischer |
nadav.fischer@hp.com |
Yes |
Martin Snitkovsky |
martin.snitkovsky@hp.com |
Yes |
Tali Alsaigh Cohen |
tali.alsaigh-cohen@hp.com |
Yes |
Tomer Shadi |
tomer.shadi@hp.com |
Yes |
Affiliations
Name |
Affiliation |
Greg Truty |
IBM |
Nick Gallardo |
IBM |
Dustin Amrhein |
IBM |
Bryant Luk |
IBM |
Jesse Ramos |
IBM |
Christopher Blythe |
IBM |
Mike Rheinheimer |
IBM |
Eli Baram |
HP |
Michael Elman |
HP |
Nadav Fischer |
HP |
Martin Snitkovsky |
HP |
Tali Alsaigh Cohen |
HP |
Tomer Shadi |
HP |
Sponsors
Champion
- Davanum Srinivas
Nominated Mentors
- Davanum Srinivas
- Kevan Miller
- Steve Loughran
Sponsoring Entity
- Davanum Srinivas / Apache Incubator (vote pending)