专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Java教程 » j2se6.0:抢先体验"野马"J2SE6.0 »正文

j2se6.0:抢先体验"野马"J2SE6.0

来源: 发布时间:星期一, 2009年3月16日 浏览:0次 评论:0
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和 2进制快照在 Mustang project home page(在java.net网络),这些使你在今天就能使用Java下代平台.   下面介绍以下J2SE6.0 新特性   在Java 6java.swt包下提供了Tray和TrayIcon类这两个类可以实现系统托盘功能下面让我们看看如何去实现系统托盘这是我们要实现流程:捕获关闭窗口事件、隐藏窗口、显示托盘图标鼠标右击托盘图标、显示弹出菜单(自动)、选择菜单显示窗口项再显示窗口、隐藏托盘图标   在进行编码的前让我再了解Tray和TrayIcon这两个类个Java应用都会包含Tray例子这个不需要你去例子化你可以通过Tray.getTray获取接下来我们就要在Tray中添加TrayIcon这样在托盘区就会显示个新托盘图标TrayIcon有 4部分组成:名称、图标、弹出菜单和事件所以我们将这 4方面做好就可以完成其既定功能下面我们建立个JFrame应用这个应用包含个TrayIcon对象当主窗口被关闭时就显示该托盘图标当点击托盘图标时再显示主窗口 public MyFrame extends JFrame { private TrayIcon trayIcon; public MyFrame { DefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); this.addWindowListener( WindowAdapter { public void windowClosing(WindowEvent e) { (Tray.isSupported) { Visible(false); minimizeToTray; } { .exit(0); } } }); JPanel root = JPanel; JButton exitButton = JButton("ok"); exitButton.addActionListener( ActionListener { public void actionPerformed(ActionEvent e) { .exit(0); } }); root.add(exitButton); getContentPane.add(root); pack; initTrayIcon; } public void minimizeToTray { Tray tray = Tray.getTray; tray.add(trayIcon); } private void initTrayIcon { Image image = Toolkit.getDefaultToolkit.getImage(this.getClass.getResource("/logo.png")); PopupMenu popup = PopupMenu; MenuItem exitItem = MenuItem("Show"); ActionListener showListener = ActionListener { public void actionPerformed(ActionEvent e) { Visible(true); Tray.getTray.remove(trayIcon); } }; exitItem.addActionListener(showListener); popup.add(exitItem); trayIcon = TrayIcon(image, "MyTray", popup); trayIcon.addActionListener(showListener); } public void (String args) { MyFrame frame = MyFrame; frame.Title("MyFrame"); frame.Visible(true); } }   在initTrayIcon思路方法中我们创建个TrayIcon提供文本图标和个弹出菜单同时监听默认事件(Windows下双击托盘图标会触发这个事件)   在窗口关闭事件处理思路方法中我们隐藏主窗口然后在Tray中添加trayIcon对象在响应显示主窗口事件中我们主窗口显示思路方法然后将trayIcon从Tray中移去这样我们就实现了个最简单系统托盘例子   在JavaLobby上看到个JTaskPaneGroup例子利用TaskPane扩充Tray些界面效果非常不错 1.J2SE:怀胎   Java历史可以追溯到1991年4月Sun公司James Gosling领导绿色计划(Green Project)开始着力发展种分布式系统结构使其能够在各种消费性电子产品上运行他们使用了C/C/Oak语言由于电子产品种类繁多运行环境各不相同使得用这些语言进行开发软件Software必须为区别电子产品而专门设计所以项目组疲于奔命消费性电子产品软件Software环境发展无法达到预期目标绿色计划也陷于停滞状态   直至 1994年下半年由于Internet迅猛发展和环球信息网 WWW快速增长个全球信息网络浏览器Mosaic诞生了;此时工业界对适合在网络异构环境下使用语言有种非常急迫需求;Games Gosling决定改变绿色计划发展方向他们对Oak进行了小规模改造就这样Java在1995年3月23日诞生了!Java诞生标志着互联网时代开始它能够被应用在全球信息网络平台上编写互动性及强Applet而1995年Applet无疑能给人们无穷视觉和脑力震荡   但没有相应开发库而只靠Java语言来进行开发肯定是困难重重所以Sun公司在1996年1月23日发布了JDK1.0来帮助开发人员开发JDK包括两大部分:运行环境和开发工具而运行环境包括 5大部分:核心API集成API用户界面API发布技术Java虚拟机(JVM)Java能够在信息网络时代快速发展得益于它独特组成结构它并不直接被编译成所在平台机器语言然后执行而是先被编译成字节码然后才到装有JVM硬件上运行所以它能够跨平台运行;而且不是定要使用Java语言来写才能编译成Java字节码我们用C/C/Javascript等语言来写也可以编译出JVM要求字节码文件在这个时期人们使用最多 Java API 无疑地就是 AWT JDK 1.0 时只有 AWT 称得上是组完整 framework其它 Java API 都比较偏向个别   紧跟着Sun公司在1997年2月18日发布了JDK1.1JDK1.1相对于旧版本最大改进是推出了JIT(Just-In-Time)编译器传统JVM收到道字节码指令后解释成机器码马上执行该机器码然后丢掉该机器码再接收下道字节码指令……即便是以前执行过字节码指令依然需要重新解释成机器码才能执行而JIT编译器会把常执行部分先解释好放在内存以后再次执行该指令时不用再解释直接从内存中取出机器码就可以执行了这样提高了不少效率   在JDK1.1时代Java平台分为PersonalJava和EmbeddedJava前者比较适用于运算资源和内存丰富设备而资源有限者适用于后者这样分类明显不符合时代发展潮流所以Java平台处处蕴藏着新翻天覆地革命…… 2.J2SE1.2:诞生   JDK1.2在1998年12月4日隆重发布标志着Java2平台诞生Java2J2SE1.2时代是个大变革时代它进行了如下 3大革命:   * 市场推广革命  在Java1.0或者1.1中称API库为JDK但为了方便市场推广Sun公司在Java1.2版以后将JDK1.2改名为J2SDK将Java改名为Java 2在99年Sun公司还将Java2平台分为 3大块:J2SEJ2EEJ2ME这次市场推广革命顺应了网络急速发展潮流对Java2平台发展起到了很好催化剂作用   * API供应标准革命  而随着供应商区别JavaAPI分为 3大类:  Java Core API:由Sun公司制定基本API所有Java平台都应该提供这就是我们平常所说Java核心类库  Java Optional API:由Sun公司制定扩充APIJava平台可以有选择地提供比如 JFC以前是Sun对JDK功能扩展不是Java公共规范标准Java2平台则包含了JFC技术,不需要再扩展了  特殊API:由特殊厂商或者组织提供API比如美国法律对出口中国加解密算法安全强度有限制Java平台中不能包括些安全强度较高加密解密算法所以部分其它国家公司如加拿大BouncyCastle公司等可以提供些自己安全API   * API制定过程革命  如果你有需求不能通过遵循标准API来实现,可以向 www.jcp.org 提出制定新API请求,经过审核,你请求可能被通过或者驳回;如果是被通过,则开始进入制定该API   J2SE1.2时代进行这些革命形成制度直沿用到现在,对Java技术发展形成了深远影响   除了上述 3大革命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平台能够得到广泛应用还应归功于这个时期些优秀书籍比如著名<>(卷和卷 2)该书随着JDK版本变化已经出到第 6版 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选项来启动如果你还是通过-ic选项来启动会收到这样提示:”Error: Classic VM no longer supported” 锁机制: 由于旧版HotSpot虚拟机锁机制会导制严重性能和功能问题J2SE1.4已经改写了该锁机制   安全API: Java Cryptography Extension(JCE),Java Secure Socket Extension(JSSE)和Java Authentication and Authorization(JAAS)这 3大安全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.Instance和Class.Instance等思路方法使得我们利用反射也能写出高性能应用   64位计算: J2SE1.4支持64位计算64位支持使J2SE1.4可以使用超过几百GB内存而以前版本仅可以使用4G以内内存内存使用扩大可以提高运行效率   新I/O API: J2SE1.4在API层面最大变动就是它更新了原有java.io包以及加入了组更有效率更多功能I/O APII/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软件Software发布难问题并结合了上面两种思路方法好处为Java软件Software客户提供了非常友好使用体验   J2SE1.4版是J2SE第个参和了 Java共同体过程(JCP)J2SE版本 象Borland、Compaq、Fujitsu、 SAS、 Symbian、 IBM这样公司和Sun起定义并发展了J2SE 1.4规范标准在开放、良好文档编撰和管理过程中形成了个高质量、代表了Java共同体多样性规范标准J2SE1.4Specication Lead是Doug KramerDoug Kramer是优秀Java开发人员和著名教育培训专家他同时还是J2SE1.4.2Specication Lead 和J2SE1.5JVMSpecication 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公司网站WebSite对J2SE5.0features描述:“通过增强Java平台力量允许开发者更容易地使用Java编程语言这些改进将吸引大量各种Java开发者”这是“Java技术发展历程个重要里程碑” 从这个描述我们可以看出J2SE5.0最大目标是通过提供易用性而吸引各种开发者(当然包括以前C/C开发者) 而它对以前版本修改并不仅仅是API升级而且包括对Java语言层面改进   访问环境变量: 最初Java语言有个访问环境变量思路方法.getenvJava宣称”Write _disibledevent=>; list.add(0,i); .out.prln(“i值是”+list.get(0)); } 可变参数数目 J2SE5.0 开始支持Varargs(不固定自变量个数)J2SE5.0中还加入了以前抛弃枚举和C风格格式化输出这应该是为了吸引以前C开发者吧毕竟,在C开发中枚举和格式化输出用是太多了   并发 J2SE5.0中加入了java.util.concurrent包并向集合框架中加入了Queue接口J2SE5.0还为各种集合提供了并发情况下实现   Properties类增强 由于XML普及性应用J2SE5.0为java.util.Properties类加入了从XML文件中装载属性和把属性值存储到XML文件中思路方法   Annotation功能 J2SE5.0提供了注解(annotation)/元数据(metadata)功能相信以后大部分应用产品都将充分利用它注解而实现产品各种特性   其它 J2SE5.0还在多线程(并发机制)、安全、国际化、UI等方面进行了大规模变更使得我们能够更方便地进行Java开发   其实上面这些变更并不是我们员非要不可内容我们完全可以通过自己办法来达到这些变更实现功能但J2SE5.0目标就是让我们员能够更加方便地进行开发所以我们在基于J2SE5.0开发时应该能够明显体会到它易用性 6.展望   时至今日J2SE已经发展为个覆盖面广、效率高、易用性强技术平台但Java并没有停止前进脚步Mustang版本J2SE正在紧锣密鼓开发当中按以前惯例每两年会发布个全新J2SE版本所以Mustang开发版对应J2SE6.0发布版将在2006年完成   J2SE6.0Specication Lead是Sun公司老资格开发者Mark Reinhold我们在J2SE1.2中就能看到他影子Mark Reinhold曾经是NIO(新I/O处理) APISpecication Lead现在是SunJ2SE架构师和总工程师Mark Reinhold透露说J2SE6.0将更易于管理可以给外部管理软件Software提供更多信息它可以让调试软件Software在运行时候进行检查而不是在运行的前这样更容易找到问题所在他说J2SE6.0 将会更好地和图形用户界面集成包括微软即将发布Windows 版本Longhorn   2005年3月23日是Java技术十周年庆典日在这十年发展中Java平台吸引了 4百万开发者在网络计算遍及全球今天更是有17.5亿台设备使用了Java技术作为Java技术基础J2SE功绩不可掩没我们期望J2SE伴随Java平台路走好!

TAG: 体验 野马
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: