java archive (jar) jar.pdf · java archive (jar) เขียนโปรแกรม java...

20
Kasetsart University Java ARchive (JAR) เยนโปรแกรม Java เองน 2nd Edition

Upload: others

Post on 24-Apr-2020

31 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

Java ARchive (JAR)

เขียนโปรแกรม Java เบื้องต้น 2nd Edition

Page 2: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

2

ไฟล์ .jar

เมื่อนำซอร์สโค้ด .java ไปคอมไพล์ จะได้เป็น .class ซึ่งสามารถนำไปรันได้คลาสหลายคลาสสามารถทำงานร่วมกันได้

คอมไพล์ .java หลายไฟล์ และได้เป็น .class หลายไฟล์แต่ การส่งไฟล์ไปรันหลายไฟล์จะไม่สะดวก

สามารถรวมไฟล์ .class หลายไฟล์ ให้เป็นไฟล์ .jar เดียวได้

Page 3: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

3

การสร้าง jar

Page 4: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

4

JAR

ไฟล์ที่ archive หมายถึงไฟล์ที่เป็นผลของการบีบอัด เช่น .zip, .rar., .7z เป็นต้น

ไฟล์ .jar เป็นผลจากการบีบอัดไฟล์ .class และไฟล์อื่นๆเข้าด้วยกัน

ทำงานเหมือนกันกับ .zip

Page 5: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

5

คนที่ใช้งาน .jar

ผู้ใช้ (user)

นำไฟล์ไปรันได้ เหมือนกับ .exe

โปรแกรมเมอร์นำคลาสที่อยู่ในไฟล์ .jar ไปใช้งานต่อ เหมือนกับการใช้งาน library หรือกลุ่มของคลาสที่โปรแกรมเมอร์คนอื่นมาใช้พัฒนาต่อยอด

Page 6: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

6

สร้างไฟล์ .jar

ตัวอย่าง คลาส Rectangle และ TestRectangle มาสร้าง .jar

คอมไพล์javac *.java

สร้างไฟล์ .jarjar -cf example.jar *.class

รันคลาสในไฟล์ example.jar

java -cp example.jar TestRectangle

Page 7: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

7

ความหมายของออปชัน (option)

-c หมายถึง การสร้าง (create)

-f หมายถึง ไฟล์ (file)

-cp หมายถึง การกำหนด classpath หรือตำแหน่งที่ใช้ค้นหาคลาส

กำหนดให้ classpath คือ example.jar

Page 8: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

8

การสร้าง jar ให้ user ใช้งาน

Page 9: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

9

สร้างไฟล์ .jar กรณีที่ใช้แพ็กเกจ

ตัวอย่าง คลาสอยู่ในแพ็กเกจ– คลาส Rectangle อยู่ในแพ็กเกจ somchai

– คลาส TestRectangle อยู่ในแพ็กเกจ somying

Page 10: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

10

สร้างไฟล์ .jar กรณีที่ใช้แพ็กเกจ

สร้างไฟล์ .jar และรันด้วยคำสั่งต่อไปนี้

Page 11: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

11

อธิบายคำสั่ง

cd ..\classes เข้าไปที่โฟลเดอร์ classes – เก็บผลการคอมไพล์ไว้

jar -cf example.jar *

– เครื่องหมายดอกจัน หมายถึงให้นำทุกไฟล์ และทุกโฟลเดอร์มาใส่ไว้ในไฟล์ example.jar

Page 12: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

12

ให้ผู้ใช้สั่งรันง่ายๆ

การสั่งรันคลาสจากไฟล์ .jar

Page 13: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

13

ให้ผู้ใช้สั่งรัน

ออปชัน -e หมายถึง การระบุคลาสหลักที่โปรแกรม java จะเรียกขึ้นมารัน

ระบุชื่อคลาสไว้หลังชื่อไฟล์ .jar และก่อนหน้าไฟล์ที่ต้องการรวบรวมไปใส่ในไฟล์ .jar

Page 14: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

14

ให้ผู้ใช้สั่งรัน

ออปชัน -e หมายถึง การระบุคลาสหลักที่โปรแกรม java จะเรียกขึ้นมารัน

ระบุชื่อคลาสไว้หลังชื่อไฟล์ .jar และก่อนหน้าไฟล์ที่ต้องการรวบรวมไปใส่ในไฟล์ .jar

Page 15: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

15

คลาสหลักที่ถูกเรียกไปรัน

ลองเปลี่ยนนามสกุลจากไฟล์ example.jar เป็น example.zip

จากนั้นเปิดไฟล์ .zip

ในโฟลเดอร์ META-INF มีไฟล์ MANIFEST.MF– Manifest-Version: 1.0

Created-By: 1.6.0_18 (Sun Microsystems Inc.)

Main-Class: somying.TestRectangle

Page 16: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

16

ระบุ Class-Path

นอกจาก Main-Class แล้วในไฟล์ MANIFEST.MF

สามารถระบุ Class-Path ได้ไม่ต้องใช้ออปชัน -cp

เตรียมไฟล์ mnf.txt– Class-Path: MyUtils.jar

สร้างไฟล์ .jar โดยเพ่ิมออปชัน m (หมายถึง manifest)

– jar cfme example.jar mnf.txt somying.TestRectangle *

ผลที่ได้

– Manifest-Version: 1.0

Class-Path: MyUtils.jar

Created-By: 1.6.0_18 (Sun Microsystems Inc.)

Main-Class: somying.TestRectangle

Page 17: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

17

ส่งไฟล์ jar ให้โปรแกรมเมอร์คนอื่น

ต้องการเรียกใช้คลาส Rectangle– import somchai.*;

public class Test{

public static void main(String[] args){

new Rectangle().say();

}

}

คอมไพล์– javac -cp example.jar Test.java

รัน– java -cp example.jar;. Test

Page 18: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

18

jFreeChart

ไลบรารี่สำหรับวาดกราฟ

ดาวน์โหลด http://sourceforge.net/projects/jfreechart/files

โฟลเดอร์ lib

Page 19: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

19

Source Code

public NewJFrame() {

DefaultPieDataset dataset = new DefaultPieDataset();

dataset.setValue("Linux", 30);

dataset.setValue("Mac", 20);

dataset.setValue("Windows", 50);

JFreeChart chart = ChartFactory.createPieChart3D("test", // chart title

dataset, // data

true, // include legend

true,

false);

ChartPanel chartPanel = new ChartPanel(chart);

chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));

setContentPane(chartPanel);

pack();

}

Page 20: Java ARchive (JAR) JAR.pdf · Java ARchive (JAR) เขียนโปรแกรม Java เบื้องต้น 2nd Edition. Kasetsart University 2 ไฟล์ .jar เมื่อนำซอร์สโค้ด

Kasetsart University

20

สรุป

ไฟล์ .jar คือไฟล์ .zip ที่รวมไฟล์ .class หลายๆไฟล์ไว้ด้วยกันผู้ใช้ (user) สามารถสั่งรันคลาสในไฟล์ .jar คล้ายๆ กับที่รันไฟล์ .exe

โปรแกรมเมอร์สามารถเรียกใช้คลาสในไฟล์ .jar เหมือนการเรียก library

ถ้าต้องการกำหนดให้มีคลาสหลักในไฟล์ .jar ให้กำหนดท่ีไฟล์ manifest