Führen Sie Python in Java mit Jython aus

Jay Shaw 15 Februar 2024
  1. Führen Sie Python in Java mit Jython aus
  2. Installieren Sie die Jython-Bibliothek
  3. Verknüpfen Sie die Jython-Bibliothek mit einer IDE
  4. Schreiben Sie Python-Codes in Java und kompilieren Sie es
  5. Python-Code zum Addieren von zwei in Java kompilierten Zahlen
  6. Python-Code zum Finden des letzten Tages des Monats, der in Java kompiliert wurde
  7. Einige Python-Bibliotheken, die nicht ausgeführt werden, wenn sie in Java kompiliert werden
  8. Abschluss
Führen Sie Python in Java mit Jython aus

In diesem Artikel werden die Schritte zum Ausführen von Python in Java-Programmen mit einer Jython-Bibliothek ausführlich erläutert. Es wäre ein detaillierter Schritt-für-Schritt-Prozess mit vielen Bildern, sodass Sie sich keine Gedanken darüber machen müssen, wie er das gemacht hat.

Führen Sie Python in Java mit Jython aus

Das Ausführen von Python in Java erfordert drei Voraussetzungen.

  1. Python-Code.
  2. Jython-Bibliothek.
  3. Eine IDE, die die Jython-Bibliothek verknüpfen kann.

Erstellen Sie den Python-Code

Nehmen wir ein einfaches Python-Programm, das eine Methode aufruft, um zwei Zahlen zu addieren. Die Methode add() hat zwei Parameter und gibt die Summe dieser beiden Parameter zurück und gibt sie aus.

def add(a, b):
    s = a + b
    return s


print(add(5, 6))

Wenn Sie dieses Programm ausführen, wird die Summe von a und b ausgegeben.

Schauen wir uns ein anderes Python-Programm an, das eine eingebaute Bibliothek verwendet. Dieses Programm verwendet die eingebaute Bibliothek datetime, um den letzten Tag eines bestimmten Monats zu finden.

import datetime


def last_day_of_month(date):
    if date.month == 12:
        return date.replace(day=31)
    return date.replace(month=date.month + 1, day=1) - datetime.timedelta(days=1)


print(last_day_of_month(datetime.date(2022, 12, 25)))

In der letzten Zeile dieses Programms sendet es das Datum an die Methode last_day_of_month, gibt den letzten Tag dieses Monats zurück und wird gedruckt.

Betrachten wir auch ein anderes Programm, das eine Bibliothek eines Drittanbieters im Code verwendet.

from datetime import datetime

import pandas as pd


def check_month_end(date):
    return date + pd.offsets.MonthEnd(0)  # == date


print(check_month_end(datetime(2005, 2, 6)))
print(check_month_end(datetime(2004, 2, 29)))

Dieses Programm verwendet pandas im Code. Während einige Codes vorbereitet werden, die zum Ausführen von Python in Java-Programmen verwendet werden, lernen wir, wie Jython installiert wird.

Installieren Sie die Jython-Bibliothek

Jython macht es einfach, Python-Funktionen aus Java-Code aufzurufen, vorausgesetzt, der Python-Code selbst läuft unter Jython und verwendet keine nicht unterstützten C-Erweiterungen.

Es ist zweifellos die einfachste Antwort, die gefunden werden kann, wenn das für Sie funktioniert. Falls nicht, kann der neue Java6-Interpreter verwendet werden, der die Syntax org.python.util.PythonInterpreter unterstützt.

Die Jython-Bibliothek kann hier heruntergeladen werden. Der Leser sollte die eigenständige Bibliotheksversion herunterladen, die dabei helfen würde, sie einfach mit einer IDE zu verknüpfen.

Jython Standalone-Download

Das Paket wird auf Ihrem Computer installiert. Notieren Sie sich unbedingt den Pfad, in dem es heruntergeladen wird.

Auf den meisten Rechnern ist es unter Downloads in der Hauptbibliothek zu finden.

Verknüpfen Sie die Jython-Bibliothek mit einer IDE

Die Verwendung einer IDE ist die aktuelle Norm, und der Leser muss darauf umsteigen, wenn dies nicht der Fall ist. In diesem Artikel werden die Schritte in IntelliJ IDE, einer sehr beliebten Software zum Ausführen von Java-Codes, weiter demonstriert.

Wenn der Leser IntelliJ noch nie zuvor verwendet hat, machen Sie sich keine Sorgen. Alles wird von Grund auf abgedeckt.

Installieren Sie zuerst IntelliJ von hier. Nachdem IntelliJ installiert und einsatzbereit ist, muss ein neues Projekt erstellt werden.

Ein Projekt erstellt einen separaten Bereich für die Dateien, die für die Demonstration in diesem Artikel benötigt werden. Dann wird das Projekt mit der Jython-Bibliothek verknüpft, damit wir Python in Java ausführen können.

  • Erstellen Sie ein neues Projekt in der IntelliJ IDE

    Öffnen Sie die IntelliJ-IDE und klicken Sie auf Neues Projekt. Wenn bereits ein Projekt geöffnet ist, gehen Sie zu Datei > Neu > Projekt.

    intellij neues Projekt

  • Wählen Sie eine Sprache

    In diesem Schritt muss die richtige Sprache für das Projekt gewählt werden. Wählen Sie die Java-Sprache ohne zusätzliche Pakete aus (sowohl Groovy- als auch Kotlin-Kontrollkästchen müssen deaktiviert bleiben).

    Das ‘Project SDK’ oben im Dialogfeld zeigt die Java-Version. Wenn dort nichts angezeigt wird, laden Sie ein neues herunter, indem Sie auf ein kleines Dreieck ganz rechts klicken.

    intellij neues Projekt 2

  • Aktivieren Sie die Eingabeaufforderung für die Befehlszeile

    Aktivieren Sie das Kontrollkästchen, um die Befehlszeilen-App zu aktivieren, und klicken Sie auf Weiter.

    Eingabeaufforderung aktivieren

  • Geben Sie einen Namen für das Projekt ein

    Geben Sie dem Projekt einen passenden Namen. In diesem Fall heißt das Projekt Python_in_Java.

    Benennen Sie das Projekt

    Ein Klick auf Fertig stellen erstellt ein neues Projekt.

  • Fügen Sie die Jython-Bibliothek dem in IntelliJ IDE erstellten Projekt hinzu

    Wenn ein neues Projekt erstellt wird, sieht es wie im Bild unten aus. Es gibt die Klassendatei main mit etwas Standardcode.

    Neue Projektvorschau

    Um nun Jython damit zu verknüpfen, gehen Sie zu Datei > Projektstruktur. Ein neues Dialogfeld wird angezeigt.

    Klicken Sie im Bereich Bibliotheken auf das Symbol + und wählen Sie Java aus dem Menü aus.

    Wählen Sie Java in der neuen Projektbibliothek aus

    Wenn Sie Java auswählen, wird ein neues Dialogfeld geladen, mit dem wir Dateien auf dem Computer durchsuchen können. Jetzt ist es an der Zeit, sich den Pfad der heruntergeladenen eigenständigen Jython-Datei zu merken.

    Wählen Sie die heruntergeladene .jar-Datei aus und klicken Sie auf Ok.

    Wählen Sie Jyton

    Klicken Sie erneut auf Ok, und es wird die Jython Standalone.jar geladen und im Bibliotheksfenster angezeigt. Klicken Sie abschließend auf Ok, um den Ladevorgang abzuschließen.

    klicken Sie auf OK

    Da Jython in diese Bibliothek geladen wird, können wir jetzt Codes schreiben und Python einfach in Java-Programmen ausführen.

Schreiben Sie Python-Codes in Java und kompilieren Sie es

Während das Projekt erstellt und mit der Jython-Bibliothek verknüpft wird, können Java-Codes geschrieben werden, um Python in Java auszuführen.

Das Java-Programm verwendet die Unterfunktion PythonInterpreter aus der Jython-Bibliothek, um einen internen Interpreter innerhalb der JVM (Java Virtual Machine) zu starten.

Beachten Sie, dass die Jython-Bibliothek nur Python 2.7 unterstützt. Skripte, die neuere Python-Versionen erfordern, können Unterstützung von Mikro-Webdiensten annehmen, die Python-Codes kapseln und in anderen Sprachen ausführen, aber es kann ein komplexer und langwieriger Prozess sein.

Jython eignet sich am besten für Java-Programmierer, die die Jython-Bibliotheken in ihr System integrieren möchten, damit Endbenutzer einfache oder komplexe Skripts erstellen können, die die Möglichkeiten der Anwendung erweitern.

Schließlich sind Python-Anwendungen zwei- bis zehnmal kürzer als ihre Java-Pendants. Dies wirkt sich direkt darauf aus, wie produktiv Programmierer arbeiten.

Python und Java kommunizieren gut, sodass Programmierer die beiden Sprachen während der Produktentwicklung und -kompilierung frei mischen können.

Zuerst müssen Sie ein Java-Programm erstellen, das Python in Java ausführt.

package com.company;
import org.python.util.PythonInterpreter;

public class Main {
  public static void main(String[] args) {
    PythonInterpreter pythonInterpreter = new PythonInterpreter();
    pythonInterpreter.exec(""); // <--Python codes must be written inside this double quotes
  }
}

Lassen Sie uns verstehen, was der obige Code tut.

  1. Die erste Codezeile ist ein standardmäßiger IntelliJ-Header für Java-Programme.

  2. In der zweiten Zeile wird das Unterpaket PythonInterpreter von Jython importiert.

  3. Eine Haupt-Klasse wird definiert. Wenn Sie neu in Java sind, müssen Sie wissen, dass jedes Java-Programm mindestens eine Klasse enthält.

  4. Innerhalb der Klasse wird die Methode main definiert. Dieses Programm springt direkt zur Hauptmethode, ohne eine Funktion zur Reduzierung der Komplexität zu erstellen. Der Klassenname ist derselbe wie bei der Methode Main, ist aber nicht immer notwendig.

    Jeder Name kann ein Klassenname sein, der einigen Namenskonventionen unterliegt.

  5. Eine Instanz von PythonInterpreter wird als pythonInterpreter erstellt. Diese Instanzen werden in Java als Objekte bezeichnet und können nach ihrer Erstellung innerhalb von Hauptfunktionen verwendet werden, um die importierten Funktionen aufzurufen.

  6. Zuletzt werden die Codes in die pythonInterpreter.exec(); geschrieben. Syntax mit doppelten Anführungszeichen. Unser Python-Code wird nicht interpretiert, obwohl der Klassenname PythonInterpreter vermuten lässt.

    Die JVM führt Python-Programme in Jython aus. Daher müssen sie vor der Ausführung zunächst in Java-Bytecode konvertiert werden.

    Obwohl Jython die Java-Version von Python ist, verfügt es möglicherweise nicht über dieselben Unterpakete wie natives Python.

Wir haben jetzt genug Verständnis für die Verwendung von Jython. Lassen Sie uns die Python-Codes testen, die wir zu Beginn dieses Artikels vorbereitet haben.

Python-Code zum Addieren von zwei in Java kompilierten Zahlen

Die Python-Codes werden beim Kopieren und Einfügen in die IntelliJ-IDE automatisch in doppelte Anführungszeichen gesetzt.

package com.company;
import org.python.util.PythonInterpreter;

public class Main {
  public static void main(String[] args) {
    PythonInterpreter pythonInterpreter = new PythonInterpreter();
    pythonInterpreter.exec("def add(a, b):\n"
        + "    s = a + b\n"
        + "    return s\n"
        + "\n"
        + "print(add(5, 6))");
  }
}

Ausgang:

C:\java-1.8.0-openjdk-1.8.0.322-2.b06.dev.redhat.windows.x86_64\bin\java.exe ...
11

Python-Code zum Finden des letzten Tages des Monats, der in Java kompiliert wurde

Im zweiten Programm haben wir eine native Python-Bibliothek verwendet, um den letzten Tag des Monats zu finden. Wie wir wissen, lädt der Python Interpreter nicht alle nativen Bibliotheken, obwohl die Bibliothek datetime verfügbar ist.

package com.company;
import org.python.util.PythonInterpreter;

public class Main {
  public static void main(String[] args) {
    PythonInterpreter pythonInterpreter = new PythonInterpreter();
    pythonInterpreter.exec("import datetime\n"
        + "\n"
        + "\n"
        + "def last_day_of_month(date):\n"
        + "    if date.month == 12:\n"
        + "        return date.replace(day=31)\n"
        + "    return date.replace(month=date.month + 1, day=1) - datetime.timedelta(days=1)\n"
        + "\n"
        + "\n"
        + "print(last_day_of_month(datetime.date(2022, 12, 25)))\n");
  }
}

Ausgang:

C:\java-1.8.0-openjdk-1.8.0.322-2.b06.dev.redhat.windows.x86_64\bin\java.exe ...
2022-12-31

Einige Python-Bibliotheken, die nicht ausgeführt werden, wenn sie in Java kompiliert werden

Wenn ein Programm ausgeführt wird, das eine Bibliothek eines Drittanbieters wie Pandas verwendet, die Java nicht importieren kann, zeigt es einen Fehler an.

package com.company;
import org.python.util.PythonInterpreter;

public class Main {
  public static void main(String[] args) {
    PythonInterpreter pythonInterpreter = new PythonInterpreter();
    pythonInterpreter.exec("from datetime import datetime\n"
        + "\n"
        + "import pandas as pd\n"
        + "\n"
        + "\n"
        + "def check_month_end(date):\n"
        + "    return date + pd.offsets.MonthEnd(0)   # == date\n"
        + "\n"
        + "\n"
        + "print(check_month_end(datetime(2005, 2, 6)))\n"
        + "\n"
        + "print(check_month_end(datetime(2004, 2, 29)))");
  }
}

Ausgang:

C:\java-1.8.0-openjdk-1.8.0.322-2.b06.dev.redhat.windows.x86_64\bin\java.exe ...
Exception in thread "main" Traceback (most recent call last):
  File "<string>", line 3, in <module>
ImportError: No module named pandas

Nehmen wir eine andere eingebaute Bibliothek, syds.

package com.company;
import org.python.util.PythonInterpreter;

public class Main {
  public static void main(String[] args) {
    PythonInterpreter pythonInterpreter = new PythonInterpreter();
    pythonInterpreter.exec("import syds");
  }
}

Ausgang:

C:\java-1.8.0-openjdk-1.8.0.322-2.b06.dev.redhat.windows.x86_64\bin\java.exe ...
Exception in thread "main" Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named syds

Abschluss

Wir haben gelernt, wie man Jython verwendet, um Python in Java auszuführen. Die Codes geben ein grundlegendes Verständnis dafür, wie und wann Jython verwendet wird.

Der Leser kann leicht Programme erstellen, die Python in Java ausführen. Wir hoffen, dass dieser Artikel Ihnen bei Ihrer Codierungsreise geholfen hat.