Автоматический перевод Python на Java

Есть ли инструмент, который может автоматически конвертировать Python в Java? Может ли Jython это сделать?

Виктор, я думал, ты слишком любишь Python путь, чтобы преобразовывать его в Java ..? ;-)

Galwegian 30.09.2008 19:15

:) Я люблю Python, но у меня там выбора нет ...

Victor Noagbodji 30.09.2008 20:45
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
33
2
109 402
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

чтобы уточнить ваш вопрос:

От исходного кода Python к исходному коду Java? (Я так не думаю)

.. или из исходного кода Python в байт-код Java? (Jython делает это под капотом)

Да, он конвертируется в исходный код Java. со своей страницы (jython.org/archive/21/docs/jythonc.html): инструмент jythonc генерирует реальный исходный код Java, а затем вызывает компилятор Java над этим исходным кодом для создания файлов .class

KIC 26.11.2013 14:43
Ответ принят как подходящий

Это может быть непростая проблема. Определение того, как сопоставить классы, определенные в Python, в типы в Java будет большой проблемой из-за различий во времени привязки каждого типа. (утиная типизация против привязки времени компиляции).

И все эти специальные имена методов. вызов - это то, что требует серьезного внимания.

S.Lott 01.10.2008 06:07

Существует переводчик под названием P2J, который может преобразовывать подмножество Python в Java. Мой проект универсал-транспиллер был написан для той же цели, но он также переводит Python на C#, Java, JavaScript и несколько других языков.

Anderson Green 18.09.2016 01:20

@AndersonGreen Я хочу попробовать ваш инструмент для преобразования python в java. Я не вижу примера в вашем ридми. Не могли бы вы пролить свет на это?

Karthik 28.01.2019 13:02

@AndersonGreen Я пробовал ваш онлайн-конвертер, но похоже, что он не работает, когда классы объявлены в python.

Karthik 28.01.2019 13:12

@Karthik, Да, он совместим только с небольшим "чисто функциональным" подмножеством Python.

Anderson Green 29.01.2019 05:18

На самом деле, это может помочь, а может и не помочь, но вы можете написать сценарий, который создает класс Java для каждого класса Python, включая заглушки методов, помещая реализацию метода Python в Javadoc.

На самом деле, это, вероятно, довольно легко сделать в Python.

Я работал в компании, которая осуществила перенос на Java огромной системы Smalltalk (похожей на Python), и это именно то, что они сделали. Заполнение методов было ручным, но бесценным, потому что заставляло вас серьезно задуматься о том, что происходит. Я сомневаюсь, что метод грубой силы приведет к хорошему коду.

Вот еще одна возможность: можете ли вы легче преобразовать свой Python в Jython? Jython - это просто Python для JVM. Возможно, можно будет использовать декомпилятор Java (например, JAD), чтобы затем преобразовать байт-код обратно в код Java (или вы можете просто захотеть запустить JVM). Однако я не уверен в этом, возможно, у кого-то есть идея получше.

Решение JAD звучит как победитель. Возможно, вы могли бы отредактировать свой ответ, чтобы просто показать это решение.

Peter Kelley 01.10.2008 02:52

Я не уверен, что решение JAD действительно жизнеспособно, поскольку я не знаю, конвертируются ли классы Jython в файлы .class или интерпретируются ли они путем преобразования их в байт-код во время выполнения. Это было предложение о том, что нужно изучить дальше.

oxbow_lakes 01.10.2008 15:12

Да, Jython делает это, но это может быть, а может и не быть тем, что вам нужно.

Действительно, но точнее, jython создает JVM-байт-код из исходного кода Python, исходный код Java нет

Tobias Kienzler 17.02.2015 12:11

Другие вопросы по теме