วันว่าง ๆ ติดฝนมาลองทำความรู้จักกับ Java Modular ใน JDK 9 กันนิดหน่อย
หรือบางคนอาจจะรู้จักในชื่อว่า Project Jigsaw
ซึ่งเป็น feature ที่ถูกเลื่อมาอย่างยาวนานตั้งแต่ JDK 7, 8 หรือ 9
ดังนั้นลองมาทำความรู้จักกันหน่อยด้วยการเขียน code

ใน Java 9 นั้นมี feature ใหม่ ๆ ดังรูป

เริ่มด้วย Module คืออะไร ?

เป็นวิธีการแบ่งกลุ่มของ software ออกเป็นส่วนเล็ก ๆ
ซึ่งในแต่ละ module ประกอบไปด้วย

  1. ชื่อของ module
  2. module นี้จะทำการ export package อะไรออกไปได้บ้าง เพื่อให้ module อื่น ๆ ใช้งาน
  3. module นี้ต้องการใช้ package อะไรบ้างจาก module อื่น ๆ

โดยการประกาศทั้ง 3 อย่างนั้นจะอยู่ในไฟล์ module-info.java
แสดงดังรูป

ว่าแล้วลองมาสร้าง Module กันดีกว่า

ตามธรรมเนียมต้องเริ่มด้วย Hello module
ชื่อว่า demo.hellomodule
ทำการประกาศในไฟล์ module-info.java ดังนี้

จากนั้นสร้าง class เพื่อแสดงคำว่า HelloWorld กันหน่อย

โดยใน module จะมีโครงสร้างดังนี้

คำอธิบาย

  • Folder src สำหรับจัดเก็บ code .java ทั้งหมดของ module
  • Folder module สำหรับเก็บไฟล์ .class ทั้งหมดของ module

จากนั้นทำการ compile 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

เพียงเท่าที่ก็สามารถใช้งาน Java Module ได้แล้ว

แต่ในการทำงานจริง ๆ นั้น แต่ละ Module ต้องทำงานร่วมกัน

ดังนั้นมาดูหน่อยสิว่าต้องทำอย่างไร ?

ก่อนอื่นสร้างอีก module ขึ้นมาชื่อว่า demo.module.calculator
โดยจะมี class Calculator ให้ใช้งาน
ซึ่ง module นี้จะต้อง export package ของ class Calculator ด้วย
เพื่อให้ module อื่น ๆ สามารถใช้งานได้

เริ่มด้วยการสร้างไฟล์ module-info.java ดังนี้

จากนั้นทำการสร้าง class Calculator ขึ้นมา
โดยมีเพียง method add() ดังนี้

โดยใน module จะมีโครงสร้างดังนี้

ทำการ compile module นี้ด้วยคำสั่ง

$javac -d module/demo.module.calculator  src/demo.module.calculator/module-info.java src/demo.module.calculator/demo/module/calculator/Calculator.java

จากนั้นทำการแก้ไข code ใน Hello module
เริ่มจากแก้ไขไฟล์ module-info.java
เพื่อระบุว่าจะใช้ package จาก module Calculator

ทำให้สามารถเรียกใช้ class Calculator ได้ดังนี้

เมื่อทุกอย่างเรียบร้อยก็ทำการ compile และ run ด้วยคำสั่ง

$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

ซึ่งโครงสร้างรวมของ demo project เป็นดังรูป

เพียงเท่านี้เราก็สามารถลองใช้งาน Java Module ใน JDK 9 แบบง่าย ๆ ได้แล้ว
ย้ำว่าแบบง่ายนะ !!

สามารถดู source code ได้จาก Github::Up1::Demo Java Module

ปล. ถ้าใครไม่ชอบมานั่ง compile เอง
ไปใช้ IntelliJ IDE 2017 ได้นะครับ

Tags:,