Java 9 จะมีโมดูลเพิ่มเติมจากแพ็คเกจ ภาษามักจะมีอย่างใดอย่างหนึ่ง และโปรแกรมเมอร์ส่วนใหญ่รับรู้ศัพท์สองคำว่าเป็นคำพ้องความหมาย โมดูลถูกสร้างขึ้นบนบรรจุภัณฑ์โดยถือเป็นโมดูลดั้งเดิม รูปแบบคอมโพสิตแนะนำให้รักษาแบบดั้งเดิมและคอมโพสิตอย่างสม่ำเสมอ สิ่งที่ไม่ดีจะเกิดขึ้น ตัวอย่างเช่นดูโครงการ Valhalla ที่พวกเขาพยายามติดตั้ง supertype ทั่วไปสำหรับประเภทดั้งเดิม (ค่า) และประเภทการอ้างอิง
โมดูลและแพคเกจเป็นตัวแทนของความคิดแยกความหมายหรือไม่ หมายความว่ามีเหตุผลที่จะต้องมีทั้งภาษาใด ๆ (แยกความกังวล) หรือ Java จะต้องมีทั้งคู่เป็นส่วยให้เข้ากันได้ย้อนหลัง?
ทำไมแนะนำแนวคิดใหม่แทนที่จะเพิ่มแนวคิดที่มีอยู่
JSR 376 : "Java ระบบโมดูลแพลตฟอร์ม" ดำเนินการภายในโครงการจิ๊กซอว์
ตามSOTMS
โมดูลคือชุดของโค้ดและข้อมูลที่อธิบายตนเอง รหัสของมันถูกจัดระเบียบเป็นชุดของแพคเกจที่ประกอบด้วยชนิดเช่นคลาส Java และอินเตอร์เฟส ข้อมูลรวมถึงทรัพยากรและข้อมูลคงที่ประเภทอื่น ๆ
JLS ระมัดระวังหลีกเลี่ยงการกำหนดสิ่งที่เป็นแพคเกจ จากวิกิพีเดีย :
แพคเกจ Java เป็นเทคนิคสำหรับการจัดคลาส Java เป็นเนมสเปซที่คล้ายกับโมดูลของ Modula โดยให้การเขียนโปรแกรมแบบแยกส่วนใน Java
ฉันรู้ว่าการอ้างถึงวิกิพีเดียเป็นการปฏิบัติที่ไม่ดี แต่สะท้อนถึงความเข้าใจร่วมกัน จากรายการในการเขียนโปรแกรมแบบแยกส่วน:
บางครั้งคำว่าแพ็คเกจใช้แทนโมดูล (เช่นใน Dart, Go หรือ Java) ในการนำไปใช้อื่น ๆ นี่เป็นแนวคิดที่แตกต่าง ใน Python แพคเกจคือชุดของโมดูลในขณะที่ใน Java 9 ที่กำลังจะมีการแนะนำแนวคิดของโมดูลใหม่
package
/ ทำ / หมายถึงและพวกเขาจะไม่เปลี่ยนเป็นระบบ classpath ในระบบ JRE คำถาม # 2 ผมรู้สึกเป็นส่วนใหญ่มีความคิดเห็นเชิง (ก็ตอบแต่คำตอบของฉันและคนอื่นอาจแตกต่างกันและเราไม่จำเป็นจะผิด)
jigsaw
โมดูลสไตล์เป็นเพียงการปรับปรุงทางเทคนิคเหนือแพ็คเกจหรือไม่ 3) (ถ้าไม่ใช่ 1 และถ้า 2) เป็นเพียง Java (หรือดูเหมือน) เพื่อรักษาแนวคิดทั้งสองเพื่อความเข้ากันได้ย้อนหลัง คำถามเหล่านี้บางคำถามสามารถตอบคำถามได้บางคำถามเป็นคำถามเชิงความคิดเห็นเป็นหลัก ฉันคิดว่าการแก้ไขที่ทำให้คำอธิบายที่ต้องการนั้นง่ายขึ้น