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

Email

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)
  • No labels