Вызов Java из Python: обзор библиотек JCC и JPype

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый и эффективный способ использования JPype

Для внедрения Java в Python-код с помощью JPype выполняются следующие шаги:

  1. Установка JPype:

    Shell
    Скопировать код
    pip install JPype1-py3
    # Теперь мы готовы к общению Python с Java 🎉.
  2. Запуск JVM:

    Python
    Скопировать код
    from jpype import startJVM, getDefaultJVMPath
    startJVM(getDefaultJVMPath(), "-ea")
    # JVM успешно активирована! 🚀.
  3. Подключение Java-класса:

    Предположим, вы обладаете классом GrumpyCat в пакете com.petstore:

    Python
    Скопировать код
    from jpype import JPackage
    GrumpyCat = JPackage('com').petstore.GrumpyCat
    # GrumpyCat теперь в нашей Python-среде 🐱.

    Если класс не относится к какому-либо пакету:

    Python
    Скопировать код
    GrumpyCat = JPackage('').GrumpyCat
    # Отлично, GrumpyCat теперь с нами 🥳.
  4. Теперь класс может выступить в роли:

    Python
    Скопировать код
    grumpy_cat = GrumpyCat()
    mood = grumpy_cat.moodToday()
    print(mood)
    # Подготовьтесь: вы почувствуете настроение GrumpyCat 🤣.

Не забывайте добавлять ваш Java-класс в переменную среды CLASSPATH или указывать путь при запуске JVM. Измените moodToday на нужный вам метод.

Кинга Идем в IT: пошаговый план для смены профессии

Изучите дополнительные варианты: Py4J и Pyjnius

Глубокая интеграция с Py4J

Py4J обеспечивает безграничную интеграцию методов Java в Python, поддерживая последние версии Python.

Python
Скопировать код
from py4j.java_gateway import JavaGateway
gateway = JavaGateway()  # Открываем связь с Java-средой.
java_rabbit = gateway.jvm.com.Farm.Rabbit()
# Наш Python-змей нашёл друга в мире Java-кроликов! 🐍❤️🐇

Простота использования Pyjnius

Pyjnius — это новое решение для взаимодействия Java и Python, позволяющее работать с Java-классами как с Python-классами.

Python
Скопировать код
from jnius import autoclass
autoclass('java.util.LinkedList')
# LinkedList из мира Java только что присоединился к нашей Python-команде! 🥂

Экспертные советы по управлению сложностью и типами данных

Сложность: выбор за вами

Хотя Py4J может затребовать запуск сервера-шлюза, это не должно вас пугать: обширная документация и ясные примеры облегчают процесс. В то же время JPype и Pyjnius требуют от вас управления инициализацией JVM, но взамен предоставляют безшовное взаимодействие после настройки.

Управление жизненным циклом JVM

Не забывайте корректно завершать работу JVM, подходя к этому как к долгу ответственного разработчика.

Python
Скопировать код
from jpype import shutdownJVM
shutdownJVM()
# Не позволяйте JVM загрязнять рабочую среду! 🌍💡

Изучите особенности типов данных

С помощью JPype массивы Java преобразуются в массивы numpy, упрощая числовые операции.

Python
Скопировать код
import numpy as np
from jpype import JArray, JInt
java_array = JArray(JInt)([1, 2, 3])
numpy_array = np.array(java_array)
# Мы только что превратили Java-массив в numpy-массив. Это наш маленький секрет 🤫.

Выберите подходящий вам инструмент

Выбор между различными Java-Python мостами должен основываться на скорости, удобстве и необходимых библиотеках. Например, для работы с Apache Tika может понадобиться JCC или javabridge.

Визуализация

Вот наш Python-скрипт, который ждет немного ☕ магии Java:

Python 🐍 : "О, как мне хотелось бы Java!" ☕

И наши строители мостов, Py4j и Jython, внимательно выслушали эту просьбу:

| Python-код |  <-- 🌉 Jython/Py4j -->  | Java-библиотеки |

И вот наш Python усилен силой Java:

Python
Скопировать код
java_cup = gateway.jvm.CoffeeCup()  # Создаем объект Java
java_cup.fill()                      # Вызываем Java-метод
# Python говорит: "Java, ты делаешь меня более полноценным." ❤️

Во вселенной Python и Java 🌉 символизирует java-пиджаки 🔥 (Да, пиджаки — это лучший выбор!)

Полезные материалы

  1. Документация JPype – JPype 1.5.1_dev0 documentation — изучите синергию Python ↔️ Java с JPype.
  2. Главная страница | Jython — окунитесь в мир Python-Java с Jython.
  3. Добро пожаловать в Py4J — Py4J — освойте выразительность языка Java в мире Python.
  4. Oracle Nashorn: новое поколение JavaScript-движка для JVM — узнайте, как Javascript может наслаждаться ароматом Java в JVM.
  5. Apache Tika – Apache Tika — станьте экспертом в области текстовых и метаданных с Apache Tika.
  6. Советы JNI | Android NDK | Разработчики Android — в программировании иногда необходимы полезные советы, даже если речь идет о "Python и Java, сидящие на дереве, K-I-S-S-I-N-G".