引 言
首先,我要向大家申明的是,这不是一本关于讲解JAVA基础知识的博文。因此,倘若你还是一位JAVA初学者,我的建议是你应该优先学习些JAVA基础知识。
其次,我要向大家申明的是,这也不是一本关于讲解JAVA Web开发的博文,博文中所涉及的知识,以SWING和SWT为主。因此,倘若你是一位JAVA Web开发的发烧友,本博文所要讲述的内容可能会令你有些失望,里面的知识对于JAVA Web开发可提供的参考作用较少。
最后,我还需要提醒一点,本系列博文也不是讲解SWING和SWT基础知识的书,所以,比较好的情况是你已经具备了SWING和SWT的一点基础知识。
有了以上三条说明,接下来,倘若你还准备继续往下阅读的话,我认为你应该是一位已经利用或者即将准备利用SWING或者SWT进行极富客户端产品开发的朋友。当然,倘若你不是,我仍然欢迎你阅读这系列博文,并希望这本书中提到的知识能对你有所帮助。
本系列博文是以一个真实的软件作品作为背景来讲述的。你可能已经注意到了本系列博文的标题——“阅读者之JAVA小记”,所以,你可能已经猜到这个软件作品的名称就叫做“阅读者”。如果是这样,那么,我要夸赞你太聪明了。不错,“阅读者”正是我要贯穿全系列博文各个章节的描述对象,它不是一个作者笔名,也不是一个机构名,它是作为大鸟IT工作室的第一款软件名称,是采用SWING结合SWT开发的一个极富客户端软件。
关于“极富客户端”软件,你可以在百度或者Google上随意搜索出很多内容,但却找不到一个完整准确的定义(网上有关于胖客户端和瘦客户端的详细定义)。实际上,这也正是本书想要向你表达的一个观点,对于IT知识的学习,本系列博文不赞同通过抽象的定义(即使它描述的再详细)来开始,而是认为采用轻松愉悦的博文描述方式更加贴切。因此,本系列博文对于极富客户端的知识介绍也始终保持这种风格,后面你会很容易发现这更像是在介绍一种武学宝典。
胖客户端、瘦客户端和Web客户端
我们来谈谈日常生活中大家熟知的三种客户端应用程序:胖客户端、瘦客户端和Web客户端。
胖客户端和瘦客户端是相对的,区别在于是否有大量的业务逻辑需要放在客户端。
在早期的C/S 模式应用程序中,由于主要的逻辑程序放在客户端,而服务器很多时候是指的数据库服务器,因此,在很多书籍与培训课程中,将胖客户端描述为C/S模式应用程序的客户端。
同样有趣的事情是,在早期的B/S 模式应用程序中,由于客户端浏览器的主要任务是展现信息内容,程序业务逻辑工作基本上全部由服务器承担,因此,在很多书籍与培训课程中,将瘦客户端描述为B/S模式应用程序的客户端,也就是Web客户端。
对用户来说,Web客户端看起来像简单的Web页面,它们运行在用户桌面上的一个浏览器中,只要计算机已经联网并且安装有浏览器,就可以运行这种程序。
好了,一切似乎都很合乎逻辑,这样的解释的确让人通俗易懂,但是,稍微用心的读者便会提出这样的疑问:“那么,胖客户端等于C/S模式应用程序的客户端,瘦客户端等于B/S模式应用程序的客户端,也就是Web客户端吗?”
能提出这样问题的读者是值得夸赞的!
我们得承认这个问题所表达的意思在早期的IT技术应用领域中是能得到大部分IT开发人员认同的。
在早期的系统结构设计中,人们不会选择在一个C/S结构系统中仅仅让客户端用于呈现信息内容,对于这样的应用,会选择工作模式非常固定(用户发送信息,服务器处理信息,结果页面发回给用户)的B/S结构系统。
但是,近几年,随着JavaScript的普及与Ajax的兴起,Web客户端出现了一个新的工作模式。在这种工作模式下,许多客户端-服务器的交互可以并行处理。这种透明的客户端-服务器交互允许动态更新Web页面的部分内容,而不再是比较单调的完成-发送-处理-返回-显示,将更多的程序业务逻辑工作移植到了客户端浏览器中,极大减少了服务器的开发工作量。因此,Web客户端越来越呈现出胖客户端的特点。
有人提出这样的观点,认为客户端技术正在进行螺旋式的上升发展:单机→胖客户端+服务器→瘦客户端+服务器→胖客户端+服务器,也许可以用来借鉴。
但是,无论怎样,在现有技术背景下,胖客户端绝不等于C/S模式应用程序的客户端,瘦客户端也绝不等于B/S模式应用程序的客户端,也就是Web客户端。
区别胖客户端与瘦客户端的唯一标准还是客户端与服务器分担的整个系统的程序业务逻辑工作的比重,至于这个比重的临界点,严格来说,没有办法划出绝对的界限。
这是一个瘦到什么程度或者胖到什么程度的问题!瘦到了极致可称为零客户端(有的公司的销售拿这个作为噱头)。
幸好,我们都不赞同去钻牛角尖。
当然,作为一种客户端技术,胖客户端、瘦客户端与Web客户端都存在各自的优缺点,有着各自不同的应用场景。
在设计系统时,采用胖客户端?瘦客户端?Web客户端?或者是结合使用?
我们相信根据软件的应用场景,你会做出明智选择。但是这个议题显然超出了本系列博文的讨论范围,目前,我们只集中在教你如何创作出自己的极富客户端软件作品。
极富客户端
我们先看看几种比较绚丽的客户端界面,它们来源于开源项目“Aerith”:
图1 画面的渐变与阴影效果
图2 画面的倒影效果
图3 画面的半透明效果
图4 画面的3D效果
这些效果是不是很棒呢!
这些应用程序的客户端从一开始就吸引用户并且使得用户很乐意把它们告诉他们的朋友们。这是因为这些应用程序给用户带来了很不错的用户体验让他们一直享受其中。当然,这也是极富客户端的魔力。
你该知道了所谓极富客户端就是指那些性能与图形动画效果非常出众的应用程序,这些应用程序通过更吸引人的GUI、给应用程序一个脉冲式的动态效果、使用户保持和应用程序合理流程连接的动画式转换来提高用户体验。
所以,只要你把握住了图形和动画效果,就可以创作出很不错的极富客户端程序。但是请注意,本系列博文没有试图将极富客户端这个深奥主题的所有知识描述给你,只是尽力将你带入极富客户端的设计门槛。在本系列博文的末尾会提供一些帮助建议,通过它们你可以深入到极富客户端设计领域,成为这方面的高手!