Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Project Jigsaw ใน Java 9 คืออะไร

วัตถุประสงค์หลักของ Jigsaw Project คือนำเสนอแนวคิด modularity เพื่อสร้างโมดูลใน Java 9 และนำไปใช้กับ JDK เอง

ประโยชน์ของ Modularity (Jigsaw)

  • Strong Encapsulation: โมดูลเข้าถึงได้เฉพาะส่วนที่ export อย่างชัดเจนใน module-info.java คลาส public ในแพ็กเกจที่ไม่ export ไม่ใช่ public จริงๆ
  • Clear Dependencies: โมดูลต้องประกาศโมดูลอื่นที่ใช้ผ่าน requires clause โมดูลรวมกันเพื่อสร้าง runtime สั้นลง scale ได้ง่ายบนอุปกรณ์เล็ก
  • Reliable: หลังกำจัด run-time errors แอปน่าเชื่อถือมากขึ้น เช่น ไม่มี ClassNotFoundException ขึ้นตอนรัน

JEPs (JDK Enhancement Proposals) ของ Project Jigsaw

JEPชื่อคำอธิบาย
JEP 200The Modular JDKใช้ JPMS โมดูลาร์ไลซ์ JDK เป็นชุดโมดูล รวมกันที่ build/compile/runtime
JEP 201Modular Source Codeโมดูลาร์ไลซ์ source code JDK อัปเกรด build tools ให้คอมไพล์โมดูล
JEP 220Modular Run-Time Imagesโครงสร้าง JRE/JDK runtime images ใหม่ รองรับโมดูล ปรับปรุง security, performance, maintainability
JEP 260Encapsulate Most Internal APIsจำกัดการเข้าถึง internal APIs โดยตรงหรือผ่าน reflection บีบอัดไว้ในโมดูล
JEP 261Module Systemimplement module system spec เปลี่ยน JVM, Java language, standard APIs
JEP 282JLink: The Java Linkerรวมโมดูลและ dependencies เป็น runtime images ขนาดเล็ก

โครงสร้าง JDK แบบ Modular

java.base (base module - ทุกโมดูลพึ่งพาอัตโนมัติ)
├── java.sql
├── java.logging
├── java.xml
├── java.desktop
├── java.management
├── java.naming
├── java.rmi
├── java.scripting
├── java.security.jgss
├── java.security.sasl
├── jdk.jshell
├── jdk.jlink
├── jdk.compiler
├── jdk.javadoc
└── ... (platform modules อื่นๆ)

Project Jigsaw เป็นการเปลี่ยนแปลงใหญ่ที่สุดของ Java 9 ทำให้ Java เหมาะกับ cloud, containers, microservices และ IoT