Summary
Ryan Heaton released Enunciate, a new Web service framework. Enunciate lets a developer work entirely in source code, and generates from source code interoperable Web service artifacts required for SOAP, REST, and JSON-based Web services.
Advertisement
Enunciate is a new Web service framework, released under the Apache 2.0 license by Ryan Heaton. Enunciate offers a developer the ability to stay focused on source code when developing Web services by automatically generating interoperable Web service artifacts from that source code:
Enunciate is a Web service deployment framework... Enunciate leverages existing Web service technologies to provide a mechanism to build, package, deploy, and to clearly, accurately deliver your Web service API on the Java platform...
Enunciate's novel approach to Web service development centers around leveraging all components of an API that are definied and maintained in original source code (as opposed to only those that are defined by compiled bytecode). This means that Web service development is done completely in source code...
Enunciate avoids the interoperabilty issues of code-first development by forcing developers at compile time to reconcile any ambiguities or other potential hazards in the formal contract. This model is formalized as the "compiled contract" development model.
The main features of Enunciate include:
Full User Documentation
Enunciate will generate full user-level documentation to describe your web API.
Consolidated, Annotated WSDL and Schemas
Enunciate generates the formalized XML contract at compile-time, providing for a consolidated, efficient XML definition. Core schema data is consolidated into a single set of schema documents (grouped by namespace), and multiple endpoints that service the same namespace are put into a single WSDL.
Multiple Endpoints: SOAP, REST, JSON, etc.
Enunciate will publish your endpoint class as a SOAP endpoint as defined by the JAX-WS annotations (powered by XFire). By supplying additional metadata, the same endpoint class will be published as a REST endpoint at a different URL. Furthermore, certain REST endpoints will be automatically available as JSON endpoints at yet another URL.
Client Code Generation
Enunciate will generate client code for multiple platforms to interface remotely with your published API. Not only is the generated code fully documented, but it is simple, elegant and efficient. Enunciate does not generate client code from the WSDL but instead reflects it from the original source code, allowing code documentation to be carried over and preserving valuable information like method signatures, class structure, and variable names.
Full App Packaging
Enunciate packages your API, extended with each of the above features, into a single web application archive (war file).
When creating Web services from scratch, do you prefer to start with the code first, or would you rather start with WSDL? What do you think of Enunciate's approach to overcoming interoperability issues often associated with code-first Web service development?