שחרור בין השכבות , המאפשר לך לארגן גישה מלאה של יישומי Python לספריות כיתות Java. עם JPype מ-Python, אתה יכול להשתמש בספריות ספציפיות ל-Java כדי ליצור יישומים היברידיים המשלבים קוד Java ו-Python. שלא כמו Jython, אינטגרציה עם Java מושגת לא באמצעות יצירת וריאנט של Python עבור ה-JVM, אלא באמצעות אינטראקציה ברמת שתי המכונות הוירטואליות המשתמשות בזיכרון משותף. הגישה המוצעת מאפשרת לא רק להשיג ביצועים טובים, אלא גם מספקת גישה לכל ספריות CPython ו-Java. קוד פרויקט מורשה תחת Apache 2.0.
שינויים עיקריים:
- JChar נתמך כסוג החזרה. לצורך תאימות, JChar יורש מ-"str" ומיישם המרה מרומזת ל-"int". לכן, הוא עובר בדיקות חוזה. עם זאת, משמעות הדבר היא שהוא כבר לא נחשב לסוג מספרי בפייתון, ולכן isinstance(c, int) מוערך כ-False, דבר התואם את כללי המרת הסוגים של ג'אווה.
- הוצג אופרטור ליציקת טיפוס של ג'אווה, Type@obj (@ הוא האופרטור של פייתון עבור מכפלה פנימית, שאינו קיים בג'אווה).
- נוסף סימון ליצירת מערכי Java. הקלד[s1][s2][s3] עבור מערכים בגודל קבוע, הקלד[:][:][:] עבור מערכים שייווצרו בהמשך.
- @FunctionalInterface מאפשר לך ליצור פונקטורים בג'אווה מאובייקטי פייתון באמצעות __call__.
- הוסרו JIterator שהוצא משימוש, שימוש ב-JException כ-factory, get_default_jvm_path ו-jpype.reflect.
- כברירת מחדל, מחרוזות Java אינן מומרות למחרוזות Python.
- פייתון הוציאה משימוש את "__int__", כך שחילופים מרומזים בין טיפוסי מספרים שלמים ונקודה צפה יפיקו שגיאת TypeError.
- השימוש ב-JException הוצא משימוש. כדי לתפוס את כל החריגים או לבדוק שאובייקט הוא מסוג חריג Java, השתמש ב-java.lang.Throwable.
- סיבות מדורגות לחריגות Java משתקפות כעת במסגרות המחסנית של Python.
- השימוש ב-JString הוצא משימוש. כדי ליצור מחרוזת Java או לבדוק שאובייקט הוא מסוג Java string, השתמש ב-java.lang.String.
- מתודות Repr עודכנו בכיתות Java.
- הפונקציה java.util.List ממלאת את החוזים עבור collections.abc.Sequence ו- collections.abc.MutableSequence.
- java.util.Collection ממלא את החוזה עבור collections.abc.Collection.
- מחלקות ג'אווה הן פרטיות ויזרקו שגיאת TypeError כאשר הן מורחבות מפייתון.
- הטיפול ב-Control-C מדויק כעת. גרסאות קודמות קרסו כאשר Java טיפלה באות Control-C, מכיוון שהן היו מפסיקות את Java במהלך הקריאה. כעת, JPype יזרוק InterruptedException בעת חזרה מ-Java. Control-C לא יזרוק מפרוצדורות Java גדולות, כפי שמיושם כעת, מכיוון של-Java אין מנגנון מיוחד לכך.
הגרסה הבאה, 1.0.1, הייתה תיקון, שכלל שינויים לטיפול בבעיות בפייתון 3.8.4. פייתון שינתה את הלוגיקה לשימוש ב-"__setattr__" עבור "object" ו-"type", ומנעה את השימוש בו לשינוי מחלקות נגזרות. בדיקת שגיאות הוענקה גם היא משיטת "__setattr__", כך שהיה צורך לעדכן בהתאם סוגי חריגים בבדיקות שפיות מסוימות.
מקור: OpenNet.ru
