ההבדלים בין אורקל JDK ו- OpenJDK

1. הקדמה

במאמר זה נחקור את ההבדלים בין ערכת הפיתוח של Oracle Java ל- OpenJDK. ראשית נסתכל במהירות על כל אחד מהם ואז נערוך השוואה. לאחר מכן, נראה רשימה של יישומי JDK אחרים.

2. אורקל JDK ו- Java SE היסטוריה

JDK (ערכת פיתוח Java) היא סביבת פיתוח תוכנה המשמשת בתכנות פלטפורמת Java. הוא מכיל סביבת Java Runtime מלאה, מה שמכונה זמן ריצה פרטי. השם נבע מכך שהוא מכיל יותר כלים מאשר ה- JRE העצמאי, כמו גם שאר הרכיבים הדרושים לפיתוח יישומי Java.

אורקל ממליצה בחום להשתמש במונח JDK להתייחס לערכת הפיתוח של Java SE (מהדורה רגילה) (יש גם פלטפורמות Enterprise Edition ו- Micro Edition).

בואו נסתכל על ההיסטוריה של Java SE:

  • JDK בטא - 1995
  • JDK 1.0 - ינואר 1996
  • JDK 1.1 - פברואר 1997
  • J2SE 1.2 - דצמבר 1998
  • J2SE 1.3 - מאי 2000
  • J2SE 1.4 - פברואר 2002
  • J2SE 5.0 - ספטמבר 2004
  • Java SE 6 - דצמבר 2006
  • Java SE 7 - יולי 2011
  • Java SE 8 (LTS) - מרץ 2014
  • Java SE 9 - ספטמבר 2017
  • Java SE 10 (18.3) - מרץ 2018
  • Java SE 11 (18.9 LTS) - ספטמבר 2018
  • Java SE 12 (19.3) - מרץ 2019

הערה: הגרסאות נטויות אינן נתמכות עוד.

אנו יכולים לראות כי המהדורות העיקריות של Java SE הגיעו בערך כל שנתיים עד ל- Java SE 7. לקח חמש שנים לעבור מג'אווה SE 6, ושלוש נוספות להגיע ל- Java SE 8 לאחר מכן.

מאז Java SE 10, אנו יכולים לצפות למהדורות חדשות אחת לחצי שנה. עם זאת, לא כל המהדורות יהיו המהדורות לתמיכה ארוכת טווח (LTS). כתוצאה מתוכנית השחרור של אורקל, מהדורות המוצר LTS יקרו רק כל שלוש שנים.

Java SE 11 היא גרסת ה- LTS האחרונה וג'אווה SE 8 תקבל עדכונים ציבוריים בחינם עד דצמבר 2020 לשימוש שאינו מסחרי.

ערכת פיתוח זו קיבלה את שמה הנוכחי לאחר שאורקל קנתה את Sun Microsystems בשנת 2010. לפני כן, השם היה SUN JDK, וזה היה היישום הרשמי של שפת התכנות Java.

3. OpenJDK

OpenJDK הוא יישום קוד פתוח בחינם של המהדורה Java SE Platform Edition. תחילה הוא שוחרר בשנת 2007 כתוצאה מהפיתוח שהחלה סאן מיקרוסיסטמס בשנת 2006.

בהחלט, עלינו להדגיש כי ה- OpenJDK הוא יישום הפניה רשמי של המהדורה הסטנדרטית של Java מאז גרסת SE 7.

בתחילה, היא התבססה רק על JDK 7. אבל, מאז Java 10, יישום המקור הפתוח של פלטפורמת Java SE הוא באחריות פרויקט JDK. ובדיוק כמו אורקל, גם פרויקט JDK יביא מהדורות תכונות חדשות אחת לחצי שנה.

עלינו לציין שלפני פרויקט ארוך טווח זה, היו פרויקטים של JDK Release ששחררו תכונה אחת ואז הופסקו.

בואו נבדוק כעת את גרסאות OpenJDK:

  • פרויקט OpenJDK 6 - מבוסס על JDK 7, אך שונה כדי לספק גרסת קוד פתוח של Java 6
  • פרויקט OpenJDK 7 - 28 ביולי 2011
  • פרויקט OpenJDK 7u - פרויקט זה מפתח עדכונים ל- Java Development Kit 7
  • פרויקט OpenJDK 8 - 18 במרץ 2014
  • פרויקט OpenJDK 8u - פרויקט זה מפתח עדכונים ל- Java Development Kit 8
  • פרויקט OpenJDK 9 - 21 בספטמבר 2017
  • שחרור פרויקט JDK 10 - 20 במרץ 2018
  • שחרור פרויקט JDK 11 - 25 בספטמבר 2018
  • פרויקט JDK שחרור 12 - שלב הייצוב

4. אורקל JDK מול OpenJDK

בחלק זה נתמקד בהבדלי המפתח בין אורקל JDK ו- OpenJDK.

4.1. לוח שחרור

כפי שציינו, אורקל תספק מהדורות אחת לשלוש שנים, בזמן OpenJDK ישוחרר אחת לחצי שנה.

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

4.2. רישיונות

אורקל JDK מורשה על פי הסכם הרישיון של Oracle Code Binary, ואילו ל- OpenJDK יש את הרישיון הציבורי הכללי של GNU (GNU GPL) בגרסה 2 למעט קישור.

ישנן כמה השלכות רישוי בשימוש בפלטפורמה של אורקל. עדכונים ציבוריים עבור Oracle Java SE 8 שפורסמו לאחר ינואר 2019 לא יהיו זמינים לשימוש עסקי, מסחרי או ייצור ללא רישיון מסחרי, כפי שהודיעה אורקל. עם זאת, OpenJDK הוא קוד פתוח לחלוטין וניתן להשתמש בו בחופשיות.

4.3. ביצועים

יש אין הבדל טכני אמיתי בין השניים שכן תהליך הבנייה של Oracle JDK מבוסס על זה של OpenJDK.

כשמדובר בביצועים, אורקל זה הרבה יותר טוב לגבי היענות וביצועי JVM. זה שם יותר דגש על יציבות בשל החשיבות שהוא מעניק ללקוחות הארגוניים שלה.

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

4.4. תכונות

אם נשווה תכונות ואפשרויות, נראה כי ה- למוצר אורקל יש מקליט טיסה, בקרת משימות ג'אווה ושיתוף יישומי מחלקה לנתוניםתכונות, בזמן OpenJDK כוללת את התכונה Renderer Font.

גַם, לאורקל יש יותר אפשרויות לאיסוף זבל ומניבים טובים יותר.

4.5. פיתוח ופופולריות

אורקל JDK פותחה במלואה על ידי תאגיד אורקל ואילו OpenJDK פותח על ידי אורקל, OpenJDK וקהילת Java. עם זאת, חברות מהשורה הראשונה כמו Red Hat, Azul Systems, IBM, Apple Inc., SAP AG לוקחות חלק פעיל בפיתוח שלה.

כפי שאנו רואים מהקישור מהסעיף התחתון הקודם, כשמדובר ב- פופולריות בקרב החברות המובילות המשתמשות בערכות פיתוח של Java בכלים שלהן, כגון Android Studio או IntelliJ IDEA, JDK של Oracle היה עדיף יותר, אך שניהם עברו לבניית JetBrains המבוססת על OpenJDK.

מצד שני, הפצות לינוקס עיקריות (פדורה, אובונטו, Red Hat Enterprise Linux) מספקות את OpenJDK כהטמעת ברירת המחדל של Java SE.

5. שינויים מאז Java 11

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

ראשית כל, אורקל תשנה את רישיון ה- "BCL" ההיסטורי שלה עם שילוב של רישיון קוד פתוח של GNU כללי v2, עם חריג Classpath (GPLv2 + CPE) ורישיון מסחרי כאשר משתמשים ב- Oracle JDK כחלק ממוצר או שירות של Oracle, או כאשר תוכנת קוד פתוח אינה רצויה.

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

כמו כן, באופן מסורתי "תכונות מסחריות" כגון מקליט טיסה, בקרת משימות ג'אווה ושיתוף יישומי מחלקת נתונים, כמו גם אספן הזבל Z, זמינים כעת ב- OpenJDK. לָכֵן, מבני Oracle JDK ו- OpenJDK זהים למעשה מג'אווה 11 ואילך.

בואו לבדוק את ההבדלים העיקריים:

  • הערכה של Oracle עבור Java 11 פולטת אזהרה בעת השימוש ב- -XX: + UnlockCommercialFeatures אפשרות, ואילו ב- OpenJDK בונה, אפשרות זו גורמת לשגיאה
  • אורקל JDK מציעה תצורה המספקת נתוני יומן שימוש לכלי "מסוף הניהול המתקדם"
  • אורקל תמיד דרשה מחתימת ספקי קריפטוגרפיה של צד שלישי על ידי אישור ידוע, ואילו למסגרת ההצפנה ב- OpenJDK יש ממשק הצפנה פתוח, מה שאומר שאין הגבלה באילו ספקים ניתן להשתמש.
  • אורקל JDK 11 ימשיך לכלול מתקינים, מיתוג ואריזות JRE, בעוד שבניית OpenJDK זמינה כעת כ רוכסן ו tar.gz קבצים
  • ה javac - שחרור הפקודה מתנהגת אחרת עבור יעדי Java 9 ו- Java 10 בשל הימצאותם של כמה מודולים נוספים במהדורת Oracle
  • התפוקה של java - גרסה ו ג 'אווה - מלא פקודות יבדילו בין המבנים של אורקל לבניית OpenJDK

6. יישומי JDK אחרים

בואו נסתכל במהירות על יישומים פעילים אחרים של ערכת הפיתוח של Java.

6.1. קוד פתוח וחופשי

היישומים הבאים, המפורטים בסדר אלפביתי, הם קוד פתוח וחופשי לשימוש:

  • אמץ את OpenJDK
  • אמזון קורטו
  • אזול זולו
  • Bck2Brwsr
  • CACAO
  • קוד קוד אחד
  • DoppioJVM
  • ליקוי חמה OpenJ9
  • GraalVM CE
  • HaikuVM
  • HotSpot
  • ג'מיגה
  • JamVM
  • Jelatine JVM
  • Jikes RVM (Jikes Research Machine Machine)
  • JVM.go
  • leJOS
  • מקסין
  • מנוע רב מערכת הפעלה
  • RopeVM
  • uJVM

6.2. יישומים קנייניים

יש גם יישומים המוגנים בזכויות יוצרים:

  • Azul Zing JVM
  • CEE-J
  • Excelsior JET
  • GraalVM EE
  • Imsys AB
  • JamaicaVM (aicas)
  • JBlend (Aplix)
  • MicroJvm (IS2T - טכנולוגיית תוכנה חכמה תעשייתית)
  • OJVM
  • PTC Perc
  • SAP JVM
  • Waratek CloudVM עבור Java

לצד היישומים הפעילים המפורטים לעיל, אנו יכולים לראות את רשימת היישומים הלא פעילים ותיאור קצר של כל יישום.

7. מסקנה

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

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