掌握Adobe Flex 3,顺利走上富可视化程序开发之路
《Adobe Flex 3程序设计》前言
当Google Inc. 发布了网络应用程序(Internet Application)Gmail电子邮箱之后,大量富因特网应用程序(Rich Internet Application,简称RIA)开始涌现,很多桌面软件开发者一定想过如何转型,抓住最新的网络程序设计趋势,占领市场以获得最大化的市场价值。可是用于设计富因特网应用程序的技术与传统的HTML、JavaScript,以及各种动态网站构建语言之间存在着不同程度的密切联系,这就要求开发者必须同时运用多种网络应用程序开发语言来进行这种新的程序开发,这可能使原来习惯于开发桌面应用软件的开发者很不适应。而桌面开发者在转型过程中,对同时学习多种不同的网络程序开发语言也会感到很不习惯。这些都是可以理解的。
无论如何,我们必须时时关注软件发展的大趋势。未来的应用软件设计正在渐渐地远离桌面,取而代之的将是富因特网应用程序(RIA)和移动应用程序(Mobile Application),这一趋势是不可逆转的。想象一下,应用程序可以通过一个简单的、不须要安装的,但是功能却特别强大的客户端界面来获取用户所需求的操作,然后把数据传输到能够处理海量数据的服务器端进行处理,处理完成后再把完成的信息传回客户端界面,反馈给用户。无疑,这样的应用程序比起传统的桌面软件来,富有巨大的吸引力。
用户在使用之前,不须要经过安装和设定调试,只须使用传统的浏览器就能下载并使用网络应用程序。
用户只须使用客户端互动界面来发出操作请求,然后把复杂数据处理交给服务器来完成,这样,用户就可以把手中电脑的更多资源留给其他客户端软件进行数据处理。
用户不须要使用硬件配置要求很高的电脑来运行网络应用软件,因此,与传统软件相比,这种应用软件的市场将会更大,带来的市场收益也会更高。
网络应用程序把传统的软件制造业转型为软件服务业,帮助软件开发商减少在盗版方面的经济损失,同时为客户提供了更好的服务。通过网络应用程序,客户可以在任何能够连接网络的地点获取自己所想要的数据,这是传统应用程序无法比拟的。
阅读须知
本书多次提到“开发者”和“用户”,这两个概念的不同之处如下。
“开发者”,指的是使用Adobe Flex 3开发包进行程序设计的人员。
“用户”,指的是使用开发好的Flex应用程序的客户。
这些优点让网络应用程序更加出色,也决定了未来应用程序开发的方向。就像一班永不停顿的列车一样,软件开发技术的创新发展是没有终点站的。很难想象有哪位开发者能够停留在某一点上而不再考虑今后个人的技术发展。只有掌握最新的开发技术,才能搭上时代发展的快车,在自己的技术道路上继续向前。
读者可能会问,为什么这本书选择Adobe Flex 3来介绍,而不是其他富因特网应用程序开发技术呢?原因是,Adobe Flex 3开发技术具有许多难得的优点,最吸引人的是以下几个方面。
1. Adobe Flex 3特别容易安装,开发者可以轻松地下载和安装免费的开发包,无须通过太多复杂的安装、设定和调整就能启动开发。
2. Adobe Flex 3特别容易学习,从语法和面向对象程序设计机制等方面来看,只要开发者学习过Java或C#开发语言,就能迅速入门。Adobe Flex 3在语法方面与JavaScript非常接近,所以对于熟悉JavaScript开发技术的读者来说,学习Adobe Flex 3也不难。
3. 有些读者可能只有桌面软件开发经验,缺少有关网络应用程序开发的技术背景,因此有时可能不习惯HTML、CSS和其他相关的技术的使用,但Adobe Flex 3所提供的开发技术在语法上和Java语言非常接近,因此对于只有C#或Java开发经验的读者来说,是很容易上手的。
4. Adobe Flex 3提供的基础开发技术是完全免费的,没有任何使用限制,所以开发者完全可以选择使用免费(只是稍微原始一些)的开发环境,或是选择付费后使用集成于开源Eclipse开发环境的图形化开发界面来进行设计。这种开放性的开发环境非常令人满意。
5. Adobe Flex 3开发技术能够很容易地集成(Integrate)其他网络应用程序开发技术(如ASP、ASP.NET、PHP、J2EE和Adobe公司提供的许多网络应用程序开发技术),用以设计复杂的网络应用程序,这种自由和包容的集成特性非常值得肯定和欣赏。
6. 学习Adobe Flex 3开发技术能够帮助读者理解其他富因特网应用程序或是富可视化程序的开发技术。Adobe Flex 3使用的图形互动界面标识语言MXML,很像微软.NET开发技技中的Windows Presentation Foundation(WPF)。后者使用的图形互动界面标识语言叫XAML,学习MXML的设计原理能够帮助理解WPF的设计技术。
我想,读者只要根据本书提供的内容,循序渐进地进行学习、练习和实践,就能对以上6个要点有更深的体会。读者在完成这本书的学习之后还能感受到,使用Adobe Flex 3进行开发并不比以前使用传统的桌面软件困难,甚至还会感到更容易一些。
下面简略地谈谈本书各章的基本内容。
第1章提供的内容是如何安装Adobe Flex 3开发包,然后通过两个简单的“Hello World”例程的设计和编译,向读者介绍最基本的Flex程序开发步骤。
从第2章到第4章所提供的内容是Adobe Flex 3开发技术的基础知识。第2章主要是解释MXML标识语言的使用,第3章介绍了ActionScript基本语法的运用,第4章介绍了ActionScript所提供的面向对象程序设计技术。与同类书籍所介绍的内容相比较,这三章所提供的细节更丰富更系统化。
从第5章到第7章所提供的内容是图形化程序互动界面设计,也就是Adobe Flex 3开发包所提供的互动控件(Common UI Controls)和控件容器(Container)的使用。也像前面三章一样,这三章提供了很多细节来解释每一种互动控件的具体使用方法,在细节点评方面超越了同类书籍。
第8章介绍了控件外观、效果设计及自定义控件设计等技术基础,让读者了解这些超越控件基础运用的技术背景,为读者今后通过其他途径更深入学习相关知识铺平了道路。
第9章介绍了一些数据存储、索引,以及客户端与服务器端之间的数据交换操作。这些都是一些基本运用技巧,读者学会了这些技术就具备通过其他途径进一步自学更多相关知识的能力。
第10章介绍了模块化程序设计,资源管理和地区化设计,单元测试,编译器的使用、部署和安全性等深层技术的运用。
为了让读者能够在阅读中获得最多的收益,本书尽力把所有的内容都集中在设计技术细节的解释上,而且,对开发技术细节的介绍是通过详解程序范例来实现的。多年以前曾有一位高工对我说过,一本好的软件技术书,必须拥有大量的程序实例,尽量减少与技术细节无关的内容。在编写本书的过程中,这位高工的话成为我的创作准则。我在书中尽量避免了非技术细节的过多介绍,因为正是对技术细节的解释和点破,才能引导初学者解开种种谜团,豁然开朗,从书中得益。
使用许多程序案例来解释开发技巧的另一目的是为读者提供许许多多可以编译和演示的程序范例,让读者可以亲手编译和修改这些实例,从实践中领悟Flex程序设计的技术知识。只有这样,才会深刻理解新的知识并付诸应用,这种学习方法是“在实践中学习”(Learn by Doing)。
本书的每一章的每一节都配有一个例程,用以示范和解释这一节所涉及的设计技巧。同时会指出例程在随书光盘中的位置,读者可以把这些例程拷贝到电脑硬盘里亲手进行编译、修改和试运行。
每一例程都有一个用于构建的文件,叫做“build.cmd”。读者把整个例程的文件夹拷贝到自己的硬盘上之后,可以通过运行这一文件来编译并生成可执行文件,然后使用Flash播放器或封装Flash播放器的网页来调试新生成的Flex程序。
这本书没有介绍Adobe Flex集成化开发环境(Integrated Development Environment,也叫IDE)“Flex Builder”。这一集成开发环境并不是免费的,仅允许开发者免费试用一个月,再考虑是否要付费购买。“Flex Builder 3”一个能够安装到开源集成化开发环境“Eclipse”的插件(Plug-in),读者如果不介意花费300美元来购买这一插件的使用版权,可以通过以下网站进行购买:
http://www.adobe.com/products/flex/features/flex_builder。
我有意在编写本书的过程中都使用最简单的Vi文本编辑器,用指令框程序直接进行编译。从写作的开始到结束都没发现有任何不便迫使我必须考虑使用“Flex Builder”这一集成化开发环境。
我这种试验性的做法足以证明,读者完全可以使用文本编辑器和指令行来尝试Flex程序开发。这样做还有一个好处是能够强制读者通过阅读Adobe公司提供的开发包资料文档,更深刻更全面地理解整个开发技术的使用。
当然,了解一下“Flex Builder”优于文本编辑器和指令框程序的主要方面还是有必要的。
“Flex Builder”提供了强大的可视化设计界面,可以帮助开发者对界面进行即时程序界面编辑,保存源码的变更后能马上观察新界面是否符合规格。
“Flex Builder”又提供了完善的关键词提醒机制,这一机制可以帮助开发者更好地回避打字错误,提高开发速度。
Adobe公司还提供了一套功能强大的数据图表显示控件,可以用图表来显示对比不同数据。这不是免费的,只有购买了“Flex Builder”才能有权使用这一图表控件。
除了以上几点之外,这两种开发方式没有什么更多的区别。读者必须知道,“Flex Builder”能够为技术能力不高的非开发人员提供方便。非开发人员(例如熟悉用户使用行为的产品经理,或者是熟悉销售和用户消费意识的市场销售人员)可以使用这一工具帮助程序设计师来勾划整个程序的互动界面,再由不同的开发人员来完成互动界面以下的商业逻辑和后台数据存取操作。因此,如果不需要这种复杂的人员互动,只是为了学习这一开发技术,那么读者就可以灵活选择是否购买“Flex Builder”了。
像前面所说的,这本书只提供了一些基础的Adobe Flex3程序开发技术,只要掌握了这些知识的运用,并结合其他途径获取的设计技巧,读者就能设计出功能强大、使用方便的富因特网应用程序。建议读者在完成这本书的学习之后,最好能通过Adobe公司提供的帮助文档和第三方设计资料来继续提高自己的设计水平,毕竟一本书所介绍的内容是有限的。必须注意的是,Adobe Flex 3并不能解决富因特网应用程序设计中出现的所有问题,因此,为了能够设计出功能更加强大和美观实用的富因特网应用程序,希望读者不要把设计技术的学习局限在Adobe Flex 3程序设计上,而必须拓宽自己的视野,把学习的方向扩展到其他设计领域中去。
在本书的写作过程中,我得到了电子工业出版社博文视点资讯有限公司的大力支持,在此特别要感谢InfoQ中文站主编霍泰稳老师、博文视点的周筠老师、晓菲编辑和杨绣国编辑诚挚的支持和帮助。最后还要感谢我的妻子和我的岳父岳母,正是由于他们的鼓励和帮助,这本书才得以如愿完成。
孙晗波
2008年8月16日
于美国加州