分享
 
 
 

JAR进阶

王朝java/jsp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

先对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的应用进入了一个新的可持续发展的阶段。

从上一篇看到的JAR的基本用法,似乎并没让人有感觉到JAR的出现是给applet的应用带来了一个新的开始。但您也许看完了下面的,就会对JAR稍有认同了。

很多试着在jbuilder里做过applet的java爱好者都知道,applet的界面布局是一个比较繁人的问题,远不是如VB里面把控件放到界面上那么简单,就算是用最"高级"的grid bag布局管理器,要在上面摆多个控件也是需要调整又调整的,而且就算是在jbuilder里面还看得可以接受,但换到浏览器里面也许又是另一个样子了,当然也有摆得好的,当毕竟是需要时间和经验的,可是在jbuilder里面如果对底板不选grid bag布局管理器,而选XY布局,那在上面摆控件就真的是一件很轻松的事情了,令人遗憾的是XY布局所调用的类是com.borland.jbcl.layout下面的,是由borland公司自己编写的,很显然这样编写的applet是轻松了编写,痛苦了应用,因为实在是无法让仅仅认得jdk1.0的IE去认识borland写的类,那么就真的只有写给自己看了吗,现在有了JAR,你会发现如按下面的步骤来,是可以很轻松的让别人也看到你写的包含非jdk标准类的applet。

我们在第一步写的那界面上再添加几个按钮,先把底板的布局由grid bag改变成xy,再在上面添加几个按钮,把按钮的右击事件也设置为弹出菜单,以下是源程序,在jbuilder生成的代码上简化一下,去掉暂可不用的代码和一些注释,但保证可以正常运行,

package test1;

import java.awt.*;

import java.awt.event.*;

import java.applet.*;

import com.borland.jbcl.layout.*;

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();

XYLayout xYLayout1 = new XYLayout();/*面板改变为XYLayout布局,使用的是非jdk标准类*/

Button button2 = new Button();

Button button3 = new Button();/*添加三个按钮*/

public void init() {

menuItem1.setLabel("1");

menuItem2.setLabel("2");

menuItem3.setLabel("3");

button1.setLabel("button1");

button1.addMouseListener(new java.awt.event.MouseAdapter() {

public void mousePressed(MouseEve

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有