πŸ”— Как ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Java ΠΈ Python: ΡƒΡ‡Π΅Π±Π½ΠΎΠ΅ руководство для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²

Как ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Java ΠΈ Python

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Java ΠΈ Python, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹:

1. Jython

Один ΠΈΠ· способов ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Java ΠΈ Python - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Jython, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Python, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ Π½Π° Java Virtual Machine (JVM). Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Python ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ Π² Java-срСдС. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


import java

def greeting():
    print("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Java!")
    java.lang.System.out.println("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Python!")

greeting()

2. Pyjnius

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Pyjnius для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Java ΠΈ Python. Pyjnius - это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python, которая позволяСт Π²Π°ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Java-ΠΊΠΎΠ΄ ΠΈΠ· Python-ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


from jnius import autoclass

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экзСмпляра класса Java
ArrayList = autoclass('java.util.ArrayList')
list = ArrayList()

# Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов Π² ArrayList
list.add("ΠŸΡ€ΠΈΠ²Π΅Ρ‚")
list.add("Java")
list.add("ΠΈ")
list.add("Python")

# Π’Ρ‹Π²ΠΎΠ΄ содСрТимого ArrayList
for element in list:
    print(element)

Π­Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· способов ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Java ΠΈ Python. ВозмоТности ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ зависят ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… потрСбностСй ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Java ΠΈ Python

Java ΠΈ Python - Π΄Π²Π° популярных языка программирования, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ свои ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны ΠΈ примСнСния. Но Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти Π΄Π²Π° языка вмСстС ΠΈ ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ? Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся.

1. ВзаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ Java ΠΈ Python

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Java ΠΈ Python, Π²Π°ΠΌ потрСбуСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ нСсколько инструмСнтов ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Π°) Jython

Jython - это рСализация языка Python, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Java. Она позволяСт Π²Π°ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Python-ΠΊΠΎΠ΄ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° Java, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


import org.python.util.PythonInterpreter;

public class Main {
  public static void main(String[] args) {
    PythonInterpreter interpreter = new PythonInterpreter();
    interpreter.exec("print('ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!')");
  }
}

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Jython для выполнСния ΠΊΠΎΠ΄Π° Π½Π° Python Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Java. ΠœΡ‹ создаСм экзСмпляр класса PythonInterpreter ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ exec, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Python.

Π±) Py4J

Py4J - это инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ Java ΠΈ Python посрСдством простого Π²Ρ‹Π·ΠΎΠ²Π° Python-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· Java-ΠΊΠΎΠ΄Π° ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


from py4j.java_gateway import JavaGateway

gateway = JavaGateway()
result = gateway.jvm.java.util.ArrayList()
result.append("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!")
print(result)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм экзСмпляр класса JavaGateway ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Py4J ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Java-класса java.util.ArrayList.

2. ИспользованиС Java ΠΈ Python Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Java, Ρ‚Π°ΠΊ ΠΈ Python Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ±Π° языка.

НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ основной ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π° Java, Π° Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π° Python для выполнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Python-скрипты ΠΈΠ· Java ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя языками.


public class Main {
  public static void main(String[] args) {
    // Π’Π°Ρˆ ΠΊΠΎΠ΄ Π½Π° Java

    // Π’Ρ‹Π·ΠΎΠ² Python-скрипта
    String pythonScriptPath = "path/to/script.py";
    ProcessBuilder processBuilder = new ProcessBuilder("python", pythonScriptPath);
    Process process = processBuilder.start();
  }
}

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ класс ProcessBuilder ΠΈΠ· Java, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Python-скрипт. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΎΡ‚ Python-скрипта.

3. ИспользованиС Java ΠΈ Python Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Java, Ρ‚Π°ΠΊ ΠΈ Python, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π±-сСрвисы Π½Π° ΠΎΠ±ΠΎΠΈΡ… языках ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ.

НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Java-сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ запросы ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Python-скрипты для выполнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Flask для Python ΠΈ Spring для Java, для создания Π²Π΅Π±-сСрвисов.


from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!"

if __name__ == "__main__":
    app.run()

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Flask для создания простого Π²Π΅Π±-сСрвиса Π½Π° Python. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Java-сСрвисы ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ посрСдством HTTP-запросов.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Java ΠΈ Python - ΠΌΠΎΡ‰Π½Ρ‹Π΅ языки программирования, ΠΈ использованиС ΠΈΡ… вмСстС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Π°ΠΌ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ возмоТности для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ этими языками с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Jython ΠΈ Py4J, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π° языка Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ Π²Π΅Π±-прилоТСния. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ… Π² соотвСтствии с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ трСбованиями вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π½Π°ΡΠ»Π°ΠΆΠ΄Π°ΠΉΡ‚Π΅ΡΡŒ возмоТностями ΠΎΠ±ΠΎΠΈΡ… языков!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Как Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ - JAVA vs Python

JAVA vs PYTHON. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ языков программирования.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Python ΠΈ Java. Π§Ρ‚ΠΎ сСйчас Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΡ‡ΠΈΡ‚ΡŒ?

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Бколько ΠΆΠΈΠ²Π΅Ρ‚ Ρ‚ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΉ ΠΏΠΈΡ‚ΠΎΠ½ Π² Π½Π΅Π²ΠΎΠ»Π΅? πŸπŸ”

πŸ”§ Как ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π±Π»ΠΎΠΊΠ½ΠΎΡ‚ Π½Π° Python: простой Π³ΠΈΠ΄ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

attrs python Ρ‡Ρ‚ΠΎ это: ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ использованиС

πŸ”— Как ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Java ΠΈ Python: ΡƒΡ‡Π΅Π±Π½ΠΎΠ΅ руководство для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²

πŸ”ΈΠšΠ°ΠΊ вывСсти с Π½ΠΎΠ²ΠΎΠΉ строки Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅: простой способ

πŸ” Как ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ мноТСства Π² Python: простоС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ” Π“Π΄Π΅ Π½Π°ΠΉΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ, зная Python? Бписок мСст, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°Π²Ρ‹ΠΊΠΈ программирования Π½Π° Python