思诚科技 seecen LOGO
咨询热线:0791-87557233
  首页 |   Java EE  
关于思诚
关注官方微信

跟我学Java之Java GUI的发展和演化

来源:网络    更新时间:2014-12-3



  概览

  当Java在1995年的春天第一次发布的时候,它包含了一个叫AWT(AbstractWindowingToolkit)的库,用来构建图形用户界面应用程序。Java很有雄心的宣言--"writeonce,runanywhere"许诺:一个具有下拉菜单,命令按钮,滚动条以及其他常见的GUI控件的应用程序将能够在各种操作系统上运行而不必重新编译成针对某一平台的二进制代码,包括MicrosoftWindows,Sun’sownSolaris,Apple’sMacOS以及Linux。

  虽然最初Java是支持操作系统独立的应用程序开发,在Java提出"writeonce,runanywhere"宣言那段时间的革命导致了JavaApplet和主导桌面应用程序计划的产生。

  尽管从那以后大部分构建桌面应用程序的成就都慢慢衰退,Java构建图形用户界面的能力反倒增强了。跟踪JavaGUI的发展和演化,我们将发现3个主要的构建窗口程序库:AWT,Swing和SWT(StandardWidgetToolkit)。在这一章里我们将查看和分析这3个库中的每一个库,并且我们将一起来看一看第4个库--JFace。其实JFace不算一个真正的构建窗口程序库,而是在基于SWT之上的一个抽象层。

  AWT

  很多围绕着介绍Java技术的令人激动的地方都基于applets--一个可以让程序通过Internet发布并在浏览器内执行的新技术。用户和开发人员都热衷于斯,因为applets许诺将简化跨平台应用程序的开发,维护和发布,而这是商业软件开发中几个最富挑战性的话题。

  为了方便用Java构建图形用户界面,Sun最初提供了一个在所有平台下具有的独特Java外观的图形界面库。Sun在applet技术策略方面的首要伙伴Netscape提出applets应该维持和运行时平台一样的外观。他们希望applets在某一平台下在显示和行为上能够像其他应用程序一样。

  为了实现Netscape的"本地外观"的目标,在JDK的第一个发布版中包含了AWT这个库。AWT的缺省实现使用了"对等"机制,即每一个JavaGUI窗口部件都在底层的窗口系统中有一个对应的组件。

  例如,每一个java.awt.Button对象将在底层窗口系统中创建一个唯一对应的button。当用户点击那个按钮的时候,事件将从本地实现库传送到Java虚拟机里,并且最终传送到与java.awt.Button对象相关联的逻辑。对等系统的实现以及Java组件与对等组件之间的交流的实现都隐藏在底层JVM实现中,Java语言级的代码仍然跨平台。

  尽管如此,为了保持"writeonce,runanywhere"的许诺,Java不得不妥协和折衷。特别的,Java采用了"最小公分母"的方法,即AWT仅仅提供所有本地窗口系统都提供的特性。这就需要开发人员为更多高级特性开发他们自己的高级窗口部件,然后提供给用户不同的使用体验。

  其他的问题也减缓了人们对applets的接受和承认。Applets运行在一个安全的"沙箱"里面并且能够阻止恶意的applets对文件系统,网络连接等资源的滥用。尽管沙箱提供了安全性,但它"阉割"了应用程序。毕竟一个应用程序不能运用一个网络连接来保存一个文件是不好的。JavaGUI应用程序也不能像本地程序一样响应灵敏。这是在当前硬件平台和Java的解释性天性下预期结果。

  所以,用AWT开发的应用程序既缺少流行GUI程序的许多特性,又不能达到在显示和行为上像用本地窗口构建库开发的程序一样的目标。应该有一个更好的库来让JavaGUI取得成功。

  Swing

  于1997年JavaOne大会上提出并在1998年5月发布的JFC(JavaFoundationClasses)包含了一个新的使用Java窗口开发包。这个新的GUI组件叫做Swing,感觉到它是对AWT的升级,并且看起来对Java占据计算机世界很有帮助。对Java来说已经万事具备了:可下载的applets将是未来的软件,人们将从其他操作系统转向JavaOS,从传统的计算机转向叫做JavaStation的瘦客户端网络计算机,Microsoft将最终因为不能在桌面程序领域与之想抗衡而被废黜。虽然这些景象从来没有实现,Swing作为Javaapplets和applications的GUI库倒确实十分繁荣。

  • 上一篇文章:

  • 下一篇文章:
  •  

    0791-87557233

    重视每个来电 珍惜您的时间
    思诚者开发沙龙
    江西思诚科技有限公司  赣ICP备17006097号  CopyRight©2014 - 2018