Java 9 - חקר ה- REPL

1. הקדמה

מאמר זה עוסק ב jshell, אינטראקטיבי REPL (Read-Evaluate-Print-Loop) קונסולה שמצורפת ל- JDK למהדורת Java 9 הקרובה. למי שלא מכיר את הרעיון, REPL מאפשר להריץ באופן אינטראקטיבי קטעי קוד שרירותיים ולהעריך את תוצאותיהם.

REPL יכול להיות שימושי לדברים כגון לבדוק במהירות את כדאיות הרעיון או להבין למשל. מחרוזת מעוצבת עבור חוּט אוֹ SimpleDateFormat.

2. ריצה

כדי להתחיל אנו צריכים להריץ את REPL, אשר נעשה על ידי הפעלת:

$ JAVA_HOME / bin / jshell

אם רוצים להעביר הודעות מפורטות יותר מהקליפה, א -v ניתן להשתמש בדגל:

$ JAVA_HOME / bin / jshell -v

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

3. הגדרת ושיטות קריאה

ניתן להוסיף שיטות על ידי הקלדת החתימה והגוף שלהן:

jshell> void helloWorld () {System.out.println ("שלום עולם");} | נוצרה שיטה helloWorld ()

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

jshell> helloWorld () שלום עולם

4. משתנים

ניתן להגדיר משתנים בעזרת התחביר הרגיל של הצהרת Java:

jshell> int i = 0; i ==> 0 | נוצר משתנה i: int jshell> חברת מחרוזות = "Baeldung" ==> "Baeldung" | יצר חברה משתנה: מחרוזת jshell> תאריך תאריך = תאריך חדש () תאריך ==> יום ראשון 26.2 06:30:16 EST 2017 | נוצר תאריך משתנה: תאריך

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

jshell> קובץ קובץ קובץ ==> null | נוצר קובץ משתנה: קובץ

5. ביטויים

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

jshell> String.format ("% d בקבוקי בירה", 100) $ 6 ==> "100 בקבוקי בירה" | נוצר משתנה שריטה $ 6: מחרוזת

ה- REPL די מועיל כאן בכך שהוא הודיע ​​לנו שהוא יצר משתנה שריטה בשם $6 איזה ערך הוא "100 בקבוקי בירה על הקיר" וסוגו הוא חוּט.

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

jshell> int i = ...> 5; i ==> 5 | משתנה שונה i: int | עדכון החלף משתנה i: int

שים לב כיצד ההנחיה השתנתה לכניסה …> כדי לסמן את המשך הביטוי.

6. פקודות

Jshell מספק לא מעט מטה-פקודות שאינן קשורות להערכת הצהרות Java. כולם מתחילים עם קו נטוי קדימה (/) כדי להבדיל בין פעולות רגילות. לדוגמה, אנו יכולים לבקש רשימה של כל הפקודות הזמינות על ידי הנפקה /עֶזרָה או / ?.

בואו נסתכל על כמה מהם.

6.1. יבוא

כדי לרשום את כל הייבוא ​​הפעיל במושב הנוכחי נוכל להשתמש ב- /יְבוּא פקודה:

jshell> / יבוא | ייבא java.io. * | ייבא java.math. * | יבוא java.net. * | ייבא java.nio.file. * | ייבא java.util. * | ייבא java.util.concurrent. * | יבוא java.util.function. * | ייבא java.util.prefs. * | ייבא java.util.regex. * | ייבא java.util.stream. *

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

6.2. רשימות

עבודה ב- REPL אינה כמעט קלה כמו שיהיה לנו IDE מלא תכונות: קל לשכוח אילו משתנים כוללים אילו ערכים, אילו שיטות הוגדרו וכן הלאה. כדי לבדוק את מצב הקליפה שנוכל להשתמש בה / var, /שיטות, /רשימה אוֹ /הִיסטוֹרִיָה:

jshell> / var | int i = 0 | חברת מיתרים = "באלדונג" | תאריך תאריך = א 'פברואר 26 06:30:16 EST 2017 | קובץ קובץ = null | מחרוזת $ 6 = "100 בקבוקי בירה על הקיר" jshell> / שיטות | בטל helloWorld () jshell> / רשימה 1: בטל helloWorld () {System.out.println ("שלום עולם");} 2: int i = 0; 3: חברת מיתרים = "באלדונג"; 4: תאריך תאריך = תאריך חדש (); 5: קובץ קובץ; 6: String.format ("% d של בקבוקי בירה על הקיר", 100) jshell> / history void helloWorld () {System.out.println ("שלום עולם");} int i = 0; חברת מיתרים = "Baeldung" תאריך תאריך = תאריך חדש () קובץ קובץ String.format ("% d בקבוקי בירה על הקיר", 100) / var / שיטות / רשימה / היסטוריה 

ההבדל בין /רשימה ו /הִיסטוֹרִיָה הוא שהאחרון מציג פקודות בנוסף לביטויים.

6.3. חִסָכוֹן

כדי לשמור את היסטוריית הביטוי /לשמור ניתן להשתמש בפקודה:

jshell> / שמור repl.java 

זה שומר את היסטוריית הביטויים שלנו repl.java באותה ספריה שממנה ניהלנו את jshell פקודה.

6.4. טוען

כדי לטעון קובץ שנשמר בעבר נוכל להשתמש ב- /לִפְתוֹחַ פקודה:

jshell> / פתוח repl.java 

לאחר מכן ניתן לאמת הפעלה טעונה על ידי הנפקה / var, /שיטה אוֹ /רשימה.

6.5. יוצא

כאשר סיימנו עם העבודה, /יְצִיאָה הפקודה יכולה לסיים את הקליפה:

jshell> / יציאה | הֱיה שלום

הֱיה שלום jshell.

7. מסקנה

במאמר זה, הסתכלנו על Java 9 REPL. מכיוון שג'אווה קיימת כבר למעלה מ -20 שנה, אולי זה הגיע קצת באיחור. עם זאת, זה אמור להוכיח כלי יקר נוסף בארגז הכלים של Java.


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