Javascript: 关注JSVM
我们在 JSVM1.x 中尝试了一种较传统方式不同的 JavaScript(基于web中的JS) 开发模式。一年多的时间中,得到了大量积极有效的反馈和建议,在这些基础上今天我们正式推出 JSVM2。
JavaScript 一直以来扮演着Web端“小脚本”的角色,开发者用它来在web上制作一些动态特效,? 以及表单提交前对数据的预校验等等,随着客户端处理能力日益提升,DHTML在表示层的动态特征和丰富表现力,以及XmlHttp,XmlDom等HTTP工具的出现, 另外一种应用模式开始引起人们的关注:基于 JavaScript + DHTML + XML + XmlHttp/XmlDom 的 RIA (Rich Internet Application),更确切地说,应称为:RWA (Rich Web Application)。这类应用给用户带来的良好体验远胜于传统 Web 中依赖 Form 提交数据的方式,并且较大程度减小了服务器的负载和网络流量,提高了系统综合性能。后来一个老外提出了 Ajax 这个名词,关于这个概念我不再冗余复述。
如今Ajax Framework 像雨后春笋一般涌现很多,其中不乏优秀之作。但在此并不多作介绍。 因为 JSVM 和他们定位不同,JSVM不仅仅是一个 Ajax 框架,也并非仅仅为了实现 Ajax 而产生。它作为一个更底层更抽象的 JavaScript 框架,为我们实现类似Ajax应用提供了一个基础平台。我曾经拿jsvm1到51js上与许多js爱好者共同讨论,其中有两种比较典型的不同看法是:
JavaScript 需要框架吗,是不是把简单的事情复杂化了? 短小精干才是脚本之道。非要借鉴 JAVA 的架构吗?是否有更好的解决方案。
对于第一种意见,我认为某种条件下还是有道理的。例如:我仅仅是想打印一句 Hello, world! 直接 alert()就可以了,何必要弄一个 Framework 出来,岂非劳民伤财,小题大做。 确实,对于一些简单的web应用,js 在整个体系中充当的角色很小,我觉得是可以不用框架的。但对于一个RIA模式的Web应用,尤其是企业级的应用,系统复杂程度和JS代码规模相当庞大的情况下,没有框架带来的后果是可以预见的。对于第二种观点:赞成框架的必要性,但对jsvm一些“模仿”java的做法抱有怀疑态度。我不能说这种看法不对,也许确实有更好API架构。但是,本人认为这个不是关键所在,jsvm提供了对多种语法解析器的支持,有兴趣的人完全可以根据自己喜好在jsvm下开发出另外一套API。类C#,类VB的语法都可以实现。
简单的说,JSVM 根本目的是为了规范浏览器端JavaScript脚本开发,更好的实现代码复用。传统面向过程型的JavaScript开发方式已经明显不能满足大规模软件开发的需要。大部分迹象表明? 随着 RIA 的发展,客户端都将承担更多的逻辑处理工作,企业级应用的代码规模和复杂度都是相当大的。有效的代码组织结构,合理的模块粒度,低耦合高内聚的设计原则等等如何引入到JavaScript的开发上来?相信当你了解 JSVM2 之后,会有一些答案。
作为一个框架,JSVM要解决的问题不是提供某一种应用的解决方案,而是针对各种场景提供广泛的支持。另外一个需要说明的是:jsvm2并不是jsvm1的一个升级版,几乎是在jsvm1上完全重构。且不提供对原jsvm1.x中的类的支持。(当然,原jsvm1.x下的类需要经过做一些小改动即能在jsvm2下正常工作)较jsvm1.x,jsvm2 有了几处明显的变化:
性能上有了明显的提升。
每个类文件拥有独立的语法域。
几种常见的web运行模式在Framework中将直接被支持。
编译引擎支持多语法解析器,并缺省提供了一个名为"jsvm2"的语法解析器。从语法层面提供了一些OO关键字的支持,使jsvm下的面向对象的javascript开发更为直观和方便。
具有更灵活的扩展性。二次开发者可以很方便的扩展其功能。
- · Java开源项目Hibernate快速入门
- · 真正的Java学习从入门到精通
- · Java学习路径(三)过程篇
- · Java学习路径(二)书籍篇
- · Java学习路径(一)工具篇
- · 设计迷踪:给JAVA设计开发新手的一些建议和意见(四)
- · 设计迷踪:给JAVA设计开发新手的一些建议和意见(三)
- · 设计迷踪:给JAVA设计开发新手的一些建议和意见(二)
- · 设计迷踪:给JAVA设计开发新手的一些建议和意见(一)
- · Java入门需掌握的30个基本概念
- · 教你如何成为一名Java初级程序员
- · 初学Java注意什么?
- · 小TIP:Java里的时间比较
- · 我的J2ME编程练习(8)——Canvas3
- · 我的java学习笔记version0.1
- · Java入门笔记9_Socket
- · Java入门笔记8_JavaTools
- · Java入门笔记7_Stream
- · Java入门笔记6_线程
- · Java入门笔记5_异常
- · Java入门笔记4_访问控制和包
- · Java入门笔记3_Datastructure
- · Java入门笔记2_Applet
- · Java入门笔记1_HelloWorld
- · Java开源项目Hibernate快速入门
- · 动态编译java程序实例
- · Java学习笔记(一)--熟悉开发环境
- · JAVA哲学 -- 前言
- · java程序的递归算法,列出某个目录下的所有子目录和文件
- · Java入门及faq__1(5)
- · Java入门及faq__1(4)
- · Java入门及faq__1(3)
- · java大进攻(1)
- · java中的传值与传reference .
- · Java Security Notes (6)
- · TIJ swot_JAVA的初学者(四)
- · 我的Thinking in Java学习笔记(十)
- · 利用 Java 平台的特性建造一个令人瞩目的系统
