`
庄表伟
  • 浏览: 1151848 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于JSVM的三人对谈

阅读更多

庄表伟 说:

JSVM,我觉得有一个方向可以尝试去发展,就是浏览器中的对象管理,起到一个VM的作用

dlee 说:

问题就是你敢不敢去做小白鼠,或者叫做生活在剃刀边上。对于一个严肃的项目,我做项目经理,是不会采用jsvm的。

庄表伟 说:

那为什么你就会采用prototype呢?

dlee :

prototype背后有强大的支持,而不是像jsvm那样只有万春华同志等很少的几个铁杆。

庄表伟 说:

为什么?你是看着哪边人多去哪边的吗?

dlee :

你看那些叫喊"""支持"""的人会不会贡献一行代码。你太容易非黑即白了。当然不完全是这样,不过支持能力是一个非常重要的考虑因素。

庄表伟 说:

我的意思是,JSVM,该不该用他,只能由我们看过他的代码以后,来决定?

dlee :

你有能力维护所有的代码吗?

庄表伟 说:

我只是用他呀,又不是要改他

dlee :

我的意思是说,如果你在项目中使用了SpringRod Johnson玩累了,明天就宣布解散这个项目。你自己独立去维护Spring的代码。你去用什么啊,它只有很少的UI组件,其中还有问题。 你不要夸口这些自己都能开发好,我两年前开发了一个比较好用的Grid,花费了一周多的时间。你自己去实现这样一个组件后再说话。

庄表伟 说:

我不是用他的UI呀,而是用他的这个框架,来组织自己的代码。

dlee 说:

你不用它的UI,有什么必要使用这个框架呢?dojo/prototype一样可以做到啊,我是认为你这样做引入了不必要的成本。况且你如何判定使用的UI库在设计理念上与jsvm完全没有冲突?

庄表伟 说:

OK,你现在已经有结论了,但是我还没有仔细看过他的代码呢,所以我现在还没有结论,等我看过以后,自然会有一个结论的。

dlee :

Ajax库这方面,大部分人都跟我希望的一样,需要一个全面的解决方案。你说的jsvm专精于做某个领域,我认为是行不通的。任何运行于浏览器的js框架都应该是为UI服务的。没有实现过很多UI组件,如何检验它的这个架构设计的合理性?

庄表伟 说:

目前看来,prototype,也只是专精于基础领域的,在它之上,另有script.aculo.usRicoBehaviour这样的lib

dlee :

你喜欢摆擂台,那么就摆个擂台,大家都实现Grid组件,看看谁做得好。

庄表伟 说:

呵呵,这倒是个好办法

dlee :

你可以跟醒来来详细讨论,问题不是你想想得那么简单。做小白鼠也有好处,晓钢就经常偷偷练习一些自己的独门绝技。

庄表伟 说:

呵呵

dlee :

你可以将我跟他的冲突理解为主要在一个领域,就是我不认为解决他所说的两个问题,需要这么重的方案。而且他的解决方案从JS开发者的角度看来也不是很优雅。

庄表伟 说:

嗯,这两点,我基本上是同意的

dlee :

万春华同志的兴趣不在UI组件方面,这使得他偏离了浏览器JS诞生的使命。今天我跟醒来说过类似的意思。 我们的分歧不完全在技术本身上面。因为我们思考问题的思路差别很大,所以没有出现很大的交集

庄表伟 说:

嗯,我比较理解你的意思了,但是,我不是很同意...

dlee :

你看过他们的代码了吗?

庄表伟 说:

看了一些

dlee :

代码的模块程度如何?有没有可能将醒来说的一些部分完全去掉?

庄表伟 说:

哪些部分?

dlee :

我觉得他们如果做一些更加清晰的划分,划分出一个最小的core部分,而且像Spring那样划分成很多不同的jar,这样会更好一些。最糟的情况是要么全有要么全无

 

  醒来 已经添加到此对话中。

 

dlee :

你既然对jsvm非常感兴趣,就和醒来先详细谈谈。我作为旁听好了。

庄表伟 说:

呵呵,好的呀

醒来 说:

好啊,我 最近刚看了jsvm的源码

庄,你觉得jsvm怎么样

庄表伟 说:

我刚开始看他的代码。说实话,我觉得他的js代码写得非常好,也很干净、清楚。因此,这样的一个人,写出这样水平的代码的人,对于js的理解,肯定是相当深入的。

醒来 说:

代码写的是真不错

庄表伟 说:

我以前曾经想当然的认为,他不了解js,只喜欢java,所以才会把js,扭曲成java的样子这样的想法,肯定是偏见。那么,在承认对方有足够的智力与经验的前提下,再来看他的代码,我觉得更不该"断然否定",说他"一无是处"

醒来 说:

我在javaeye 上提出了我的意见,我也认为他的代码写得很不错,但是侧重点有点不合时宜。现在真是有些像java虚拟机了,基本是一个classloader + class cache 的实现

庄表伟 :

还有这个:

a) 独立模式:standalone, 该模式下,当前页面的jsvm独立加载,不和系统中其他页面的JSVM发生关联。

b) 应用程序模式:application, 应用程序模式下的页面会除了加载jsvm以外,还将构造一个Application的环境。其他模块模式的页面会共享Application的资源。

c) 模块模式:module, 模块模式的页面必须运行在一个Application模式的页面下。该页面可以通过application框架共享资源以及访问全局变量。

d) 自动模式:auto, 页面根据环境自动选择是独立模式还是模块模式。

我觉得很有点意思

醒来 说:

从名字上来讲,jsvm倒是符合本意。但是java的成功不是只靠一个jvm的,我觉得 jdk 更关键

庄表伟 说:

现在的js库,除了jsvm,都是以一个Page为单位运行的,鲜有"Application"的概念。而VM的提出,我认为,为将来合理的Browser Object Cache Layer,提供了可能

醒来 说:

我有点怀疑,这样带来的复杂性有没有必要

庄表伟 说:

而且我还希望将来JSVM,能够更好的支持请求任务队列的管理,这样的机制,JS的语法本身提供得并不够好。还有多线程的管理,JS也没有像Java那样的,语法级的支持。

dlee :

我不大相信浏览器中的JS将来会被用在这样的目的

醒来 说:

其实我觉得,这些应该是浏览器提供的功能,在浏览器未发展到这个程度之前,强迫javascript畸形的实现,不一定值得

庄表伟 说:

嗯,这是问题的关键...我前面的畅想,的确是我希望将来的JS,能够支持的一部分

dlee :

是的,我们希望将来的JS引擎来提供这些基础设施

庄表伟 说:

现在JSVM,也许能够支持一部分,也许还不能够,所以,说不定哪天JS 2.0出来,JSVM就没有意义了

醒来 说:

所以对于jsvm的模式,应用程序模式还可以理解,模块模式很难让人明白有什么用

庄表伟 说:

这是一个思考模式的问题

假设你对于js本身不熟悉,要让你合理、自然的划分多个js文件,合理、自然的在该load的时候才去load,这就相当的费力

醒来 说:

所以我的意见就是,jsvm 希望吸引人来开发,应该要给出jsdk 差不多,一个jsvm 吸引不了人

庄表伟 说:

当然,更加正确的道路,当然是按照js的本性来做,提出某种"js loading design pattener"。但是,在经验还没有被总结成模式之前,模仿java式的代码组织,不失为一种方案

醒来 说:

load js 的模式其实现在都是 用一个同步的xmlhttprequest 去加载js,然后eval。这个 dojo prototype 都有提供基础支持

庄表伟 说:

不是如何loading。而是,我现在有几百Kjs文件,如何切分成合理的大小,然后在需要的时候去调用他们

醒来 说:

这个想法是对的,也是jsvm值得肯定的地方

我的主要意见是说它提供的 jsc 的形式有点鸡肋,同时缺乏简单高效的工具类,所以吸引不了开发人员。jsvm2 的代码里有 1/3 就是为了支持这个自创的jsc语法

庄表伟 说:

这是...败笔...jsc我也不喜欢,混杂了部分js语法和部分java语法...还不如仅仅规定一个必须的头部,其他的完全采用js语法呢。还有一点我觉得是这个万兄在那里畅想,就是JSVM打算支持多种语法的设想,工作量太大了。

dlee :

不过万春来同志说这个可以不用

醒来 说:

所以我建议索性抛弃jsc,以万兄的javascript功力,写一部分有用的工具类,我觉得不会有人真的愿意用 var map = new HashMap(), map.put(k, v); 这样的方式写js

庄表伟 说:

对的

dlee :

所以我刚才说:

我觉得他们如果做一些更加清晰的划分,划分出一个最小的core部分,而且像Spring那样划分成很多不同的jar,这样会更好一些。最糟的情况是要么全有要么全无。

醒来 说:

jsc 是可以不用,但jsvm 加载了接近80kjs就为了支持jsc, 没有意义啊

庄表伟 说:

他现在是有多个js的,只是他core的部分太大了

醒来 说:

庄,如果你去看runtime.js 就知道了,jsvm2其实把jsc都预先编译了,否则效率一定太低

现在甚至还有一些观点,不要把js分得太多,因为要激发太多的http连接,反而响应性更不好。毕竟js的加载是同步的 ,这各ajax的异步核心思想有冲突。

dlee :

这个考虑也是很有道理的

庄表伟 说:

激发太多的http连接?还是激发太多的同步http连接?

dlee :

那个所谓的classloader就是向服务器请求一个包含js类的文件,然后evaluate。而且也要考虑evaluate的执行效率

醒来 说:

每一个import 就是一个http 连接。当然,jsvm 考虑到了cache

dlee :

对的,就是发出一个xmlhttp请求

庄表伟 说:

其实,他完全可以将自己的jsdk,做成一个jsc文件,一口气load进来

dlee 说:

不是多个连接,这个要看服务器怎么配置。其实支持http1.1的浏览器和服务器都是保持长连接

醒来 说:

jsvmcache 也有些问题,他所谓的application模式,在不同的浏览器上实现各不相同,iejs源码用iehtc 技术保存的,ff 是存cookiecookie 的容量是有限制的,所以cache 主要是针对 ie

dlee :

可能是在同一个http连接上发送多个http请求,这些请求需要排队

庄表伟 说:

OK,我提一个方案,你们看是不是可以作为"最佳实践"之一:

对于多个异步请求,可以让他分次异步提交。

对于多个同步请求,应该将多个请求打包以后一次提交。

这个作为"请求队列管理"的一部分

醒来 说:

道理应该是这样,jsvm里好像没有这样的控制,import语句也没有这么智能

庄表伟 说:

其实jsvm应该这么做,比如他load一个jsc文件进来,里面的import语句可能有一堆,就应该是一口气load其他的jsc,不该再分多次了

醒来 说:

我总觉得 线程/队列 这些该是浏览器的事情,用js开发很不保险

庄表伟 说:

你看过我写的那个RSSReader的代码吗?里面就有一个请求队列的

醒来 说:

jsvm做不到,因为loadjsc里又有import 语句,这是递归的

庄表伟 说:

不是递归,是分层的

醒来 说:

要么js语言升级,要么浏览器升级,我总觉得现阶段就想让ajax完全达到替代桌面应用的程度是不可能的

庄表伟 说:

这个当然是不可能的...

醒来 说:

所以在现阶段,还是不要搞复杂了,多线程和队列能用到的地方毕竟不多

我觉得dlee强调的对的,现在需要的是组件

语言级别的东西,就让js语言和浏览器标准去慢慢支持吧

庄表伟 说:

我理解你们所认为的"轻重缓急"了。根本的观点在于:"急于将浏览器中应用,推向完全的桌面应用,并不现实"。立足于"更好的浏览器端应用",而非"尽可能像桌面应用的浏览器端应用",这么说来,当务之急自然是UI控件的完善与丰富

dlee :

我觉得浏览器中js诞生的使命就是改善交互和UI

醒来 说:

对,就是这个意思

dlee :

而且我从项目开发负责人的角度,更希望一个全面的解决方案。不是什么都需要我去做集成

庄表伟 说:

JSVM的问题,不在于他语法上像Java,而在于他的目标上像Java

dlee :

也可以这样来理解

醒来 说:

ajax 里的cache 应该是去cache 数据,用来cache js代码,意义多大呢,所以jsvm太技术化了

dlee :

Ajax in Action中,提出了一种独占式应用。就是像Word一样,可能每天都要用上几个小时。目前的Ajax技术,包括一些基础框架,还很难达到这个要求。所以确实需要这样一类基础架构,但是我们认为这些支持最好由浏览器和JS引擎来提供。

庄表伟 说:

看来我们已经初步达成共识了

醒来 说:

js 就是用来操作DOM的,不要让它承担太多重任,xmlhttp本来也不是 js的一部分,浏览器的扩展而以

dlee :

我发现现在很多人有一个通病。就跟我在那个ajaxmodel2框架的讨论中说的那样。毫不思考地就将一种技术或者架构用于设计意图之外的场合。其实把IFrame用于异步请求也是这个情况

醒来 说:

jsvm 的建议就是抛弃jsc,完善它自己的面向对象架构,并提供工具类支持,这样才有可能和 dojo 有竞争。所以在国外是称为  tricks,  是有贬义的意思,但翻译成中文,变成窍门,反而有了褒义了

dlee :

Ajax in Action的作者称作hacky的做法,带有贬义

dlee :

Ajax显得与众不同的地方不是它所使用的技术本身,而是通过使用这些技术所带来的新的交互模式。我们所习惯的传统的Web交互模型并不适合于独占式的应用,只有打破了这种交互模型,新的可能性才会慢慢浮现出来。

这是Ajax in Action的一句话,说得非常有道理。我们看到如此众多的人都对Ajax感兴趣不是偶然的。现在我们处在web app发生革命性变化的前夕

庄表伟 说:

嗯,我更关注:慢慢浮现出来的这些可能性中,哪些是正道,哪些是邪道

醒来 说:

我是觉得一定要擦亮眼睛,多从用户的角度想问题

庄表伟 说:

这是对的

分享到:
评论

相关推荐

    JSVM使用手册,jsvm 的使用方法大全

    **JSVM 使用手册详解** JSVM(Joint Scalable Video Model)是用于Scalable Video Coding (SVC)项目的一种软件工具。SVC是ISO/IEC Moving Pictures Experts Group (MPEG)和ITU-T Video Coding Experts Group (VCEG)...

    jsvm2.05.061114

    4. **安全性**:在非浏览器环境中运行JavaScript代码可能带来安全风险,因此JSVM需要提供安全边界,限制潜在的恶意代码对系统资源的访问。 5. **调试工具**:为了便于开发和调试,JSVM通常会提供诸如断点、调用堆栈...

    JSVM9.8源代码

    JSVM9.8源代码提供了深入理解JavaScript引擎内部工作原理的机会,特别是对于那些对H264 SVC(Scalable Video Coding)感兴趣的人来说,这是一个宝贵的资源。H264 SVC是一种高级视频编码标准,能够适应不同的网络条件...

    JSVM SoftwareManual_9.18

    - 版本9.18可能包含了性能优化、新功能的添加以及对旧版bug的修复。 2. **安装与配置**: - 用户需要按照手册中的步骤进行下载和安装JSVM 9.18,确保系统兼容性。 - 配置环节可能涉及设置环境变量、指定运行路径...

    JSVM9.19.15

    JSVM提供了对H.264/SVC编码和解码的支持,使得开发者能够利用Java语言来开发与视频编码相关的应用,比如视频会议系统、在线教育平台、视频流媒体服务等。 在H.264/SVC中,视频被分为多个层,这些层可以独立编码和...

    JSVM测试视频02

    JavaScript虚拟机(JSVM)是JavaScript执行环境的一种实现,它允许JavaScript代码在非浏览器环境中运行,比如服务器端或桌面应用。在这个"JSVM测试视频02"中,我们可能涉及的是一个专门针对JSVM的测试集,用于评估其...

    jsvm2.06.071025

    但是,这个版本的发布意味着对JavaScript虚拟机的一次重要更新,可能涉及到上述的一个或多个方面。开发者在使用这个版本时,可以期待更高效的代码执行、更好的跨平台兼容性以及增强的安全保障。对于想要深入理解...

    jsvm2框架源码

    JSVM2 的加载并不对web页面中原来的JavaScript环境产生任何破坏影响,而只是多了一些其它功能的支持。 在JSVM2 下,JavaScript代码的基本模块单元是“对象”,“对象”的类型可以是一个Function或者是一个Object...

    JSVM 9.13.1

    **JSVM 9.13.1:H264 Extension Open Source Project** JSVM(JavaScript Virtual Machine)是一种用于在浏览器环境中执行JavaScript代码的虚拟机。在这个特定的项目中,JSVM 9.13.1是针对H264视频编码标准的一个...

    JSVM编解码器

    开发者可以通过JSVM对不同网络环境下的编码和解码性能进行评估,确保视频流在各种条件下都能稳定工作。此外,JSVM还可以帮助测试新的视频编码算法,对比不同编码策略的效果,为视频编码技术的进步提供数据支持。 ...

    JSVM H.264扩展编码的JVT模型源代码

    随后,对变换系数进行量化,以减少数据量。 3. 熵编码:量化后的数据经过熵编码(如哈夫曼编码或熵变码)进一步压缩,以减少传输和存储所需的比特数。 4. 可伸缩性:JSVM扩展了H.264/AVC的可伸缩性特性,允许在...

    SVC的开源代码JSVM

    **JSVM:SVC的开源实现** JSVM(Java Virtual Machine)是SVC(Software Vulnerability Corpus...无论是为了学术研究,还是实际的开发和测试工作,了解和使用JSVM都可以极大地提升我们对Java虚拟机及其安全性的理解。

    JSVM_9-17 代码

    总之,JSVM_9-17代码提供了深入学习H.264/AVC SVC的机会,无论是对视频编码理论的探索还是实际应用的开发,都是一个宝贵的资源。通过深入理解和分析JSVM,工程师可以提升自己在视频编码领域的专业能力。

    JSVM参考模型代码

    JSVM(Joint Scalable Video Model)是H.264/SVC(Scalable Video Coding)标准中的一个重要组成部分,它是基于H.264编码器的可扩展视频编码模型。这个模型提供了一种灵活的方式,使得视频编码可以适应不同的网络...

    JSVM最新版本

    JSVM(Java Server Virtual Machine)是Java虚拟机的一种实现,...不过,由于这个信息是基于2012年的版本,现代的JSVM版本可能已经包含了更多先进的特性,如更好的性能优化、对最新Java版本的支持以及云环境的优化等。

    JSVM_SoftwareManual

    - **公共参数**:第2.1.1节列出了Resampler的通用参数,这些参数对所有操作都适用,影响着转换过程的全局行为。 - **重采样方法**:第2.1.2节讨论了不同的重采样方法,每种方法都有特定的优化目标,如质量、速度等...

    JSVM最新版9.18

    JSVM (Joint Scalable Video Model) software are for the Scalable Video Coding (SVC) project of the Joint Video Team (JVT) of the ISO/IEC Moving Pictures Experts Group (MPEG) and the ITU-T Video Coding ...

    jsvm9.19.7.rar

    JavaScript虚拟机(JSVM)是用于执行JavaScript代码的软件环境,通常在浏览器中实现,使得JavaScript可以在客户端运行,提供交互式用户体验。JSVM9.19.7可能是这个虚拟机的一个特定版本,针对某些功能或性能进行了...

    JSVM Reference Software

    **JSVM Reference Software详解** JSVM,全称Java Virtual Machine,是Java平台的一部分,它负责执行Java字节码。在本场景中提到的"JSVM Reference Software,SVC",很可能是针对Java服务端虚拟机(Server Version...

Global site tag (gtag.js) - Google Analytics