Jython — это реализация Python на платформе Java, работающая на JVM. Jython считается реализацией Python, но имеет почти такой же синтаксис.

Давайте напишем код!

Монтаж

Вы можете проверить руководство по установке, предоставленное разработчиками, но сейчас мы будем использовать Gradle:

implementation 'org.python:jython-slim:2.7.2'

Если вы предпочитаете Maven:

<dependency>
  <groupId>org.python</groupId>
  <artifactId>jython-slim</artifactId>
  <version>2.7.2</version>
</dependency>

Базовая функциональность

Прежде всего, нам нужно создать объект PythonInterpreter:

Чтобы запустить код Python, используйте метод exec():

Мы можем запускать каждый тип кода. Мы можем создавать переменные, а затем извлекать их как тип PyObject, используя get():

В противном случае мы можем создать новую переменную, вызвав set(String name, Object value). Я думаю, что этот способ более элегантен:

Или мы можем использовать метод eval(), который оценивает строку как выражение Python и возвращает результат.

PyObject тип содержит:

  • собственные методы Python (например, __call__(...), __str__());
  • методы преобразования в распространенные типы Java: asInt(), asString(), asDouble(), asLong(), asDouble(). Также есть полезные методы asIterable() и asStringOrNull();
  • invoke() методов для вызова метода объекта;
  • __tojava__(Class<T> c) метод преобразования в каждый тип Java;
  • (может я что-то пропустил...)

Давайте поиграем с нашей созданной переменной. Мы хотим преобразовать его в Java int:

Если мы хотим преобразовать его в строку, мы можем использовать старый добрый метод Integer.toString(). Но мы будем использовать Jython:

Также мы можем использовать метод __tojava__(). Давайте создадим список Python и попробуем преобразовать его в класс Java List:

Если мы хотим перебрать только список, мы можем использовать метод asIterable():

Заключение

Здесь мы немного поиграли с Jython, рассмотрели некоторые основные функции.

А мы еще раз убеждаемся, насколько широко и интересно программировать 🌎