מדריך ל- jlink

1. סקירה כללית

jlink הוא כלי שיוצר תמונת זמן ריצה מותאמת אישית של Java המכילה רק את מודולי הפלטפורמה הנדרשים ליישום נתון.

תמונת זמן ריצה כזו פועלת בדיוק כמו ה- JRE אך מכילה רק את המודולים שבחרנו ואת התלות שהם צריכים כדי לתפקד. הרעיון של תמונות זמן ריצה מודולריות הוצג ב- JEP 220.

במדריך זה נלמד כיצד ליצור JRE מותאם אישית באמצעות jlinkוכן נפעיל ונבדוק שהמודול שלנו פועל כהלכה בתוך ה- JRE שלנו.

2. צריך ליצור JRE מותאם אישית

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

ניצור יישום מודולרי פשוט. למידע נוסף על יצירת יישומים מודולריים, עיין במאמר שלנו בנושא מודולריות.

ראשית, בואו ניצור a שלום עולם כיתה ומודול מקביל:

מחלקה ציבורית HelloWorld {סופי סטטי פרטי לוגר LOG = Logger.getLogger (HelloWorld.class.getName ()); ראשי סטטי ציבורי ריק (String [] args) {LOG.info ("שלום עולם!"); }}
מודול jlinkModule {דורש java.logging; }

כדי להפעיל תוכנית זו, אנו זקוקים רק שלום עולם,חוּט, כּוֹרֵת עֵצִים, ו לְהִתְנַגֵד שיעורים.

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

לכן, כדי להפעיל תוכנית קטנה עלינו לשמור על JRE מלא, שהוא פשוט בזבוז זיכרון.

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

עם jlinkאנו יכולים ליצור JRE קטן משלנו המכיל רק את המחלקות הרלוונטיות בהן אנו רוצים להשתמש, מבלי לבזבז זיכרון, וכתוצאה מכך נראה ביצועים מוגברים.

3. בניית תמונות Java Runtime בהתאמה אישית

נבצע סדרה של צעדים פשוטים ליצירת תמונות JRE מותאמות אישית.

3.1. חיבור מודול

ראשית, בואו נערך את התוכנית שהוזכרה לעיל משורת הפקודה:

javac -d out module-info.java
javac -d out - module-path out com \ baeldung \ jlink \ HelloWorld.java

עכשיו, בואו נפעיל את התוכנית:

java - מודול-נתיב החוצה - מודול jlinkModule / com.baeldung.jlink.HelloWorld

התפוקה תהיה:

13 במרץ, 2019 10:15:40 com.baeldung.jlink.HelloWorld עיקרי מידע: שלום עולם!

3.2. באמצעות jdeps לרשימת המודולים התלויים

על מנת להשתמש jlink, עלינו לדעת את רשימת המודולים JDK שבהם היישום משתמש וכי עלינו לכלול ב- JRE המותאם אישית שלנו.

בואו נשתמש ב- jdeps פקודה להשיג את המודולים התלויים המשמשים ביישום:

jdeps - מודול נתיב החוצה - s - מודול jlinkModule

התפוקה תהיה:

jlinkModule -> java.base jlinkModule -> java.logging

זה הגיוני, כמו java.base הוא המודול המינימלי הדרוש לספריות קוד Java, ו- java.logging משמש לוגר בתוכנית שלנו.

3.3. יצירת JRE מותאם אישית עם jlink

כדי ליצור JRE מותאם אישית ליישום מבוסס מודול, נוכל להשתמש ב- jlink פקודה. הנה התחביר הבסיסי שלה:

jlink [אפשרויות] –נתיב מודול מסלול –מודול מודולים להוסיף [, מודול ...] - פלט 

עכשיו, בואו צור JRE מותאם אישית עבור התוכנית שלנו באמצעות Java 11:

jlink -module-path "% JAVA_HOME% \ jmods"; out -add-modules jlinkModule - פלט customjre

הנה, הערך אחרי ה- - להוסיף מודולים פרמטר מספר jlink איזה מודול לכלול ב- JRE.

סוף - סוף, ה customjre הבא ל -תְפוּקָה פרמטר מגדיר את ספריית היעד בה צריך ליצור את ה- JRE המותאם אישית שלנו.

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

3.4. הפעלת יישום עם התמונה שנוצרה

עכשיו, יש לנו את JRE המותאם אישית שלנו שנוצר על ידי jlink.

כדי לבדוק את ה- JRE שלנו, ננסה להפעיל את המודול שלנו על ידי ניווט בתוך ה- פַּח תיקייה של שלנו customjre ספריה והפעל את הפקודה למטה:

java - מודול jlinkModule / com.baeldung.jlink.HelloWorld

שוב, מעטפת Windows, בה אנו משתמשים, מחפשת בספרייה הנוכחית כל הפעלה לפני שתמשיך ל- PATH. עלינו לשים לב במיוחד כדי להפעיל את ה- JRE המותאם אישית שלנו ולא את ה- ג'אווה נפתר כנגד PATH כשאנחנו ב- Linux או Mac.

4. יצירת JRE מותאם אישית עם סקריפטים של משגר

אופציונלי, אנו יכולים גם ליצור JRE מותאם אישית עם הפעלה מַשׁגֵר תסריטים.

לשם כך, עלינו להפעיל את jlink פקודה שיש לה תוֹסֶפֶת -מַשׁגֵר פרמטר ליצירת המשגר ​​שלנו עם המודול והמחלקה הראשית שלנו:

jlink --launcher customjrelauncher = jlinkModule / com.baeldung.jlink.HelloWorld -module-path "% JAVA_HOME% \ jmods"; out -add-modules jlinkModule - פלט customjre

זה ייצור שני סקריפטים: customjrelauncher.bat ו customjrelauncher בתוך שלנו customjre / bin מַדרִיך.

בואו נפעיל את התסריט:

customjrelauncher.bat

והתפוקה תהיה:

18 במרץ, 2019 12:34:21 com.baeldung.jlink.HelloWorld עיקרי מידע: שלום עולם!

5. מסקנה

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

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

קטעי הקוד המשמשים במדריך זה זמינים דרך Github.


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