Integrare Python con Java

In generale, combinare la programmazione di sistema e i linguaggi di scripting non è un concetto nuovo e strano, solo che non viene fatto comunemente. È possibile per i linguaggi di programmazione che condividono un’interfaccia binaria di applicazione comune essere combinati in una singola libreria o eseguibile, e mentre può essere un po’ difficile ottenere le firme di due linguaggi l’uno dentro l’altro, esistono strumenti per aiutare.

Un esempio di linguaggi di programmazione che lavorano insieme può essere trovato nel codice poliglotta. Per esempio, la pagina 404 su Stack Overflow può stampare “404” in Python, Ruby, Perl, C, e pochi altri.

Per quanto riguarda Python e Java in particolare, questi due linguaggi si completano a vicenda. Potreste per esempio usarne uno per le tipiche sottoattività, mentre usate l’altro come linguaggio di scripting per espandere la personalizzazione dell’applicazione che state sviluppando.

Si veda anche: Python Package Index ora ha controlli automatici sul malware

Mentre JavaScript non è comunemente usato al di fuori dei browser web, almeno in confronto ad altri linguaggi di scripting come Perl, Tcl, Visual Basic e Python, tutti questi linguaggi sono comunemente abbinati ad altri linguaggi. Python va tradizionalmente insieme a C e C++, mentre Visual Basic è spesso il linguaggio di scripting scelto per C++ sulla piattaforma Windows, e sia Perl che Tcl sono tipicamente usati su C/Unix.

Python è usato un po’ di più su Windows, poiché è perfettamente integrato con l’architettura Microsoft Scripting Host, così come COM. È ottimo anche su Mac, con una buona selezione di toolbox native per MacOS.

Per ulteriori risorse su Python e le possibilità di integrazione con Java, è una buona idea controllare i corsi online per Python.

Perché Java e Python?

Python è un linguaggio di scripting orientato agli oggetti, che lo rende automaticamente una buona coppia per Java. Ma quando è combinato con un interprete Python scritto interamente in Java, come Jython, si possono fare cose come scrivere intere applet in Python che possono essere eseguite in qualsiasi browser conforme a JDK, con un’esecuzione del codice quasi veloce come C / CPython.

Quello che un interprete Python-Java come Jython fa è tradurre il codice sorgente Python direttamente in bytecode Java, il che gli dà una velocità incredibile, dato che non è un interprete Python scritto in Java, che sarebbe molto più lento. Ciò che le altre soluzioni di scripting Java fanno tipicamente (Java/TCL, Java/Perl, ecc.) è attaccare la JVM all’implementazione C in quei linguaggi, il che non solo introduce problemi di portabilità, ma non è così senza soluzione di continuità come si potrebbe sperare.

    Trasformatori efficienti

    Christoph Henkelmann

    Machine Learning 101++ Usando Python

    Pieter Buteneers

Come puoi usare Java e JPython insieme?

Ci sono diversi strumenti affidabili che implementano Python in Java o viceversa, in modo da poter eseguire i comandi di un linguaggio nell’altro. Ecco una rapida lista di alcuni dei migliori strumenti di integrazione Python + Java:

  • Jython – Python implementato in Java
  • JPype – Permette a Python di eseguire comandi java
  • Jepp – Java embedded Python
  • JCC – un generatore di codice C++ C++ per chiamare Java da C++/Python
  • Javabridge – un pacchetto per eseguire e interagire con la JVM da CPython
  • py4j – Permette a Python di eseguire comandi java.
  • voc – Parte della suite BeeWare. Converte il codice Python in bytecode Java.
  • p2j – Converte il codice Python in Java. Non più sviluppato.

Ci sono diversi approcci per usare questi strumenti, con i loro benefici e svantaggi. Così, per esempio, si potrebbe costruire un prototipo dell’intera applicazione in Jython, e dopo diversi cicli di test e riprogettazione, riscrivere tutto in Java. Questo vi permette di approfittare della maggiore flessibilità e velocità di sviluppo dei linguaggi di scripting nella prima parte del vostro progetto, e il vostro prodotto finale dovrebbe essere un po’ più articolato che se aveste semplicemente iniziato in Java.

E se siete preoccupati per le librerie di interfaccia utente, Jython può agganciarsi alle stesse UIL di Java di base, quindi la riscrittura finale in Java dovrebbe andare senza problemi.

Tuttavia, non è così semplice se state cercando di costruire un sistema più grande. Probabilmente incontrerete l’inconveniente dei diversi componenti e livelli che hanno cicli di sviluppo indipendenti, come i componenti di alto livello che si evolvono mentre i livelli inferiori vengono congelati. Naturalmente, potreste riscrivere i singoli componenti in Java man mano che vi avvicinate alla stabilità del progetto, o semplicemente scrivere alcuni dei vostri componenti esclusivamente in Java fin dall’inizio.

Vedi anche: Visualizzazione dei dati in Python con Bokeh

Un’altra opzione è quella di concentrarsi sulla riscrittura dei soli componenti dove le prestazioni sono critiche. Così potreste lasciare i componenti di alto livello in Jython, il che significa che solo i componenti di basso livello avrebbero bisogno di essere riscritti – e in alcuni casi, potreste non aver bisogno di riscrivere proprio nulla.

Così se parti del vostro sistema rilasciato sono scritte in Jython, gli utenti finali possono scrivere le loro personalizzazioni attraverso script Jython – per non parlare del fatto che le applicazioni Jython possono essere distribuite come bytecode Java, il che significa che non dovete davvero preoccuparvi che l’utente finale rovini componenti che non dovrebbero essere manomessi.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.