Java社区:Scala或者Spring标准无期限

日期: 2012-03-19 作者:Cameron McKenzie翻译:boxi 来源:TechTarget中国 英文

对Java Community Process(JCP)的标准化及合规性不仅仅是一种谨小慎微或者高尚行为。当经理和JavaEE架构师选择这些将会被用于开发企业应用的技术时,他们预期这些技术及API应该是已经得到社区的认证的。因此,用标准JDBC API以外的东西进行数据库连接,或者不用Java Transaction Service(JTS)及相应的API集(JTA)执行交易,这样的事情是称职的Java开发者连想都不会去想的。   鉴于遵守规范及使用为JCP所认证的标准技术的重要性,那么下面这件事情就值得关注:一些最流行的框架,如Spring,以及日益流行的JVM语言,如Clojure和Sca……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

对Java Community Process(JCP)的标准化及合规性不仅仅是一种谨小慎微或者高尚行为。当经理和JavaEE架构师选择这些将会被用于开发企业应用的技术时,他们预期这些技术及API应该是已经得到社区的认证的。因此,用标准JDBC API以外的东西进行数据库连接,或者不用Java Transaction Service(JTS)及相应的API集(JTA)执行交易,这样的事情是称职的Java开发者连想都不会去想的。

  鉴于遵守规范及使用为JCP所认证的标准技术的重要性,那么下面这件事情就值得关注:一些最流行的框架,如Spring,以及日益流行的JVM语言,如Clojure和Scala,这些东西从未提交过Java规范请求(JSR)评审。我们不禁要想,JCP会不会出台一个Spring的认证标准?

  为了理解缺乏这一标准意味着什么,得先了解一点Java社区采用的标准化过程,这很重要。做消息传递(标准化手段是通过Java Messaging Service)这样的事情,或开发Web组件(一直以来标准化的做法是通过Servlet和JSP API),或者甚至是开发Java Runtime Environment(JRE)的新版本,当做这些事情的新技术出现时,JSR就出来了。

  基本上,被提交到JCP去的JSR包含有两个关键部分,一个是仅为描述规范及一组相关API设计文档,里面包含有各种开发者写代码时用到的类、方法及属性。其二是参考实现,即指导实际运用该规范做某件事的参考文档。

  设计文档描述了特定规范做什么事情,并解释了事情是怎样完成的。参考实现提供的是工作模型,供观察者进行交互。有了参考实现,其他的供应商、开发人员以及预期的参与者就能够有个东西在手,以便对于JSR应该采取的方式有个感官体验。

  “参考实现为特定规范应该如何实现提供了例子。通常是可以工作的软件,你可以执行它,然后说‘好,这个东西就是这么用的。’理想情况下这是开源的,” Reza Rahman谈到其流程时说。Reza是Caucho的社区推广倡导者,亦是《EJB 3 in Action》一书的作者。

  某些现实的参考实现包括由Oracle维护的Mojarra项目,这个是JavaServer Faces的 参考实现,Weld则是JBoss维护的有关JSR-299的参考实现,后者是依赖注入和上下文生命周期管理的规范。

  也许这整个规范体系中最重要的部分是TCK(Technology Compatibility Kit),也即技术兼容包,其作用是测试不同的实现对于一组规范的遵从程度。比方说,市面上的每个应用服务器都允许进行交易型数据库连接。如果每个应用服务器,不管是WebSphere、JBoss、Resin或者是WebLogic,进行数据库连接的方式都不一样,都是非标方式的话,企业Java应用的可移植性也许就会成为一场噩梦。

  而要是有JDBC规范和标准的交易服务(HTS)及API(JTA),所有这些不同的供应商的共同行为都可预期和体验到。如果某一实现通过了所有的TCK测试,那么我们对于其标准合规性就很有信心了。

  作为一个普通概念的标准化使得各种组件可互操作,只有在多个分离的各方都在实现这些组件时才会彰显出其必要性。

  我们考虑一下这个过程:其想法是在各方实现给定规范时确保共同行为和一致性得以实现。如果是这样的话,像Rod Johnson的Spring之类的框架为什么还有进行标准化的必要呢?毕竟,只有SpringSource一家提供了Spring框架。这也解释了为什么我们看不到JSR或试图对JVM语言替代者如Scala或Closure进行标准化的原因。

  “要做的工作实在是太多了。” James Strachan说:“我甚至还在JavaOne上获得过一项最具创新JSR的奖励,可是我自己都不认为事情已经做完了。不过,如果某样东西只有一个实现的话,真的还有标准化的必要吗?” James Strachan是FuseSource的软件合伙人及Groovy的发明者,他的确在为该语言发起一项JSR。

  Winnipeg的Scala专家Craig Tataryn进一步指出这一点,他声称“只有存在多个供应商的情况下标准化才有意义。要是只有一个供应商的档案,那么永远就只会有这一家的东西,标准化根本就没有意义。”

  但是,除了通过TCK测试以外,你的基于Java的技术标准化的过程还有更多的事情要做。进行标准化的时候,要开发出一个实现,然后你用TCK测试该实现,如果你所创建的实现通过了TCK,你就能知道该实现是正确的。

  然而,Reza Rahman说:“但是这个过程尚未结束。一旦通过TCK之后你会得到认证。”你把你的实现提交给JCP或Oracle,然后他们会说:“我们也用TCK测试了这一软件,是,测试的确通过了,我们证明它是标准兼容的。”现在别的问题来了。认证可不是免费的,这不仅耗时,也耗钱,这两样东西是初创企业和胸怀大志的框架开发者所匮乏的。

  像Spring这样的专门框架,以及像Groovy这样的JVM语言替代者,其发起人几乎没有向JCP提交JSR请求批准的动机。如James Strachan回忆那样,要做的事情多得要命。又如Reza Rahman提到那样,这要花钱。Craig Tataryn则说,如果只有一家且永远就只有这一家供应商提供那种技术的话,标准化真的是毫无意义。此外,如果该技术很好,比如像Scala编程语言那样,只要Java社区像信任SpringSource及其旗舰的Spring框架那样信任其供应商,那么该技术并未通过JCP流程的事实并不会成为该技术被采用的障碍。

翻译

boxi
boxi

相关推荐

  • Scala社区赢得人心的五大技巧

    随着十几年的发展,大型的、热情洋洋的Scala社区已经从一个外围语言转变成了一个有得的竞争者。尽管,它还在不断走向成熟,这就意味着随着它的进化,要经历一些成长的烦恼。

  • Scala十岁了:下一个十年最走向何方?

    十年之前Michel Schinz宣布了Scala编程语言的第一个实现,Scala被描述为“一种平滑地集成了面向对象编程和函数式编程的语言”,下一个十年,Scala会走向何方呢?

  • 专家坚称Java将是2014主流语言

    当你参加会议、阅读书籍或在线将遇良才时,你不可避免地会遇到一些顽固的Java粉。但对这一古老的话题,没有人会比Adam Bien更热情了。

  • JVM垃圾收集器使用调查:CMS最受欢迎

    近日,Plumbr公司对特定垃圾收集器使用情况进行了一次调查研究,研究数据使用了84936个案例。在明确指定垃圾收集器的13%的案例中,并发收集器(CMS)使用次数最多。