A Python és a Java integrálása

A rendszerprogramozás és a szkriptnyelvek kombinálása általánosságban véve nem egy furcsa új koncepció, csak nem szokás ilyesmit csinálni. Lehetséges, hogy a közös alkalmazási bináris interfészen osztozó programozási nyelveket egyetlen könyvtárba vagy futtatható állományba kombinálják, és bár kissé nehézkes lehet két nyelv aláírását egymáson belülre helyezni, léteznek olyan eszközök, amelyek segítenek ebben.

A programozási nyelvek együttműködésének egyik példája a poliglott kódban található. A Stack Overflow 404-es oldala például Python, Ruby, Perl, C és néhány más nyelven is ki tudja írni a “404”-et.

Ami konkrétan a Pythont és a Javát illeti, ez a két nyelv valójában kiegészíti egymást. Használhatod például az egyiket tipikus részfeladatokra, míg a másikat szkriptnyelvként használhatod a fejlesztendő alkalmazás testreszabhatóságának bővítésére.

MÉGIS: A Python Package Index mostantól automatikus malware-ellenőrzést tartalmaz

Míg a JavaScriptet a webböngészőkön kívül nem használják gyakran, legalábbis más szkriptnyelvekhez, például a Perlhez, a Tcl-hez, a Visual Basichez és a Pythonhoz képest, mindezeket a nyelveket gyakran párosítják más nyelvekkel. A Python hagyományosan a C és a C++ mellé kerül, míg a Visual Basic gyakran a Windows platformon a C++ mellé választott szkriptnyelv, és a Perl és a Tcl is jellemzően C/Unix mellett használatos.

A Pythont egy kicsit többet használják Windowson, mivel zökkenőmentesen integrálódik a Microsoft Scripting Host architektúrájába, valamint a COM-ba. Macen is remekül használható, a natív MacOS eszköztárak jó választékával.

A Pythonról és a Java integráció lehetőségeiről szóló további forrásokért érdemes megnézni a Python online tanfolyamokat.

Miért Java és Python?

A Python egy objektumorientált szkriptnyelv, ami automatikusan jó párossá teszi a Java-val. De ha egy teljesen Javában írt Python-értelmezővel, például a Jythonnal kombináljuk, akkor olyan dolgokat tehetünk, mint például teljes appleteket írni Pythonban, amelyek bármely JDK-kompatibilis böngészőben futtathatók, és a kódfuttatás majdnem olyan gyors, mint a C/CPython.

A Python-Java értelmező, mint a Jython, a Python forráskódot közvetlenül Java bytecode-ra fordítja, ami hihetetlen sebességet biztosít, mivel ez nem egy Java-ban írt Python-értelmező, ami sokkal lassabb lenne. Más Java scripting megoldások (Java/TCL, Java/Perl stb.) jellemzően azt teszik, hogy a JVM-et az adott nyelvek C implementációjához csatolják, ami nem csak hordozhatósági problémákat vet fel, de nem is olyan zökkenőmentes, mint remélnénk.

    Effective Transformers

    Christoph Henkelmann

    Machine Learning 101++ Using Python

    Pieter Buteneers

Hogyan lehet a legjobban használni a Java és JPython együtt?

Számos neves eszköz létezik, amely a Pythont Java-ban implementálja, vagy fordítva, így az egyik nyelv parancsait a másikban is végre lehet hajtani. Íme egy gyors lista a legjobban értékelt Python + Java integrációs eszközökről:

  • Jython – Java-ban implementált Python
  • JPype – Lehetővé teszi a Python számára, hogy java parancsokat futtasson
  • Jepp – Java beágyazott Python
  • JCC – egy C++ kódú generátor a Java hívásához C++/Pythonból
  • Javabridge – egy csomag a JVM futtatásához és interakcióhoz a CPythonból
  • py4j – Lehetővé teszi a Python számára a java parancsok futtatását.
  • voc – A BeeWare csomag része. Python kódot konvertál Java bájtkóddá.
  • p2j – Python kódot konvertál Java kóddá. Már nem fejlesztik.

Ezek az eszközök használatához többféle megközelítés létezik, saját előnyeikkel és hátrányaikkal. Így például elkészíthetjük a teljes alkalmazás prototípusát Jythonban, majd több tesztelési és újratervezési ciklus után mindent újraírhatunk Java-ban. Ez lehetővé teszi, hogy a projekt korai szakaszában kihasználja a szkriptnyelvek nagyobb rugalmasságát és fejlesztési sebességét, és a végterméknek valamivel kidolgozottabbnak kell lennie, mintha egyszerűen csak Javában kezdte volna.

És ha a felhasználói felület könyvtárai miatt aggódik, a Jython ugyanolyan UIL-ekbe tud kapcsolódni, mint az alap Java, így a Java végső átírása gond nélkül megy.

Az azonban nem ilyen egyszerű, ha egy nagyobb rendszert akar létrehozni. Valószínűleg szembesülni fogsz azzal a hátránnyal, hogy a különböző komponensek és rétegek független fejlesztési ciklusokkal rendelkeznek, például a legfelső szintű komponensek fejlődnek, míg az alsóbb rétegek befagynak. Természetesen átírhatja az egyes komponenseket Java-ban, ahogy közeledik a tervezési stabilitás, vagy egyszerűen néhány komponensét kezdettől fogva kizárólag Java-ban írhatja meg.

MÉGIS: Python adatvizualizáció a Bokeh-vel

Egy másik lehetőség, hogy csak azon komponensek újraírására összpontosítunk, ahol a teljesítmény kritikus. Tehát a magas szintű komponenseket meghagyhatja a Jythonban, ami azt jelenti, hogy csak az alacsonyabb szintű komponenseket kell újraírni – és bizonyos esetekben lehet, hogy egyáltalán nem kell semmit sem újraírni.

Ha tehát a kiadott rendszered egyes részei Jythonban vannak megírva, a végfelhasználók a saját testreszabásaikat Jython szkripteken keresztül írhatják meg – arról nem is beszélve, hogy a Jython alkalmazások Java bytecode-ként is terjeszthetők, ami azt jelenti, hogy nem igazán kell aggódnod amiatt, hogy a végfelhasználó elrontja azokat a komponenseket, amelyekkel nem szabadna szórakozni.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.