西西河

主题:【原创】新时代新潮流WebOS 【1】 -- 邓侃

共:💬594 🌺1902
分页树展主题 · 全看首页 上页
/ 40
下页 末页
              • 家园 你搞错了吧

                Microsoft File Transfer Manager是一个独立的binary,不是什么Java Applet

                Silverlight跨平台没什么难的,但是你也要明白,人家最多做一个Mac版本的,根本就不会做Linux版。为什么?Linux各种乱七八糟的distro全加起来才占客户操作系统的1%,根本不值

                • 家园 还是贴张图片吧

                  点看全图

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

                  Silverlight跨平台很难,不是技术上难,是政治上难。看看我贴的列表,微软会给PS3做客户端么?换成你开发网站,你是遵守标准,保证谁都能用,还是找个偏门,就给一批特定的人用?

                  Web走到今天靠的是公开、公平的标准,不是某个商业集团的大包大揽。

                  另外不要看不起linux,机顶盒、Netbook、Nettop、手机、瘦客户端、公共信息终端....这些才是Web的未来用户。Linux在这块儿会有多大比例?

                  • 家园 未来的事

                    谁也不知道会鹿死谁手。Sun也会卖身,Yahoo也会求售而不得,Netscape也会日薄西山,Novell也会仰人鼻息。未来的事,还是留给未来吧

                  • 家园 看来是我搞错了

                    我看的是msdn的download manager,没想到RC的公开下载的DLM不一样。

              • 家园 不是全部赞同你的看法

                Silverlight 2007年正式发布,到今天也没法完整支持linux。甚至linux上的解决方案MS都不直接出面。而Adobe则在客户端上下了大力气,各主流平台各种浏览器鲜有不支持的。

                这个就是现在silverlight所面临最大的问题,我上文已经提到了,问题的关键不是技术而是MS的态度.对于这方面我是持乐观态度的,随着时间的延续,支持的列表会越来越长.

                而且MS为什么要推Silverlight? 为了争夺web app市场。

                它能把一个公开的、各个平台其乐融融的web搞成自己的一言堂么?不可能。只能是silverlight向各个平台渗透。

                如果他达到了目的,大家都用silverlight来做桌面品质的Web App,那还要Windows干什么?

                切中要害!如果真是这样,的确没有Windows的必要了,MS到了那个时候就不是每个机器安装一个windows了,人家开始买在线服务了.到时候赚的那才叫心安理得,而且甚至不用考虑盗版的损失了.这正是MS正在努力的方向,他不仅要掌控现在的PC操作系统的市场,对于未来发展的市场也要掌握,silverlight也可以说就是一个尖兵,具体今后能够发挥多大的作用,需要看市场的反映和MS的决心.

                我的想法,作为WPF的一个子集,silverlight 在web方面将会有很大的作为,随着Windows7的发布,WPF的开发模式也会迅速的在桌面级应用上普及开来,为应用的展示带来一个新的一页.如果当你有一天发现对于展示来说,写c/s结构还是写b/s结构没有什么不同后,MS也就达到了目的,同样开发人员也就完成了一个平滑的过渡了.为全面进军Web App打下了坚实的基础.

                关键词(Tags): #silverlight#WPF#Web#App
                • 家园 咱们求同存异,看这些大鳄如何博弈

                  另外你最后说的那个BS CS不会再有差异的想法,我已经体验过了,就是java。当初只花了15分钟就把一个本地的FPGA Monitor转成了web applet,功能一分不少。只是打开的速度惨了点。

        • 家园 Ajax 喧嚣之下暴露的问题

          在 google map 出来之前,javascript 可以说是雕虫小技,虽然可以弄点特效,但是只能达到效果而已,并不出彩。也就是 google map 的横空出世,让人耳目一新,才发现 javascript 可以做出那么炫的效果来。一时之间,ajax 引领风潮。

          说得非常对。Ajax吊起了众人的胃口,不仅Google Map,而且Google Docs也很实用。我最近的文章都是用Google Docs写成的。

          Google Docs有类似于Word,Excel和PPT的功能,但是目前缺了Project和Visio。Project还好说,但是用Ajax来做Visio就太难了。当然也有人做这方面的尝试,譬如Gliffy。但是功能与Visio比起来,少得可怜。

          Google Chrome浏览器里,带了一个新型的JS engine,叫V8。据说性能比SpiderMonkey好多了。但是奇怪的是Google Android里面,却没有装V8。去问为什么,迟迟疑疑地回答,担心开发者abuse JS。

          换句话说,JS处理一些简单的逻辑的确很方便,但是如果应用逻辑越来越复杂以后,JS engine就不堪重负了。Google不敢在手机里面装V8,担心的是万一手机应用开发商大量使用Ajax,让V8负担太重,一系列问题会显现,CPU时间占用,RAM占用,电池消耗,等等等等。

          不是说Google会永远把V8隔绝于Android之外,只是暂时没有放进去,但是我看迟早还是会进去的。但是等一等也好,看看还能改进点什么。

      • 家园 【讨论】3个问题

        到了2003年,Netscape大势已去,第一次浏览器大战就此结束,以微软IE浏览器完胜而告终。Mosaic,Netscape以及IE的6.0以前诸版本,还有史前的其它浏览器,通常被称为第一代浏览器。

        此段应改为:

        到了2003年,Netscape大势已去,第一次浏览器大战就此结束,以微软IE浏览器完胜而告终。但是Netscape变换手法,高举OPEN SOURCE的大旗,为成就今日的Firefox埋下了伏笔。Mosaic,Netscape,Opera,以及IE的6.0以前诸版本,还有史前的其它浏览器,通常被称为第一代浏览器

        JWS和进程交换只能说它生不逢时。现代的Application进程运行中有太多的进程上下文交换(起码要和OS内核),否则Application毫无意义。

        与其说JWS的UI渲染风格的失败不如说JWS开发工具的失败,核心问题 --- “所见即所得”(What You See Is What You Get,簡稱WYSIWYG)。JAVA自成体系的窗口成立浏览器上的包袱,成也萧何,败也萧何。

        • 家园 3个问题回复

          1.

          但是Netscape变换手法,高举OPEN SOURCE的大旗,为成就今日的Firefox埋下了伏笔。

          已经按太守的建议修改了原文。多谢。

          2. Context Switch和IPC/Message Passing的问题。

          譬如说microkernel,从架构上来讲,的确应该有很多好处,但是由于IPC效率比较差。后来虽然有了很大改进,但是热闹一阵子以后,真正用的人仍然并不是很多。

          3.

          与其说JWS的UI渲染风格的失败不如说JWS开发工具的失败

          JWS想脱离浏览器母体,搞台独。台独不得人心。

      • 家园 补充Java Applet 失败的主因之一

        补充一下Java Applet 失败的主因之一。

        Java Applet 失败一是由于JVM不兼容的问题。这其实不止存在于微软的JVM里,也存在于 IBM 的 JVM 里。

        但另一个更为重要的原因是当时的硬件技术跟不上。Applet 每次执行都要重新下载。而当时的网络技术还大多是14.4K到33.6K的MODEM。宽带虽然有但远没有现在普及。而当时 Applet 的一个致命缺点是下载时不管有用没用 Applet 里的所有内容必须全部下载。

        举例来说,你上网买个东西,结算的时候用个 Applet 来结帐。这个 Applet 必须考虑到各种情况,例如有些客户用信用卡,有些客户用 Paypal,还有些直接用礼卷之类的。这就可能要用3个不同的页面。在 Applet 必须把三个页面的代码都下载。而且还得下载所有的计算程序。而如果用 HTML,则可以根据用户的选择来下载某个页面。

        这样,Applet 的实际数据传输量就这个功能来说将是 HTML 的三倍。而很多 Applet 其实比 HTML 的传输量高了几十倍。这样闹到后来,用 Applet 的用户看着别人的网页在同样的 MODEM 上刷刷得出来,而自己的机器还在慢悠悠得下载 Applet。当然不会爽了。

        所以当 JSP-SERVLET 一出来,Applet 就基本没戏了。

      • 家园 没用的,需求导致创新

        手机浏览器在运营商们杀鸡取卵式压榨之下,能有多popular,还很难讲... 就更别提人们能拿它干什么了...

        没有一个明晰的需求,大家只能无头苍蝇般乱闯一气...

        有时候在地上撒一把草籽,然后根据踩踏痕迹再来修路,或许是最明智的选择...

      • 家园 老邓,图片看不到。

        太守那个还没消化呢,您这一眨眼又扔一篇出来。继续潜水学习之

    • 家园 【原创】【16】作为浏览器方言的JavaScript

      【16】作为浏览器方言的JavaScript

      点看全图

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

      Figure 1. The Tower of Babel

      Courtesy http://www.worldofanarchie.com/portfoliof/gbyef/tower-of-babel.jpg

      旧约-创世纪-第11章 1-9,(Genesis [11:1-9])

      “1 那时,天下人的口音,言语,都是一样。 2 他们往东边迁移的时候,在示拿地遇见一片平原,就住在那里。 3 他们彼此商量说,来吧,我们要作砖,把砖烧透了。他们就拿砖当石头,又拿石漆当灰泥。 4 他们说,来吧,我们要建造一座城和一座塔,塔顶通天,为要传扬我们的名,免得我们分散在全地上。 5 耶和华降临,要看看世人所建造的城和塔。 6 耶和华说,看哪,他们成为一样的人民,都是一样的言语,如今既作起这事来,以后他们所要作的事就没有不成就的了。 7 我们下去,在那里变乱他们的口音,使他们的言语彼此不通。 8 于是,耶和华使他们从那里分散在全地上。他们就停工,不造那城了。 9 因为耶和华在那里变乱天下人的言语,使众人分散在全地上,所以那城名叫巴别(就是变乱的意思)。”

      Douglas Crockford以创世纪通天塔的故事为导言,开始了他对JavaScript的辩护。关于通天塔的读解有多种,一种读解是,神在警告人类不要狂妄,学会谦卑。另一种读解是,这段话解释了方言的起源,没有其它隐喻。Douglas把这段故事和计算机语言联系在一起,他说,“程序的核心问题在于驾驭复杂性。在应对复杂多变的需求时,如果一个程序语言不能有助于驾驭复杂系统,那么结果就是混淆不清,接踵而至的就是失败。” (http://javascript.crockford.com/popular.html)

      几十年来,人们设计了形形色色的计算机语言,为什么不设计一种广为接受的,一统天下的语言,这样人们就可以把精力集中到这种语言的普及教育,并且设计开发各种工具,使这个世界通用语言变得功能更加强大,使用更加简便?Douglas说,“我们已经尝试过了,但是所有努力无一不以失败告终”。究其原因,当一个语言要处理的应用越来越多时,需要赋予这种语言的功能也就越来越多,于是语言本身就越变越复杂,于是语言就越变越晦涩。

      “所以,我们就看到大量的专门的语言出现。这些特殊语种在应付特定范围的任务时,非常有效,这就足够了。当人们需要完成特定任务时,有合适的语言作为工具,这是天赐之福”。“语言设计的艺术在于知道如何取舍。一个好的语言所拥有的诸多功能,能够和谐地互为补充共同工作。一个好的语言不仅能够帮助我们更好地理解问题,并且有益于找到解决方案的最佳表述方式。”

      “一个好的语言的功能并不追求包罗万象,而是由有限的功能所组成。但是,哪些功能是有用的,哪些可以舍弃,却众说纷纭,没有统一意见。吸收哪些功能,让语言变得更加强大,这是永无休止的争论议题。并不是说功能不重要,问题在于我们不知道每个功能有多重要。”

      点看全图

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

      Figure 2. Douglas Crockford

      Courtesy http://ericmiraglia.com/assets/crockford-performance2.jpg

      这位Douglas Crockford是JavaScript最知名的捍卫者,同时设计了JSON,JSLint,JSMin等等与JavaScript相关的构件和辅助工具。JavaScript的发明人Brendan Eich盛赞他是Lambda编程和JavaScript的精神领袖。Doug不仅学问精湛,而且文采飞扬。Doug对于语言有广泛的研究,其中特别热衷于Blissymbol的推广。

      二战时犹太人Charles Bliss逃难到了上海,在这期间他试图学习中文。一方面他认识到象形文字的优势,同时认为要记住数以万计的中文字,实在是一件难度很大的任务。于是,他发明了几千个象形符号,以此为基础,通过组合这些基本的象形符号来表达复杂的概念。这就是Blissymbol的由来。Blissymbol不仅可以表达任何复杂的思想,而且非常容易学,甚至“比学习自己的母语还要容易”。Doug热衷于Blissymbol,同时对中国也十分友好。

      关于JavaScript,Doug写到,“大多数程序语言死于晦涩。只有少数语言,能够从一个项目组或者一个公司的试验品,扩散出去,吸引追随者。只有极少数能够成为真正重要的语言。一门语言能否变得重要,有两条途径。第一个途径是体现某些重要的编程思想,或者提供实践这些思想的平台。Smalltalk和 Scheme就是通过这个途径走向成功的范例。虽然使用这些语言的人并不多,但是众口一词的评价是,它们的设计充满睿智,即便这种设计并不迎合时尚。虽然它们本身并没有吸引很多使用者,但是对于未来的语言设计却具有深远的影响。另一个使一门语言变得重要的途径,是因为拥有众多用户而变得重要。在程序员选择编程语言时,需要考虑的因素很多。但是用什么语言来编写浏览器脚本却无需左顾右盼,因为,至少目前而言,浏览器能够接受的编程语言,别无选择,只有 JavaScript。”

      这真是一段坦荡得让人吃惊的评论。JavaScript之所以重要,完全是源于它是众多浏览器唯一接受的语言。换而言之,如果没有这样的垄断地位,JavaScript也许就不会拥有如此众多的用户,没有众多的用户,而且也没有新颖的编程思想作为灵魂,JavaScript或许就不再是一门重要的语言。

      Python,Ruby等等语言是否能够替代JavaScript的地位呢?从技术上讲,是完全可能的。为什么JavaScript会占据垄断地位呢? Doug的解释是这样的,与前面的论述一样,坦荡得令人佩服。

      “ 为什么这样一个有着明显缺陷的语言,会成为Web唯一的编程语言呢?Brendan Eich在Netscape任职的时候,成功地让他那个婆婆妈妈的领导,认识到Navigator浏览器需要一个脚本语言,而且只有重新发明一门新语言才能胜任浏览器脚本这个工作。于是,一门新语言就开始匆匆忙忙地设计,匆匆忙忙地实现,而且压根就没有考虑是否能够延用现有的其它语言,去担当浏览器脚本这个工作。事后不久,微软的IE浏览器项目组急于争夺Netscape的市场份额,他们逆向复制了Netscape的语言,全盘照抄,泥沙俱下。其它浏览器开发商也追随微软的做法,盲目紧跟。并没有什么标准强制浏览器必须实现JavaScript,但是JavaScript无意中成为各个主流浏览器的唯一的通用的脚本语言。没有谁仔细深入地审视过这门语言本身,以及它所针对的问题范畴,也没有甄别它是否能够称职地解决这些问题,更谈不上设计是否完备。 Netscape仓促中捏合了这门语言,然后它被复制到其它浏览器中去。当我们回顾JavaScript产生的背景,以及它成为事实上的Web编程语言的标准的整个过程,我们有理由相信这门语言一定糟糕透顶。”

      “尽管JavaScript存在惊人的缺陷,当我们深入分析这门语言的时候,会发现其实它的内核,具有非常优秀的品质。当我们剥去污秽的外壳,JavaScript的内里,是富于表现力的,功能强大的编程语言。这门语言被出色地应用到很多Ajax函数库里,操控XML-DOM,支持Web页面的交互,提供应用服务的平台。Ajax之所以流行,是因为JavaScript不仅能够完成任务,而且表现出色,令人惊讶。”

      在Doug看来,JavaScript的精髓在哪里呢?在“JavaScript, the Good Parts” (published by O'Reilly) 这本书的第10章,Doug列举了三条,

      1.Functions as first class objects

      作为一类对象,JavaScript的函数可以像数值或者字符串那样,被动态地创建,存储,传输以及返回(return)。Java的method不是一类对象。一个Java method结束运算时,可以返回数值或者对象,但是无法返回另一个method。C的函数也不是一类对象,但是可以通过函数指针(function pointer)迂回达到类似功效,所以C的函数又被称为二类对象。

      2.Dynamic objects with prototypal inheritance

      在大多数Object-Oriented语言里,既有class,又有object,class是object的抽象蓝图,规定了属性和函数。譬如你我他都是人,但凡是人都有头脑和四肢,这就是属性,但凡是人都能做一些思考和运动,这就是函数。但是JavaScript取消了class,所以在 JavaScript的语汇里,不存在“人”这样抽象的class,JavaScript从不说“他是一个人”,而只是说“他与我很像”。

      取消class的好处在于精简了语言的复杂性,但是麻烦在于套用设计定式(design pattern)时,JavaScript就显得比较笨拙。Doug的文章成功地说服了大家,并不是JavaScript语言本身在表述Design pattern时显得笨拙,而是我们大多数人更习惯于传统的OO语言,习惯于既有class也有object,而不习惯于没有class的情况。

      3.Object literals and array literals

      JavaScript表述object和array的方式非常简练,同时这种表述方式使object和array的数据读取,编辑以及其它操作也干净利索。这种表述方式,直接促成了JSON数据传输格式的产生。

      Doug 的三条分析都对,但是斗胆冒犯一句,似乎没有搔到痒处。正如前文中Doug坦率承认的那样,JavaScript的卖点是对于浏览器的操控功能,而不是语言本身的巧妙。但是令人失望的是,Doug为JavaScript辩护的重心,在于区别JavaScript语言本身,与寄生于这个躯体之上的污秽的附属物。他说到,

      “JavaScript是一个令人惊叹的语言,但不是好得让人惊叹,而是糟糕得让人惊叹。这个令人惊叹的本质,成就了它的恶名。JavaScript与 DOM,尤其是DOM那些既可怕又可恶的APIs纠缠不清。人们不清楚JavaScript与DOM的分界在哪里,人们喋喋不休地谈论如何改进 JavaScript,但是这些改进本身,对于web开发而言,与事无补。这个语言肩负着太多太多功能,其中包括很多彼此难以和谐共存的,以及设计时就存在先天缺陷的功能。这个语言太冗长,就像约瑟夫皇帝评论Mozart的音乐那样。”

      所以,Doug辩论的目的,是要还JavaScript一个清白,找还清白的方式,是剥离寄生于JavaScript的内核的DOM操控,HTML事件处理等等,彼此难以和谐共存的,以及设计时就存在先天缺陷的那些功能。

      问题是,即便我们有了一个脱离污秽的冰清玉洁的JavaScript,充其量,我们又多了一个比Python和Ruby更好的脚本语言。但是这不是我们所需要的,我们需要的是如何高效地操控浏览器,换句话说,我们需要的正是那些污秽的附属物,具体说来,

      1. 如何捕捉发生浏览器页面的事件,譬如鼠标移动,点击和输入等等,对应DOM-tree的哪一个节点。

      2. 如何修改编辑DOM-tree,尤其是多个节点或者子树的相关互动。

      3. 如何调用浏览器外部函数,以及如何让外部函数调用浏览器内部指令。

      Brendan Eich当年游说Netscape的领导时说得对,当时没有哪一个现成的语言具有上述功能,与其扩充现有语言的功能,不如另行发明一个新的语言,这个新的语言就是JavaScript。

      我们今天反思JavaScript的目的,并不是讨论这门语言好不好,如何改进。我们要大胆地问一句,究竟有没有必要存在这门语言,对于操控浏览器而言,或许我们需要的是protocol,而不是language。如果说互联网浏览器的历史积淀很沉重,积重难返,那么对于手机浏览器而言,大可轻装上阵,不必重蹈历史的覆辙。

      关键词(Tags): #硅谷评论
分页树展主题 · 全看首页 上页
/ 40
下页 末页


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

Copyright © cchere 西西河