ระบบองค์ประกอบของ OSGi ให้ประโยชน์กับคุณอย่างไร?
ดีนี่คือรายการค่อนข้าง:
ความซับซ้อนที่ลดลง -การพัฒนาด้วยเทคโนโลยี OSGi หมายถึงการพัฒนาบันเดิล: คอมโพเนนต์ OSGi การรวมกลุ่มเป็นโมดูล พวกเขาซ่อน internals จากกลุ่มอื่น ๆ และสื่อสารผ่านบริการที่กำหนดไว้อย่างดี การซ่อนเร้นนั้นหมายถึงอิสระที่จะเปลี่ยนแปลงในภายหลัง สิ่งนี้ไม่เพียงลดจำนวนของบั๊ก แต่ยังทำให้การรวมกลุ่มง่ายขึ้นเนื่องจากชุดข้อมูลขนาดที่ถูกต้องใช้ชิ้นส่วนของการทำงานผ่านส่วนต่อประสานที่กำหนดไว้อย่างดี มีบล็อกที่น่าสนใจที่อธิบายถึงสิ่งที่เทคโนโลยี OSGi ทำเพื่อการพัฒนาของพวกเขา
นำมาใช้ใหม่ -โมเดลองค์ประกอบ OSGi ทำให้ง่ายต่อการใช้ส่วนประกอบบุคคลที่สามมากมายในแอปพลิเคชัน การเพิ่มจำนวนโครงการโอเพนซอร์สทำให้ JAR ของพวกเขาพร้อมสำหรับ OSGi อย่างไรก็ตามไลบรารีเชิงพาณิชย์ก็มีให้บริการในรูปแบบบันเดิลสำเร็จรูป
โลกแห่งความจริง -กรอบการทำงานของ OSGi นั้นเป็นแบบไดนามิก มันสามารถอัพเดทการรวมกลุ่มได้ทันทีและบริการสามารถมาและไป นักพัฒนาเคยใช้ Java แบบดั้งเดิมมากขึ้นมองว่านี่เป็นคุณสมบัติที่มีปัญหามากและไม่สามารถมองเห็นข้อดี อย่างไรก็ตามปรากฎว่าโลกแห่งความจริงนั้นมีความไดนามิกสูงและมีบริการแบบไดนามิกที่สามารถไปมาได้ทำให้บริการนั้นเหมาะกับสถานการณ์ในโลกแห่งความเป็นจริงมากมาย ตัวอย่างเช่นบริการสามารถจำลองอุปกรณ์ในเครือข่าย หากตรวจพบอุปกรณ์แสดงว่ามีการลงทะเบียนบริการ หากอุปกรณ์หายไปบริการจะไม่ลงทะเบียน มีจำนวนสถานการณ์จำลองในโลกแห่งความจริงที่น่าแปลกใจที่ตรงกับรูปแบบการบริการแบบไดนามิกนี้ ดังนั้นแอปพลิเคชันจึงสามารถใช้บริการดั้งเดิมที่มีประสิทธิภาพของรีจิสตรีได้ (ลงทะเบียนรับรายการด้วยภาษาตัวกรองที่แสดงออกและรอให้บริการปรากฏและหายไป) ในโดเมนของตนเอง สิ่งนี้ไม่เพียง แต่จะบันทึกรหัสการเขียนเท่านั้น แต่ยังมอบการมองเห็นทั่วโลกเครื่องมือในการดีบักและฟังก์ชันการทำงานอื่น ๆ การเขียนโค้ดในสภาพแวดล้อมแบบไดนามิกดูเหมือนฝันร้าย แต่โชคดีที่มีคลาสสนับสนุนและกรอบการทำงานที่ใช้ความเจ็บปวดส่วนใหญ่หากไม่ใช่ทั้งหมด
การปรับใช้อย่างง่ายดาย -เทคโนโลยี OSGi ไม่ได้เป็นเพียงมาตรฐานสำหรับส่วนประกอบ นอกจากนี้ยังระบุวิธีการติดตั้งและจัดการส่วนประกอบ API นี้มีการใช้งานโดยหลายกลุ่มเพื่อให้ตัวแทนการจัดการ เอเจนต์การจัดการนี้สามารถทำได้ง่ายเหมือนเชลล์คำสั่งไดรเวอร์โปรโตคอลการจัดการ TR-69, OMA DM โปรโตคอลไดรเวอร์, อินเทอร์เฟซการคำนวณแบบคลาวด์สำหรับ EC2 ของ Amazon หรือระบบการจัดการ IBM Tivoli API การจัดการที่ได้มาตรฐานทำให้ง่ายต่อการรวมเทคโนโลยี OSGi ในระบบปัจจุบันและอนาคต
การอัพเดทแบบไดนามิก - โมเดลส่วนประกอบ OSGi เป็นโมเดลแบบไดนามิก การรวมกลุ่มสามารถติดตั้งเริ่มหยุดอัปเดตและถอนการติดตั้งโดยไม่ทำให้ระบบทั้งหมดแย่ลง ผู้พัฒนาจาวาหลายคนไม่เชื่อว่าสิ่งนี้สามารถทำได้อย่างน่าเชื่อถือดังนั้นในขั้นต้นจะไม่ใช้สิ่งนี้ในการผลิต อย่างไรก็ตามหลังจากใช้สิ่งนี้ในการพัฒนามาระยะหนึ่งผู้คนส่วนใหญ่ก็เริ่มตระหนักว่ามันใช้งานได้จริงและลดเวลาในการติดตั้งลงอย่างมาก
Adaptive -โมเดลส่วนประกอบ OSGi ได้รับการออกแบบจากพื้นดินขึ้นเพื่อให้สามารถผสมและจับคู่ส่วนประกอบได้ สิ่งนี้ต้องการให้มีการระบุองค์ประกอบที่ต้องพึ่งพาและต้องมีส่วนประกอบอยู่ในสภาพแวดล้อมที่การพึ่งพาตัวเลือกนั้นไม่สามารถใช้ได้ตลอดเวลา OSGi service registry เป็นรีจิสตรีแบบไดนามิกที่บันเดิลสามารถลงทะเบียนรับและฟังการบริการ โมเดลบริการแบบไดนามิกนี้ช่วยให้ผู้ใช้สามารถค้นหาความสามารถที่มีอยู่ในระบบและปรับการทำงานที่พวกเขาสามารถให้ได้ ทำให้รหัสมีความยืดหยุ่นและยืดหยุ่นต่อการเปลี่ยนแปลงมากขึ้น
ความโปร่งใส - การรวมกลุ่มและการบริการเป็นพลเมืองชั้นหนึ่งในสภาพแวดล้อมของ OSGi API การจัดการให้การเข้าถึงสถานะภายในของบันเดิลรวมถึงวิธีการเชื่อมต่อกับบันเดิลอื่น ๆ ตัวอย่างเช่นกรอบงานส่วนใหญ่มีเชลล์คำสั่งที่แสดงสถานะภายในนี้ บางส่วนของแอปพลิเคชันสามารถหยุดการดีบักปัญหาบางอย่างหรือบันเดิลการวินิจฉัยสามารถนำเข้ามาแทนการจ้องมองที่บรรทัดเอาต์พุตการบันทึกนับล้านและเวลารีบูตนานแอปพลิเคชัน OSGi มักจะดีบั๊กด้วยเชลล์คำสั่งสด
การกำหนดเวอร์ชัน -เทคโนโลยี OSGi แก้ปัญหานรก JAR JAR hell เป็นปัญหาที่ library A ทำงานกับ library B; version = 2 แต่ library C สามารถทำงานกับ B; version = 3 เท่านั้น ใน Java มาตรฐานคุณไม่มีโชค ในสภาพแวดล้อม OSGi บันเดิลทั้งหมดมีการกำหนดเวอร์ชันอย่างระมัดระวังและมีการรวมกลุ่มเท่านั้นที่สามารถทำงานร่วมกันได้ในสายคลาสเดียวกัน สิ่งนี้ทำให้ทั้งกลุ่ม A และ C สามารถทำงานกับไลบรารีของตัวเองได้ แม้ว่าจะไม่แนะนำให้ออกแบบระบบที่มีปัญหาเกี่ยวกับการกำหนดรุ่นนี้ แต่ก็สามารถช่วยชีวิตได้ในบางกรณี
เรียบง่าย - OSGi API นั้นเรียบง่ายอย่างน่าประหลาดใจ API หลักเป็นเพียงแพ็คเกจเดียวและน้อยกว่า 30 คลาส / อินเตอร์เฟส API หลักนี้เพียงพอที่จะเขียนบันเดิลติดตั้งเริ่มหยุดอัปเดตและถอนการติดตั้งรวมถึงผู้ฟังและคลาสความปลอดภัยทั้งหมด มี API น้อยมากที่ให้การทำงานมากมายสำหรับ API เพียงเล็กน้อยเท่านั้น
ขนาดเล็ก - OSGi Release 4 Framework สามารถนำไปใช้กับไฟล์ 300KB JAR นี่เป็นค่าใช้จ่ายเล็กน้อยสำหรับปริมาณการใช้งานที่เพิ่มลงในแอปพลิเคชันโดยรวมถึง OSGi OSGi ทำงานบนอุปกรณ์หลากหลายประเภทตั้งแต่ขนาดเล็กไปจนถึงขนาดเล็กจนถึงเมนเฟรม จะขอให้ Java VM ขั้นต่ำเรียกใช้และเพิ่มเพียงเล็กน้อยเท่านั้น
รวดเร็ว - หนึ่งในความรับผิดชอบหลักของกรอบงาน OSGi คือการโหลดคลาสจากบันเดิล ใน Java แบบดั้งเดิม JARs จะมองเห็นได้อย่างสมบูรณ์และวางไว้ในรายการเชิงเส้น การค้นหาคลาสต้องการการค้นหาผ่านรายการ (มักจะยาวมาก, 150 ไม่ใช่เรื่องแปลก) ในทางตรงกันข้าม OSGi มีการมัดสายล่วงหน้าและรู้สำหรับแต่ละชุดว่าชุดใดให้ชั้นเรียน การขาดการค้นหานี้เป็นตัวเร่งความเร็วที่สำคัญเมื่อเริ่มต้น
Lazy - Lazy ในซอฟต์แวร์นั้นดีและเทคโนโลยี OSGi มีกลไกมากมายที่จะทำสิ่งต่าง ๆ เฉพาะเมื่อจำเป็นเท่านั้น ตัวอย่างเช่นบันเดิลสามารถเริ่มต้นอย่างกระตือรือร้น แต่พวกเขายังสามารถกำหนดค่าให้เริ่มต้นเฉพาะเมื่อบันเดิลอื่นกำลังใช้พวกเขา สามารถลงทะเบียนบริการ แต่สร้างได้เมื่อใช้งานเท่านั้น ข้อมูลจำเพาะได้รับการปรับให้เหมาะสมหลาย ๆ ครั้งเพื่อให้เกิดสถานการณ์แบบขี้เกียจเหล่านี้ซึ่งสามารถประหยัดต้นทุนรันไทม์ได้อย่างมาก
ปลอดภัย - Java มีรูปแบบการรักษาความปลอดภัยที่มีประสิทธิภาพมากที่ด้านล่าง แต่มันกลับกลายเป็นเรื่องยากที่จะกำหนดค่าในทางปฏิบัติ ผลลัพธ์คือแอปพลิเคชัน Java ที่มีความปลอดภัยส่วนใหญ่ใช้งานด้วยตัวเลือกไบนารี: ไม่มีความปลอดภัยหรือความสามารถที่ จำกัด มาก รูปแบบการรักษาความปลอดภัย OSGi ใช้ประโยชน์จากรูปแบบความปลอดภัยที่ละเอียด แต่ปรับปรุงการใช้งาน (เช่นเดียวกับการทำให้แข็งตัวแบบดั้งเดิม) โดยให้ผู้พัฒนามัดระบุรายละเอียดความปลอดภัยที่ร้องขอในรูปแบบตรวจสอบได้ง่ายในขณะที่ผู้ดำเนินการของสภาพแวดล้อม โดยรวมแล้ว OSGi มีแนวโน้มที่จะให้หนึ่งในสภาพแวดล้อมที่ปลอดภัยที่สุดของแอปพลิเคชั่นที่ยังใช้งานไม่ได้กับแพลตฟอร์มการป้องกันฮาร์ดแวร์
Non Intrusive -แอปพลิเคชั่น (บันเดิล) ในสภาพแวดล้อม OSGi นั้นเป็นของตัวเอง พวกเขาสามารถใช้เครื่องมืออำนวยความสะดวกใด ๆ ของ VM ได้โดยไม่ต้อง จำกัด OSGi แนวปฏิบัติที่ดีที่สุดใน OSGi คือการเขียน Plain Java Objects แบบธรรมดาและด้วยเหตุนี้จึงไม่มีอินเตอร์เฟสพิเศษที่จำเป็นสำหรับบริการ OSGi แม้แต่วัตถุ Java String ก็สามารถทำหน้าที่เป็นบริการ OSGi ได้ กลยุทธ์นี้ทำให้รหัสแอปพลิเคชันง่ายต่อการพอร์ตไปยังสภาพแวดล้อมอื่น
วิ่งได้ทุกที่ -ดีขึ้นอยู่กับว่า เป้าหมายดั้งเดิมของ Java คือการทำงานทุกที่ เห็นได้ชัดว่าเป็นไปไม่ได้ที่จะเรียกใช้รหัสทั้งหมดในทุกที่เพราะความสามารถของ Java VMs แตกต่าง VM ในโทรศัพท์มือถืออาจไม่รองรับไลบรารีเดียวกับเมนเฟรมของ IBM ที่ใช้แอปพลิเคชันธนาคาร มีสองประเด็นที่ต้องดูแล ก่อนอื่น OSGi API ไม่ควรใช้คลาสที่ไม่สามารถใช้ได้กับทุกสภาพแวดล้อม ประการที่สองมัดไม่ควรเริ่มถ้ามันมีรหัสที่ไม่สามารถใช้ได้ในสภาพแวดล้อมการดำเนินการ ปัญหาทั้งสองนี้ได้รับการดูแลในข้อกำหนดของ OSGi
ที่มา: www.osgi.org/Technology/WhyOSGi