PlusMagi's Blog By Pitt Phunsanit Backend,Business Java 9 (2017): การมาของ Project Jigsaw (Java Platform Module System – JPMS) และ REPL tool อย่าง jshell

Java 9 (2017): การมาของ Project Jigsaw (Java Platform Module System – JPMS) และ REPL tool อย่าง jshell

ในโลกของการพัฒนาซอฟต์แวร์ขนาดใหญ่ การจัดการ Dependencies และการรักษาความเสถียรของโค้ดเป็นเรื่องที่ท้าทายอย่างยิ่ง เมื่อเวลาผ่านไป Java ได้เติบโตจนมีไลบรารีและเฟรมเวิร์กจำนวนมหาศาล ทำให้เกิดปัญหาที่เรียกว่า Classpath Hell การพึ่งพาแพ็กเกจภายนอกหลายตัวโดยไม่มีขอบเขตที่ชัดเจน ส่งผลให้การอัปเดตหรือแม้แต่การรันโค้ดง่าย ๆ กลายเป็นเรื่องยุ่งยากและเสี่ยงต่อการเกิด Conflict ระหว่างเวอร์ชันต่างๆ

Java 9: จุดเปลี่ยนด้วย Project Jigsaw (JPMS)

หัวใจของการเปลี่ยนแปลงครั้งใหญ่นี้คือการแนะนำแนวคิดของระบบโมดูล (Module System) หรือ Project Jigsaw ซึ่งเปลี่ยนมุมมองจากการจัดการโค้ดแบบแพ็กเกจ (Package) ไปสู่การจัดการในระดับที่สูงกว่า คือ Module โมดูลช่วยให้เราสามารถกำหนดขอบเขต (Encapsulation) ของโค้ดได้อย่างชัดเจน ทำให้ระบบรู้ว่าส่วนไหนของโค้ดควรเข้าถึงได้จากภายนอก และส่วนไหนที่ต้องถูกซ่อนไว้ นี่คือการสร้างความมั่นคงทางโครงสร้างให้กับ Java Ecosystem อีกครั้ง โดยการบังคับให้ผู้พัฒนาต้องระบุอย่างชัดเจนว่าโมดูลของตนเองต้องการการเข้าถึง (requires) อะไรจากภายนอก และเปิดเผยอะไรออกไป (exports) ทำให้ระบบมีความยืดหยุ่นและลดความเสี่ยงจาก Dependency Conflict ได้อย่างมาก

การจำลองแนวคิด Module ด้วย PostgreSQL

แม้ว่า Module System จะเป็นแนวคิดของ Java แต่หลักการของการแบ่งขอบเขต (Encapsulation) และการจัดการการพึ่งพาอาศัยกันนั้นสามารถเปรียบเทียบได้กับการจัดการ Schema และ Functions ใน PostgreSQL ซึ่งช่วยให้เราแยกส่วนประกอบของระบบให้เป็นอิสระจากกันได้

สมมติว่าเรามีโมดูลหลัก (Core Module) และโมดูลย่อย (Feature Module) ที่ต้องทำงานร่วมกัน เราสามารถใช้ Schema เพื่อจำลองขอบเขตของโมดูลได้:

SQL

-- 1. สร้าง Module หลัก (Core Module) ด้วย Schema

SQL

CREATE SCHEMA core_module;

SQL

-- 2. สร้าง Module ย่อย (Feature Module) ที่ต้องพึ่งพา Core

SQL

CREATE SCHEMA feature_module;

SQL

-- 3. การเรียกใช้ (Requires) ข้อมูลจาก Core Module

SQL

SELECT * FROM core_module.data_table WHERE id = 1;

jshell: REPL Tool ยกระดับวงจรการพัฒนา

นอกจากเรื่องโมดูลแล้ว การมาถึงของเครื่องมือ REPL (Read-Eval-Print Loop) ที่ทันสมัยอย่าง jshell ก็เป็นอีกหนึ่งพัฒนาการที่ช่วยยกระดับประสบการณ์ของนักพัฒนาอย่างมาก jshell ช่วยให้เราสามารถทดสอบโค้ด, เรียกใช้ API, หรือแม้แต่สำรวจโครงสร้างของระบบได้อย่างรวดเร็วภายใน Terminal โดยไม่ต้องคอมไพล์โปรเจกต์ขนาดใหญ่ ทำให้วงจรการพัฒนา (Development Cycle) สั้นลงและมีประสิทธิภาพสูงขึ้น

ในบริบทของ PostgreSQL การทดสอบโค้ดหรือ API อย่างรวดเร็วนั้นทำได้ด้วยการใช้ Query Editor หรือ psql CLI ซึ่งทำหน้าที่คล้าย REPL ทำให้เราสามารถทดสอบ Logic หรือฟังก์ชันใหม่ๆ ได้ทันทีโดยไม่กระทบต่อฐานข้อมูลหลัก:

SQL

-- การทดสอบฟังก์ชัน (Function) อย่างรวดเร็วใน Terminal

SQL

SELECT calculate_tax('apple,banana,orange');

บทสรุป

Java 9 และ Project Jigsaw ได้กำหนดมาตรฐานใหม่ในการสร้างระบบที่ใหญ่และซับซ้อน ด้วยการบังคับให้มีการกำหนดขอบเขตของโค้ดอย่างชัดเจน และเครื่องมืออย่าง jshell ก็เข้ามาเติมเต็มประสบการณ์การพัฒนาให้รวดเร็วและมีประสิทธิภาพยิ่งขึ้น การทำความเข้าใจหลักการของ Module System และการใช้เครื่องมือ REPL เหล่านี้ จึงเป็นทักษะสำคัญสำหรับสถาปนิกซอฟต์แวร์ยุคใหม่

Exit mobile version