五千年(敝帚自珍)

主题:【原创】Java阵营中新添的一位小弟 -- GROOVY -- Highway

共:💬17 🌺1
全看分页树展 · 主题
家园 【原创】Java阵营中新添的一位小弟 -- GROOVY

如果让你用一句话来概括Java和微软.NET之间的异同,你会怎么说呢?

Java是一种语言多个平台,.NET是多种语言一个平台。 -- 我觉得这句话就概括的很不错。

以前人们总爱拿Java和微软的COM技术来比较,说实在的,这两种东西很难比较,即使比较了,那也不是apple-to-apple的比较。自从微软推出了.NET,爱比较的人们可算找到目标了,一时间Java和.NET孰优孰劣的文章满世界都是。

点看全图

外链图片需谨慎,可能会被源头改

从本质上看,Java和.NET是非常相似的。它们都是将程序员编写的程序先编译成“半机器语言”。(准确地说是Java byte code和微软Intermedia Language)。这些“半机器语言”是一些抽象的计算机指令,并不具体到在一给定平台上如何执行。在运行的时候,虚拟机将这些抽象的指令变成具体的计算机可以执行的机器语言,然后交给计算机来完成。

Java和.NET不同的是它们由不同的公司实现和推出,在技术手段上以及市场理念上有很多不同。

Java追求的是Write once, run anywhere。为了实现这一承诺,Sun要拿出在各个平台上运行的虚拟机(Java Virtual Machine)。也就是说你在下载Java的时候,要选择是什么平台上的Java。Windows, Linux还是Unix。实际上,推出多个平台上的虚拟机不是件容易做到的事情。因为各种平台,各种操作系统差别很大,尤其是涉及到GUI,Thread这些东西,很难整齐划一的。而Java虚拟机要完成的就是“瞒天过海”的任务,将各种平台的差异掩盖起来,让那些“半机器语言”始终感觉到宾至如归,不觉察到还有“platform”这么个东西。就现实情况来看,Java基本做到了这一点。

.NET追求的是Pick whatever language you like, we support them all。当然微软有点小秘密没有告诉你,那就是“On Windows Only”。理论上虽然有个Mono project,可以在Linux上运行开发C#,运行基本的.NET程序,但那不过是个点缀罢了,只是想说明微软的.NET也可以支持多个平台。你可别把它当回事儿的。到现在为止,微软宣称.NET支持的语言多达20多种,几乎你听说过的都支持。不过呢,这件事听起来很悬,但实际上微软费的力气并不是很大。微软自己只提供了四种语言(C#, C++, VB.NET,J#),剩下的都是别的软件公司完成的。让.NET支持一种语言并不是件很难的事(对专业人员而言了),要做的事就是开发一个“翻译官”(术语是Compiler,编译器),将你的程序翻译成微软的Intermedia Language半机器语言,此后微软的虚拟机(叫做CLR)就会全部接管了。微软把自己的Intermedia Language规范写的很清楚,为的就是让其他软件公司可以容易的加入到.NET阵营中来。

看到这里你大概应该开明白了,Java和.NET这两个东西都是“两节”的,即

第一节:源程序到半机器语言的翻译

第二节:半机器语言在虚拟机环境中的执行

Java在第一节没有给我们选择的余地,我们只能将Java源程序翻译成Java byte code。而在第二部分,Java提供的选择是丰富的,我们可以将编译好的Java byte code拿到各种平台上的Java虚拟机中去运行。

微软的.NET正好相反,在第一节给了我们无穷多的选则(至少理论上这样),然而在第二部分,我们别无选择,只能是在Windows上执行那些半机器语言。

好了,背景交代清楚了,我们的主角可以出场了。好,现在就有请GROOVY小姐/小弟 (哗哗哗,掌声...)

点看全图

外链图片需谨慎,可能会被源头改

GROOVY的任务就是丰富一下Java阵营,在源程序到半机器语言的翻译步骤给我们多一个选择。

当然了,为了避免和Java语言直接碰撞,GROOVY选择了自己的突破口。那就是“小巧精干”。按照GROOVY自己的说法,那就是在一个Java的前提下,给用户一个简单易用的环境,来完成简单到中等难度的任务。在语法上,GROOVY尽量贴近Script语言,比如说Python。这样用户可以很快上手,不需要很多的学习。

从感觉上看,GROOVY的程序就像Shell script一样(记得DOS下的那些BAT文件吗?),不需要编译就可以直接运行。不过你可别被这些假象蒙蔽了。在背后它还是先江这些程序翻译成标准的Java byte code,然后交给Java虚拟机去完成。

怎么样,想试试看吗?你可以到GROOVY的网站下载一份,然后你就可以try out了

点看全图

外链图片需谨慎,可能会被源头改

哦,最后在交代一下,GROOVY是什么意思呢?这个词意思不少,比如说“沟的,槽的;常规的,千篇一律的;(歌曲等)流行的”。但我觉得可能是“最佳状态的,(美俚)绝妙的。”。或者干脆译做“好爽”


本帖一共被 1 帖 引用 (帖内工具实现)
全看分页树展 · 主题


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河