RU | EN

Python для Java

Jython - это язык программирования 100% Pure Java. Он позволяет полностью перевести исходный код языка Python в байт-код Java, и запустить полученный байт-код на любой Java Virtual Machine. Это совершенно незаметная и плавная интеграция с Java. Из Python вы можете получить доступ ко всем библиотекам Java, строить приложения, интегрироваться с Java bean и разбивать на подклассы Python классы Java, и наоборот. Аналогично языку Python и в отличие от Java, Jython может использоваться интерактивно; просто наберите некий код на JPython в строке приглашения и вы немедленно увидите результаты.
        В более простых терминах, Jython позволяет вам составить скрипт для любого нужного вам Java-кода, переходящий при этом в код, который по количеству строк меньше исходного в два-десять раз. Поскольку Python является языком, с димамической типизацией, вы, к тому же, можете разрабатывать приложения быстрее и с меньшим количеством ошибок, получая в результате более гибкую программу. Jython можно получить на https://www.jython.org/.
Jyhon содержит несколько элементов:

  • jython, интерпретатор Jython.
  • jythonc, перекомпилирующий программу на Jython в файлы классов Java. Полученные в результате файлы классов Java могут использоваться как любые другие файлы классов Java, например, как апплеты, сервлеты или beans.
  • Набор модулей, обеспечивающий пользователей Jython подавляющим большинством модулей из стандартной библиотеки Python.
  • Несколько программ, демонстрирующих различные аспекты программирования на Jython.
Доступ к библиотекам Java
        Рассмотрим программу ButtonDemo.py, результат работы которой представлен на рисунке.

import java from pawt import swing def exit(e): java.lang.System.exit(0) frame = swing.JFrame('Swing Example', visible=1) button = swing.JButton('Close Me!', actionPerformed=exit) frame.setDefaultCloseOperation(3) frame.contentPane.add(button) frame.pack()

        Эта простая программа демонстрирует, насколько просто создавать программы на Jython, использующие библиотеку компонентов Swing. Первая строка импортирует пакет java, необходимый нам для вызова java.lang.System.exit(). Вторая строка импортирует Java-пакет swing (модуль pawt вычисляет точное местонахождение Swing, который может находиться в javax.swing или, возможно, в com.sun.java.swing). Четвертая строка создает рамку JFrame, присваивая ее свойству visible значение "истина". Пятая строка создает кнопку JButton с меткой и определяет, какая функция должна вызываться при нажатии этой кнопки. Шестая строка вызывает метод setDefaultCloseOperation, который указывает, что следует делать при закрытии ока(3 эквивалентно EXIT_ON_CLOSE). И наконец, последние две строки помещают кнопку JButton в рамку JFrame и делают это все видимым.
        Для того чтобы упростить использование библиотек Java, Jython выполняет большой объем работы незаметно для пользователямя. Например, когда Jython импортирует пакет Java, он активно исследует соответствующий пакет, и затем, используя Java Reflection API, находит содержимое пакетов и подписи классов и методов. Кроме того, Jython "на лету" конвертирует между собой типы Python и Java. В ButtonDemo.py, например, текст кнопки ('This is a Swinging example!') представляет собой строку Python. Перед вызовом конструктора для JButton, Jython находит наиболее подходящий конструктор (например, отклоняя версию, принимающую Icon в качестве первого аргумента), и автоматически конвертирует строковый объект Python в строковый объект Java. Более сложные механизмы позволяют конструктору JButton принимать ключевой параметр actionPerformed=exit. Такой стиль невозможен в Java, поскольку Java не имеет возможности манипулировать функциями (или методами) как объектами первого класса. Jython исключает необходимость создания класса ActionListener с единственным методом actionPerformed, хотя при желании вы можете использовать более многословную форму.

Источники:
        jcenter.narod.ru

Комментарии: