1.要注意的条件
1)合适版本的JRE已经安装
2)完整的Class
3)数据配置文件
4)可执行命令
2.JAR文件的基本操作
JAR文件实际是ZIP文件,用zip或者unzip就可以操作,但是JAR文件中含有特殊信息。jar命令是专门用来操作JAR文件的,它会自动生成一个叫做mantext的文件,保存有相关信息。

例如:

类Rivers

public class Rivers {
 public static void main(String arg[]) {
 System.out.println(Mississippi.getName());
 System.out.println(Amazon.getName());
 System.out.println(Yukon.getName());
 }
 }


-------------------------
类Mississippi

public class Mississippi {
 public static String getName() {
 return("Mississippi");
 }
 }


---------------------------
类Amazon

public class Amazon {
 public static String getName() {
 return("Amazon");
 }
 }


---------------------------
类Yukon

public class Yukon {
 public static String getName() {
 return("Yukon");
 }
 }



创建mantext
Main-Class:<空格>Rivers<回车>
指定了主函数所在类。
Class-Path:Burners.jar
当这个JAR文件运行时Burners.jar文件中所有的Class都可用。

然后使用命令创建JAR文件:jar cfm Wetlands.jar mantext *.class
当然要是有子目录Image,则可以使用jar cfm Wetlands.jar mantext *.class image
想将当前目录下面所有文件和子文件夹打成一个jar包,并且要求包中内容和当前目录中的相同,则
jar cfM Wetlands.jar *.class -C images .
若不想压缩打包,则使用 jar cfm0 Wetlands.jar mantext *.class
你可以使用下列命令直接运行JAR文件:jave -jar Wetlands.jar
显示JAR包,则使用jar tf Wetlands.jar 或者jar tvf Wetlands.jar
3.JAR文件的电子签名
私钥加密,公钥解密,主要用于电子认证。本地文件keystore保存了签名的相关信息。alias指定了证书的名字。
创建密钥对:
keytool -genkeypair -keystore .keystore -alias moosebreath -validity 3650
(十年内有效)
签署JAVA程序:
jarsigner -keystore .keystore Wetlands.jar moosebreath
检验是否签署:
jarsigner -certs -verify Wetlands.jar
4.Web Start发布
1)配置web服务器:打开Apache的配置文件httpd.conf,找到AddType添加如下一行:AddType application/x-java-jnlp-file .jnlp
2)将程序打JAR包
3)创建JNLP文件——JNLP应用程序能使应用程序像标准的Java applets一样通过Web浏览器访问,并且在客户主机上JNLP可以限制为一个安全的“沙盒(sandbox)”。不像applets,JNLP应用程序不运行在客户的浏览器内部;相反,Web浏览器只作为应用程序的一个起点或者安装工具。 以下是一个例子,可以用做模板:

1. <?xml version="1.0" encoding="GBK"?>
 2. <jnlp
 3. <!-- 文件兼容的JNLP版本-->
 4. spec="1.0+"
 5. <!-- 程序的绝对位置,其它的相对URL都相对于这个位置 -->
 6. codebase="http://210.43.32.199/apple/"
 7. <!-- 本文件的相对URL -->
 8. href="draw.jnlp">
 9. <information>
 10. <!-- 程序标题 -->
 11. <title>画图</title>
 12. <!-- 程序制作者 -->
 13. <vendor>Kevin Ma</vendor>
 14. <!-- 关于这个程序的更多信息的Web页,这个页的URL会被显示在JAWS的应用程序管理器上 -->
 15. <homepage href="http://210.43.32.199/apple/drawpic.html/"/>
 16. <!-- 下面元素会在JAWS上显示-->
 17. <description>画图</description>
 18. <description kind="short">
 19. 一个简单的画图软件
 20. </description>
 21. <!-- 指向一个jpg或gif文件的URL,它会被作为一个图标显示在JAWS的应用程序管理器中-->
 22. <icon href="images/draw.gif"/>
 23. <!--声明程序在被下载后,不用再访问服务器即可运行-->
 24. <offline-allowed>
 25. </information>
 26. <security>
 27. <!-- 请求给予足够的权限对本地机进行访问,这就要求所有的jar
 28. 都要被签名。对于不访问本地机的程序,此项并非必需 
 29. <all-permissions>
 30. -->
 31. </security>
 32. <resources>
 33. <!-- 指定程序支持的JRE版本。可以指定多个,会按优先顺序检查 -->
 34. <j2se version="1.4"/>
 35. <!-- 指定包含代码和数据的jar文件的相对URL。 -->
 36. <jar href="draw_applet.jar"/>
 37. <!-- 指定将被按需下载的jar文件 
 38. <jar href="lib/backgrounds.jar"/>
 39. -->
 40. </resources>
 41. <!-- 指定启动程序的主类 -->
 42. <application-desc main-class="draw.DrawPic"/>
 43. </jnlp> 
 4)为这个JNLP创建一个链接:
 <a href="colorPicker.jnlp">ColorPicker</a>
 5)将你的应用程序上传到服务器上



5.注释
用途:documentation、编译器指令、运行时检查。

例子一:

public class AnnotateOne {
 @Overrides
 public String toSting() {
 return("One");
 }
 }


这个在编译的时候会检查是不是override了方法,要是没有则会出错。

并且编译时可以消除某一个警告:

import java.util.Vector;

 @SuppressWarnings("unchecked","unused","semicolon")
 public class AnnotationFour {
 void show() {
 Vector vec = new Vector();
 vec.add("one");
 }
 }



你可以定义自己的注释:

import java.lang.annotation.Documented;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;

 @Documented
 @Retention(RetentionPolicy.RUNTIME)//annotation的作用期间
 @interface Copyright {//它类似于新创建一个接口类文件
 String cstr() default "Copyright (c) 2007-2008";
 String comp() default "gnuhpc";
 int version() default 1;
 }

 @CopyrightVTC
 public class AnnotationFive {
 public int returnOne() {
 return(1);
 }
 }