เมื่อเช้าวานนี้ฉันไม่ทราบว่า OSGi เป็นอย่างไร OSGiเป็นเพียงคำศัพท์ที่ฉันเห็นการครอบตัดซ้ำแล้วซ้ำเล่าและในที่สุดฉันก็เผื่อเวลาไว้สักพัก
ดูเหมือนจะเป็นเรื่องที่น่าสนใจจริงๆดังนั้นฉันจึงขอเริ่มต้นด้วยการระบุ (สำหรับบันทึก) ว่าฉันไม่ได้ต่อต้าน OSGi ในแง่ใด ๆ และนี่ก็ไม่ใช่คำถาม "OSGi-bashing"
ในตอนท้ายของวันดูเหมือนว่า OSGi ได้กล่าวถึงJSR 277บน Java Modularity ซึ่งเป็นที่ยอมรับว่ามีข้อบกพร่องเกี่ยวกับJAR
ข้อกำหนดไฟล์ที่อาจนำไปสู่ความละเอียดของเนมสเปซและปัญหาการโหลดคลาสในบางกรณี OSGi ยังทำสิ่งดีๆอื่น ๆ อีกมากมาย แต่จากสิ่งที่ฉันสามารถตรวจสอบได้นั่นคือสิ่งที่ดึงดูดความสนใจมากที่สุด (หรือหนึ่งในนั้น)
สำหรับฉัน - ในฐานะผู้พัฒนา Java EE ที่ค่อนข้างใหม่ (ไม่กี่ปีนี้) เป็นเรื่องที่น่าเหลือเชื่ออย่างยิ่งที่เราอยู่ในปี 2011 และปัจจุบันอาศัยอยู่ในยุคของ Java 7 และปัญหาการโหลดคลาสเหล่านี้ยังคงมีอยู่ โดยเฉพาะอย่างยิ่งในสภาพแวดล้อมขององค์กรที่เซิร์ฟเวอร์แอปหนึ่งสามารถมี JAR ได้หลายร้อยตัวโดยหลายตัวขึ้นอยู่กับเวอร์ชันที่แตกต่างกันและทั้งหมดทำงานพร้อมกัน (มากหรือน้อย)
คำถามของฉัน:
ในฐานะที่ฉันสนใจใน OSGi และฉันก็อยากจะเริ่มเรียนรู้เกี่ยวกับเรื่องนี้มากที่สุดเพื่อดูว่ามันสามารถนำไปใช้กับโปรเจ็กต์ของฉันได้ที่ไหน / ถ้าฉันไม่มีเวลานั่งลงและเรียนรู้บางสิ่งที่ใหญ่ขนาดนั้น อย่างน้อยก็ตอนนี้
แล้วนักพัฒนาที่ไม่ใช่ OSGi จะทำอย่างไรเมื่อเกิดปัญหาเหล่านี้ขึ้น? อะไรJava (Oracle / อาทิตย์ / JCP) โซลูชั่นมีอยู่ในปัจจุบันถ้ามี? เหตุใด Jigsaw จึงถูกตัดออกจาก J7 ชุมชนแน่ใจแค่ไหนที่ Jigsaw จะถูกนำมาใช้ในปีหน้าใน J8? เป็นไปได้ไหมที่จะรับ Jigsaw สำหรับโครงการของคุณแม้ว่าจะยังไม่ได้เป็นส่วนหนึ่งของแพลตฟอร์ม Java
ฉันเดาว่าสิ่งที่ฉันถามต่อไปนี้เป็นการผสมผสานระหว่างความตื่นตระหนกการวางอุบายและการมองหน้า ในที่สุดตอนนี้ฉันก็เข้าใจแล้วว่า OSGi คืออะไรฉันไม่ "เข้าใจ" ว่าบางสิ่งอย่างเช่น Jigsaw ใช้เวลากว่า 20 ปีกว่าจะบรรลุผลได้อย่างไรแล้วสิ่งนั้นจะตกกระป๋องจากการเปิดตัวได้อย่างไร ดูเหมือนเป็นพื้นฐาน
และในฐานะนักพัฒนาฉันก็อยากรู้เหมือนกันว่าโซลูชันของฉันคืออะไรจึงไม่มี OSGi
นอกจากนี้หมายเหตุ : ฉันรู้ว่านี่ไม่ใช่คำถามประเภท " การเขียนโปรแกรมล้วนๆ " แต่ก่อนที่คุณบางคนจะจมูกงอผิดรูปฉันอยากจะบอก (อีกครั้งสำหรับบันทึก) ว่าฉันจงใจใส่คำถามนี้ ดังนั้น. นั่นเป็นเพราะฉันไม่มีอะไรเลยนอกจากความเคารพอย่างสูงสุดต่อ SOers เพื่อนของฉันและฉันกำลังมองหาคำตอบระดับสถาปัตยกรรมจาก "เทพเจ้าแห่งไอที" ที่ฉันเห็นซุ่มอยู่ที่นี่ทุกวัน
แต่สำหรับพวกคุณที่ยืนยันอย่างแน่นอนว่าคำถาม SO จะได้รับการสนับสนุนด้วยส่วนรหัสบางส่วน:
int x = 9;
(ขอบคุณทุกคนที่สามารถชั่งน้ำหนักใน OSGi / Jigsaw / classloader / namespace / JAR hell stuff!)