המהדורות מבוססות הזמן של ג'אווה

1. הקדמה

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

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

2. מדוע שחרור שישה חודשים?

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

במקור, Java הגדירה את המהדורות העיקריות שלה סביב הצגת תכונות גדולות. זו הייתה נטייה ליצור עיכובים, כמו אלה שכולנו חווינו עם Java 8 ו- 9. זה גם האט את חדשנות השפה בעוד שפות אחרות עם מחזורי משוב מהודרים יותר התפתחו.

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

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

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

3. שינוי מספר הגרסה

היבט מכני של שינוי זה הוא ערכת מספר גרסאות חדשה.

3.1. תוכנית גרסאות מחרוזת JEP 223

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

 סוג שחרור היפותטי בפועל ארוך קצר ------------ ------------------------ אבטחה 2013/06 1.7.0_25- b15 7u25 מינור 2013/09 1.7.0_40-b43 7u40 אבטחה 2013/10 1.7.0_45-b18 7u45 אבטחה 2014/01 1.7.0_51-b13 7u51 מינור 2014/05 1.7.0_60-b19 7u60

אם נרוץ ג'אווה - גרסה ב- JVM לגרסה 8 ומעלה, נראה משהו כמו:

> java -version java version "1.6.0_27" Java (TM) 2 סביבת זמן ריצה, מהדורה רגילה (build 1.6.0_27-b07) Java HotSpot (TM) Client Client (build 1.6.0_27-b13, מצב מעורב, שיתוף)

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

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

3.2. תוכנית מיתרי גרסאות חדשה

ערכת מחרוזת הגרסאות החדשה תהיה "עיבוד מחדש של מספרי גרסאות כדי לקודד לא תאימות ומשמעות, אלא מעבר לזמן, מבחינת מחזורי שחרור,לדברי מארק ריינהולד ב- JEP.

בואו נסתכל על כמה:

9.0.4 11.0.2 10.0.1

במבט מהיר נראה כי מדובר בגירסא סמנטית; עם זאת, זה לא המקרה.

עם גרסאות סמנטיות, המבנה האופייני הוא $ MAJOR. $ MINOR. $ PATCH, אך מבנה הגרסאות החדש של Java הוא:

$ FEATURE. $ ביניים. $ UPDATE. $ PATCH

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

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

ושנית, עדכון $ מבוסס על זמן $ FEATURE, מתעדכן מדי חודש לאחר המהדורה האחרונה של התכונה.

ולבסוף, אפסים נגררים נחתכים.

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

4. הפצות גרסאות מרובות

לאחר מכן, בואו נבחן כיצד לבחור את הגרסה הנכונה.

4.1. יַצִיבוּת

במילים פשוטות, ל- Java יש עכשיו ערוץ מהיר, כל חצי שנה, וערוץ איטי, כל שלוש שנים.כל מהדורה בשנה שלישית נקראת מהדורת LTS.

בערוץ המהיר, השפה משחררת תכונות בדגירה. מאפייני שפה אלה מתייצבים במהדורת ה- LTS.

לכן, עבור חברות שיכולות לאמץ את התנודתיות בתמורה לשימוש בתכונות חדשות, הן יכולות להשתמש בערוץ המהיר. עבור ארגונים שמעריכים יציבות ויכולים לחכות לשדרוג, הם יכולים לשדרג בכל גרסת LTS.

ניסויים עם גרסאות JDK מאפשרים למפתחים למצוא את ההתאמה הטובה ביותר.

4.2. תמיכה

יש, כמובן, עניין התמיכה. כעת, לאחר שתמיכת Java 8 יש שקיעה, מה אנו עושים?

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

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

4.3. רישוי

תחום של בלבול עבור חלק הוא ההבדל בין OpenJDK ל- Oracle JDK.

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

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

4.4. הִתנַפְּצוּת

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

כמובן, מיכל יכול לעזור בטיפול בזה. מ- Docker ו- CoreOS ועד ל- OpenShift של Red Hat, מיכל הגישה מספק את הבידוד הדרוש ואינו מכריח עוד מיקום התקנה אחד לשימוש ב- Java בכל השרת.

5. מסקנה

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

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


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