![]()
![]()
วันว่าง ๆ ติดฝนมาลองทำความรู้จักกับ Java Modular ใน JDK 9 กันนิดหน่อย
หรือบางคนอาจจะรู้จักในชื่อว่า
Project Jigsaw
ซึ่งเป็น feature ที่ถูกเลื่อมาอย่างยาวนานตั้งแต่ JDK 7, 8 หรือ 9
ดังนั้นลองมาทำความรู้จักกันหน่อยด้วยการเขียน code
ใน Java 9 นั้นมี feature ใหม่ ๆ ดังรูป
เริ่มด้วย Module คืออะไร ?
เป็นวิธีการแบ่งกลุ่มของ software ออกเป็นส่วนเล็ก ๆ
ซึ่งในแต่ละ module ประกอบไปด้วย
- ชื่อของ module
- module นี้จะทำการ export package อะไรออกไปได้บ้าง เพื่อให้ module อื่น ๆ ใช้งาน
- module นี้ต้องการใช้ package อะไรบ้างจาก module อื่น ๆ
โดยการประกาศทั้ง 3 อย่างนั้นจะอยู่ในไฟล์ module-info.java
แสดงดังรูป
ว่าแล้วลองมาสร้าง Module กันดีกว่า
ตามธรรมเนียมต้องเริ่มด้วย Hello module
ชื่อว่า
demo.hellomodule
ทำการประกาศในไฟล์ module-info.java ดังนี้
[gist id="6a470c7f363e44f1d40e76871093103d" file="module-info.java"]
จากนั้นสร้าง class เพื่อแสดงคำว่า HelloWorld กันหน่อย
[gist id="6a470c7f363e44f1d40e76871093103d" file="Main.java"]
โดยใน module จะมีโครงสร้างดังนี้
คำอธิบาย
- Folder src สำหรับจัดเก็บ code .java ทั้งหมดของ module
- Folder module สำหรับเก็บไฟล์ .class ทั้งหมดของ module
จากนั้นทำการ compile code และลองใช้งานด้วยคำสั่ง
[code]
$javac -d module/demo.hellomodule src/demo.hellomodule/module-info.java src/demo.hellomodule/demo/hellomodule/Main.java
$java --module-path module -m demo.hellomodule/demo.hellomodule.Main
[/code]
เพียงเท่าที่ก็สามารถใช้งาน Java Module ได้แล้ว
แต่ในการทำงานจริง ๆ นั้น แต่ละ Module ต้องทำงานร่วมกัน
ดังนั้นมาดูหน่อยสิว่าต้องทำอย่างไร ?
ก่อนอื่นสร้างอีก module ขึ้นมาชื่อว่า
demo.module.calculator
โดยจะมี class Calculator ให้ใช้งาน
ซึ่ง module นี้จะต้อง export package ของ class Calculator ด้วย
เพื่อให้ module อื่น ๆ สามารถใช้งานได้
เริ่มด้วยการสร้างไฟล์ module-info.java ดังนี้
[gist id="6a470c7f363e44f1d40e76871093103d" file="module-info2.java"]
จากนั้นทำการสร้าง class Calculator ขึ้นมา
โดยมีเพียง method add() ดังนี้
[gist id="6a470c7f363e44f1d40e76871093103d" file="Calculator.java"]
โดยใน module จะมีโครงสร้างดังนี้
ทำการ compile module นี้ด้วยคำสั่ง
[code]
$javac -d module/demo.module.calculator src/demo.module.calculator/module-info.java src/demo.module.calculator/demo/module/calculator/Calculator.java
[/code]
จากนั้นทำการแก้ไข code ใน Hello module
เริ่มจากแก้ไขไฟล์ module-info.java
เพื่อระบุว่าจะใช้ package จาก module Calculator
[gist id="6a470c7f363e44f1d40e76871093103d" file="module-info3.java"]
ทำให้สามารถเรียกใช้ class Calculator ได้ดังนี้
[gist id="6a470c7f363e44f1d40e76871093103d" file="Main2.java"]
เมื่อทุกอย่างเรียบร้อยก็ทำการ compile และ run ด้วยคำสั่ง
[code]
$javac --module-path module -d module/demo.hellomodule src/demo.hellomodule/module-info.java src/demo.hellomodule/demo/hellomodule/Main.java
$java --module-path module -m demo.hellomodule/demo.hellomodule.Main
[/code]
ซึ่งโครงสร้างรวมของ demo project เป็นดังรูป
![]()
เพียงเท่านี้เราก็สามารถลองใช้งาน Java Module ใน JDK 9 แบบง่าย ๆ ได้แล้ว
ย้ำว่าแบบง่ายนะ !!
สามารถดู source code ได้จาก
Github::Up1::Demo Java Module
ปล. ถ้าใครไม่ชอบมานั่ง compile เอง
ไปใช้
IntelliJ IDE 2017 ได้นะครับ