Chinaunix首页 | 论坛 | 博客
  • 博客访问: 591077
  • 博文数量: 718
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 4960
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-17 13:24
文章分类

全部博文(718)

文章存档

2011年(1)

2008年(717)

我的朋友

分类:

2008-10-17 13:28:19

    2007 充满了激荡人心的事件,动态语言的不断升温,JVM在开源社区不断发展以及社区的重要贡献者,Google的崛起等。问题是,这些预示了来年什么 呢?安德鲁?格勒弗(Andrew Glover)准备了一些答案给那些打破砂锅问到底的开发者――现在,什么在2008接踵而至。

    法国诗人保尔?瓦雷里曾经伤心地写下“困扰我们这个时代的是,未来,并不像过去看上去的那样”。然而,对于我们这些生活在Java平台崛起推动的时代的人来说,瓦雷里多年前留下的这些诗句是永恒的。

    过去的十多年,我们见证了Java Applet的兴起和没落,见证了EJB头顶上光环的不断暗淡,见证了JSF,Spring和Struts的异军突起(暂且不谈Struts渐渐显露的颓 势),见证了Java已经重新定义成为一种语言和一个平台。Java平台已经衍生出三个分支(标准版本,企业版本,微型版本),JDK也开放给了开源社 区。Java语言扩充了,包含了注解,范型,枚举类型,高级集合类型,还有更多。它也开始与动态语言,如Groovy,JRuby和Rhino等,共享 Java运行时(JRE)。事实上,如果稍稍留神一下,我们在过去的几年里注视着Java不断地从一种语言演变成为一个真正的平台。

    在最近的十年里,我们知道Java已经不仅仅局限于一种语言或者一个平台了:它是一个社区,一个经济生态系统,一个鲜活的实体,而且这个实体已经发展成熟,成为了丰富的应用程序,或大或小公司的真正的生命线。

    因此,尽管流言不少,我还是坚持认为Java在2008会持续红火。与其拿起卦子掐算未来,我们不如回顾一下过去的一年的趋势以及发生的重大事件。这些事件汇集起来,它们会告诉我们2008将发生什么。

    遍地开花

    2007 年犹如过山车一样,非常引人注目。人们对动态语言的不断关注, JVM在开源社区不断发展以及Java社区的重要贡献者,Google的崛起。更多的是,单元测试,持续化集成和其他敏捷开发技术得到了更广泛的接受,这 些都表明Java开发者开始认识到我们的技艺是一门有责任要求的行业。我们终于开始重视代码的质量和寿命,将其与推向市场的速度,或者是在企业的即时应用 放到同等重要的地位上来。

    每个人都说,2007年有一些绝对的胜利,但是同时也有一些失望和争论,这给Java社区产生了超出预期更多的阻碍。留心一下以下这些体现过去一年的重大因素。

    动态语言的成熟

    随着1.0以及随后的1.5版本的发布,Groovy在2007的发展达到了一个关键的里程碑。走过过去5年或者多年的历程,Groovy没有替代Java,相反定位成了Java运行时(JRE)的补充语言。

    Groovy的大卖点是简练的语法,简化了日常的开发工作。例如,打开和读取一个文件在Java语言是典型的冗长结构:

    try {BufferedReader in = new BufferedReader(new FileReader(path)); String line; while((line = in.readLine()) != null){System.out.println(line); }in.close(); }catch(IOException e){System.err.println("Exception reading"); }

    但是同样的代码,Groovy可以写的更加敏捷:

    new File(path)。eachLine{ line ->println line}

    根本上,Groovy像其他动态语言一样,可以让你扔掉异常处理,类型和分号,还可以使得代码更加简练,而代码简练最终使得代码的可读性更强(是的,上面那个File对象是一个Java java.io.File对象)。

    把网撒开

    然而,Groovy并不是2007年动态语言阵营的唯一参与者。2006年发布的Java 6版本引入了一个与动态语言交互的标准API,很多Java开发者在去年临近年底才开始体验。对该API进行旗舰式集成的是Rhino.但是,看起来在 Java7版本发布时还会有更多集成进来。

    最早进行集成的语言之一不容置疑是JRuby,1.0版本的发布和令人咋舌的比Ruby本身运行速度还快的实现,使得它备受瞩目。像Groovy一 样,由于可以使用更加宽松的语法,加入了一些特殊机制的JRuby(它可以使 RubyJVM里运行,且与正常的Java对象交互)使Java开发更加简单。例如,使用Ruby可以增强标准的对象,象用Ruby的String操作会 更加容易。在标准的Java里,检查一个String实例是否为空值可能要做象如下方法的一样的操作(这是一个Apache commons-lang的 isBlank实现)。

    public static boolean isBlank(String str) {int strLen; if (str == null || (strLen = str.length()) == 0) {return true; }for (int i = 0; i < strLen; i++) {if ((Character.isWhitespace(str.charAt(i)) == false)) {return false; }}return true; }

    在Java 里,String是一个final类,所以你无法为了让String类型支持一个象isBlank的方法而扩展它。后果是,你不得不依赖第三方类库,象 common-lang.有了Ruby,你就可以在Ruby的String上另外定义一个blank方法,如:

    class Stringdef blank?empty? || strip.empty?endend

    实际上,Ruby式的动态允许运行时添加额外的行为到核心类库或任意对象(象给String增加一个blank?方法)。更进一步,JRuby可以进行反作用对核心Java对象增加方法。因此,稍一施法就可以给Java String类添加一个blank方法。

[1]   

【责编:Ken】

--------------------next---------------------

阅读(339) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~