שלום, OSGi, חלק 1: חבילות למתחילים

יוזמת שער השירותים הפתוחים (OSGi) מגדירה ארכיטקטורה לפיתוח ופריסה של יישומים וספריות מודולריות. במאמר ראשון זה במבוא בן שלושה חלקים ל- OSGi, Sunil Patil מתחיל עם מושגי פיתוח של OSGi ומראה לכם כיצד לבנות יישום פשוט של Hello World באמצעות יישום מיכל Eclipse OSGi, Equinox. הוא גם נוגע בקצרה על בניית יישומים מוכווני שירות באמצעות OSGi ומציג OSGi של ServiceFactoryואת ServiceTrackerכיתות.

יוזמת שער השירותים הפתוחים (OSGi), המכונה גם מערכת המודול הדינמי עבור Java, מגדירה ארכיטקטורה לפיתוח יישומים מודולריים. יישומי מכולות של OSGi כגון Knopflerfish, Equinox ו- Apache Felix מאפשרים לך לפרק את היישום שלך למספר מודולים ובכך ביתר קלות לנהל תלות צולבת ביניהם.

OSGi, Equinox ו- Jigsaw Project

קבל השקפה של העולם האמיתי על ידי לימוד שיעורים שנלמדו במהלך שילוב OSGi / Equinox בפרויקט המדע הגדול ביותר בבריטניה, ואז גלה למה אתה יכול לצפות מ- Project Jigsaw ב- Java 9.

בדומה למפרט Java Servlet ו- EJB, מפרט ה- OSGi מגדיר שני דברים: מערך שירותים שעל מיכל OSGi ליישם וחוזה בין המכולה ליישום שלך. פיתוח בפלטפורמת OSGi פירושו תחילה לבנות את היישום שלך באמצעות ממשקי API של OSGi, ואז לפרוס אותו במיכל OSGi. מנקודת מבט של מפתח, OSGi מציע את היתרונות הבאים:

  • באפשרותך להתקין, להסיר, להפעיל ולהפסיק מודולים שונים של היישום שלך באופן דינמי מבלי להפעיל מחדש את המיכל.
  • ליישום שלך יכולה להיות יותר מגרסה אחת של מודול מסוים הפועל בו זמנית.
  • OSGi מספקת תשתית טובה מאוד לפיתוח יישומים מוכווני שירות, כמו גם אפליקציות אינטרנט מוטבעות, ניידות ועשירות.

בהתחשב בכך שאתה משתמש במכולות סרוולט לבניית יישומי אינטרנט ובמכולות EJB לבניית יישומי עסקאות, ייתכן שאתה תוהה מדוע אתה זקוק לסוג אחר של מיכלים. התשובה הקצרה היא שמכולות OSGi מיועדות במיוחד לפיתוח יישומי Java מורכבים שברצונך לחלק למודולים. ארחיב על התשובה הקצרה לאורך הסדרה הזו.

שלום, OSGi: קרא את הסדרה

  • חלק 1: חבילות למתחילים
  • חלק 2: הצגת מודולים דינמיים קפיצים
  • חלק 3: קח אותו לצד השרת

OSGi ביישומים ארגוניים

העבודה על מפרט OSGi החלה על ידי הברית OSGi במרץ 1999. מטרתה העיקרית הייתה ליצור מפרט פתוח למסירת שירותים מנוהלים לרשתות ומכשירים מקומיים. הרעיון הבסיסי הוא שברגע שתוסיף פלטפורמת שירות OSGi למכשיר ברשת (מוטבע כמו גם לשרתים), אתה אמור להיות מסוגל לנהל את מחזור החיים של רכיבי תוכנה בהתקן זה מכל מקום ברשת. ניתן להתקין רכיבי תוכנה, לעדכן אותם או להסיר אותם באופן מיידי מבלי שיהיה צורך לשבש את פעולת המכשיר.

במשך שנים, טכנולוגיית OSGi פרחה בשוק המערכות והמכשירים המשובצים. כעת, בין היתר בזכות Eclipse, OSGi מתגלה כטכנולוגיה קיימא ובעלת ערך לפיתוח ארגונים.

תמיכה גוברת ב- OSGi

בשנת 2003, צוות הפיתוח של Eclipse החל לחפש דרכים להפוך את Eclipse לפלטפורמת לקוחות עשירה יותר דינמית ולהגדיל את המודולריות של ערכת הכלים. בסופו של דבר הצוות הסתפק בשימוש במסגרת OSGi כמודל רכיבי זמן ריצה. Eclipse 3.0, שיצא ביוני 2004, היה הגרסה הראשונה של Eclipse המבוססת על OSGi.

כמעט כל שרתי היישומים הארגוניים תומכים או מתכננים לתמוך ב- OSGi. מסגרת האביב תומכת גם ב- OSGi, באמצעות פרויקט Spring Dynamic Modules for OSGi Service Platforms, המספק שכבת תשתית כדי להקל על השימוש ב- OSGi בפיתוח יישומי ארגוני Java מבוססי אביב.

מיכלי OSGi קוד פתוח

מנקודת מבט של מפתח ארגוני, למכולה של OSGi טביעת רגל כה נמוכה עד כי ניתן להטמיע אותה בקלות ביישום ארגוני. לדוגמה, נניח שאתה מפתח יישום אינטרנט מורכב. אתה רוצה לפרק את היישום למספר מודולים: מודול אחד לשכבת התצוגה, אחר לשכבת DAO ומודול שלישי לשכבת הגישה לנתונים. שימוש במיכל OSGi מוטבע לניהול התלות ההדדית של מודולים אלה יאפשר לך לעדכן את שכבת ה- DAO שלך (נניח מ- DAO איטי ל- DAO מהיר) מבלי להפעיל מחדש את היישום שלך.

כל עוד היישום שלך תואם למפרט OSGi הוא אמור להיות מסוגל לרוץ בכל מיכל תואם OSGi. נכון לעכשיו, ישנם שלושה מכלי OSGi פופולריים בקוד פתוח:

  • Equinox הוא יישום ההפניה לחלק המסגרת של פלטפורמת השירות OSGi Service 4. זהו זמן הריצה המודולרי של Java בלב ה- Eclipse IDE, ומיישם את כל התכונות החובות ורוב התכונות האופציונליות של מפרט OSGi R4.
  • Knopflerfish הוא יישום קוד פתוח של מפרטי OSGi R3 ו- OSGi R4. Knopflerfish 2 מיישם את כל התכונות המחייבות וחלק מהתכונות האופציונליות המוגדרות במפרט R4.
  • אפאצ'י פליקס הוא מיכל ה- OSGi בקוד פתוח של קרן תוכנת אפאצ'י. בזמן כתיבת מכולה זו אינה תואמת לחלוטין את המפרט של OSGI R4.

במאמר זה נשתמש ב- Equinox כמכולה OSGi שלנו. עיין בסעיף משאבים למידע נוסף על אפאצ'י פליקס וקנופלפלריפ.