服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

jar进阶 (上)


  先对jar作一下简要介绍,jar是一种与平台无关的文档格式,全称为java archive,翻译成中文叫java 归档,咋一看,它相当于一种压缩格式,可以把众多的文档合成一个文件,就象zip,ace等,但它所被赋予的能力远不止这些,

  首先,它与平台无关,并且兼容性好,就是说不管是windows,还是unix,都是通吃,甚至是ie和netscape之间的不兼容,也能轻松化解,这和java的精神是很相符合的。

  再来,它使用户可将多个java小应用程序合并为一个文件作为单个的简单 http事务下载到浏览器中,从而大大提高浏览速度,这在越来越讲究速度的www世界里是很相当具有诱惑力的。

  它还提供对applet作者的认证,这只要对jar进行数字签名便可。

  更为精彩的是,如果浏览器信任该认证,那么作为可信任的applet,它便能访问非信任的applet禁止访问的资源,如本地硬盘和网络。

  还有一个不似功能的优点,背靠sun,自然是好事天天有。

  总而言之是优点多多,前途无量,从它的诞生开始,它就在java的应用中的占着越来越重要的地位,不久jar将成为分布java applet的标准方法。

  这么好的东东,是不是有些相见恨晚,那现在便开始为jar的进阶准备一些工具,当然必要的是jdk,现在普遍用的版本是1.3,那么就去下一个吧,sun的主机太远,速度也一般般,关键是e文的,目录又深。国内有些网站也提供下载的,速度也挺快,在搜索引擎里面查找一下便有一堆了。最好是准备一个可视化的java编程环境,在windows平台下推荐jbuilder4,inprise也就borland公司出的,除开资源占得厉害,有些垃圾代码,也挺不错的。至于jbuilder4的下载,也还是去搜索一下吧,还有要对jbuilder熟悉一下,www.94soft.com里面有jbuilder书籍下载,有兴趣就去下一个看看,挺不错的。

  现在开始jar的第一步,jdk提供了jar的工具,就在java所在目录的bin目录下有一个jar.exe的应用程序,可以试着新建一个jar文件:

  jar cvf test1.jar *.class image

  c参数表示在标准输出上创建新归档或空归档,

  v参数表示把添加了一些什么的信息在标准输出上显示,

  f 参数在这里表示用什么样的jar文件名,

  在jbuilder里面新建一个jar更加方便,wizards菜单的archive builder一步步往下选就可以了。

  为了更好的钻研jar,就从在jbuilder做个applet开始吧,做这样一个东西,在一个面板上有一个按钮,右键单击按钮将弹出一个菜单。

  新建一个工程test1.jpr

  再新建一个applet applet1.java

  接下来在面板上摆上一个java.awt.button,

  再摆上一个java.awt.popupmenu,在popupmenu的编辑面板输入几个选项。

  这样控件摆完了,接下来是写相应的事件,源程序如下:

package test1;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class applet1 extends applet {
boolean isstandalone = false;
popupmenu popupmenu1 = new popupmenu();
menuitem menuitem1 = new menuitem();
menuitem menuitem2 = new menuitem();
menuitem menuitem3 = new menuitem();
button button1 = new button();
/**get a parameter value*/
public string getparameter(string key, string def) {
return isstandalone ? system.getproperty(key, def) :
(getparameter(key) != null ? getparameter(key) : def);
}
/**construct the applet*/
public applet1() {
}
/**initialize the applet*/
public void init() {
try {
jbinit();
}
catch(exception e) {
e.printstacktrace();
}
}
/**component initialization*/
private void jbinit() throws exception {
menuitem1.setlabel("1");
menuitem2.setlabel("2");
menuitem3.setlabel("3");
button1.setlabel("button1");
file://这是button1的监听事件,
button1.addmouselistener(new java.awt.event.mouseadapter() {
public void mousepressed(mouseevent e) {
button1_mousepressed(e);
}
});
popupmenu1.add(menuitem1);
popupmenu1.add(menuitem2);
popupmenu1.add(menuitem3);
this.add(button1, null);
add(popupmenu1);

}
/**get applet information*/
public string getappletinfo() {
return "applet information";
}
/**get parameter info*/
public string[][] getparameterinfo() {
return null;
}
void button1_mousepressed(mouseevent e) {
/*通过inputevent.button3_mask对右键的判断
要判断是左键用inputevent.button1_mask,
*/
int mods=e.getmodifiers();
if((mods&inputevent.button3_mask)!=0)
{
popupmenu1.show(button1,e.getx(),e.gety());
button
}
}
}
file://applet1.java is over


  运行一下,确实可以看到右键弹出了相应的菜单。

  我们现在可以打包并发布了.

  选择wizards菜单的archive builder,或者通过new 的archive builder来可视化的创建一个包含这个applet的jar文件。

  需要注意的几点是,

   1.archive type 选applet,这个选项并不重要,只是相当于通知一下接下来做的是一个applet的jar文件包

   2.project class and resources选include required class and known resources ,这句理解为待会儿生成的jar文件包中包含被调用的类文件和需要使用到资源文件。

   3.required classes and resources 需添加test1的applet1,新建的jar文件包默认情况下并不包含所应用到的applet的class文件,需要在这里进行添加,有多少要用到的applet,就应该在这里都添加进去

  完成后会发现多出来一个applet的图标,在build后会在其下面多出来一个test1.jar,在jar的属性栏里是一样可以添加和删除applet的class文件的,只是记得每次重新编译了class文件后都要rebuild这个jar文件,这是为了让jar文件中的class也得到及时更新。

  双击test1.jar会发现有两个class文件,applet1.class和applet1$1.class,后者是用来存放鼠标监听,右键点击事件的中间代码的。

  现在只是需要把它发布到浏览器上就可以了。

  在test1目录下新建applet1.html文件,内容很简单:

   <applet code=test1.applet1.class archive="test1.jar"></applet>

  相比之下,要选择发布这样的class文件,就必须把applet1.class和applet1$1.classl两个文件同时放到一个目录下面,两个文件还可以这样照顾的了,但一旦class文件数量增多了,就会难免会出现个别文件丢失的情况,使applet的应用产生错误。

  打包成jar也使整个applet成为一个事务就可以下载过来,因此也减少了网络开销,加快了下载的速度。由此可见,jar文件格式的出现确实让applet的应用进入了一个新的可持续发展的阶段。

扫描关注微信公众号