Подтвердить что ты не робот

Есть ли реализация Perl в Java?

Я ищу реализацию Perl в Java. Что-то вроде Jython для Python. Я нашел PLJava, но ему нужны как JVM, так и Perl-компилятор. Мне нужно что-то, что не нуждается в компиляторе Perl.

Мне нужно запустить некоторый код Perl в классе Java.

ОБНОВЛЕНИЕ:

  • Я понял, что PLJAVA - это то, что мне нужно. Кто-нибудь знает какой-то учебник?
  • Кто-нибудь играл с модулем Inline:: Java.
  • Я также не смог установить Inline:: Java.
4b9b3361

Ответ 1

Jython не полностью совместим с CPython (или тем, что вы предпочитаете использовать в качестве исходного интерпретатора С++ Python), но везде, где он отличается от спецификации языка, это ошибка. К сожалению, Perl 5 намного сложнее и вообще не имеет каких-либо формальных спецификаций языка - язык, который определяется как "то, что делает исполняемый файл perl", - поэтому не существует другой реализации языка Perl 5, кроме Perl 5 переводчик. Несчастливо, но эта история. Perl 6 имеет спецификацию языка и несколько (неполных) реализаций, но это вряд ли будет полезно для вас.

PLJava была попытка сделать именно то, что вы хотите, вызвать Perl из Java. Он делает это через JNI (набирая собственный код на Java), ссылаясь на libperl. Однако он не обновлялся с 2004 года, и я не знаю, насколько он работает.

Изменить

Я не видел Inline:: Java:: PerlInterpreter раньше - к сожалению, он не работает с моей системой Perl.

Ответ 2

Обновление: есть другие варианты, которые могут быть жизнеспособными: Jerl. Jerl переводит интерпретатор micro-Perl в Java-код, используя NestedVM. В этом смысле Jerl - это почти Java-реализация Perl. Я не тестировал его, и разумно ожидать потери в выступлениях. Тем не менее это решение стоит расследовать. Здесь находится Jerl: https://code.google.com/p/jerl/.

К сожалению, нет, по крайней мере, не полный и полезный. Perl - сложный язык для переноса на другие виртуальные машины в основном из-за его динамичного характера и исторических причин, связанных с тем, как язык был разработан на протяжении многих лет; теоретические вопросы о perl-аналитике, по моему скромному мнению, имеют второстепенное значение. Perl не имеет официальной спецификации или официальной грамматики: Perl-реализация - это формальная спецификация Perl. Это означает, что для написания альтернативной реализации Perl необходимо глубоко знать внутренности текущего, и это, очевидно, является большим препятствием для разработки такого проекта. Здесь лежит настоящая трудность переноса Perl на другие виртуальные машины. Кроме того, динамический характер Perl создает другие технические проблемы, связанные с эффективной реализацией на виртуальной машине Java, которая спроектирована для поддержки статически типизированных языков. Были некоторые усилия, например, такие как: http://www.ebb.org/perljvm/. Здесь приводится более новая: http://use.perl.org/~Ovid/journal/38837. Оба они были брошены в той или иной момент не из-за неопровержимости, а только потому, что требуемые усилия были слишком большими для проекта исследования/хобби. Новой интересной альтернативой, которая идет устойчиво, является язык-P Маттиа Барбон: http://search.cpan.org/dist/Language-P/. Это реализация Perl в NET clr. Реализация еще не завершена, но я знаю, что человек, стоящий за проектом, очень настойчив и что проект идет медленно, но неуклонно. Возможно, Perl на CLR будет первым.: D

Ответ 3

Посмотрите Sleep

- это язык сценариев многопарадигмы для платформы Java

легко учиться с помощью Perl и синтаксиса Objective-C

выполняет быстрые скрипты с небольшим размером пакета (~ 250 КБ)

выделяется при обработке данных, интеграции компонентов и распределенной коммуникации

плавно использует объекты Java и сторонние библиотеки

Ответ 4

Если вы не собираетесь использовать компилятор Perl, что именно вы ищете?

Что вы подразумеваете под реализацией Perl для Java? Если вы хотите встроить Perl в свои Java-программы, вам понадобится компилятор Perl.

Ответ 5

Мне кажется, что проблема связана с тем, что у вас нет компилятора/интерпретатора Perl, но вам нужно выполнить какой-то код Perl. К сожалению, я не думаю, что существует что-то вроде Jython для Perl. Единственные проекты, о которых я знаю, могут делать то, что вы просите, это PLJava и JPL. К сожалению, похоже, что оба проекта заброшены.

Это был бы классный проект, хотя, как я считаю, есть необходимость в чем-то подобном.

Ответ 6

Вы можете использовать пар, включая модули (или даже исполняемые файлы), если на целевой платформе не установлен perl: http://metacpan.org/pod/PAR

Ответ 7

Rakudo - это реализация JVM Perl 6 (что сильно отличается от стандартного Perl). Теперь есть Jerl (который запускается в JVM, но скомпилирован на основе микроперла). Оба имеют свои ограничения, но являются надежными претендентами для большинства целей.