Send As SMS

2005-08-25

Ideas on JavaScript 2.0

动态语言毫无疑问会成为接下来的一个热点,在这方面,JavaScript有很不错的优势:语言简洁,语法与Java相似,rhino的实现已经证明了 JavaScript与Java的结合能力,更为有意思的是,Java 6中已经预备了对脚本语言支持的能力,看来下一个趋势就是,在Java的平台上,充分的发挥这些动态语言的灵活性。

JavaScript 2.0 在 JS1.5的基础上更进一层,提供了很多有价值的增强,这些相信都能大幅度的提高软件的质量。

1、首次提出了Class的概念。基于模板的Class与基于Prototype的Class相比,更符合OO(我们的大部分人都习惯了基于模板的OO的 思维模式)习惯,而且Class由于模板的限制,而更为稳定,否则,行为变化过于动态,反而影响整个应用的易于理解的能力。
2、引入了namespace、package的概念,使得,使用JavaScript来开发大型应用更为便捷。
3、JS1.5中仅支持动态类型检查,而JS2.0中同时也支持静态的类型检查,这可以大大提高编译器所能发挥的作用。毕竟,在很多时候,类型是可预见的、固定的。

我觉得,JavaScript还应该从其他语言那里来学习一些东西,包括:
1、有一个定义良好的虚拟机。实际上,更多的语言成分,非常的复杂,但抽象到虚拟机上,则能返本归真,语义更为清晰。同时,可以在核心的基础上更为容易的 进行扩展。实际上,在基于Java的平台上,考虑JS的虚拟机,应该不是一个很复杂的事情。包括GC之类的可以建立在Java的基础之上。
2、对XML的内置支持。这个已经有一个E4X的规范。基本上,也可以理解只是一个语法层面上的扩展,对JSVM并没有什么特别的东西。
3、学习Java5,加入元信息的支持。虽然最近在WEB上出现了对annotation的批评,但个人仍然认为这是一种很好的描述语义的手段。JS2.0的规范中好像缺乏这样的东西。

在跟Java的结合上,可以考虑直接使用JS2.0来开发Java的类。JS2.0的class可以直接编译成为Java的Class,作为Java的类 的子类、接口实现而在Java中透明的访问。一些动态的机制,比如说动态的对象属性,则编译成为动态行为,否则,可以编译成为对应的Java字段和方法。

当编译成为JavaClass时,还有一个优势,就是可以利用Java的调试机制,所要做的,只是进行一个源代码-执行吗之间的映射就可以了。

0 Comments:

张贴评论

<< Home