欢迎阅读本书。这是一本关于利用图形和动画效果创建更好、更有效和更酷的桌面应用程序的书。在2006年JavaOne会议上成功举行关于这个主题的会议后,我们开始编写这本书。这个会议研究了使用动画、高级2D效果和一些3D效果创建更丰富的应用程序。但是看起来关于这个主题我们能够讨论几天。理解为什么应该开发这样的应用程序、这些技术如何使它们工作和如何能够适当地开发支持极富客户端的效果,这些真是非常丰富的话题。.
这本书因此诞生。我们在本书中开始讨论Java基本原理、Swing、Java 2D、图形、图形用户界面(GUI)、动画、性能和基于这些基本原理的用于创建漂亮应用程序的高级效果。
欢迎加入我们。它应该很有趣。
本书组织
本书自始至终有一个连续的流程,所以读者需要按照这个顺序阅读,至少需要理解这些内容是如何安排的。本书中有许多适于随机地阅读的代码片断和讨论,但是这些内容后台的技术可能与书中早先的讨论有关。这种关系出现时通常会注明,以便可以更容易地查阅早先的背景资料。
本书的最初意图是解释我们在本书最后演示的非常酷的效果。但是,据我们所知,还没有解释Swing、图形、Java 2D渲染和动画的背景的图书,而这些内容是理解这些效果如何工作所必须的知识。所以我们从头开始。我们先研究这些领域的基本原理,你逐渐掌握它们,以便阅读到这本书的最后时可以理解所有的内容。
本书不但提供了许多可以用于创建极富客户端的时髦的示例效果,而且提供了它如何工作的所有知识,以便你可以独自继续研究。
第一部分:图形和图形用户界面基础
第一部分讲述本书其他部分始终使用的Java图形和用户界面编程的基本概念。图形和用户界面开发的全面描述超出了本书的范围,但是我们在本书中涵盖了足够使每个人熟练掌握API、技术和理解稍后章节中创建这些元素所必须的详细资料。
如果读者已经完全理解AWT、Java 2D和Swing,那么这一部分开头的内容可能有点老套。然而,当你继续阅读时,将依赖这些基本的概念。而且,本书自始至终有许多有趣的、深奥的技巧,它们应该对所有的桌面Java开发人员都有用。
第二部分:高级图形渲染
第二部分讲述Java 2D和Swing中创建极富界面时有用的更多高级主题。第二部分的前半部分讲述特定图形的合成、渐变和图像处理的技术。第二部分的后半部分讲述更多Swing相关的技术:玻璃面板、分层面板和重绘制管理器。
第三部分:动画
极富客户端不是静止不动的,它是活的。它需要移动,它需要变化。它需要灵魂以便用户知道它的存在。好看只是成功的一半,成功还需要看起来是活动的。
第三部分讲述动画的基本原理,动画可以用来为应用程序带来生命。我们讲述动画图形和GUI的一些基础,讨论Java SE核心库中有助于开发动画的现有工具,还讨论Timing Framework库,它使得在Java中开发动画更容易。
第四部分:效果
第四部分依赖本书前面讲述的所有内容。效果是极富客户端的核心,它使得极富客户端有别于纯粹的富客户端。效果分为两个类型。第一个类型是静态效果,它为了使应用程序有更丰富的外观而使用了图形技术。第二个类型是使GUI移动的动态的或活动的效果。我们还讨论Animated Transitions,这是另外一个动画效果,可以通过本书的Web站点上可下载的一个工具库激活它。这一部分的最后一章演示了如何开发一个简单的极富客户端,从最初的设计图表一直到各种效果的实现。
本书写作风格
我们为本书采用了一个非正式的编写风格,因为我们真地感觉正在和您(读者)交谈。我们两人中的一个经常在本书的段落中用到“我”这个词。这就是区分谁在编写这部分内容的一个技巧。当然,实际上没有关系,而且您可能也不在意。但是万一在意,下面是一个提示:Romain编写的章节中图像和截屏图通常更吸引人,而在Chet编写的章节中有较多的脚注和原始文本。这些区别正好反映了两个人的个性:Romain有很强的审美能力,他可以取得漂亮的图像,而Chet谈的非常多。..
读者需要具备的条件
.有Java语言和Swing的经验将对阅读本书很有帮助。本书不是这些主题的一本初级读物,而是假定读者熟悉Java和Swing。然而,即使对于高级的Swing程序员来说,Swing的一些渲染基础(对于要理解创建极富客户端很重要)可能也不是很容易明白。所以本书的前面几章解释Swing和Java 2D如何相互作用,以便创建我们在本书的其他部分研究的各种定制效果。
与本书配套的Web资源
我们已经在Web站http://filthyrichclients.org上汇集了本书相关的信息。从本书中使用的工具库的演示到关于本书的其他信息和适当的相关技术,这个站点全都有。我们已经确定在本书中肯定没有错误,但如果发生了怪事(书中出现错误),Web站点上勘误表会揭示这些错误。
Web站点代码
本书有许多演示代码。在页面中有许多代码片断。大多数情况下,这些代码都是从发布在Web站点上的演示中复制过来的。那个地方还有在本书的Web站点上查询的项目名称。每个演示项目都包含可生成和运行的源代码,通过它们可以看到实际运行的应用程序,也可以把这些代码装配到项目中来使用它们。这些演示不是微不足道的可以忽略的内容,我们希望您到本书的Web站点检查这些演示。我们在编写本书时特别开发了这些相关的演示,Web站点上软件中的内容与书中每一章的内容结合得很好。
Web站点库
本书中也使用和讲述了工具库。对于我们开发的一些演示这些库是有用的,但是更重要的是它们可以在项目中用作单独的库。
可以在其他Web站点上正在开发的项目中获得这些库,如下所示,但是本书的Web站http://filthyrichclients.org提供的版本与本书中使用的版本相匹配。书中包括下列库:
Timing Framework:这本书中有两章详细地讲述了这个库(提示:寻找名字用“Timing Framework”开头的章)。这个项目正在http://timingframework.dev.java.net开发,但是,在本书的Web站点上可以获得与本书中代码和描述相匹配的这个库的特定版本。
Animated Transitions:本书的结尾(第18章)才讲述这个库,它的名称就是“Animated Transitions”。同样,在java.net上也可以获得这个项目,虽然在编写本书时它还没有发布。但是无论如何,在本书的Web站点上可以获得与书中描述相匹配的版本。
其他项目
有许多外面的项目适宜研究寻求极富客户端,但是本书和我们的演示只分别提到和使用一些特殊的项目:
SwingLabs:本书的演示和摘录上下文中提到的许多工具在SwingLabs的Web站点上都可以获得。一定要http://swinglabs.dev.java.net上检查这些技术及其他技术。
JOGL:Java对OpenGL的绑定库为利用OpenGL API及跨Java运行的大多数平台的硬件加速编写3D应用程序和效果提供了一个途径。可以http://jogl.dev.java.net上找到JOGL。
其他Web资源
我们两人都不定期但经常更新我们的博客。通常,当需要知道更多关于图形、性能、Java 2D和Java桌面客户端技术,请访问Chet的技术博http://weblogs.java.net/blog/chet/。要查看更多令人激动的图像,请在Romain的www.curious-creature.org英文博客上检查最新的Swing演示和讨论。
在这两个Web站点上将发现非常重要的信息,这些信息很好地补充了这本书。甚至可能无意地阅读到本书结局的预览。实际上,发布这些条目时,甚至我们自己也不知道会这样。
如果喜欢阅读本书的一些脚注,请检查Chet的非正式的风趣的博http://chetchat. blogspot.com。最后,如果您可以读懂法文,请访问Romain的法文博客www.progx.org,它不可思议地把有趣的故事和编程建议结合在一起。...