2.4 Java
将回归桌面应用
在2005年的JavaOne大会上,Sun公司透露Java将进军传统的桌面应用。并立志在这方面挤垮微软公司。然而在过去的几年里,每个Java开发爱好者都会认为java在桌面应用上没有优势,相反具有众多缺点。最明显的缺陷是界面难看,启动缓慢。而这两点足以让Java在桌面应用上丧失立足之地。不过庆幸的是,sun公司以及开源社区正在努力的改进这两点。
与界面外观和性能息息相关的是图形库和Java运行平台JVM。先来讨论下Java的性能,一个值得期待的好消息是:即将在2008年发布的Java7将重点提高桌面应用程序的开启速度。《Inside the Java Virtual Mathine》的作者Bill Venners在他的书中这样讲到:“和其它技术(诸如C++)相比,Java程序的执行速度可能比较低,这是Java在面向网络特性上所付出的最主要的代价之一。事实上,在Java诞生后的几年中,为了获取令人满意的性能,Java的开发者们进行了最艰苦的奋斗。尽管早期使用Java的经验使得开发者断言:Java很慢,但这并不是必然正确的结论。Java或许很慢,但它并不会永远这样慢。随着虚拟机技术的不断发展,虚拟机性能将会得到大幅度提高,到那时,Java的效率甚至会和本地编译的C程序不相上下。”这是一段鼓舞众多Java爱好者的话。不过我们要理智的认识到就目前而言,甚至是在将来,Java还是难以取代C或者C++的,或者永远不可能。
接着让我们回顾下Java在图形库上的发展历史。在它最早的版本中就推出了一个完整的AWT(Abstract Windowing Toolkit)库用来开发桌面应用。这个时期最典型的代表就是applet。AWT具有一个明显的特征,那就是在所有的操作系统上如windows,Linux,Unix上都具有Java特征的界面风格,尽管很难看。之所以这样的一个重要原因是当时Sun正以“一处编写,到处运行“的承诺推广Java。
这种Applet小程序运行在一种沙箱模式下,表面上看来是比较安全的,但也是因为它的自作主张,导致某些应该具有的功能被强制的剥夺,这也是导致Applet越来越不流行的一个原因。
AWT是丑陋的,Swing的出现后,界面外观方面得到了很大的改观。Swing是在1998年伴随JFC( Java Foundation Classes)的发布而诞生的。Swing较AWT主要是在架构上有了很大的改进,它不完全使用对等架构, Swing缺省情况下采用本地平台的显示外观。然而,它并不仅仅限于此,而是还可以采用插件式的显示外观。因此Swing应用程序可以看起来像Windows应用程序,Motif应用程序,Mac应用程序甚至它自己的显示外观--"金属"
[4]。尽管如此,Swing做了大量的改进,但是还不足以让他成功。它仍然具有性能低下,界面不美观的缺点。
当Sun公司显得力不从心的时候,大名鼎鼎的Eclipse.org社区的开发者在开发Eclipse时意识到Swing和AWT都难以开发出商业应用,于是这批牛人开发出了一套自己的图形库(Google公司最近刚发布的Android中也有自己独立的图形库)。才有了现在Eclipse这样美观的界面。这个图形库被称为SWT(Standard Widget Toolkit)。它的思想是力求采用本地组件绘制图形,如果不能才使用Java的模拟机制进行绘制。这样SWT吸取了AWT和Swing的精华。在外观和性能上有了大的改进。
SWT的出现让java在桌面应用上看到了希望。在它的基础又出现了JFace,一个更强大的图形库。
2.5Java
将提升自己的多线程开发能力
Java的发明者James Gosling在谈到Java的未来时,他特别强调了并发编程的重要性。他认为,硬件在飞速的发展,而软件的发展却总是落后于硬件。在很久以前就已经出现多核技术。在不久的将来,多核会像现在的单核一样普及。这个变化必然引起软件开发的重新思考。尽管目前,很多的软件都采用了多线程技术,但是还没有达到那种“无所不用其极”的地步。Java为了对并发编程的支持,做出过一些努力。最具有代表性的就是在JDK5中新增了java.util.concurrent包,专门为并发编程提高封装的API。