המרת קובץ Kotlin ל- Java

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

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

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

2. מדוע להמיר את קוטלין לג'אווה?

ראשית, הבה נבחן כמה סיבות מדוע אנו עשויים לבצע המרה כזו:

  • להבין מה באמת עובר מתחת למכסה המנוע
  • לחקור בעיות ביצועים
  • להיפטר מקוטלין מהפרויקט שלנו

המרה מקוטלין לג'אווה דורשת שני שלבים. עלינו לקמפל את קוד Kotlin ל- JVM bytecode. לאחר מכן עלינו לפרק את התוצאה לקוד Java.

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

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

3. המרה באמצעות כלי שורת פקודה

נניח שיש לנו שם קובץ Kotlin Sample.kt עם התוכן הבא:

כיף printEvenNumbers () {עבור (i ב 0..10 שלב 2) {println (i)}}

ראשית, בואו נרכיב את הקוד עם הפקודה:

kotlinc Sample.kt

כתוצאה מכך, קובץ עם השם SampleKt. class יווצר.

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

לשם כך נשתמש פרנפלור. אנחנו יכולים להשיג את fernflower.jar על ידי הורדת הפרויקט והפעלת בניית Gradle. ברגע שיש לנו את קובץ ה- JAR, הפקודה להפעיל היא:

java -jar fernflower.jar SampleKt.class.

לאחר מכן, נראה את הקובץ SampleKt.java:

יבוא kotlin.Metadata; יבוא kotlin.ranges.IntProgression; יבוא kotlin.ranges.IntRange; יבוא kotlin.ranges.RangesKt; @Metadata (mv = {1, 1, 15}, bv = {1, 0, 3}, k = 2, d1 = {"\ u0000 \ u0006 \ n \ u0000 \ n \ u0002 \ u0010 \ u0002 \ u001a \ u0006 \ u0010 \ u0000 \ u001a \ u00020 \ u0001 "}, d2 = {" printEvenNumbers "," "}) מחזור סופי ציבורי SampleKt {public static final void printEvenNumbers () {bit var3 = 0; IntProgression var10000 = RangesKt.step ((IntProgression) (IntRange חדש (var3, 10)), 2); int i = var10000.getFirst (); int var1 = var10000.getLast (); int var2 = var10000.getStep (); אם (var2> = 0) {if (i> var1) {return; }} אחרת אם (i <var1) {return; } בעוד (נכון) {בוליאני var4 = שקר; System.out.println (i); אם (i == var1) {return; } i + = var2; }}}

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

4. המרה עם IntelliJ IDEA

בעזרת IntelliJ IDEA, אנו יכולים לעשות את שני הצעדים בצורה נוחה יותר.

כדי לקמפל את המקור לקוד byte, בואו נלחץ כלים -> Kotlin -> הצג Kytlin Bytecode מתפריט ההקשר הראשי.

כרטיס חדש יופיע ואנחנו נוכל לראות את ה- JVM bytecode בצורה שקריאה אנושית:

משם, אנחנו פשוט לחץ על פירוק לַחְצָן לייצר קובץ Java. שים לב ש- IntelliJ IDEA משתמש בפרנפלור מתחת למכסה המנוע, כך שקובץ הג'אווה המתקבל יהיה זהה לזה שמוצג לעיל.

5. מסקנה

במדריך מהיר זה למדנו שתי דרכים להמיר קובץ Kotlin ל- Java.

דנו גם בכמה מקרים שבהם תהליך זה שימושי ומדוע עלינו להימנע מכך עבור קוד ייצור.


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