- 浏览: 252542 次
- 性别:
- 来自: 厦门
文章分类
最新评论
-
topbox163:
图片显示不了
Flex 学习曲线图 -
彭利贤:
你好,想请教您一些关于flash的问题,您可以加我qq吗 59 ...
全屏flash的尺寸分析 -
jingj6:
是开源的吗?
小日本做的非常强大的一款AS3 3D引擎 -
hugh52066:
LZ牛B。
Flex 学习曲线图 -
sweed0:
a dream~~
一个让人瞠目结舌的传奇电脑高手!
作者: Bruce Eckel
Java抵触情结已经初步显现,我们已经开始看到由此引起的一些根本性转变。
Bruce Tate的一些著作集中讨论了Java的缺陷,并指出需要放弃一些还未实现的想法。诸如Jens Alfke's Thought Palace和Stephen
Colebourne's Weblog中的博客也频繁提到这个问题。当然还有Steve Jobs的著名引用(引用自iPhone):“Java不具有构建价值。人们不会再
使用Java了。它只是个巨大的累赘”。产生这种抵触的惟一原因就是,Sun始终以为Java是无所不在、无所不能。它曾经是令人叹服的,但是只有语言的设计者和提倡者能认识到其中
的问题,这种语言才能继续发展。如果这种语言已经不再成功,仍然坚持称赞它,这种行为本身就是一种否认。EJB已经对此作出了反应。EJB3小组最终承认EJB成本太高,并且也从Hibernate和Spring学习了经验,但是还不足以解决问题。大多数人似乎都
认为Hibernate和Spring比EJB3更加简单和直观,因此,对于这种过去成本过高的技术,很难再回到以前的看法了。
Java 5默认了这样一个事实:Microsoft使用C#实现了很多有趣的功能,而且Java 7中引入的特性支持这样一种思想——Java现在正与C# 3.0
玩追赶游戏。竞争是不错的,Java并没有死。它在继续发展,构建在JVM之上的新语言(如Ruby、Scala和Groovy)的出现是Java技术恢复活力
的象征。
我
们想问这样一个问题:为何Java
applet未被当作RIA(富Internet应用程序)的客户端标准在Internet上普及?这是一个非常尖锐的问题,因为Gosling及其团队
打算放弃Java(从而摒弃许多考虑不周的决策),这将会引起Internet的变革。这就是AWT和
Applets在最后时刻被抛弃的原因,据说从计划到完成花了一个月时间。Bill Venners引用了Patrick Naughton的话:“这是一个时间问题,只
需3个月时间就会波及整个Java领域。这是由我们发起的。”我之前就听说过这句话1,而且在构建编程语言时,这种态度似乎总是错误的。您
正在创建一个基本的体系结构,希望人们将会采纳和使用多年。这就是需要谨慎思索的地方,而不是冲动。
我能够明白为何Green Team持有这种态度:这是Microsoft的方式。抛出一个产品以吸引大众的目光。这个产品不必是完美的;它只需要占领市
场空间就行了。随着时间的推移,可以修复仓促推出的产品上的任何缺陷。这是一种敏捷的营销方式。这种方法适用于动态语言。曾经最流行的语言之一Visual Basic,已经发展了许多年了。Python已经修复了一些对原有代码有害的缺陷,以优
化该语言。据说,Ruby也计划这么做。但是对于包含大量代码(特别冗长的语言)的静态语言来说,修复漏洞似乎不那么奏效。所有代码都必须重新编译,而且可能被更改,但是我
认为,Java本来也可以采用Python的方法:如果不希望更改就不要更新。许多公司始终都没有更新其Java版本。
1. 1 特别是当我编写Thinking in Java 时,许多人都说“已经有太多的Java图书了,您的书不会有市场的,不值得这样做。”
Web陷入混乱
能够发现可能性固然不错,然而缺点是很难确定何时出现故障。Web的概念非常有远见,但大部分web是失败的。是的,我们已经能够使web工作
,但是很难说它“运行良好”。具体来讲,使用HTML、CSS和JavaScript的任何应用程序都难于开发并且成本昂贵,而且似乎不可能在不同浏览
器上获得相同的外观。甚至简单的页面也会因字体问题而看起来不同。
如果您使用Firefox,有多少您访问的站点由于只针对Internet Explorer (IE)创建而至少有部分内容难以读取?在我看来情况越来越糟了;我
看到更多(不是更少)站点不能很好地兼容Firefox,以至于我将认真地考虑转向IE。
CSS并没有实现它许下的美好承诺。许多年过去了,它在各种浏览器上的实现仍然不一致。只要使用HTML和CSS,您就总是想知道自己创建的应
用程序是否会在其他浏览器上产生不符合期望的效果。除IE或Firefox之外,其他浏览器的情形还会更糟。
JavaScript也在web初期出现了,但是浏览器的混战导致了JavaScript的不一致性和难于使用。Ajax的关键元素之一在于,已经有人开始解决跨
平台JavaScript问题,因此您不用考虑不同浏览器之间经常出现的不一致。这种方法存在两个问题。第一个问题是JavaScript的功能有限。尽管Ajax可以充分利用JavaScript的功能,但它的功能也非常有限。第二个问
题是,我们依靠Ajax库来处理跨浏览器问题。如果想要编写自己的代码,必须精通这些问题,而且到那时Ajax的许多功能都没有用了。Ajax极
大地改善了用户体验,但它也存在局限性,我猜想我们已经了解了Ajax将提供的绝大部分功能了。
更令人印象深刻的是Google Web Toolkit (GWT),为了加速开发过程,它将类型检查Java转换为跨平台JavaScript。首先用Java编写代码,然
后用GWT将其编译为跨浏览器JavaScript。然后,JavaScript变成了能够在所有平台上运行的中间代码。但是这让Google的智囊团不得不解决本
来不应该出现的问题。而且,如果没有所需的库,您仍然必须解决跨平台JavaScript问题,才能编写新代码。纵使GWT如此高明,我觉得它也会
被JavaScript和浏览器的内在限制搞得筋疲力尽。
我们确实看到了一些令人惊奇的基于Ajax的工具,比如GMail和其他Google工具,它们正在不断地诱惑我。这种现象非常好,但这是您希望在
web上看到的最好结果吗?您已经看到,如果没有这个限制,这些应用程序就非常接近理想结果了,即使它们不能持续工作(是的,我知道
Google工具还“处于测试阶段”)。例如,在GMail中,您按下‘r’键后应该能回复消息。有时候这是可行的,但常常行不通,这非常使人恼
火。而且更常见的情况是,当我使用像GMail这样的web应用程序时,Ctrl-C复制操作也不起作用了。Windows、Firefox、JavaScript或其他软
件中都会出现这种问题,但它似乎与web应用程序有关,而且这种情况至少持续了一年。坦白来讲,我并不关心为什么会出现问题,相信任何其
他用户也不会关心。如果这么简单的事情都出现问题,其前途不容乐观。
对于造就了如今的web的一连串错误决策,我们必须付出多少努力才能补救?
富Internet应用程序
我们想问这样一个问题:为何Java applet未被当作RIA(富Internet应用程序)的客户端标准在Internet上普及?
这
是一个非常尖锐的问题,因为Gosling及其团队打算放弃Java(从而摒弃许多考虑不周的决策),这将会引起Internet的变革。这就是AWT和
Applets在最后时刻被抛弃的原因,据说从计划到完成花了一个月时间。Bill Venners引用了Patrick
Naughton的话:“这是一个时间问题,只需3个月时间就会波及整个Java领域。这是由我们发起的。”我之前就听说过这句话1,而且在构建编程语言
时,这种态度似乎总是错误的。您正在创建一个基本的体系结构,希望人们将会采纳和使用多年。这就是需要谨慎思索的地方,而不是动。
我
能够明白为何Green
Team持有这种态度:这是Microsoft的方式。抛出一个产品以吸引大众的目光。这个产品不必是完美的;它只需要占领市场空间就行了。随着时间的推
移,可以修复仓促推出的产品上的任何缺陷。这是一种敏捷的营销方式。这种方法适用于动态语言。曾经最流行的语言之一Visual
Basic,已经发展了许多年了。Python已经修复了一些对原有代码有害的缺陷,以优化该语言。据说,Ruby也计划这么做。
但是对于包含大量代码(特别冗长的语言)的静态语言来说,修复漏洞似乎不那么奏效。所有代码都必须重新编译,而且可能被更改,但是我认为,Java本来也可以采用Python的方法:如果不希望更改就不要更新。许多公司始终都没有更新其Java版本。
安装问题
Java已经存在10年了,而且applet并不是与web交互的主要方式。我认为主要原因在于安装问题,这是另一个未被重视的Java问题。老实说,为什么我们喜欢Ajax?
这
显然不是因为JavaScript易于使用——JavaScript的跨平台问题是过去人们不愿使用它的原因。Ajax的流行是因为,我们知道客户端已经
安装了必需的软件。人们必须首先解决JavaScript的跨平台问题,但是如果Java Runtime Environment
(JRE)很容易安装,所有人都只需创建Java
applet就行了。但事实不是这样的,applet没有这么流行,因而每个人都转向使用Ajax。所以,Ajax变成了大家喜爱的RIA技术。
尽
管借助ECMAScript标准化会使情况得到好转,但是与JavaScript相比,我仍然更愿意使用Java编程,主要原因在于JavaScript
的不一致性。也许八年内当前版本的ECMAScript将会成为几乎所有浏览器的标准。但是当前版本的JavaScript已经可以使用了(尽管其实现比
较随意),并且不存在安装问题。我认为这很好地印证了一点:Java未能接手RIA语言的原因在于其安装问题。
尽管多年来已经对Java进行了各种各样的修补,但我认为根本问题在于,所有尝试解决安装问题的人都只是站在技术的角度,而没有从真正需要的角度考虑:外
部用户的体验。例如,我曾经被Linux发行版困扰,因为它的安装很麻烦。我几乎每隔一年安装一次Linux,而且一旦安装,安装程序就开始询问问题。只
有精通Linux的人才知道这些问题的答案。我甚至无从下手,因此只有放弃并在来年再尝试。然后Red
Hat诞生了(至少,我认为它是第一个关注安装体验的产品),而且安装Linux时不会询问问题,或者至少给出一些合理的默认设置。Linux正是从那时
开始流行的。(最近,Ubuntu在解决Linux的友好性问题上似乎处于领先地位。)
安
装JRE需要用户回答问题。对于精通JRE的人来说,这些问题的答案很简单或者是显而易见的,但是对于其他web用户来说,这些问题会让他们不知所措。在
文章Sun Never Sets on Java Security Updates中,InfoWorld的Ed
Foster评论并举例说明了Java的安装问题。尽管这篇文章主要是对更新的抱怨,但也对旧版本的Java很不满。Ryan
Tomayko也写了一篇博客,讨论了Java的安装问题。
Java
Network Launch Protocol (JNLP)是Java
WebStart的基础,它本来应该解决这些问题,创建易于安装的桌面应用程序。我认为JNLP未被广泛使用的原因可以在
https://aerith.dev.java.net/上找到,这是“Cool JavaOne
Demos”的一个页面。如果单击页面上的JNLP版本链接,它将开始启动、下载一些东西并询问您问题。然后就没有下文了。没有错误消息或任何信息告诉你
发生了什么。重复尝试还是会产生相同的结果,只是速度快些,因为需要的文件已经下载下来了。至少,我的体验是这样的。如果您能够正常使用,那么就更糟了
——它只能随机地在一些平台上运行,而在另一些上就不行。这样的产品如何调试呢?
使用
Java构建GUI应用程序并不是不可能,但是10年过去了,applet、Java
WebStart和常用应用程序仍然存在安装问题。10年之后,人们不再信任它了。如果10年之后不会出现这种情况,我敢说某些人会认为这个问题不值得修
复。即使他们修复了,由于用户已经有了如此多的糟糕体验,需要经过多年才能重新建立起之前的信任。
Java applet和应用程序体验
AWT
最初的用户体验沉重打击了Sun对Java的狂热吹嘘,而且我认为applet到现在还未恢复元气。结果,Java永远不会成为RIA的主流。即使在现
在,仍然不能在web站点上方便地运行Java applet。他们失败了,而且还不知道错在哪里。更糟糕的是,他们甚至会阻止Firefox打开
新窗口,直到我重新启动计算机。
对“applet已经死了”的常见回应是“它们没有死。我一直都在使用它们。”applet并不是一无是处;人们仍然在用它创建出色的产品。Java
Posse每周都会发布一个或多个applet。上面的论断应该理解为“对于web RIA来说,applet已经死了”。JRE和任何特定applet的安装过程并不
足以说服任何人将它们用于通用的web站点。
Java的缺陷同样也影响到了桌面应用程序,applet也是一样。我曾经使用过一个叫做Memorex exPressit的Java产品,它的UI非常难看而且缺陷
很多。我还使用过Logitech IO钢笔支持软件(用.NET编写的),它运行流畅而且外观漂亮,与Memorex exPressit形成鲜明对比。您也许会说
Memorex编程人员缺乏经验,但是Logitech软件只是一个运行良好的小型应用程序,无需编程人员付出任何辛苦的劳动,然而,在我用过的使用
Java编写的应用程序中,几乎没有一个易于使用。Eclipse是一款非常优秀的软件,但我觉得其背后一定饱含着“艰辛的劳动”。
Corel曾经试图使用Java创建一个文字处理程序(我忘记了他们是想移植WordPerfect还是从头开始编写)。显然他们的行动太早了,因为他们
仅具有AWT。但是如果您听过Sun的夸张宣传,就会觉得这是正确的选择。不过没关系,无论如何它还是能工作的,因为这类失败已经使人们不
敢使用Java了。
OpenOffice不是用Java编写的,而是用C++编写的。我相信这不是因为编程人员想要与C++的跨平台问题做斗争。而是因为C++快速,或许是因为
可以更直接地控制底层平台。尽管发展方向始终由Sun掌控(多年以前,我参加了一个记者招待会,Gosling在会上说“Java始终跟C++一样快或
者更快”,这句话一直困扰着我),但是Java并不能解决所有问题。
什么我们喜欢Ajax?这显然不是因为JavaScript易于使用——JavaScript的跨平台问题是过去人们不愿使用它的原因。Ajax的流行是因为,我们知道客户端已经安
装了必需的软件。人们必须首先解决JavaScript的跨平台问题,但是如果Java Runtime Environment (JRE)很容易安装,所有人都只需创建
Java applet就行了。但事实不是这样的,applet没有这么流行,因而每个人都转向使用Ajax。所以,Ajax变成了大家喜爱的RIA技术。
尽管借助ECMAScript标准化会使情况得到好转,但是与JavaScript相比,我仍然更愿意使用Java编程,主要原因在于JavaScript的不一致性。
也许八年内当前版本的ECMAScript将会成为几乎所有浏览器的标准。但是当前版本的JavaScript已经可以使用了(尽管其实现比较随意),并
且不存在安装问题。我认为这很好地印证了一点:Java未能接手RIA语言的原因在于其安装问题。
尽管多年来已经对Java进行了各种各样的修补,但我认为根本问题在于,所有尝试解决安装问题的人都只是站在技术的角度,而没有从真正需
要的角度考虑:外部用户的体验。
例如,我曾经被Linux发行版困扰,因为它的安装很麻烦。我几乎每隔一年安装一次Linux,而且一旦安装,安装程序就开始询问问题。只有精
通Linux的人才知道这些问题的答案。我甚至无从下手,因此只有放弃并在来年再尝试。然后Red Hat诞生了(至少,我认为它是第一个关注安
装体验的产品),而且安装Linux时不会询问问题,或者至少给出一些合理的默认设置。Linux正是从那时开始流行的。(最近,Ubuntu在解决
Linux的友好性问题上似乎处于领先地位。)
安装JRE需要用户回答问题。对于精通JRE的人来说,这些问题的答案很简单或者是显而易见的,但是对于其他web用户来说,这些问题会让他们
不知所措。在文章Sun Never Sets on Java Security Updates中,InfoWorld的Ed Foster评论并举例说明了Java的安装问题。尽管这篇文章主
要是对更新的抱怨,但也对旧版本的Java很不满。Ryan Tomayko也写了一篇博客,讨论了Java的安装问题。
Java Network Launch Protocol (JNLP)是Java WebStart的基础,它本来应该解决这些问题,创建易于安装的桌面应用程序。我认为JNLP未被广
泛使用的原因可以在https://aerith.dev.java.net/
上找到,这是“Cool JavaOne Demos”的一个页面。如果单击页面上的JNLP版本链接,它
将开始启动、下载一些东西并询问您问题。然后就没有下文了。没有错误消息或任何信息告诉你发生了什么。重复尝试还是会产生相同的结果
,只是速度快些,因为需要的文件已经下载下来了。至少,我的体验是这样的。如果您能够正常使用,那么就更糟了——它只能随机地在一些
平台上运行,而在另一些上就不行。这样的产品如何调试呢?
使用Java构建GUI应用程序并不是不可能,但是10年过去了,applet、Java WebStart和常用应用程序仍然存在安装问题。10年之后,人们不再
信任它了。如果10年之后不会出现这种情况,我敢说某些人会认为这个问题不值得修复。即使他们修复了,由于用户已经有了如此多的糟糕体
验,需要经过多年才能重新建立起之前的信任。
跨平台还远远不够
多年来,我一直在努力解决像Hands-On Java CD这类产品的跨平台问题。这与RIA问题是相同的,因为我希望安装过程能够尽可能简单,希望所有功能都能够无缝运转,而且不希望遇到平台问题。我的解决方案在很多情形下能够生效,但有时客户会给我发电子邮件说,这种方案在他们
的计算机上行不通,我不知道问题出在哪里。我能做的最好的事情就是让他“在其他计算机上试试”,而且这常常能解决问题……无论是什么
问题。我永远不希望听到这类问题;我只希望所有功能都能够生效。
我的主要目标是创建一个slide-and-audio内容交付系统,就像您在Hands-On Java CD ROM或Thinking in
C中看到的一样。Java曾经宣称“只需编写一次就能在任何地方运行”,它是一个很有吸引力的竞争者。不幸的是,Linux对它的支持来得太晚了(而且
Mac的支
持也比较晚)。Linux和Mac用户也许只是少数,但是他们能直言不讳地提出意见。
遗憾的是,Java不支持MP3和多媒体。正如Java Posse的Dick Wall曾经多次指出的,Java Media Framework (JMF)被忽略了许多年。在我最初
做决定的时候,没有对任何压缩声音格式的支持(与MP3相比,我更喜欢使用其他格式)。即使到现在,也只有开源软件能够支持MP3,理论上
讲很不错,但是我不想对其进行测试并找出平台问题——我希望它能够运行;我惟一希望从客户那里听到的回应是“这太好了!”
似乎惟一能够使用的只有RealPlayer,所以我使用它播放第二版的HOJ CD。但是RealPlayer在安装过程中总是试图让您购买付费版本;我必须
告诉人们如何找到免费版本。而且它非常霸道——它取代了MP3,尽管您告诉它不要这么做。
尽管如此,RealPlayer也不可靠。它的安装偶尔会出现问题,我收到了很多这样的电子邮件。我不知道问题的根源,而客户通常会认为是CD出
了问题。Daily Show使用RealPlayer多年了,它不但因为总是开始和停止而使人苦恼(所有媒体都不能预先下载,只能在线观看),而且在图
片左侧总是存在拖尾。现在Comedy Central已经转变为一个新系统,但这只能间歇性地运行。所以我只能期待它们在YouTube上发布了。
Flash解决方案
所以,这就是我的问题。可能10年之后,Java仍不能够占领RIA领域。可能Ajax只是“JavaScript本来期望的运行方式”,但是浏览器、HTML和
CSS的局限性似乎限制了它的发展空间。我们将使用什么来构建RIA?
对于我而言,我只是希望有这样一个系统,它能够解决我的所有 UI问题,而不只是一些问题。如果我打算学习它,我不希望在开始开发时却碰
壁了。这种情况已经发生很多次了。显然,惟一的解决方案是Flash。Flash总是与所有跨平台多媒体体验和用户界面相关。人们非常熟悉和喜欢Flash,而且它安装在几乎所有计算
机上。它值得信任、稳定而且可靠。
Flash的安装对于每个人来说都非常简单。不需要回答问题或执行特殊操作;它运行良好。这就是为什么它这么流行了。当前和以后的Flash版
本都会在3个平台上(是的,除了64-bit Linux,但是正在解决这个问题,而且其用户通常都有不止一台计算机,因此他们还有备选方法)同时
发布。标准的Flash安装能够播放MP3和各种视频类型,因此不用担心“编写一次就能在任何地方运行……除了用于多媒体”。
而且不可否认,Flash产生的用户界面非常友好。Flickr和Picasa都使用什么?不是Java、不是Ajax,而是Flash。Google Video是用Ajax编写
的,它肯定不能用于所有地方,因为他们购买了使用Flash的YouTube。甚至最顽固的Swing支持者也暗地里希望自己的UI能有这么漂亮,尤其是
不需要Swing要求的所有额外工作。
有一个非常不错的Flash web应用程序叫做Gliffy,它效仿了Visio(它是用OpenLaszlo创建的,我将在稍后提及)。没有人能够想到用Ajax创
建这样的软件,即使使用HTML、CSS和JavaScript模仿更加简单的Microsoft Paint的人也想不到。非常不错,但是您会认为这已经接近这些技
术的功能极限了,而Flash才刚刚开始。除了Paint克隆有点缓慢和笨拙之外,各个浏览器上的UI也不一致。即使在JavaScript和诸如Ajax、JSON、GWT和其他技术的限制内完成了令人惊讶的成就,仍然存在着限制。我们每天都要面对这些限制,但是它
们并没有消失。
解决UI问题
GUI编程的一个困难之处在于选择GUI库。有时候有一个标准库,但是不能进行更改。在Java中,我们首先使用AWT,后来证明这是错误的,因此
我们不得不忍受开发出来的Swing,直到IBM和Eclipse加入并提供了一个额外选择SWT。在Python中,有许多GUI库,包括内置的Tkinter(它克
服了安装问题)、WxPython、Qt等等。特定于Windows的库也有类似的选择,但是如果想要创建跨平台应用程序,这些库都用不了。
如果研究这些GUI库,跟我一样,您需要获取大量不是很深入的知识。每个库都需要花时间学习,每个库都有自己的特点,某些活动在一个库中
非常简单,但是在另一个库中只是有可能实现。每个库都用不同的方式看待GUI编程。我宁愿学习一种解决方案,然后用于所有的应用程序。通过这种方法,我就不用学习GUI解决方案,然后开始深入研究。理想情况下,这将会是
一个在所有平台上都产生一致结果的真正的编程语言。我相信要解决用户界面问题,需要一种专注于用户体验的特定于域的语言。对于我来说,基于Flash技术(比如Flex)是此问题的最佳解决方案
。(我正在安排与Adobe签订一份顾问协议,以帮助他们向大众培训Flex的知识。但是很久以前我就确信Flash,特别是Flex是用户界面问题的
最佳解决方案,在Adobe表示对我的帮助感兴趣之前我就开始编写这篇文章了)。
什么是Flex?
一般而言,Flash内容和应用程序是使用Flash著作工具创建的,该工具的当前版本为Flash 8 Professional(这容易混淆,但是在10年前就决
定为这个工具赋予与运行时相同的名称了)。还有一个工具称作Macromedia Director,这是一个针对CD-ROM的多媒体制作工具,它比Flash更
早,输出一种Shockwave格式的文件,这种文件在一个插件或ActiveX控件中运行,这种控件与Flash内容很相似,却是一个完全不同的控件。
Shockwave也有自己的强盛时期,而且一直都被广泛使用,特别是在游戏中;但是Flash比Shockwave更轻量型,而且应用更加广泛。
Flex是一种通过编程开发Flash应用程序的方式。它包括一种叫做MXML的说明性XML语言和一种叫做ActionScript的编程语言,前者用于用户界
面布局,后者是ECMAScript 的一个扩展集(也就是标准化的JavaScript),还包括一些额外特性,比如可选的静态类型检查。ActionScript是
一种跨多平台运行的语言,因此无需担心各个平台的差异。由于它基于ECMAScript,所以JavaScript知识能够派上用场。所有MXML组件都是用
ActionScript编写的,如果想要编写自己的组件,也可以使用它。Flex应用程序被直接编译为SWF(Flash二进制码),然后由Flash运行时进行
Just-In-Time (JIT)编译,这可以提升其速度。
成本是最初阻碍我使用Flex的主要考虑因素,主要是因为读者都不愿意或无法支付这些费用。在最早版本的Flex中,必须购买服务器版本才能
创建静态SWF。服务器版本是针对动态内容设计的,对于从数据库或类似程序创建动态SWF的大型企业来说,花这些钱当然是值得的。但是对于
只想尝试一下Flex的人来说,没有理由花这些钱。如果一般人没有一个合理的实验方法,包括创建静态SWF以从他们自己的服务器交付,那么我
将很难推荐Flex。但是,现在您可以下载免费的命令行Flex编译器创建静态SWF,也可以从您的web站点交付这些SWF,无需支付任何费用。编译器、框架和调试器
都是免费的,所以没有理由不使用Flex。
可以购买Flex Builder IDE帮助创建Flex应用程序。这是构建在Eclipse平台之上的(而不是从头创建一个新的GUI开发系统——一种明智的方
法)。它拥有我们预期的常用功能,比如自动编译、上下文帮助、调试,以及GUI布局工具。开始设计时,可以使用布局工具快速入门,但是我
发现,设计好草案之后再进行手动调优会更有用。
以下是我过去遇到的一些问题:尽管针对Windows和Mac的Flash播放器总是同时发布,但是针对Linux的Flash的发布时间会晚很多。我最初不知
道,直到我推出了Thinking in C eSeminar的第一个测试版并收到Linux和Mac用户对Flash的抱怨时才知道。通过一番调查之后,我决定向后移
植应用程序(这是可行的,而且Flash 7包含了所有需要的功能)。这对于我来说似乎是最好的解决方案,因为我不需要等到新版本的Flash发
布,而且不用担心Linux。我使用Flash的一个主要目的是让应用程序具有跨平台的透明性,以及将安装问题最小化。但是,Flash 9及其以后的版本,所有播放器的发布间隔只有数周,Flash的后续版本也会采用这种策略。因此现在您不用担心任何人抱怨了。
使用Flex构建您的UI,它一定会“正常运行”。
将Flex用作图形DS
Flex的一个最吸引人的地方是,Flash一开始就是根据UI的思想创建的。在一个非常真实的感觉中,它是一种针对图形、多媒体和UI的特定于域
的语言,而大多数其他解决方案都是一种后来才添加上UI库的语言。由于这个设计目标,Flex和Flash提供了一种用于构建用户体验的完整、无限制、灵活的工具。从编程人员的时间投资立场来看,您只需学习一
种用于构建UI的语言,无需担心以后碰到问题或限制——问题包括:
• 安装问题
• 功能限制
• 陡峭的学习曲线
可以使用许多奇特的组件——Flex Framework(免费下载的一部分)附带了超过100个组件。还有一个活跃的组件创建者市场,包括开源的和付
费的。Adobe创建了一个这样的库:Flex Charting Components(在几百美元以内),但是还有很多吸引人的图表组件。
当然,Ajax的一个最有趣的方面在于,代表“异步(asynchronous)”的“A”。这允许信息在客户机和服务器之间流动,而无需刷新整个页面
。对于Flash,Flex Data Services 提供了一个更完善的版本。这是一个用于数据管理的发布/订阅API。Flex Data Services在客户机和服务
器之间自动执行缓存和更新,无需编写额外的代码就能产生最佳的用户体验。这允许处理实时数据、构建协作应用程序,以及集成企业消息传
递。可以在单个CPU上免费使用Flex Data Services;如果您的应用程序需要多个CPU,那么您会被当作一个企业,并且需要一定的许可费用。
我之前提到过Gliffy,它是使用OpenLaszlo构建的。在Flex编译器和框架变得免费之前,OpenLaszlo非常有吸引力。但是OpenLaszlo小组已经
决定,他们将通过将DHTML与Flash结合提供大多数人能够接受的技术,这消化了DHTML的局限性。Flex吸引我的原因是,它允许我执行在常用浏
览器中不能执行的操作,而且无论在哪里,这些操作都会产生相同的结果。另外,Flex比OpenLaszlo发展更快,这是因为它利用了Flash 9中的
JIT编译器。因为现在Flex是免费的,没有理由不使用它。
桌面上的Flex
当然,如果我的梦想是能够深入学习一种GUI系统,那么这个工具会是Flex吗?因为它最初就是设计用于web RIA的?
Flex UI可以发起与它的服务器或者它选择的任何其他服务器的通信。服务器不能发起与Flex UI的通信,这一点很重要,因为可以保证安全性
(这类似于计算机上有一个开放端口)。
但是,Flex UI不仅能够与服务器通信,它还能与本地应用程序通信。因此,可以用自己喜欢的任何语言(甚至是像Python或Ruby这样的动态语
言)创建应用程序,然后使用Flex构建一个漂亮的UI。
Adobe正在开发一个叫做Apollo的新工具,这是一个跨OS运行时,它支持使用Flex创建桌面RIA。这意味着您的Flex技能可以进一步用于创建流
畅的桌面应用程序,而且它也意味着可以更轻松地构建在web和桌面上都 能运行的应用程序(我曾经见过支持其他语言来实现这个功能的昂贵
且难用的工具)。
结束语
我们显然不能等待Sun修复Java的所有问题。最终,开源Java也许会对修复Java缺陷产生巨大影响。例如,Java Media Framework (JMF)中的工
作可能会恢复。或许有一天会修复安装问题。这完全有可能,但如果您现在就需要解决问题,那么解决方案是对该语言的各部分各取所长。我们已经这么做了。您没有坚持为一个应用程序使用一个数据库;您使用一个专门的系统,比如MySQLOracle。Sun能够直接支持针对混合
Java/JRuby编程的JRuby开发。我们将会看到其他具有特殊用途的语言将会出现,用以解决专门问题。如果专门的系统能够更好地解决这个问题
,为什么要坚持为UI使用一个Java库呢?
正如TurboGears-Flex demo I created with James Ward所示,可能使用一种像Python(或者Java、Ruby、C#或其他)语言作为后端并使用
Flex构建用户界面。这甚至可以在桌面应用程序上实现(使用即将发布的Apollo工具能实现更多)。
更多信息
您可以在Adobe.com web站点和http://www.flex.org/
上了解关于Flex的所有信息。这是一个非常丰富的站点,其中包含大量示例、教程和屏幕
录像。它们甚至有一个在线Flex编译器,可以立即尝试。还有一个James Ward提供的关于使用Flex开发的深入演示文稿。还有另一个正在制作
的屏幕录像,展示了如何将Flex作为Java服务器应用程序的前端使用;当它完成之后,我会在Developer Center中通知大家。下载Flex(试用
或者购买)。您现在可以在服务器(可以在其硬件上运行Linux)上创建低成本、功能强大的Java组合,以及在客户机上创建交互式Flash界面
。
关于作者
Bruce Eckel编写了许多关于计算机编程的著作和文章。他经常举行针对计算机编程人员的演讲和讲座,他是ANSI/ISO C++标准委员会的创建成
员。他最著名的著作是Thinking in Java和Thinking in C++,适用于面向对象编程经验很少的编程人员。大多数评论家都认为这些著作比大多
数关于Java或C++的介绍性文章更有价值,而且更加适用于教学。他的这两本著作都可以免费下载。但是,他的最新著作Thinking in Java,
Fourth Edition不再提供免费版,也不提供电子版。
发表评论
-
Flex 学习曲线图
2009-12-01 22:30 7544Flex 的基础架构 关 ... -
使用Adobe Flex 3开发大型多人在线游戏
2009-09-13 20:17 2777大型多人在线游戏 (MM ... -
一款免费的Flex可视化组件Kap lab
2009-04-24 14:21 2650Kap lab 是一款基于AS3的可视化Flex组件,组 ... -
BuildMarker - 强烈推荐FlexBuilder记录Build号插件
2009-04-16 14:29 1131说来很郁闷的,一直以来,FlexBuilder 没有能记录每个 ... -
Tour de Flex 1.2 版本更新
2009-03-31 23:12 1407Adobe官方公布了Tour de Fle ... -
全屏flash的尺寸分析
2009-02-20 10:04 2507随着现在宽屏显示器的 ... -
Adobe发布Distributable Player Solution
2009-02-19 10:01 892Distributable Player Solution 一 ... -
AdvancED ActionScript 3.0 Animation中文版(更新1-3,5,9)
2009-02-19 09:43 2126想学FLEX 或者 ActionScript 3.0 的童鞋们 ... -
Flex代码格式化插件
2009-02-03 22:13 4398之前的学习笔记中有童鞋问到Flex Builder 怎么格式化 ... -
Flex一周视频培训中文翻译(Adobe官方视频)
2009-01-20 15:48 5427最近一直在关注FLEX, ... -
Flex3 CookBook 简体中文
2009-01-20 10:11 1746经过常青等人的辛勤翻译终于发布了<Flex3 CookB ... -
修改flex chart中Legend的字体样式
2009-01-16 11:17 4879最近在弄FLEX的图表, 发现CHART 中的Legend ... -
AS3及Flex的百条常用知识
2009-01-06 22:21 1782【改变输出swf的尺度,背景颜色或帧频】 在"N ... -
Flex + LCDS + Java 入门教程
2008-12-15 23:45 4886转至 http://www.riachina.com/ ... -
FDT 3.1 Beta--又一个Flash RIA开发工具
2008-08-05 09:14 2622Powerflasher最近发布了独立的FDT 3.1 bet ... -
关于使用JS的一点困惑
2008-07-21 14:30 1461最近在开发数据转换组件,需要写很多的 JavaScr ... -
Flasheezy:免费Flash资源站点
2008-07-17 22:33 1247Flasheezy 是一个提供免费Flash资源站点。 ... -
Flex4可以下载了
2008-07-16 09:06 1998刚在这里 看到了FLex4可以下载的消息。 下载地址: h ... -
迎接Flex
2008-07-14 09:41 1285原文作者:Adobe 原文链接:Get Oriented to ... -
QTP测试Flash程序的方法
2008-07-03 23:56 2874使用QTP测试Flash程序首先需要确保安装了Flex2_Pl ...
相关推荐
ria4Java结合了Java的后端开发能力和ExtJS的前端可视化技术,为开发者提供了一种高效创建富互联网应用的途径。通过可视化开发工具,开发者可以快速搭建UI,并利用Java后端处理复杂逻辑和数据交互。了解并掌握ria4...
RIA在Web应用体系结构中提供富客户端操作体验,其目标是整合桌面客户端和WEB应用程序的优势,而常用的开发技术就是如上提到的Java,JavaScript,Flash/Flex。AJAX既不是一个产品也不是一项新技术,但它确实是RIA体系...
JAVA FX官方教程:RIA应用开发 完整版文档
本教程基于“JAVA FX官方教程:RIA应用开发 完整版文档”,涵盖了JavaFX的基础知识、核心概念以及实践技巧,旨在帮助开发者全面了解和掌握JavaFX的使用。 首先,我们来了解JavaFX的基本架构。JavaFX由多个模块组成...
综上所述,邵荣先生在QCon 2009北京全球企业开发大会上的分享不仅介绍了RIA技术的发展现状和未来趋势,还通过实际案例展现了RIA技术在提高用户体验、促进社交媒体互动等方面的重要作用。这些内容对于理解RIA技术的...
HTML5和RIA网站设计pdf 网上没有的
RIA服务特别适用于需要高度交互性和实时反馈的Web应用,如在线购物系统、企业级管理系统、实时数据分析应用等。通过使用RIA服务,开发者可以构建出与桌面应用相媲美的Web应用,提供更高效、更丰富的用户体验。 总结...
- JavaFX:Java平台上的RIA解决方案,提供丰富的UI组件和图形能力。 - Microsoft Silverlight:微软推出的技术,用于创建富媒体和交互式应用程序,但目前也已被淘汰。 - HTML5/CSS3/JavaScript:现代浏览器的原生...
RIA 具有的桌面应用程序的特点包括:在消息确认和格式编排方面提供互动用户界面;在无刷新页面之下提供快捷的界面响应时间;提供通用的用户界面特性如拖放式(drag and drop)以及在线和离线操作能力。RIA具有的Web...
HTML5和RIA网站设计第二部分PDF
* 实现了房产数据的空间化和共享,提高了房产管理的效率和科学性。 * 提出了基于RIA的数据Mashup机制,提供了高效、快速的数据交互和展示。 该论文提供了一个基于RIA+REST架构的房产管理WebGIS平台,满足房产管理...
在教学资源管理系统中,RIA的优势在于可以提供流畅的滚动、拖放功能、实时更新和个性化设置等。 教学资源管理系统的核心目标是管理和组织教育材料,如课件、视频教程、习题集等。通过Flex技术,该系统能够实现以下...
Flex是Adobe公司开发的一种富互联网应用(Rich Internet Application,简称RIA)开发框架,它基于ActionScript编程语言和MXML标记语言,主要用于构建运行在Flash Player或Adobe AIR平台上的交互式、高性能的应用程序...
相比前一代ActionScript 2,AS3在语法、性能和编程模型上有了显著提升,更接近于传统的面向对象语言,如Java或C++。 #### RIA(Rich Internet Application) RIA是指利用客户端浏览器和服务器之间的交互,提供类似...
12. 课程回顾与未来展望:总结学习内容,讨论RIA技术的未来发展趋势。 通过本课程的学习,你不仅能够熟练掌握jQuery,还能具备开发高质量RIA应用的能力。无论你是前端新手还是有经验的开发者,都将从中受益匪浅。...
- **Flex与Java的结合**:《Rich Internet Applications with Adobe Flex & Java》一书详细介绍了如何利用Flex和Java技术开发RIA。该书由Yakov Fain、Dr. Victor Rasputnis和Anatole Tartakovsky等人编写,涵盖了RIA...
2. **验证和授权**:Ria Services 包含了内置的验证和授权机制,可以在客户端和服务器端进行统一的安全控制,确保数据的完整性和安全性。 3. **业务逻辑共享**:通过Ria Services,开发者可以将业务逻辑部署到...
例如,互动地图服务、在线视频平台、复杂的数据可视化工具等都是RIA技术的典型应用,它们提供了丰富的图形展示和实时的用户反馈。 **Flex作为RIA的开发利器**Flex为开发者提供了强大的组件库、数据绑定机制和MVC...
常见的RIA框架有Flash、Flex、Silverlight和JavaScript库(如jQuery、AngularJS、React等)。 1. **富用户体验**:RIAs通过动画、拖放、实时更新等功能提供更佳的用户体验,使得Web应用更具吸引力和可操作性。 2. ...