

В более простых терминах, 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, хотя при желании вы можете использовать более многословную форму.



Jython - это язык программирования 100% Pure Java. Он позволяет полностью перевести исходный код языка Python в байт-код Java, и запустить полученный байт-код [...] читать полностью
10208