Есть ли реализация на Perl в Java? - PullRequest
11 голосов
/ 06 марта 2009

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

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

ОБНОВЛЕНИЕ:

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

Ответы [ 7 ]

6 голосов
/ 01 апреля 2011

Обновление: есть другие варианты, которые могут быть жизнеспособными: Джерл. Jerl переводит интерпретатор micro-Perl в код Java, используя NestedVM. В этом смысле Jerl - это почти Java-реализация Perl. Я не проверял это, хотя, и разумно ожидать потери в действиях. Тем не менее, это решение стоит изучить. Джерл находится здесь: 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. Оба были заброшены в тот или иной момент не из-за непроходимости, а только потому, что требуемые усилия были слишком большой для исследовательского / хобби проекта. Новая интересная альтернатива, которая неуклонно поступает, это language-P от Mattia Barbon: http://search.cpan.org/dist/Language-P/. Это реализация Perl в NET clr. Реализация все еще не завершена, но я знаю, что человек, стоящий за проектом, очень настойчив, и что проект продвигался медленно, но неуклонно. Возможно Perl на CLR придет первым. : D

6 голосов
/ 06 марта 2009

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

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

Редактировать

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

1 голос
/ 30 июля 2013

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

1 голос
/ 06 марта 2009

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

1 голос
/ 06 марта 2009

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

Хотя это был бы классный проект, так как я считаю, что нужно что-то подобное.

1 голос
/ 06 марта 2009

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

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

1 голос
/ 06 марта 2009

Посмотрите на Сон

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...