מודולים ב-Java 9

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

מודולים של Java 9

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

  1. הקדמה
  2. Java SE 9: פרויקט Jigsaw
  3. בעיות במערכת ה-Java הנוכחית?
  4. יתרונות של מערכת המודולים של Java SE 9
  5. השוואה בין JDK 8 ל-JDK 9
  6. מהו מודול Java 9?
  7. אםא של מערכת המודולים של Java 9
  8. השוואה בין אפליקציות Java 8 ו-Java 9

הקדמה

חברת Oracle אחראית על העברת השקת Java 9 ממרץ 2017 ל-ספטמבר 2017. כפי שאנו יודעים, ב-Java SE 8 הגיעו שלוש יכולות חדשות גדולות (וכמה שיפורים ויכולות נוספות).

  1. ביטויי למבדר
  2. API של Stream
  3. API של תאריך

באותו אופן, Java SE 9 מגיעה עם שלוש יכולות גדולות (וכמה שיפורים ויכולות נוספות):

  1. מערכת המודולים של Java (פרויקט Jigsaw)
  2. Java REPL
  3. פרויקט טחינה של מטבע מקטע

בפוסט זה, נדון ביסודות פרויקט Oracle Jigsaw.

Java SE 9: פרויקט Jigsaw

פרויקט Jigsaw מתכוון להציג מושג חדש לחלוטין ב-Java SE 9: מערכת מודולים של Java. זהו פרויקט גדול וכבד מאוד מצד חברת Oracle בשחרור Java SE 9. בהתחלה, התחילו את הפרויקט הזה כחלק משחרור Java SE 7. אך, עם שינויים גדולים, הוא הועבר לשחרור Java SE 8 ושוב הועבר. כעת הוא עומד לשחרר עם Java SE 9 בספטמבר 2017. מטרות עיקריות של פרויקט Jigsaw:

  • מערכת ה-JDK המודולרית

    כפי שאנו יודעים, המערכת הנוכחית של JDK היא גדולה מדי. לכן הוחלט לחלק את ה-JDK עצמה למודולים קטנים כדי להשיג מספר יתרונות (נדבר עליהם בקטעים הקרובים). – קוד המקור המודולרי
    קבצי ה-jar הנוכחיים גדולים מדי, במיוחד ה-rt.jar. לכן הם שולפים לחלק את קוד המקור של ג'אווה למודולים קטנים יותר. – תמונות הרץ המודולריות
    המטרה העיקרית של תכלית זו היא "לשדרג את מבנה תמונות הרץ של ה-JDK וה-JRE כך שיוכלו להכיל מודולים". – להצפין את רוב ה- API הפנימיים
    המטרה העיקרית של תכלית זו היא "להפוך את רוב ה- API הפנימיים של ה-JDK לא נגישים כברירת מחדל, אך להשאיר כמה API פנימיים קריטיים ונפוצים נגישים". – מערכת המודולים של פלטפורמת ג'אווה
    המטרה העיקרית של תכלית זו היא "לאפשר למשתמש ליצור מודולים יחודיים כדי לפתח את היישומים שלהם". – jlink: מקשר ה-Java
    המטרה העיקרית של כלי jlink הוא "לאפשר למשתמש ליצור יישומים ניתנים לביצוע עבור היישומים שלהם".

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

בעיות במערכת הג'אווה הנוכחית?

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

  • כיוון ש-JDK גדול מדי, קשה קצת לקטן אותו למכשירים קטנים. ב-Java SE 8 הוזנקו 3 סוגים של פרופילים קומפקטיים כדי לפתור את הבעיה הזו: קומפקט1, קומפקט2 וקומפקט3. אך זה לא פתר את הבעיה הזו.
  • קבצי JAR כמו rt.jar וכדומה גדולים מדי כדי להשתמש בהם במכשירים קטנים וביישומים.
  • מאחר ו-JDK גדול מדי, היישומים או המכשירים שלנו לא מסוגלים לתמוך בביצועים טובים יותר.
  • אין חיפוש חזק במערכת ה-Java הנוכחית מאחר ומודיפיקט "public" פתוח מדי. כולם יכולים לגשת אליו.
  • מאחר ו-JDK ו-JRE גדולים מדי, קשה לבדוק ולתחזק אפליקציות.
  • מאחר והגישה הציבורית פתוחה מדי, לא ניתן להימנע מגישה לאפליקציות ל-APIים פנימיים לא קריטיים כמו sun.*, *.internal.* וכו'.
  • מאחר והמשתמש יכול לגשת גם ל-APIים פנימיים, אבטחה היא גם בעיה גדולה.
  • היישומים גדולים מדי.
  • זה קשה קצת לתמוך בקישור פחות בין הרכיבים.

כדי לפתור את כל הבעיות האלו, Oracle Corp הולכת לשחרר מערכת מודול Java בגרסת Java SE 9.

יתרונות של מערכת מודולי Java SE 9

המערכת של מודול גרסת Java SE 9 הולכת לספק את היתרונות הבאים

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

נחקור את כל הרעיונות הללו אחד אחרי השני בקרוב

השוואה בין JDK 8 ל-JDK 9

אנו יודעים מה מכיל תוכנת JDK. לאחר התקנת תוכנת JDK 8, ניתן לראות מספר ספריות כמו bin, jre, lib וכו 'בתיקיית הבית של Java. אך, חברת Oracle שינתה מעט את מבנה התיקייה הזו כפי שמוצג למטה. מבנה התיקייה של JDK 8:מבנה התיקייה של JDK 9: כאן ב-JDK 9 אין JRE. ב-JDK 9, JRE מופרדת לתיקיית הפצה נפרדת. התוכנה של JDK 9 מכילה תיקייה חדשה בשם "jmods". זה מכיל סט של מודולים של Java 9 כפי שמוצג למטה. ב-JDK 9, אין rt.jar ואין tools.jarהערה:- כיום, "jmods" מכילה 95 מודולים. זה עשוי להתרחב בהפצה הסופית. התיקייה "jmods" זמינה ב- ${JAVA_HOME}/jmods. אלה ידועים כמודולי JDK.

מהו מודול Java 9?

A Module is a self-describing collection of Code, Data, and some Resources. It is a set of related Packages, Types (classes, abstract classes, interfaces etc) with Code & Data and Resources. Each Module contains only a set of related code and data to support Single Responsibility (Functionality) Principle (SRP). The main goal of Java 9 Module System is to support Modular Programming in Java. We will discuss on “What is a Module Descriptor” and “How to develop Java Modules” in my coming posts.

אם אם המערכת של מודול Java 9

כעת, במערכת Java 9 Module ישנם 95 מודולים ב-Early Access JDK. חברת Oracle הפרידה בין JARs של JDK ובין תקן Java SE לשני סטים של מודולים.

  • כל המודולים של JDK מתחילים ב-"jdk.*"
  • כל המודולים של תקן Java SE מתחילים ב-"java.*"

במערכת Java 9 Module קיים מודול "java.base" שידוע כמודול הבסיס. זהו מודול עצמאי שלא תלוי בשום מודול אחר. כל המודולים האחרים תלויים במודול זה כברירת מחדל. לכן, המודול "java.base" ידוע גם בשם "אם המודולים של Java 9". זהו המודול שמשמש כברירת מחדל עבור כל המודולים של JDK ומודולים שמוגדרים על ידי המשתמש.

השוואה בין יישומים ב-Java 8 ו-Java 9

כבר פיתחנו מספר יישומים ב-Java באמצעות Java 5, 6, 7 או 8. אנו יודעים כיצד יישומים ב-Java 8 או קודם נראים ומהם התכונות שלהם. בקצרה, תיארתי יישומי Java 8 בתרשים כפי שמוצג למטה:
ביישומי Java 8 או קודמים, הרכיב העליון הוא חבילה. היא מקבצת סט של סוגים קשורים לתוך קבוצה. היא גם מכילה סט של משאבים. ביישומי Java 9 אין הרבה הבדלים מזה. פשוט הוכנס רכיב חדש שנקרא "מודול", אשר משמש לקיבוץ של סט של חבילות קשורות לתוך קבוצה. ועוד רכיב חדש שנקרא מדיאטור של מודול ("module-info.java"). זהו. שאר היישומים זהים לגרסאות הקודמות של היישומים כפי שמוצג למטה.
כמו ביישומי Java 8 יש חבילות כרכיבים עליונים, כך גם ביישומי Java 9 ישנם מודולים כרכיבים עליונים. הערה: – כל מודול Java 9 מכיל מודול אחד ויחיד ומדיאטור מודול אחד ויחיד. להבדיל מחבילות Java 8, לא ניתן ליצור מספר מודולים שונים בתוך מודול אחד. בקצרה אני יכול לומר שמודול Java 9 מכיל את הרכיבים העיקריים הבאים:

  • מודול אחד
  • שם מודול
  • מדיאטור מודול
  • סט של חבילות
  • סט של סוגים ומשאבים

המשאבים יכולים להיות module-info.java (מודול מגדיר) או כל תכונה אחרת או XML. דיברנו יותר מדי על תאוריה בפוסט הזה. אני חושב שזה מספיק להבין את היסודות של מערכת המודולים של Java 9. נתחיל פיתוח מודול בסיסי בפוסט הבא שלי. אני אדבר על עוד כמה עקרונות תיאוריה או מונחי מערכת המודולים של Java 9 כשזה ידרוש. זהו, זה כל הקשור לנושא "מבוא למערכת המודולים של Java 9". נדבר עוד על עקרונות נוספים של מערכת המודולים של Java SE 9 בפוסטים הבאים שלי. בבקשה השאירו תגובה אם אהבתם את הפוסט שלי או יש לכם שאלות/הצעות/שגיאות מסוגים. תודה על קריאת המדריכים שלי. למידה מהנה של Java SE 9! הפניה: Project Jigsaw

Source:
https://www.digitalocean.com/community/tutorials/java-9-modules