What are the best frameworks for implementing both client and server REST frameworks in Java? I've been struggling a little to find an easy to use solution.
Update: Both Jersey and Restlet seem like good options. We'll probably use Restlet but we'll experiment with both.
Restlet sounds like it should provide what you're looking for:
- Support for client and server (in a relatively symmetric api)
- Smart url binding
- mime type understanding (given accepted mime types, it will ask your resources for their representation in that type)
- Supports JAX-RS annotations (just like Jersey)
Jersey is really easy for both. To write web services, you use annotations:
@Path("/helloworld")
public class HelloWorldResource {
// The Java method will process HTTP GET requests
@GET
// The Java method will produce content identified by the MIME Media
// type "text/plain"
@Produces("text/plain")
public String helloWorld() {
// Return some cliched textual content
return "Hello World";
}
}
For a client:
Client client = Client.create();
WebResource webResource = client.resource("http://localhost:8080/helloworld");
String s = webResource.get(String.class);
System.out.println(s); // prints Hello World
Take a look at dropwizard too.
Restlet also support annotations in its 2.0 version, both on the client and server-side. The JAX-RS API is also supported as an extension.
Here is a simple example for server-side:
public class HelloWorldResource extends ServerResource {
@Get
public String represent() {
return "hello, world";
}
}
On the client-side:
// Outputting the content of a Web page
new ClientResource("http://www.restlet.org").get().write(System.out);
For further documentation, check this page.
There's JBoss' new RESTEasy library. It appears to be under rapid development since its initial launch. I've no idea if it's any good; it's on my 'check it out' list.
You could take a look at the CXF JAX-RS implementation. For complete list of its features check the CXF web site for JAX-RS. The community behind the project seems to be very active (July 2013). An indication of that is the number of messages per day in the CXF mailing lists.
I haven't used it personally but some teams that I work with are using Spring 3 MVC. REST in Spring 3: @MVC looks like a good blog post overview. The RESTful features include "URI Templates", "Content Negotiation", "HTTP Method Conversion", "ETag support" and more.
Edit: Also, see this question: Can anyone recommend a Java web framework that is based on MVC and supports REST ?
I can recommend Apache wink, a new framework still in incubation mode, but very mature and high quality.
http://incubator.apache.org/wink/
It implements the JAX-RS specification, it has both client & server framework for REST development. Apache is standing behind this project - that's always a good sign (and a good license :-) )
What I love most about this framework is the intuitive integration with Spring, it's very useful if you want your framework to be easily configured and extended.
UPDATE: Xydra Restless is not longer maintained +++ If your are using Goolge AppEngine before they release a "reserve instance" feature, you might consider Xydra Restless which has few features but loads fast.
来源:https://stackoverflow.com/questions/1495813/easiest-frameworks-to-implement-java-rest-web-services