Java EE לעומת J2EE מול ג'קרטה EE

1. הקדמה

שמעתם פעם על Java EE? מה דעתך על Java 2EE, J2EE, או עכשיו ג'קרטה EE? בעצם, כל אלה שמות שונים לאותו הדבר: קבוצה של מפרט ארגוני המרחיב את Java SE.

במאמר קצר זה נתאר את התפתחות Java EE.

2. היסטוריה

בגרסה הראשונה של Java, הרחבות Java ארגוניות היו פשוט חלק מ- JDK הליבה.

לאחר מכן, כחלק מג'אווה 2 בשנת 1999, הרחבות אלה נפרצו מהקבצים הבינאריים הסטנדרטיים, ו- J2EE, או Java 2 Platform Enterprise Edition, נולד. השם הזה ישמור עד 2006.

עבור Java 5 בשנת 2006, שונה שם J2EE ל- Java EE או ל- Java Platform Enterprise Edition. השם הזה יימשך עד ספטמבר 2017, כשקרה משהו מרכזי.

ראו, בספטמבר 2017, אורקל החליטה לתת את הזכויות על Java EE לקרן Eclipse (השפה עדיין בבעלות אורקל).

3. במעבר

למעשה, קרן הליקוי באופן חוקי היה לשנות את שם Java EE. הסיבה לכך היא כי לאורקל יש את הזכויות על המותג "Java".

אז כדי לבחור את השם החדש, הקהילה הצביעה ובחרה: ג'קרטה EE. באופן מסוים, זה עדיין יEE.

* הוכרז שם חדש

זה עדיין סיפור מתפתח, והאבק לא שקע לחלוטין.

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

עדיין לא ברור אם תיעוד חדש של קרן Eclipse יוכל להתייחס למקורות המקוריים.

כמו כן, באופן מוזר, Eclipse Foundation לא יכולה ליצור שום חבילות Java חדשות באמצעות ג'אווה מרחב שמות, אך הוא יכול ליצור מחלקות ותתי מחלקות חדשות תחת הקיימות.

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

4. העתיד

מבחינה היסטורית, כדי שתכונה תהפוך אותה ל- "EE", היינו זקוקים לשלושה דברים: מפרט, יישום הפניה ובדיקות. כל אחד בקהילה יכול היה לספק את שלושת הדברים הללו, וועדה המנהלת תחליט מתי אלה מוכנים להוסיף לשפה.

כדי להבין טוב יותר את תהליך העבר, בואו נסתכל מקרוב על מה JSRs, Glassfish ו- TCK הם וכיצד הם מגלמים תכונות EE חדשות.

נקבל גם הצצה למה לצפות בעתיד.

4.1. ה- JCP ועכשיו, ה- EFSP

בעבר, התהליך שבו נולדה תכונה חדשה של EE נקרא Java Community Process (JCP).

Java SE עדיין משתמש ב- JCP גם היום. אך מכיוון ש- EE שינתה את הבעלות שלה, מאורקל לקרן Eclipse, יש לנו תהליך חדש ונפרד לכך. זהו תהליך המפרט של Eclipse Foundation (EFSP) וזה הרחבה של תהליך פיתוח Eclipse.

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

4.2. JSRs

ב- JCP, הצעד הראשון להוספת תכונה ל- EE היה ליצור בקשת JSR או Java Specification. ה- JSR היה קצת כמו ה- מִמְשָׁק לתכונת EE. הוועד המנהל של JCP בדק ואישר JSR שהושלם, ואז תורמי ה- JSR היו מקודדים אותו ומעמידים אותו לרשות הקהילה.

דוגמה טובה לכך הייתה JSR-339 - או JAX-RS - שהוצע במקור בשנת 2011, אושר על ידי JCP בשנת 2012 ושוחרר לבסוף בשנת 2013.

ולמרות שהקהילה תמיד הייתה יכולה לשקול בזמן שמפרט נמצא תחת דיון, הזמן הראה שגישת יישום ראשונה - כמו במקרה של JSR 310, java.time, ו- Joda Time - נטו ליצור תכונות וממשקי API מקובלים יותר.

אם כן, ה- EFSP משקף את ההשקפה הראשונה קוד זו במטרה המוצהרת שלה: "EFSP תתבסס על ניסויים וקידוד מעשי תחילה, כדרך להוכיח שמשהו ראוי לתיעוד במפרט."

4.3. דג זכוכית

ואז, במסגרת ה- JCP, JSR נזקק ליישום הפניה. זה קצת כמו מעמד שמיישם את מִמְשָׁק. יישום הפניה מסייע למפתחים של ספריות תואמות או ארגונים אחרים שרוצים ליצור יישום משלהם של המפרט.

עבור תכונות Java EE, JCP השתמש ב- Glassfish לצורך יישומי הייחוס שלו.

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

לפיכך, ה- EFSP אינו דורש יישום הפניה, אלא רק א תוֹאֵם יישום. במילים פשוטות, השינוי העדין הזה גורם לכך יישומים בתוך ארכיטקטורה מרכזית, כמו Glassfish, לא יעדיפו בשוגג על ידי הקרן.

4.4. TCK

לבסוף, ה- JCP דרש כי תכונות EE ייבדקו באמצעות ערכת התאימות הטכנולוגית, או TCK.

ה- TCK היה חבילת בדיקות לאימות JSR ספציפי של EE. פשוט שים, על מנת לציית ל- Java EE, שרת יישומים צריך ליישם את כל ה- JSR שלו ולהעביר את כל הבדיקות ב- TCK המיועד.

לא הרבה שינויים כאן. אורקל מקורות פתוחים TCK כמו גם JSRs EE. כמובן שכל המסמכים העתידיים וה- TCK יהיו קוד פתוח.

5. מסקנה

Java EE בהחלט התפתח הרבה באותן שנים. זה נחמד לראות את זה ממשיך להשתנות ולהשתפר.

ישנם אתגרים רבים לפנינו, אז בואו נקווה למעבר חלק.


$config[zx-auto] not found$config[zx-overlay] not found