Integrering af Python med Java

Generelt set er det ikke noget mærkeligt nyt koncept at kombinere systemprogrammering og scriptingsprog, men det er bare ikke almindeligt at gøre det. Det er muligt for programmeringssprog, der deler en fælles binær applikationsgrænseflade, at blive kombineret i et enkelt bibliotek eller en eksekverbar fil, og selv om det kan være lidt vanskeligt at få to sprogs signaturer ind i hinanden, findes der værktøjer, der kan hjælpe.

Et eksempel på programmeringssprog, der arbejder sammen, kan findes i polyglot kode. F.eks. kan 404-siden på Stack Overflow udskrive “404” i Python, Ruby, Perl, C og et par andre sprog.

Med hensyn til Python og Java specifikt supplerer disse to sprog faktisk hinanden. Du kan f.eks. bruge det ene til typiske delopgaver, mens du bruger det andet som et scriptsprog til at udvide tilpasningen af den applikation, du er ved at udvikle.

SÅ OGSÅ: Python Package Index har nu automatisk kontrol af malware om bord

Selv om JavaScript ikke er almindeligt anvendt uden for webbrowsere, i hvert fald i sammenligning med andre scriptsprog som Perl, Tcl, Visual Basic og Python, er alle disse sprog almindeligt parret med andre sprog. Python går traditionelt sammen med C og C++, mens Visual Basic ofte er det foretrukne scriptingsprog til C++ på Windows-platformen, og både Perl og Tcl bruges typisk på C / Unix.

Python bruges lidt mere på Windows, da det er problemfrit integreret med Microsoft Scripting Host-arkitekturen samt COM. Det er også godt på Mac, med et godt udvalg af native MacOS-værktøjskasser.

For flere ressourcer om Python og mulighederne for Java-integration, er det en god idé at tjekke online-kurser for Python.

Hvorfor Java og Python?

Python er et objektorienteret scriptsprog, hvilket automatisk gør det til et godt par til Java. Men kombineret med en Python-fortolker, der er skrevet helt i Java, som Jython, kan man gøre ting som at skrive hele applets i Python, der kan køre i enhver JDK-kompatibel browser, med en kodeudførelse, der er næsten lige så hurtig som C/CPython.

Hvad en Python-Java-fortolker som Jython gør, er at oversætte Python-kildekode direkte til Java-bytekode, hvilket giver den en utrolig hastighed, da det ikke er en Python-fortolker skrevet i Java, som ville være meget langsommere. Det, som andre Java-scripting-løsninger typisk gør (Java/TCL, Java/Perl osv.), er at knytte JVM til C-implementeringen i disse sprog, hvilket ikke blot medfører problemer med portabilitet, men heller ikke er så problemfrit, som man kunne håbe.

    Effektive transformatorer

    Christoph Henkelmann

    Machine Learning 101++ Using Python

    Pieter Buteneers

Hvordan kan du bedst bruge Java og JPython sammen?

Der findes flere velrenommerede værktøjer, der implementerer Python i Java eller omvendt, så du kan udføre det ene sprogs kommandoer i det andet sprog. Her er en hurtig liste over nogle af de bedst vurderede værktøjer til integration af Python + Java:

  • Jython – Python implementeret i Java
  • JPype – Gør det muligt for Python at køre java-kommandoer
  • Jepp – Java embedded Python
  • JCC – en C++-kode generator til at kalde Java fra C++/Python
  • Javabridge – en pakke til at køre og interagere med JVM’en fra CPython
  • py4j – Gør det muligt for Python at køre java-kommandoer.
  • voc – En del af BeeWare-pakken. Konverterer python-kode til Java-bytekode.
  • p2j – Konverterer Python-kode til Java. Udvikles ikke længere.

Der er flere tilgange til at bruge disse værktøjer, med hver deres fordele og ulemper. Så du kan f.eks. bygge en prototype af hele applikationen i Jython og efter flere test- og redesigncyklusser omskrive det hele i Java. På den måde kan du drage fordel af scriptingsprogenes øgede fleksibilitet og udviklingshastighed i den tidlige del af dit projekt, og dit slutprodukt skulle være lidt mere udbygget, end hvis du blot havde startet i bare Java.

Og hvis du er bekymret for brugergrænsefladebiblioteker, kan Jython koble sig på de samme UIL’er som grundlæggende Java, så den endelige omskrivning i Java skulle gå uden problemer.

Det er dog ikke helt så enkelt, hvis du forsøger at opbygge et større system. Du vil sandsynligvis støde på den ulempe, at forskellige komponenter og lag har uafhængige udviklingscyklusser, f.eks. at komponenter på øverste niveau udvikler sig, mens lavere lag bliver frosset fast. Du kan naturligvis omskrive de enkelte komponenter i Java, efterhånden som du nærmer dig designstabilitet, eller blot skrive nogle af dine komponenter udelukkende i Java fra begyndelsen.

SÅ OGSÅ: Python-datavisualisering med Bokeh

En anden mulighed er at fokusere på kun at omskrive de komponenter, hvor ydelsen er kritisk. Du kan altså lade komponenter på højt niveau blive i Jython, hvilket betyder, at kun komponenterne på lavere niveau skal omskrives – og i nogle tilfælde behøver du måske slet ikke at omskrive noget som helst.

Så hvis dele af dit frigivne system er skrevet i Jython, kan slutbrugerne skrive deres egne tilpasninger via Jython-scripts – for ikke at nævne, at Jython-apps kan distribueres som Java-bytecode, hvilket betyder, at du ikke rigtig behøver at bekymre dig om, at slutbrugeren ødelægger komponenter, som der ikke bør pilles ved.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.