Java: язык сценариев (макрос) для встраивания в настольное приложение Java - PullRequest
7 голосов
/ 27 сентября 2008

Я пишу графическое приложение на Java. В конце концов я хотел бы встроить язык сценариев, чтобы все было программируемым. Какую языковую библиотеку вы рекомендуете?

Вероятные подозреваемые:

Менее вероятные кандидаты:

Целевая аудитория, вероятно, не хардкорные программисты, поэтому предпочтение отдается менее загадочному языку. Я предполагаю, что JavaScript является более приемлемым для них даже с его причудами только потому, что они видели его больше.

Lua, кажется, популярен в C / C ++, но, по крайней мере, LuaJava требует дополнительных .dll / .so, что усложняет развертывание.

EDIT: PhiLho написал, что есть реализация Lua на Java под названием kahlua .


Смежные вопросы:

Ответы [ 9 ]

9 голосов
/ 27 сентября 2008

если целевая аудитория "нет навыков программирования ....", выберите jython (python), его легко освоить. (моя 7-летняя дочь узнала это очень быстро)

Брюс Экель сделал главу с jython в «мышлении в Java».

при опасности получить питона "с отрицательным голосом" проще, чем BASIC: -)

3 голосов
/ 27 сентября 2008

Lua ценится, помимо прочего, за простоту языка, облегчающего изучение. LuaJava использует оригинальную реализацию Lua, что делает ее завершенной, но, как вы указали, может быть деликатной в установке. Я знаю, по крайней мере, чистую Java-реализацию Lua: Kahlua . Он не завершен (среди прочего, отсутствует поддержка сопрограмм, но без них можно многое сделать), но, возможно, уже пригоден для вашей цели.
В отличие, скажем, от Groovy, это не должно увеличивать нагрузку на ваше приложение ...

2 голосов
/ 30 сентября 2008

Если вы хотите сделать все возможное, вы можете использовать сценарии для платформы Java как , определенное JSR 223. Такой подход позволит приложению использовать любой язык, который имеет соответствующий обработчик сценариев .

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

В настоящее время я ищу библиотеку, которая позволила бы мне использовать объекты и методы Java из сценариев Lua.

Моей первой идеей было также использовать LuaJava, но, поскольку я хочу, чтобы это работало на Linux, Mac и Windows, я был удивлен тем фактом, что он использует скомпилированную библиотеку в дополнение к Java. Доступны только предварительно скомпилированные двоичные файлы Windows, и я не специалист по Mac, поэтому я попытался найти что-то на чистой Java и обнаружил следующее: http://sourceforge.net/projects/luaj

Кажется, он реализует C API, описанный в документе Lua, а также API из LuaJava.

Проект кажется действительно продвинутым, есть примеры вызовов Swing от Lua (!), И они работали на моем Linux-компьютере. Но, как ни странно, списки рассылки, форумы и документация действительно редки.

Я тоже попробую это на Windows и Mac. Надеюсь, что это работает.

Kahlua упоминается, но он нацелен только на J2ME, поэтому в нем отсутствуют некоторые части Lua. Я думаю, что есть проект под названием Mochalua, который преследует те же цели.

LuaJ, с другой стороны, поставляется в двух версиях, одна для J2SE, которая реализует все (сопрограммы тоже), а другая для J2ME, в которой, как мне кажется, не хватает 2 или 3 библиотек (включая материал LuaJava, который требует отражение).

1 голос
/ 29 октября 2008

Я только что прочитал Шаблон универсального дизайна Стива Йегге . Эта статья посвящена гораздо более широкой теме, чем просто встроенные сценарии в Java-приложении, но поскольку автор пишет Java-приложение, которое позволяет создавать сценарии (используя Jython), есть некоторые интересные моменты, которые я нахожу интересными.

И JavaScript является одним из двух лучших скриптовые языки на планете, в самый правильный смысл термина «язык сценариев», а именно: языки, которые были разработаны специально для встраивания в больший хост-системы, а затем используются для манипулировать или "сценарий" объектов в хост-система. Это то, что JavaScript был разработан, чтобы сделать. Это разумно маленький с некоторыми дополнительными расширениями, это имеет довольно жесткий неформальный спецификация, и она имеет тщательно созданный интерфейс для всплытия объекты хост-системы прозрачно в JavaScript.

В отличие от Perl, Python и Ruby огромные разрастания, все пытаются (например, C ++ и Java), чтобы быть лучшим языком для каждое задание Единственный другой мейнстрим язык там, который конкурирует с JavaScript для сценариев произвольных хост системы Lua, известный тем, что язык сценариев выбора для игровая индустрия.

Я согласен с ним в сужении до JavaScript и Lua.

Без примеров, все, что я могу сделать, это сказать, что с помощью JavaScript / Rhino (или Lua, как только он стал доступен на JVM), возможно, сделал мою жизнь легче.

Я лично предпочитаю JavaScript на платформе Java. Население базы пользователей больше. По словам Йегге, это «самый неправильно понятый язык программирования в мире», но количество ресурсов, доступных на этом языке, является плюсом. Носорог кажется зрелому зверю.

1 голос
/ 17 октября 2008

Java 6 уже имеет готовый javascript как язык сценариев JSR 223.

1 голос
/ 27 сентября 2008

Существует также BeanShell, преимущество которого состоит в том, что он полностью одобрен JSR, и, возможно, с большей вероятностью останется без дела.

http://www.beanshell.org/

0 голосов
/ 20 февраля 2014

Вы можете использовать RelProxy - Java, он обеспечивает реальную и чистую Java в качестве языка сценариев, включая сценарии оболочки, созданные на Java, благодаря его компиляции на лету. Поскольку «скрипт» Java выполняется совместно с модулем запуска ClassLoader, интеграция проста.

0 голосов
/ 27 сентября 2008

Вы можете рассмотреть Jacl . Он основан на Tcl, который изначально был разработан как встраиваемый язык сценариев. Таким образом, можно утверждать, что он гораздо больше подходит для этой цели, чем другие языки сценариев, в которые можно было встраивать прикрепленные элементы.

Особенно, если целевой аудиторией являются «не хардкорные программисты», Жак делает прекрасный выбор. Интеллигентные люди (и особенно те, у кого нет предвзятых предубеждений в программировании) могут легко подобрать синтаксис Tcl утром.

...