JAR (Java Archive) 是跨平台的封存格式,不僅具備壓縮功能(類似 ZIP),更提供:
JAR 正逐漸成為分發 Java Applet 的標準方式。
bin/jar.exe 為命令列工具。Archive Builder 精靈,操作更直覺。jar cvf test1.jar *.class image
c:建立新封存檔v:顯示詳細過程f:指定輸出檔名test1.jprApplet1.javajava.awt.Button 與 java.awt.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(), menuItem2 = new MenuItem(), menuItem3 = new MenuItem();
Button button1 = new Button();
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}
public void init() {
try { jbInit(); } catch (Exception e) { e.printStackTrace(); }
}
private void jbInit() throws Exception {
menuItem1.setLabel("1"); menuItem2.setLabel("2"); menuItem3.setLabel("3");
button1.setLabel("button1");
button1.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) { button1_mousePressed(e); }
});
popupMenu1.add(menuItem1); popupMenu1.add(menuItem2); popupMenu1.add(menuItem3);
this.add(button1, null); add(popupMenu1);
}
void button1_mousePressed(MouseEvent e) {
int mods = e.getModifiers();
if ((mods & InputEvent.BUTTON3_MASK) != 0) { // 右鍵
popupMenu1.show(button1, e.getX(), e.getY());
}
}
}
Wizards → Archive Builder。Applet。Include required classes and known resources。test1.Applet1。test1.jar,雙擊可見 Applet1.class 與 Applet1$1.class(匿名內部類)。<APPLET code="test1.Applet1.class" archive="test1.jar"></APPLET>
對比未打包需同時部署 Applet1.class、Applet1$1.class 等多個檔案,JAR 將所有類別封裝為單一檔案,減少網路連線開銷,避免檔案遺漏導致錯誤。
JAR 格式的出現讓 Applet 應用進入可持續發展階段:簡化部署、加速下載、支援簽章擴權。掌握命令列與 JBuilder 兩種建立方式,可因應不同開發環境需求。