灵魂腐蚀 发表于 2015-1-18 11:14:47

JAVA教程之用Java SE 6.0完成高质量桌面集成开辟

为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。  提纲:本文将以详细的实例向你展现JavaSE6在桌面开辟中所供应的一系列优异特性。

  1、弁言

  跟着JavaSE6Beta的刊行,Java开辟者不再必要本人往完成Java本机接口(JNI)即可以在其使用程序中到场桌面产物所具有的特性。这些桌面集成特性如今已成为内核的一个构成部分。

  最新的Java尺度版本6.0(代码名为Mustang)将在功效长进行一系列的改善--开辟者们可以便利地用Java处置平安,JMX,操纵体系文件,国际化和桌面开辟等一系列成绩。Sun在开辟这个版本的过程当中体现出十分主动的互助立场。他们经由过程JSR270细心地聆听开辟者的定见而且在2006年2月早些时分就刊行了一切的JavaSE源码和二进制代码。看来,Sun正在倾力打造全新的桌面开辟工具。

  相对之前的Java版本,Mustang的桌面集成才能出格受Java开辟者接待。这些新特性把良多风趣的功效到场到Java桌面使用程序的开辟中。之前,开辟比方InternetExplorer,体系托盘和邮件客户端等Java时,开辟者必需在创立如Jtray和SysTray等Java本机接口(JNI)方面年夜伤头脑。只管这类"补钉"计划可以完成既定目标,可是尽年夜部分的Java开辟者都十分企望这些特性成为中心Java平台的一部分。

  本文将具体剖析一个示例使用程序GoMustang的创立历程。从中,我将向你展现怎样利用JavaSE6在使用程序启动时显现一个Splash屏幕,如何创立体系托盘,和如何从Java外部启动本机桌面互联网扫瞄器。

  注重,为调试本文中的示例程序,你必要安装:JavaStandardEdition6Beta和ApacheAnt1.6.5。

  2、开辟情况

  (一)筹办JavaSE6Beta

  起首,你要从Sun的Java站点下载JavaSE6Beta。由于Sun已断定将在2006年的秋季正式刊行JavaSE6,并且据JSR270专家组的倡议个中的一些特性还将会作得当的改动;因而,今朝在你的桌面开辟中试用Mustang恰是时分。

  估量,终极本文中所形貌的特性不会呈现多年夜变更;以是你能够宁神利用JDK,JRE等的最新下载版本。

  起首,请确保你的桌面平台被撑持。我在WindowsXP上开辟和测试了本文的示例使用程序,且毫无成绩。

  其次,还要确保你的盘算机的Windows体系属性中的情况变量指向JavaSE6.0JDK。我把JAVA_HOME情况变量设置为JAVA_HOME=C:ProgramFilesJavajdk1.6.0。

  一旦安装完成,你应当当即反省JavaJRE的版本。假如统统顺遂,应当显现相似上面的一条动静:

C:javamustang>java-version
javaversion"1.6.0-beta"
Java(TM)2RuntimeEnvironment,StandardEdition(build1.6.0-beta-b59g)
JavaHotSpot(TM)ClientVM(build1.6.0-beta-b59g,mixedmode,sharing)
  (二)筹办Ant

  在本文中,你将利用ApacheAnt来构建示例使用程序。因而,假如你还没有这个工具,你能够从Apache网站下载并把它安装到你的盘算机上。

  然后,你可使用Ant属性来反省AntJava版本。以下的例子显现了一个不准确的Java版本:

${ant.java.version}
  这是由于Ant内置的ant.java.version体系属性被计划仅具有1.1,1.2,1.3,1.4和1.5这几个值。估量,Ant开辟小组大概很快就会更新这个属性以包括1.6;可是,当你想本人完成这一点时要出格当心。

  为了稳重起见,你可使用-debug参数来运转Ant。假如显现以下内容,则申明Ant实践上在利用一个1.6版本的JRE:

>>
DetectedJavaversion:1.5in:C:ProgramFilesJavajdk1.6.0jre
<<
  (三)安装你的开辟情况

  接上去,安装你的开辟情况。为此,最复杂的办法是下载本文响应的源码并解压。假如你把ZIP文件解压到你的C:路径下,那末你会看到以下布局的文件和目次:

c:mustang
|_build.xml
+_src
  前面,你将利用Ant构建文件build.xml来完成复制,编译,构建,打包和运转GoMustang示例使用程序。该文件包括以下几个关头的Ant方针:






  这里,方针卖力创建文件夹布局而且把文件拷贝到build文件夹;完成编译,而经由过程利用一个Manifest文件来创立一个JAR(前面将具体会商)。方针卖力启动你的使用程序,而将匡助你起首删除一切的由Ant义务所创立的文件和目次,然后从一个完整洁净的情况入手下手上面的义务。

  src目次包括3个文件:一个GoMustang.java(源码文件)和两个GIF文件(gomustang-splash.gif用作Splash屏幕,gomustang.gif用作体系托盘中的图标)。

  如今,你已打好了基本。上面,我们入手下手创立你的使用程序的Splash屏幕。

  3、Splash屏幕

  对基于桌面的使用程序来讲,Splash屏幕一向在使用程序的启动过程当中起着关头感化。一个夺目的Splash屏幕能利用户热切地企望使用程序的启动--经由过程显现行销告白,特定的功令条则,专业图像,等等。同时,它还供应给使用程序必定的工夫周期以装载请求的库文件。
在Java使用程序开辟中,完成Splash屏幕一向是一种应战性编程,由于在JVM启动和一切请求的JRE和使用程序库被装载出息序没法获得把持权。而比及一个Java使用程序失掉把持线程的时机时,显现一个Splash屏幕已太晚了。

  JavaSE6乃至同意一个使用程序在JVM启动前就能够显现一个Splash屏幕。这项功效被构建于Java使用程序启动器中--由它卖力在一个未经润色的窗口中显现一幅图象。它同意利用GIF,PNG或JPEG图像,能够是通明性或半通明的,而且能够存在动画效果。并且,JavaSE6刊行中还带有一个SplashScreen类--它同意一旦使用程序把持线程,该程序就能够操纵Splash屏幕。

  你能够用上面两种体例之一来启动一个Splash屏幕:

  1.在一个JAR的Manifest文件中指定一个详细的SplashScreen-Image属性;

  2.利用一个命令行-splash参数。

  (一)利用JAR的Manifest属性

  本文下载源码中的JAR文件包括了一个gomustang-splash.gif文件(此文件在使用程序启动时显现一个Splash屏幕)和编译类文件GoMustang.class。这个JAR文件的Manifest包括界说main()办法的类的名字和SplashScreen-Image属性(它指向gomustang-splash.gif文件)。

  上面的列表展现了Antbuild.xmlJAR义务的内容--个中指定了main-class和SplashScreen-Image属性:

...
<jarjarfile="${dist}/GoMustang.jar"basedir="${build}">
<manifest>
<attributename="Main-Class"value="GoMustang"/>
<attributename="SplashScreen-Image"value="gomustang-splash.gif"/>
</manifest>
</jar>
...
  为了看清Splash屏幕的真正运转,你能够经由过程在命令提醒符上输出antrun来实行build.xml的方针。因该程序很小,以是Java使用程序会在人眼能瞥见它之前完成翻开和封闭操纵。为此,你可使用停息3秒的编码小技能。

  一旦运转run方针,Ant应当会输入如所示的把持台跟踪信息,然后停息3秒,其间用户会看到Splash屏幕中的gomustang-splash.gif图片。


.Ant停息
  3秒后,Ant剧本完成使用程序的创立,见。


.Ant剧本完成体系托盘的创立
  一个图标将在体系托盘中被创立,由所示。


.GoMustang图标
  (二)利用命令行-splash参数

  显现一个splash屏幕的第二种办法是,利用-splash命令行参数传送splash屏幕文件名,以下所示

C:mustanguild>java-splash:gomustang-splash.gifGoMustang

  注重,为了使该命令阃常运转,你必要从c:mustanguild目次(编译class文件和splash屏幕GIF文件地点的地位)下利用Java的命令行体例。这些文件都是由Ant中的build.xml文件中的义务所创立。

  一旦使用程序取得一个线程的存取权限,你就能够利用java.awt.SplashScreen类经由过程编程存取Splash屏幕。这是一个singleton类,它供应专门的函数来改动Splash屏幕图象,检索Splash屏幕的巨细和界线,操纵有关图形对象,并最初封闭Splash屏幕。
<P>  4、GoMustang.java文件

  在持续之前,你应当先熟习一下GoMustang.java文件。这个文件界说一个单个的Java类GoMustang,而且包括以下两个关头函数:

  ・main
  ・createTrayIcon()

  你大概已猜出,main是次要的出口点-你能够存取java.awt.SplashScreenJava类以操纵Splash屏幕。在GoMustang使用程序中,你可使它停息几秒,然后经由过程挪用splashScreen.close()来封闭Splash屏幕。但是,你能够在封闭它之前来操纵该Splash屏幕。
createTrayIcon()类是这两个函数中更加使人冲动的。它卖力完成一切的风趣的事情来安装使用程序。这又触及到我们将要会商的另外一个主题:体系托盘图标。

  5、体系托盘图标

  体系托盘位于Windows的义务形态区或位于Gnome的关照区。它是在一个操纵体系的桌面UI的角落的一个很小的地区,能供应到以后运转的使用程序的可视化和间接的存取。本文所供应的Windows平台上的GoMustang使用程序可以完成当右击体系托盘图标时发生一个弹出菜单(见)。


.在体系托盘上的GoMustang的弹出菜单
  该GoMustang使用程序SystemTray有一个弹出菜单。菜单有两个菜单项:"Exit"和"LaunchBrowser"。"Exit"卖力加入使用程序,而"LaunchBrowser"卖力翻开默许的互联网扫瞄器并使其指向http://www.devx.com。

  在已往,创立可以天真把持操纵体系的桌面体系托盘的Java使用程序必要不是Java中心部分的库的撑持。为此,发生了JDIC(Java桌面集成组件),并且Sun决意把JDIC的一些组件作为JavaSE6的一部分一同刊行。相干的类java.awt.SystemTray和java.awt.Desktop形貌了这些关头组件。个中,Java.awt.SystemTray形貌操纵体系的义务形态区或关照区。

  显现在体系托盘中的图标是由java.awt.TrayIcon形貌的。TrayIcon不但形貌图象并且还形貌吸收事务的实践对象,并卖力显现提醒信息,增加弹出菜单项,显现动静,等等。你能够经由过程displayMessage(String)和setToolTip(String)函数来设置TrayIcon上的动静和提醒信息。TrayIcon还能把ActionEvents转发到经过Trayicon的addActionListener(ActionListener)函数注册的ActionListener。弹出菜单是由java.awt.PopupMenu形貌的,并且你能够经由过程addPopupMenu(PopupMenu)函数把它们增加到TrayIcon。

  上面,让我们分析一下GoMustangJava类的createTrayIcon()函数。正如在列表1(见所附源码)中的GoMustang代码的具体正文所标明的:起首,你要挪用SystemTray.isSupported()函数来反省是不是操纵体系撑持最小SystemTray功效;假如撑持的话,这个函数应当前往true。

  一旦程序晓得操纵体系撑持体系托盘功效,它就创立Exit和LaunchBrowser菜单项,并且把这些菜单项加到弹出菜单中。当用户右击体系托盘的图标时,这个菜单就会弹出。ActionListeners函数被加到Exit和LaunchBrowser菜单项上。当用户选择这些菜单项时,actionPerformed(ActionEvent)将给程序一个时机实行某种举措。这关于Exit菜单项来讲是经由过程实行System.exit(0)命令而加入使用程序;而关于LaunchBrowser菜单项来讲是经由过程指向http://www.devx.com而启动缺省的扫瞄器。注重,启动扫瞄器必要利用新的java.awt.Desktop对象(稍后再会商)。

  然后,使用程序创立一个弹出菜单对象而且把Exit和LaunchBrowser菜单项增加到弹出菜单。下一步是用一个奔马图象创立托盘图标。你可使用getClass().getResourceAsStream(filename)函数存取本文下载源码中的gomustang.gif文件并把它加载到一个图象对象中。然后,托盘图标对象就能够与弹出菜单一同创立;Action和鼠标听取器也被联系关系到托盘图标上--关于本文例程来讲,只显现一条动静。托盘图标最初被增加到体系托盘上。体系托盘是一个singleton对象,它能够经由过程SystemTray对象的getSystemTray()函数加以检索。在体系托盘上创立托盘图标的完全历程就是如许。

  如今,让我们更具体地看一下"LaunchBrowser"菜单项是怎样启动扫瞄器的。你能够剖析响应于"LaunchBrowser"菜单项的函数actionPerformed(ActionEvent)"来检察怎样利用桌面临象。请参考上面代码(列表2的一部分):

...
MenuItemlaunchBrowserItem=newMenuItem("LaunchBrowser");
ActionListenerlaunchListener=newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(Desktop.isDesktopSupported()){
actionMessage="LaunchedBrowser";
try{
trayIcon.displayMessage("GoMustang!",
"LaunchingBrowser...",TrayIcon.MessageType.INFO);
Desktopdesktop=Desktop.getDesktop();
desktop.browse(newURI("http://dev.yesky.com"));
trayIcon.setToolTip("GoMustang!");
}
catch(Exceptionexp){...}
}
}
};
launchBrowserItem.addActionListener(launchListener);
...
  在列表2(见所附源码)中最使我们感乐趣的关头对象是java.awt.Desktop类。这个Desktop类,如我们早些时分所说起的,来自JDIC。该Desktop类卖力定位和运转操纵体系特定的桌面使用程序。默许的因特网扫瞄器使用程序映照是Mozilla的FireFox;因而,在显现动静"LaunchingBrowser..."今后,desktop.browse(URI)函数将翻开一个指向http://dev.yesky.com的窗口。

  6、小结

  关于Java在桌面把持方面的开辟来讲,真正风趣的事变方才入手下手。我们朴拙期盼在Java今后的刊行版本中到场更多的桌面把持功效。
Java到底会发战成什么样,让我们拭目以待吧,我始终坚信着java会更好。以上都是俺个人看法,欢迎大家一起交流.

活着的死人 发表于 2015-1-19 17:51:40

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

透明 发表于 2015-1-24 15:13:42

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

老尸 发表于 2015-1-31 19:44:11

Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台

简单生活 发表于 2015-2-4 05:54:27

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

柔情似水 发表于 2015-2-4 13:10:29

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

若相依 发表于 2015-2-9 23:06:03

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

飘飘悠悠 发表于 2015-2-28 04:13:34

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

飘灵儿 发表于 2015-3-9 20:44:24

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧

因胸联盟 发表于 2015-3-13 05:08:47

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

谁可相欹 发表于 2015-3-13 06:59:51

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

冷月葬花魂 发表于 2015-3-20 15:27:12

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
页: [1]
查看完整版本: JAVA教程之用Java SE 6.0完成高质量桌面集成开辟