9/21/2008

JavaScript的优点和缺点——Java专家的观点

Sun Lab的两位Java专家去年10月写了一篇论文,对于JavaScript语言的优点和缺点进行深入的分析:
Using JavaScript as a Real Programming Language

这篇论文虽然是Java专家的观点,但是非常客观公正,喜爱JavaScript的朋友可以仔细读一下。作者带领的团队编写了大量的JavaScript代码,对JavaScript进行了深入研究之后才写出了这篇论文,与一些人仅仅凭借表面印象所做的肤浅评论和判断完全不同。这篇论文对于理解目前浏览器中JavaScript技术的发展动向很有帮助。

论文的两位作者都是非常资深的技术专家:
Tommi Mikkonen博士是知名的软件工程专家,《Programming Mobile Devices: An Introduction for Practitioners》一书的作者。
Antero Taivalsaari博士是JavaME的核心设计者,曾两次荣获Sun的Chairman大奖。在JavaME这个名词出现之前,是KJava和KVM,Taivalsaari博士正是KVM的设计者。

9/13/2008

不要再说ActionScript与JavaScript是亲兄弟了

ECMAScript 4被终止,ECMAScript 3.1获胜。package和namespace将不会出现在ECMAScript的正式规范中。ActionScript3宣称完全遵照ECMAScript4,发生这件事情使得开发者对于ActionScript未来的前景感到迷茫。我判断ActionScript将会继续沿着现有的轨迹发展下去,最终与JavaScript分道扬镳。

虽然在很多ActionScript的教程中,都说ActionScript与JavaScript很像,它们是亲兄弟。但是这样说其实是在误导读者,ActionScript和JavaScript的运行环境其实差别非常巨大。

ActionScript是一种编译型语言,编译为跨平台的字节码运行在AVM虚拟机上,通常使用支持所见即所得的RAD开发工具(Flex Builder)来做开发。ActionScript由浏览器插件来支持,它需要等待浏览器中的文档全部加载完之后才能开始运行。 ActionScript的运行环境在各方面都与Java非常相似,所以我们看到ActionScript与Java非常相似毫不奇怪。从 ActionScript3开始,ActionScript放弃了很多动态的特性(例如eval),现在它几乎变成了一种静态类型的语言。

JavaScript是一种解释型语言,没有编译的过程,目前还没有运行在虚拟机上,通常使用一些简单的文本编辑器来编辑(例如UltraEdit、 EditPlus、Notepad++、Vim等等)。JavaScript由浏览器提供原生的支持,它不需要等待浏览器中的文档全部加载完之后才能开始运行(支持对于文档的增量呈现)。JavaScript一直都是一种动态类型的语言,它甚至要比PHP、Python、Ruby这些动态类型语言更加动态和灵活。这些动态的特性正是JavaScript生命力的源泉,也是众多Web开发者喜爱JavaScript的原因。

正是由于ActionScript和JavaScript运行环境之间的巨大差别,使得从ActionScript3开始ActionScript就与 JavaScript分道扬镳了,ActionScript3投入了Java的怀抱。然而,也正是由于运行环境之间的巨大差别,对于 ActionScript可行的发展道路,对于JavaScript来说并不是可行的。

ECMAScript想用一套统一的规范来支持这两种运行环境差别如此巨大的语言,这是一件非常困难的事情。ActionScript仅仅是Adobe一家的产品,厂商博弈之后得到了对于Adobe不利的结果是很正常的。

Flex SDK下载包的三个版本

Adobe Flex SDK可以从这里下载:
http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3

从下载页面中可以看到,Flex SDK下载包有三个版本,分别是:
  • Adobe Flex SDK
  • Open Source Flex SDK
  • Adobe Add-ons

这三个版本之间的区别在Adobe开源网站的Wiki中有详细说明:
http://opensource.adobe.com/wiki/display/flexsdk/Downloads

可以这样理解:Adobe Flex SDK = Open Source Flex SDK + Adobe Add-ons
一般情况下,只需要下载Open Source Flex SDK就足够了。