Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

สวัสดี Java Modular ใน JDK 9 กันหน่อย

$
0
0

วันว่าง ๆ ติดฝนมาลองทำความรู้จักกับ 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 ดังนี้ [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 ได้นะครับ

Viewing all articles
Browse latest Browse all 1997

Trending Articles