12
十一

企业级应用平台与动态语言

  想到了关于语言与平台相关的东西,就顺便写点东西下来,主要想说说 .Net 和 Java 平台下对动态语言的支持。我对 .Net 的观察不多,也只是随便写写了,主要放在 Java 这一块。

  在 .Net 一开始出来的时候,就号称支持多语言,C#, VB.Net, JScript.Net,并且标准化了一个 CLI 的东西,也就是说,任何语言都可以遵循 CLI,并改造自身的编译器而嵌入 .Net 的虚拟机 CLR 中,但是,快七年了,.Net 下最火的还是 C#,JScript.Net 的几乎销声匿迹了,.Net 的所谓多语言支持几乎是重归一统。

  反观 Java 平台下,自从推出以后,仅 Java 一种语言,但是动态语言在开发效率上的优势实在是太明显了,大大提高 Java 的应用开发效率,同时又能够复用 Java 的已有组件,于是Java 世界开始关注动态语言了。

  最早见到的也是 Java 世界里比较看好的 Groovy,现在也已经发展到 1.0 了,其改进的 1.1 版本也即将推出,Groovy 可以说是 Java 世界里原生的脚本语言,和 JavaEE 的应用有着良好的兼容性,可以方便的利用 Java 中已有的组件。Groovy 中最重要的应用要算是 Grails,很好了利用了 Java 中的 Spring 和 Hibernate 框架,证明了 Groovy 本身的强大。另外最近公布的语言排名中, Groovy 也上升到了 35 位。

  随着 Ruby on Rails 的流行,Ruby 的发展迅猛,Ruby 被移植到 JVM 上的计划也在火热的进行着。比较有名的应该算是 JRuby 和 xRuby,前者是 Java 编写的解释器,后者是 Java 编写的编译器,这样就造成了 JRuby 的效率低下。而使用 JRuby on Rails 的 thoughtworks 的 mingle 登台亮相,也开始树立起大家对 JRuby 的信心。

  其实 Java 领域还是有很多其他不同形式的脚本语言的,只是没有发展到 Groovy 和 Ruby 这样的应用成熟度,比如 Rhino 这个 JavaScript 的脚本引擎也被 JDK 6 所引进,但是似乎不是很火。

  目前 Java 中引入动态语言的动作大部分都来自于开源社区,这包括 Groovy, JRuby, xRuby, Rhino,而去年 Sun 雇佣 JRuby 的开发者也表明了其对动态语言的支持态度,Java 世界的动态语言开始得到了来自官方的支持,只有这样,动态语言才能够在 Java 的世界中发展的更好。而当前 Java 世界的动态语言一个主要方向应该还是走向编译型语言,而不是解释型语言,目前 Groovy 和 xRuby 走的是这条路,这意味着对于 groovy 的代码最终会直接转换成 JVM bytecode 而以 Java 同样的效率执行,而开发效率却大大提高,这是比较符合 Java 当前的现状的,而 JRuby 走的是解释型路线,意味着它是在 JVM 基础上再加一层解释平台,效率就可想而知。所以来说,在 Java 世界里,动态语言走编译型道路是比较有效的。

  我们尽管它们的发展吧,至少两年内,它们还是不大容易被主流应用接受的。

, , ,

引用地址:http://www.steadyxp.com/archives/14.html

要说点啥就在这吧