转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> JAVA开发 >> 正文
抢先体验“野马”J2SE6.0         ★★★★

抢先体验“野马”J2SE6.0

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1329 更新时间:2009/4/22 23:33:19

  J2SE5.0于2004年9月发布.它的继承者,Java Platform,Standard Edition(J2SE6.0),代号"野马Mustang", 将于2006年上半年发布,"野马"的发布通过Java Community Process作为JSR-270。这个新版本的主题继J2SE5.0的主题和增加了一些新特性。

  Compatibility and Stability
  Diagnosability, Monitoring, and Management
  Ease of Development
  Enterprise Desktop
  XML & Web Services
  Transparency

  尽管"野马"直到明年才能使用,你没有必要等到明年开始使用"野马"代码,Sun每周发布了整个"野马"资源代码,javadoc和二进制快照在 Mustang project home page(在java.net网络),这些使你在今天就能使用Java下一代平台.

  下面介绍以下J2SE6.0 新特性

  在Java 6的java.swt包下提供了SystemTray和TrayIcon类,这两个类可以实现系统托盘功能,下面让我们看看如何去实现系统托盘。这是我们要实现的流程:捕获关闭窗口事件、隐藏窗口、显示托盘图标,鼠标右击托盘图标、显示弹出菜单(自动)、选择菜单的显示窗口项,再显示窗口、隐藏托盘图标。

  在进行编码之前让我再了解一下SystemTray和TrayIcon这两个类。每一个Java应用都会包含一个SystemTray实例,这个不需要你去实例化,你可以通过SystemTray.getSystemTray()获取,接下来我们就要在SystemTray中添加TrayIcon,这样在托盘区就会显示一个新的托盘图标。TrayIcon有四部分组成:名称、图标、弹出菜单和事件,所以我们将这四方面做好就可以完成其既定的功能。

  下面我们建立一个JFrame的应用,这个应用包含一个TrayIcon对象,当主窗口被关闭时就显示该托盘图标,当点击托盘图标时再显示程序主窗口。


public class MyFrame extends JFrame
{
private TrayIcon trayIcon;


public MyFrame()
{
setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
if (SystemTray.isSupported())
{
setVisible(false);
minimizeToTray();
} else
{
System.exit(0);
}
}
});
JPanel root = new JPanel();
JButton exitButton = new JButton("ok");
exitButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
root.add(exitButton);
getContentPane().add(root);
pack();

initTrayIcon();
}


public void minimizeToTray()
{
SystemTray tray = SystemTray.getSystemTray();
tray.add(trayIcon);
}


private void initTrayIcon()
{
Image image =
Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("/logo.png"));
PopupMenu popup = new PopupMenu();
MenuItem exitItem = new MenuItem("Show");
ActionListener showListener = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
setVisible(true);
SystemTray.getSystemTray().remove(trayIcon);
}
};
exitItem.addActionListener(showListener);
popup.add(exitItem);
trayIcon = new TrayIcon(image, "MyTray", popup);
trayIcon.addActionListener(showListener);
}


public static void main(String[] args)
{
MyFrame frame = new MyFrame();
frame.setTitle("MyFrame");
frame.setVisible(true);
}
}

  在initTrayIcon()方法中,我们创建一个TrayIcon,提供文本,图标和一个弹出菜单,同时监听默认事件(Windows下双击托盘图标会触发这个事件)。

  在窗口关闭的事件处理方法中,我们隐藏主窗口,然后在SystemTray中添加trayIcon对象。在响应显示主窗口的事件中,我们调用主窗口的显示方法,然后将trayIcon从SystemTray中移去,这样我们就实现了一个最简单的系统托盘的例子。

  在JavaLobby上看到一个JTaskPaneGroup例子,利用TaskPane扩充SystemTray的一些界面效果非常不错的。

附:J2SE发展演变史(作者:HongSoft 及 Will)(《程序员》)

1.J2SE:怀胎

  Java的历史可以追溯到1991年4月,Sun公司的James Gosling领导的绿色计划(Green Project)开始着力发展一种分布式系统结构,使其能够在各种消费性电子产品上运行,他们使用了C/C++/Oak语言。由于电子产品种类繁多,运行环境各不相同,使得用这些语言进行开发的软件必须为不同的电子产品而专门设计,所以项目组疲于奔命,消费性电子产品软件环境的发展无法达到预期的目标,绿色计划也陷于停滞状态。

  直至 1994年下半年,由于Internet的迅猛发展和环球信息网 WWW的快速增长,第一个全球信息网络浏览器Mosaic诞生了;此时,工业界对适合在网络异构环境下使用的语言有一种非常急迫的需求;Games Gosling决定改变绿色计划的发展方向,他们对Oak进行了小规模的改造,就这样,Java在1995年的3月23日诞生了!Java的诞生标志着互联网时代的开始,它能够被应用在全球信息网络的平台上编写互动性及强的Applet程序,而1995年的Applet无疑能给人们无穷的视觉和脑力震荡。

  但没有相应的开发库而只靠Java语言来进行开发肯定是困难重重,所以Sun公司在1996年的1月23日发布了JDK1.0来帮助开发人员的开发。JDK包括两大部分:运行环境和开发工具。而运行环境包括五大部分:核心API,集成API,用户界面API,发布技术,Java虚拟机(JVM)。Java能够在信息网络时代快速发展,得益于它独特的组成结构,它并不直接被编译成所在平台的机器语言然后执行,而是先被编译成字节码,然后才到装有JVM的硬件上运行,所以它能够跨平台运行;而且,不是一定要使用Java语言来写程序才能编译成Java字节码,我们用C/C++/javascript等语言来写程序也可以编译出JVM要求的字节码文件。在这个时期,人们使用最多的 Java API 无疑地就是 AWT,因为 JDK 1.0 时只有 AWT 称得上是一组完整的 framework,其它 Java API 都比较偏向个别的 class。

  紧跟着,Sun公司在1997年2月18日发布了JDK1.1。JDK1.1相对于旧版本最大的改进,是推出了JIT(Just-In-Time)编译器。传统的JVM收到一道字节码指令后,解释成机器码,马上执行该机器码,然后丢掉该机器码,再接收下一道字节码指令……即便是以前执行过的字节码指令,依然需要重新解释成机器码才能执行。而JIT编译器会把常执行的部分先解释好放在内存,以后再次执行该指令时,不用再解释,直接从内存中取出机器码就可以执行了,这样提高了不少的效率。

  在JDK1.1时代,Java平台分为PersonalJava与EmbeddedJava,前者比较适用于运算资源和内存丰富的设备,而资源有限者适用于后者。这样的分类明显不符合时代发展的潮流,所以,Java平台处处蕴藏着新的翻天覆地的革命……

2.J2SE1.2:诞生

  JDK1.2在1998年12月4日的隆重发布,标志着Java2平台的诞生。Java2的J2SE1.2时代是一个大变革时代,它进行了如下的三大革命:

  * 市场推广革命
  在Java1.0或者1.1中,称API库为JDK,但为了方便市场推广,Sun公司在Java1.2版以后将JDK1.2改名为J2SDK,将Java改名为Java 2。在99年Sun公司还将Java2平台分为三大块:J2SE,J2EE,J2ME。这次市场推广革命顺应了网络急速发展的潮流,对Java2平台的发展起到了很好的催化剂的作用。

  * API供应标准革命
  而随着供应商的不同,Java的API分为三大类:

  Java Core API:由Sun公司制定的基本的API,所有的Java平台都应该提供。这就是我们平常所说的Java核心类库。

  Java Optional API:由Sun公司制定的扩充API,Java平台可以有选择地提供。比如, JFC以前是Sun对JDK的功能扩展,不是Java的公共规范。Java2平台则包含了JFC技术,不需要再扩展了。

  特殊API:由特殊厂商或者组织提供的API。比如,美国法律对出口中国的加解密算法的安全强度有一定的限制,Java平台中不能包括一些安全强度较高的加密解密算法,所以部分其它国家的公司,如加拿大的BouncyCastle公司等,可以提供一些自己的安全API。

  * API制定过程的革命
  如果你有需求不能通过遵循标准的API来实现,可以向 www.jcp.org 提出制定新的API的请求,经过审核,你的请求可能被通过或者驳回;如果是被通过,则开始进入制定该API的程序。

  J2SE1.2时代进行的这些革命形成的制度一直沿用到现在,对Java技术的发展形成了深远的影响。

  除了上述的三大革命,Java2 还支持并新增了许多新特性,最受追捧的当属Swing库。Swing 是轻量级 的 API,它不但有各式各样先进的组件,而且连组件风格都可抽换。Swing 出现之后,大家很快地就不太使用 AWT 了。但请不要以为 Swing 是用来取代 AWT 的,其实 Swing 是架构在 AWT 之上的, Swing 的出现只是减少程序员直接使用 AWT 的机会,而不会让 AWT 消失。Java2 还废弃了一些API,最重要的莫过于Thread类中对suspend(),resume()和stop()等方法的废弃。由于JDK1.1的集合类库中的Vector类和HashTable类都考虑了同步,在平常的使用中影响效率,所以Java2专门添加了对应的非同步类,并完善了集合类库。

  Java2平台能够得到广泛的应用,还应归功于这个时期的一些优秀书籍,比如著名的<<Core Java2>>(卷一和卷二),该书随着JDK版本的变化已经出到第六版。

3. J2SE1.3:拓广

  Java2平台推出后,得到了市场的强烈反响,所以,在2000年5月8日推出的J2SE1.3对J2SE1.2的改进,主要是对各种已有API的加强和对新API的拓展。

  数字运算: 加入了java.lang.StrictMath,方便我们的一般的数字运算。

  新的Timer API:相信大家对其中的java.util.Timer和java.util.TimerTask一定不陌生。

  Collections包:加入了一些新的API,方便我们的使用。

  虚拟机停止钩子:J2SE1.3还加入了一个强大的功能,那就是虚拟机停止钩子(Virtual Machine Shutdown Hooks),这个功能使得我们能够在虚拟机停止时完成我们自己的操作,比如关闭网络连接或者保存会话状态或者清除临时文件等等。

  DNS服务:在JNDI接口方面,加入了一个DNS服务的实现。

  Jini实现:J2SE1.3包含了一个Jini实现,这使得我们可以方便地把诸如打印机、摄像机和磁盘驱动设备插入现有网络中,并且能自动搜索已在网上的设备可以提供的服务并享用这些服务。

  XML支持:由于计算机网络和XML技术的快速发展, J2SE1.3在Optional API中引入了Java API for XML包。

  HotSpot虚拟机:J2SE1.3引入了HotSpot虚拟机。在solaris版的JDK1.3中,已经不支持传统的虚拟机,而windows版的JDK1.3同时支持传统虚拟机和HotSpot虚拟机。

  从上面的分析可以看出,J2SE1.3主要是对J2SE1.2查漏补缺和拓展新的API。从应用领域方面考虑,J2SE1.3已经涵盖了数据库、WEB、多媒体、网络、电话、影像、加解密、图形等等大部分的信息技术领域。

  在这个时期Java2还有一个重要活动就是推出SCSL(Sun社区源代码许可)许可协议。Sun公司开放源代码项目的“女1号”Danese Cooper在1999年加入公司,负责Sun(包括Java)和开放源代码社区之间的协调工作。Sun一直尽可能在赢利和开放源代码之间寻求更好的平衡。

  在J2SE1.3时代,Java2平台得到了充分的发展,各大应用服务器在这个时代渐渐成熟并被广泛采纳,而Java2相关的培训和书籍更是如火如荼,《Thinking in Java》当属不得不推荐的一本。

4. J2SE1.4:快速

  J2SE1.4平台的推出发生在2002年2月13日,由于此前在Java平台和.Net平台间发生了规模浩大的孰优孰劣的论战,而论战中,Java平台最大的缺点就是性能问题,所以J2SE1.4平台把性能的改善放在了最重要的位置。

  HotSpot虚拟机: HotSpot虚拟机能够很大程度上提高性能,所以J2SE1.4已经不支持传统的虚拟机。现在,启动应用程序应该通过-client或者-server选项来启动,如果你还是通过-classic选项来启动,会收到这样的错误提示:”Error: Classic VM no longer supported。”
锁机制: 由于旧版的HotSpot虚拟机的锁机制会导制严重的性能和功能问题,J2SE1.4已经改写了该锁机制。

  安全API: Java Cryptography Extension(JCE),Java Secure Socket Extension(JSSE)和Java Authentication and Authorization(JAAS)这三大安全API从optional API移到了core API中。这样,J2SE1.4的安全域(SecureRandom)实现可以利用操作系统提供的安全机制,以便缩短应用程序的启动时间。同时从optional API移到core API的功能还有XML处理API和JDBC2.0 API。

  RandomAccess标记接口: 加入了RandomAccess标记接口,如果一个List实现了该接口,则表示它支持快速的随机访问,这样可以提高List访问的速度。

  LinkedHashMap: 加入了LinkedHashMap,这是一个插入排序的Map实现,但它的运行速度和HashMap一样快。

  反射: 很多产品中都要使用反射(Reflection)机制,但大家知道,反射是相当耗时的,所以,J2SE1.4中重写了java.lang.reflect.Field、java.lang.reflect.Method.invoke()、java.lang.reflect.Constructor.newInstance()和Class.newInstance()等方法,使得我们利用反射也能写出高性能的应用程序。

  64位计算: J2SE1.4支持64位计算。64位支持使J2SE1.4可以使用超过几百GB的内存,而以前的版本仅可以使用4G以内的内存。内存使用的扩大可以提高程序的运行效率。

  新的I/O API: J2SE1.4在API层面最大的变动,就是它更新了原有的java.io包,以及加入了一组更有效率更多功能的新的I/O API。旧的I/O处理是以串流(stream)的方式来存取的,以字节为单位,而新的I/O处理是以块(block)的方式来存取的。一个块可能包含了512字节,而磁盘的存取本就是一个块一个块来进行的,所以新的I/O处理方式对于底层底数据存取更自然更有效率。

  断言和日志处理: J2SE1.4版本在Java语言层面上加入了断言(assert关键字),在API层面上加入日志处理API,这些为程序的调试提供了强有力的支持 。

  从上面的分析可以看出,Java 2平台在经过数年的发展后,已经比较成熟稳定,J2SE1.4主要是对平台的性能进行较多的考虑和修改。在分布式程序方面,1.4版比1.3版的运行效率提高了一半以上;而在客户端程序方面,1.4版比1.3版的效率提高了1/3。当然,除了考虑运行效率,J2SE1.4还有其它方面的改进,如推出了一个全新的运行Java应用程序的方法Java Web Start,该方法克服了Java Applet的安全性限制的问题和Java Application的软件发布难的问题,并结合了上面两种方法的好处,为Java软件客户提供了非常友好的使用体验。

  J2SE1.4版是J2SE第一个参与了 Java共同体过程(JCP)的J2SE版本。 象Borland、Compaq、Fujitsu、 SAS、 Symbian、 IBM这样的公司,和Sun一起定义并发展了J2SE 1.4规范。在开放、良好的文档编撰与管理的过程中,形成了一个高质量的、代表了Java共同体的多样性的规范。J2SE1.4的Specification Lead是Doug Kramer。Doug Kramer是优秀的Java开发人员和著名的教育培训专家,他同时还是J2SE1.4.2的Specification Lead 和J2SE1.5的JVM的Specification Lead。

5. J2SE5.0:易用

  在2004年十月J2SE5.0发布的时候,SUN公司这样解释这次版本名称不是J2SE1.5而是J2SE5.0的原因:“从Java诞生至今已有9年时间,而从有J2SE算起也有5个年头了;在这样的背境下,将该版本号从1.5改为5.0可以更好的反映出新版的J2SE的成熟度、稳定性、可伸缩性、安全性。”

  J2SE的这次变更之重大和意义之深远,的确也值得我们为之把版本号变换到J2SE5.0。我们再看看Sun公司网站对J2SE5.0的features描述:“通过增强Java平台的力量,允许开发者更容易地使用,Java编程语言的这些改进将吸引大量各种Java开发者”,这是“Java技术发展历程的一个重要里程碑” 。从这个描述我们可以看出,J2SE5.0最大的目标是通过提供易用性而吸引各种开发者(当然包括以前的C/C++开发者) ,而它对以前版本的修改并不仅仅是API的升级,而且包括对Java语言层面的改进。

  访问环境变量: 最初的Java语言有一个访问环境变量的方法System.getenv(),但因为Java宣称的”Write Once,Run AnyWhere”特性,所以在JDK1.0中去掉了这个能够访问平台专有信息的方法。在J2SE5.0中,它又来了,并有所扩充。由此可见J2SE5.0对编程方便性的重视程度。

  泛型 J2SE5.0提供了强大的泛型机制,让程序员可以减少代码重复,这个变化应该可以吸引小部分的C#开发人员吧。

  增强的for循环 为了克服普通for循环的代码臃肿特点,J2SE5.0提供了增强的for循环,我们现在可以这样写一个for循环:


public void printAll(Coll

[1] [2]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台