Есть ли инструмент, который может автоматически конвертировать Python в Java? Может ли Jython это сделать?
:) Я люблю Python, но у меня там выбора нет ...




чтобы уточнить ваш вопрос:
От исходного кода Python к исходному коду Java? (Я так не думаю)
.. или из исходного кода Python в байт-код Java? (Jython делает это под капотом)
Да, он конвертируется в исходный код Java. со своей страницы (jython.org/archive/21/docs/jythonc.html): инструмент jythonc генерирует реальный исходный код Java, а затем вызывает компилятор Java над этим исходным кодом для создания файлов .class
Это может быть непростая проблема. Определение того, как сопоставить классы, определенные в Python, в типы в Java будет большой проблемой из-за различий во времени привязки каждого типа. (утиная типизация против привязки времени компиляции).
И все эти специальные имена методов. вызов - это то, что требует серьезного внимания.
Существует переводчик под названием P2J, который может преобразовывать подмножество Python в Java. Мой проект универсал-транспиллер был написан для той же цели, но он также переводит Python на C#, Java, JavaScript и несколько других языков.
@AndersonGreen Я хочу попробовать ваш инструмент для преобразования python в java. Я не вижу примера в вашем ридми. Не могли бы вы пролить свет на это?
@AndersonGreen Я пробовал ваш онлайн-конвертер, но похоже, что он не работает, когда классы объявлены в python.
@Karthik, Да, он совместим только с небольшим "чисто функциональным" подмножеством Python.
На самом деле, это может помочь, а может и не помочь, но вы можете написать сценарий, который создает класс Java для каждого класса Python, включая заглушки методов, помещая реализацию метода Python в Javadoc.
На самом деле, это, вероятно, довольно легко сделать в Python.
Я работал в компании, которая осуществила перенос на Java огромной системы Smalltalk (похожей на Python), и это именно то, что они сделали. Заполнение методов было ручным, но бесценным, потому что заставляло вас серьезно задуматься о том, что происходит. Я сомневаюсь, что метод грубой силы приведет к хорошему коду.
Вот еще одна возможность: можете ли вы легче преобразовать свой Python в Jython? Jython - это просто Python для JVM. Возможно, можно будет использовать декомпилятор Java (например, JAD), чтобы затем преобразовать байт-код обратно в код Java (или вы можете просто захотеть запустить JVM). Однако я не уверен в этом, возможно, у кого-то есть идея получше.
Решение JAD звучит как победитель. Возможно, вы могли бы отредактировать свой ответ, чтобы просто показать это решение.
Я не уверен, что решение JAD действительно жизнеспособно, поскольку я не знаю, конвертируются ли классы Jython в файлы .class или интерпретируются ли они путем преобразования их в байт-код во время выполнения. Это было предложение о том, что нужно изучить дальше.
Да, Jython делает это, но это может быть, а может и не быть тем, что вам нужно.
Действительно, но точнее, jython создает JVM-байт-код из исходного кода Python, исходный код Java нет
Виктор, я думал, ты слишком любишь Python путь, чтобы преобразовывать его в Java ..? ;-)