如果没有人移植用Erlang编写的Basho WebMachine工具包,我会感到惊讶(http://wiki.basho.com/Webmachine.html)Java,但我似乎找不到!
我知道Java REST工具包(JAX-RS、RESTlets、1060 NetKernel等)有各种尝试,但我不希望有人对REST风格的解释——我只想要一个"可执行的HTTP模型",这正是WebMachine看起来的样子,但我希望它在Java中(即不是Ruby、Python、Clojure等端口…!)。当然WebMachine的"功能性"不强,无法轻松移植到Java,但也许我错了(我有点怀疑事实可能是这样)。。。?
记录在案,多年前,我在Java中实现了我自己的WebMachine尝试(构建在Apache HTTPClient之上),但它只实现了HTTP规范的一小部分,我真的不想恢复该代码(用JDK 1.4编写),并将其扩展到我当时从未想过要理解或实现的HTTP的所有功能。
看看Clothesline。它是用Clojure编写的,但描述指出它对所有JVM语言都是可访问的。
我写了一个基于Ruby Webmachine端口的端口,它被称为Bishop,在大多数情况下都非常靠近端口。
GitHub项目页面
JAX-RS2.0是一个"可执行HTTP模型",或者你想怎么称呼它。使用Glassfish Jersey,你不会失望的。它绝对是RESTful和风格无关的。我认为JAX-RS/Jersey的基于注释的方法比Webmachine的基于接口的方法强大得多。
我不熟悉java中类似的东西,但Netty呢?
正如他们所说:
Netty是一个异步事件驱动的网络应用程序框架快速开发可维护的高性能协议服务器&客户。
它构建在NIO之上,允许您在协议之间切换,而无需更改应用程序的其余部分。
在webmachine中,有很多回调可以定义和导出,比如resource_exists
、to_json
、to_html
等,而在java中这样做并不适合,因为最终会得到很多样板代码。
在java中,您可以使用springmvc框架来构建web资源。