杰罗姆鲍威尔 是犹太人吗_采访:杰罗姆·卢维尔(JéromeLouvel)关于Restlet

杰罗姆鲍威尔 是犹太人吗

InfoQ的Stefan Tilkov有机会与Java Restlet框架的首席开发人员JéromeLouvel进行了交谈,该框架刚刚发布了其1.0版本 。 涵盖的主题包括Restlet存在的原因,Java Web服务框架和Ruby on Rails中的REST支持,对JSR 311的期望以及Restlet的路线图。

InfoQ:您能简要介绍一下Restlet的用途吗?

JéromeLouvel(JL): Restlet是用于Java的轻量级REST框架。 它通过拥抱REST(Web的体系结构样式)来帮助您构建模糊网站和Web服务之间界限的Web应用程序。 由于每个主要的REST概念都有对应的Java类,因此RESTful Web设计和代码之间的思维导图很简单。

它是一个开放源代码项目,使用CDDL许可证或GPL许可证(带有Classpath例外)分发。 该项目由Restlet API,参考实现(Noelios Restlet Engine)和一组扩展组成。

InfoQ:为什么您觉得有必要创建另一个框架-Servlet API不够好吗?

JL: Servlet API于1998年发布,自那时以来,其核心设计并未发生太大变化。 它是最成功的Java EE API之一,但存在一些设计缺陷和局限性。 例如,URI模式和处理程序之间的映射受到限制并集中在一个配置文件中。 而且,它直接将套接字流的控制权提供给应用程序开发人员,从而防止Servlet容器对IO进行一些优化,例如NIO功能的全部使用。 最终,它不能很好地支持HTTP功能,例如缓存,内容协商和内容压缩,这给开发人员带来了太多痛苦,并阻止他们专注于特定于应用程序的代码。

另一个主要问题是Java EE堆栈中缺少现代的HTTP客户端API。 JDK的HttpURLConnection类很难使用,并且留下了许多不支持的HTTP功能,例如表达客户端对内容协商的首选项。

通常,人们依靠第三方HTTP客户端API来解决这些限制。 同样,HttpURLConnection不支持NIO。

在2005年,我看到了一个超越所有这些限制的机会,并根据REST原理设计了一个新的API。 我们第一次有了一个统一客户端和服务器端Web应用程序的API,一个完全支持NIO的API和一个使开发人员能够以编程方式控制其容器,连接器和已部署的应用程序而不必始终依赖XML的API。描述符。

InfoQ:您如何看待其他框架(例如Axis2CXF / XFire )中的REST支持?

JL:我认为这种支持很有用,但范围非常有限。 我遇到的主要问题是,这些项目被设计为WS-* / SOAP堆栈,并且不适合REST世界,后者定义了一个全新的范例:面向资源的设计,而不是远程方法调用。

例如,Axis2仅支持GET和POST方法,并要求将远程方法作为URI参数传递。 REST中显然不允许这样做,甚至不应将其标记为RESTful。

XFire 1.2不支持REST,但已公开了一个将POJO映射到RESTful Web服务的项目。 这将类似于最近的JSR-311所追求的方法,该方法旨在基于一组注释和帮助程序类来标准化此类映射。

InfoQ:您是JSR 311专家组的成员 。 您对此JSR有何期望?

JL:我希望它能在REST资源和POJO域对象之间产生良好的映射。 我希望我们能够实现JDB在RDBMS数据库和POJO之间所做的工作。 我除了以注释为中心的API之外,还对Restlet API进行了补充,Restlet API已经具有用于将REST资源映射到POJO的以类为中心的API。

我还认为,此JSR是调和REST和WS- *阵营的绝佳机会,因为这些注释也可以由Axis2和XFire等项目实现。

InfoQ:您能告诉我们一些依赖Restlet的项目吗?

JL:已经在各种规模的组织中的生产环境中部署了多个应用程序,其中包括Overstock.com,这是以折扣价出售商标的互联网领导者。 Restlet项目还用作涵盖REST体系结构样式的各种软件体系结构类的支持技术,例如在加利福尼亚大学欧文分校或INSA鲁昂工程学院。

我们还吃自己的狗食,并使用Restlet引擎运行所有网站。 考虑到我们收到的拒绝服务攻击的数量,我们对可扩展性充满信心。 最近,我们甚至发布了公开的基准测试,以证明这些性能。 我们与流行的Servlet容器处于同一水平,并期望在我们的下一个版本中胜过它们,它将在Glassfish的Grizzly NIO框架的基础上添加经过完全NIO优化的连接器。

InfoQ:在构建RESTful应用程序方面,您认为Java与其他语言相比如何?

JL:我们对流行的RESTful替代方案(如Rails或Django)的经验使我们认为Java / Restlet替代方案提出了对RESTful应用程序的更好,更高性能的支持。 Rails和Django并非在设计时就考虑了REST,这些概念仅在以后进行了改进。 与Restlets相比,这导致了更多的人为代码。 例如,Django不本地支持URI模板在URI和资源之间进行映射。 通过迫使RDBMS CRUD范例与REST / HTTP方法之间的不自然映射,Rails会产生不令人满意的结果,在这种情况下,您必须解决许多约束或适应面向资源的设计以适应Rails的世界观。 另一方面,Restlet不会强加任何持久性技术,而是让您自由定义资源,它们的表示形式以及它们如何映射到您的域对象或数据库。

InfoQ:您能在这方面对Rails的批评做些阐述吗? 您认为其CRUD映射有什么不自然的地方?

JL:除了可以很好地映射到SQL SELECT和DELETE动词的GET和DELETE HTTP方法之外,我还发现Rails使用POST方法进行创建非常不幸。 在REST中创建的最佳方法是PUT,它也用于更新。 与POST相比,PUT的优势在于,如果操作失败,可以安全地重复操作,而POST则不会。

同样,资源列表是根据表名和数字行ID映射的,这可能并不总是实用的。 您不想失去对URI的控制,这些URI是应用程序用户界面的一部分,并且是REST中的基本概念。 在Restlet中,我们不对您的URI施加任何约束,并且您可以使用您熟悉的任何持久性技术(JPA批注的POJO,原始JDBC调用,对象数据库等)自由地映射资源和表示形式。

另一个较小的批评是,Rails鼓励使用笨拙的“; edit”后缀来访问资源的版本网页。 由于REST不鼓励通过URI参数规范非统一方法,因此这有点误导。 而是,他们应该使用浏览器先获取然后发布或放入的单独的Web表单资源。

InfoQ:您似乎已经在Restlet上投入了很多时间。 这是一个“业余”项目多少钱,您的公司期望从中获得多少商业成功?

JL:自成立以来,这个项目绝对不是业余爱好。 这是我在构建另一个重要的私人项目时感到需要的答案。 我相信专业开源,并希望Noelios Consulting提供的专业服务(支持计划,咨询)将使我们能够继续投入迄今为止所花的时间。

InfoQ:第一个版本之后您的路线图是什么?

JL:除了维护带有错误修复版本的1.0分支外,我们还将很快启动1.1分支。 我们想到的一些增强功能包括对WAR打包的支持(不需要XML描述符),通过XML描述符配置Restlet组件(便携式应用程序和虚拟主机的容器)的选项,以简化管理员的工作。 我们还需要完成几个连接器原型,一个基于Grizzly NIO框架核心的HTTP服务器连接器应为我们带来额外的可伸缩性和响应能力,以及两个基于JXTA虚拟套接字的HTTP连接器(一个客户端和一台服务器)。

我们还希望继续通过内容范围,摘要和WSSE身份验证等功能来加深对HTTP的支持。 我们还计划在2008年将Restlet API提交给JCP。这可能是弃用并逐步淘汰Servlet API的好机会。

InfoQ:非常感谢您的宝贵时间!


JéromeLouvelNoelios Consulting的软件架构师和创始人。 他在欧洲和北美拥有8年以上的软件版本和咨询经验。 他对Java,REST,语义Web和业务流程集成特别感兴趣。

翻译自: https://www.infoq.com/articles/restlet-louvel-interview/?topicPageSponsorship=c1246725-b0a7-43a6-9ef9-68102c8d48e1

杰罗姆鲍威尔 是犹太人吗

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值