Enterprise JavaBeans
![]() |
הערך נמצא בשלבי עבודה: כדי למנוע התנגשויות עריכה ועבודה כפולה, אתם מתבקשים שלא לערוך את הערך בטרם תוסר ההודעה הזו, אלא אם כן תיאמתם זאת עם מניח התבנית.
| |
הערך נמצא בשלבי עבודה: כדי למנוע התנגשויות עריכה ועבודה כפולה, אתם מתבקשים שלא לערוך את הערך בטרם תוסר ההודעה הזו, אלא אם כן תיאמתם זאת עם מניח התבנית. | |
Enterprise JavaBeans (אנטרפרייז ג'אווה בינז; בקיצור: EJB, וברבים: EJBs) היא ארכיטקטורת רכיבים לצד-שרת המשמשת ליצירת יישומי enterprise מודולריים.
המפרט של EJB הוא אחד מבין ממשקי תכנות היישומים (APIs) הנכללים במפרט של EJB .Java Enterprise Edition הוא מודל צד-שרת שתפקידו לכמס את הלוגיקה העסקית של יישום. המפרט של EJB פותח במקור על ידי חברת IBM בשנת 1997, ובשנת 1999 אומץ של ידי סאן מיקרוסיסטמס (החברה שפיתחה את Java עד שנקנתה על ידי אורקל), וממשיך להיות משופר במסגרת ה-Java Community Process. הגרסה הנוכחית היא EJB 3.1.
מטרת המפרט של EJB היא לספק צורה סטנדרטית למימוש קוד back-end "עסקי", אשר בדרך כלל נמצא ביישומי enterprise (בניגוד לקוד front-end השייך לממשק המשתמש). בדרך כלל קוד כזה מטפל בבעיות דומות החוזרות על עצמן בפרויקטים שונים, ולעתים קרובות מתכנתים מממשים מחדש את הפתרונות לבעיות אלו. מטרת ה-Enterprise JavaBeans היא לטפל בצורה סטנדרטית בבעיות נפוצות כאלה, כדוגמת: persistence, שלמות טרנזקציות (transactional integrity), ואבטחת מידע, על מנת לשחרר את המתכנתים להתרכז בפיתוח פתרונות לבעיות הספציפיות של הפרויקט.
כדי לפרוס ולהריץ Enterprise JavaBeans, ניתן להשתמש בשרת יישומים ל-Java EE אשר כברירת מחדל כולל מנגנון להרצת EJB container) EJBs). לחילופין ניתן להשתמש בקונטיינר נפרד כדוגמת OpenEJB.
שירותים עיקריים
המפרט של EJB מגדיר כיצד שרת יישומים מספק את השירותים הבאים:
- עיבוד טרנזקציות
- אינטגרציה עם שירותי persistence המוצעים על ידי ה-(Java Persistence API (JPA
- בקרת מקביליות
- עבודה עם אירועים (eventing) באמצעות (Java Message Service (JMS ו-(Java EE Connector Architecture (JCA
- Asynchronous method invocation
- תיזמון עבודות
- Naming and directory services באמצעות (Java Naming and Directory Interface (JNDI
- הפעלת פרוצדורות מרוחקות (RPC) באמצעות RMI-IIOP ו-Web services
- אבטחת מידע באמצעות (Java Cryptography Extension (JCE ו-(Java Authentication and Authorization Service (JASS
- פריסת רכיבי תוכנה על גבי שרת יישומים
כמו כן המפרט מגדיר את התפקידים של ה-EJB container וה-EJBs עצמם, ואת הדרך לפרוס את ה-EJBs בתוך הקונטיינר. המפרט העדכני, EJB 3.1, אינו מגדיר כיצד שרת יישומים אמור לספק persistence (משימה זו הועברה למפרט ה-JPA), אלא במקום זאת מפרט כיצד ניתן לשלב בקלות בין הלוגיקה העסקית לשירותי ה-persistence המוצעים על ידי שרת היישומים.
אימוץ מהיר המלווה בביקורת
חזון ה-EJB הוצג בצורה משכנעת על ידי התומכים בו כדוגמת IBM ו-Sun Microsystems, וה-Enterprise JavaBeans אומצו במהרה על ידי חברות גדולות. זמן קצר לאחר מכן התחילו להופיע בעיות בגרסאות הראשונות. חלק מהמפתחים הרגישו כי ממשקי תכנות היישומים (APIs) של סטנדרט ה-EJB היו הרבה יותר מסובכים לעומת מה שהם היו רגילים אליו. ריבוי החריגות הנבדקות (checked exceptions), ממשקים נדרשים, והמימוש של מחלקת ה-bean כמחלקה אבסטרקטית, היו חריגים ולא אינטואיטיביים עבור מתכנתים. הבעיות שבהן סטנדרט ה-EJB ניסה לטפל, כדוגמת מיפוי אובייקטי-רלציוני (ORM) ושלמות טרנזקציות, אכן היו בעיות מורכבות, אך מתכנתים רבים חשו שממשקי תכנות היישומים של EJB היו לא פחות מסובכים. זה הוביל לתפיסה ש-EJBs הכניסו מורכבות נוספת מבלי לספק שום יתרונות ממשיים.
בנוסף לכך, התברר שהשימוש ב-EJBs לצורך כימוס הלוגיקה העסקית גרם לירידה בביצועים. זה נגרם בגלל שהמפרט המקורי איפשר הפעלת מתודות מרוחקות (remote method invocation) רק באמצעות CORBA (ואפשרית גם פרוטוקולים אחרים), למרות הרוב הגדול של היישומים העסקיים אינם דורשים פונקציונליות כזאת של חישוב מבוזר. המפרט EJB 2.0 טיפל בבעיה זו על ידי הוספת רעיון הממשקים המקומיים שניתן לקרוא להם ישירות מיישומים שאינם מבוזרים על פני כמה שרתים, מבלי לפגוע בביצועים.
בעיות המורכבות של EJB המשיכו לעכב את תפוצת השימוש בה. למרות שנוצרו כלי פיתוח שהקלו על היצירה והשימוש ב-EJBs על ידי אוטומציה של מרבית המשימות שחוזרות על עצמן, כלים אלה לא הפכו את תהליך הלימוד של השימוש בטכנולוגיה זו לקל יותר. יתר על כן, התחילה לצמוח "תנועת מחאה עממית" בקרב מתכנתים. התוצרים העיקריים של תנועה זו היו הטכנולוגיות ה"קלות" (בהשוואה ל-EJB): הייברנייט (לטיפול ב-persistence ומיפוי אובייקטי-רלציוני), ו-Spring Framework (מספקת שיטה אלטרנטיבית והרבה יותר תמציתית לקודד את הלוגיקה העסקית). למרות שלא היתה להן התמיכה של עסקים גדולים, הפופולריות של טכנולוגיות אלה גדלה והן אומצו על ידי ארגונים רבים.
Java (פלטפורמת תוכנה) | ||
---|---|---|
פלטפורמה | Java (שפת תכנות) • Java Card • Java ME • Java EE • Java SE • Java Virtual Machine | ![]() |
טכנולוגיות | Java applet • Java Web Start • Java Servlet • JavaServer Pages • JavaFX • JavaServer Faces | |
מושגים | איסוף זבל • Cross-platform • Java Bytecode • Java Development Kit • Javadoc • Java Classloader • Java Class Library JIT Compiler • HotSpot • JavaBeans • Enterprise JavaBeans • JNI • JAR • POJO • Web container • Java annotation | |
ממשקי תכנות יישומים | Swing • AWT • SWT • Java 3D • Java 2D • JMS • JDBC • JAXP • JPA • RMI • JNDI | |
שפות ל-JVM | Scala • Clojure • Groovy • JRuby • Jython | |
תשתיות תוכנה וכלים של חברות צד שלישי |
אפאצ'י טומקט • Apache Maven • Apache Ant • Apache Struts JUnit • Hibernate • Spring Framework • JBoss • Google Web Toolkit • BEA WebLogic • IBM WebSphere | |
סביבות פיתוח משולבות | Eclipse • NetBeans • IntelliJ | |
חברות | סאן מיקרוסיסטמס • אורקל | |
אישים | ג'יימס גוסלינג • ביל ג'וי • אריק שמידט |