קוד מקור של Java 11 לקובץ יחיד

1. הקדמה

JDK 11, שהוא הטמעת Java SE 11, שוחרר בספטמבר 2018.

במדריך זה נסקור את התכונה החדשה של Java 11 בהשקת תוכנות קוד מקור בקובץ יחיד.

2. לפני Java 11

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

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

לדוגמא, אם קובץ נקרא HelloWorld.java מכיל מחלקה שנקראת שלום עולם עם רָאשִׁי() שיטה, נצטרך לקבץ אותו תחילה:

$ javac HelloWorld.java

זה ייצור קובץ מחלקה נצטרך לרוץ באמצעות הפקודה:

$ java HelloWorld שלום ג'אווה 11!

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

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

3. הפעלת תוכניות קוד מקור לקובץ יחיד

החל ב- Java 11, אנו יכולים להשתמש בפקודה הבאה כדי לבצע תוכנית של קובץ יחיד:

$ java HelloWorld.java שלום Java 11!

שימו לב איך העברנו את שם קובץ קוד המקור של Java ולא את מחלקת Java ל- ג'אווה פקודה.

ה- JVM אוסף את קובץ המקור לזיכרון ואז מריץ את הציבור הראשון רָאשִׁי() שיטה שהוא מוצא.

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

4. אפשרויות שורת פקודה

משגר Java הציג חדש מצב קובץ מקור כדי לתמוך בתכונה זו. מצב קובץ המקור מופעל אם אחד משני התנאים הבאים מתקיים:

  1. הפריט הראשון בשורת הפקודה ואחריו אפשרויות JVM הוא שם הקובץ עם ה- .java סיומת
  2. שורת הפקודה מכילה את -מָקוֹר אפשרות גרסה

אם הקובץ אינו פועל על פי מוסכמות השמות הרגילות עבור קבצי מקור Java, עלינו להשתמש ב- -מָקוֹר אוֹפְּצִיָה. נדבר עוד על קבצים כאלה בסעיף הבא.

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

לדוגמא, יש לנו קובץ שנקרא Addition.java המכיל חיבור מעמד. כיתה זו מכילה א רָאשִׁי() שיטה המחשבת את סכום הטיעונים שלה:

$ java Addition.java 1 2 3

כמו כן, אנו יכולים להעביר אפשרויות לייקים –נתיב-שביל לפני שם הקובץ:

$ java --class-path = / some-path Addition.java 1 2 3

עַכשָׁיו, נקבל שגיאה אם ​​יש מחלקה בנתיב הכיתה עם היישום זהה למחלקה שאנו מבצעים.

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

$ javac HelloWorld.java

עכשיו יש לנו את שניהם HelloWorld.java ו- HelloWorld.class קיים בספריית העבודה הנוכחית:

$ ls HelloWorld.class HelloWorld.java

אבל אם ננסה להשתמש במצב קובץ המקור, נקבל שגיאה:

$ java HelloWorld.java שגיאה: הכיתה נמצאה בנתיב המחלקה של היישום: HelloWorld

5. קבצי שבנג

זה נפוץ במערכות שמקורן ב- Unix, כמו macOS ו- Linux, להשתמש ב- "#!" הנחיה להפעלת קובץ סקריפט להפעלה.

לדוגמה, סקריפט מעטפת מתחיל בדרך כלל עם:

#! / bin / sh

לאחר מכן נוכל לבצע את התסריט:

$ ./some_script

קבצים כאלה נקראים "קבצי שבנג".

כעת אנו יכולים להפעיל תוכניות קובץ יחיד בג'אווה באמצעות אותו מנגנון.

אם נוסיף את הדברים הבאים לתחילת הקובץ:

#! / path / to / java - גרסת המקור

לדוגמה, בואו נוסיף את הקוד הבא בקובץ בשם לְהוֹסִיף:

#! / usr / local / bin / java - מקור 11 ייבא java.util.Arrays; תוספת מחלקה ציבורית {ציבורי ריק ריק סטריטי (מחרוזת [] טענות) {סכום שלם = מערכים.זרם (טענות) .mapToInt (שלם :: parseInt) .sum (); System.out.println (סכום); }}

וסמן את הקובץ כהפעלה:

$ chmod + x הוסף

לאחר מכן נוכל לבצע את הקובץ בדיוק כמו סקריפט:

$ ./ הוסף 1 2 3 6

אנו יכולים להשתמש במפורש גם במפעיל כדי להפעיל את קובץ ה- shebang:

$ java - מקור 11 הוסף 1 2 3 6

ה -מָקוֹר אפשרות נדרשת גם אם היא כבר קיימת בקובץ. מתעלמים מ- shebang בקובץ ומתייחסים אליו כאל קובץ Java רגיל ללא ה- .java סיומת.

למרות זאת, אנחנו לא יכולים לטפל ב- .java קובץ כקובץ shebang, גם אם הוא מכיל shebang חוקי. לפיכך הדברים יביאו לשגיאה:

$ ./Addition.java ./Addition.java:1: שגיאה: תו לא חוקי: '#' #! / Usr / local / bin / java - מקור 11 ^

דבר אחרון שיש לציין בקבצי shebang הוא שההנחיה הופכת את הקובץ לתלוי בפלטפורמה. הקובץ לא יהיה שמיש בפלטפורמות כמו Windows, שאינו תומך בו באופן מקורי.

6. מסקנה

במאמר זה ראינו את התכונה החדשה של קוד המקור לקובץ יחיד שהוצגה ב- Java 11.

כרגיל, ניתן למצוא קטעי קוד ב- GitHub.


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