Java и скриптовые языки - PullRequest
4 голосов
/ 26 июня 2011

Я делаю какой-то движок песочницы, конечные пользователи могут создавать скрипты, чтобы сделать их мир динамичным и т. Д., В настоящее время я смотрю только на LuaJava, потому что у меня есть некоторый опыт работы с Lua и я считаю его очень читабельным. Легкий язык. Но я также понимаю, что может быть плохой идеей выбирать только исходя из личных предпочтений, ведь Lua предназначен для встраивания в C, так что производительность не будет лучшей, как я себе представляю.

Но, посмотрев на некоторые альтернативы (Groovy, Clojure), я обнаружил, что синтаксис просто нечитаемый / слишком абстрактный, Lua был моим первым опытом программирования, и даже поначалу его было довольно сложно «достать», боюсь, это языки просто испугали бы меня до чертиков, и я бы никогда больше не взглянул на сценарии.

Существуют ли языки сценариев, которые могут быть встроены в Java, которые конкурируют с Lua за простоту?

Редактировать Моя проблема с JavaScript, JPython - это все фигурные скобки и т. Д., Поскольку символы начинающего пользователя имеют тенденцию выглядеть 'сложными'. Также для python существует концепция Object, которую пользователь должен понимать, и в этом случае он не очень полезен.

func = function(arg)
   print(arg)
end

Это так просто ...

Ответы [ 2 ]

6 голосов
/ 26 июня 2011

Я думаю, что JavaScript очень прост, и его можно легко встроить в Java с помощью Rhino . Скрипты могут быть как предварительно скомпилированными, так и скомпилированными на лету с помощью javax.script классов , которые используются для подключения к механизмам сценариев для платформы Java (из которых Rhino является одним из них).

Если вам нравится Lua, есть проект Lua для Java, который называется & mdash; * кашель * & mdash; Калуа . Они перечисляют «Быстрое выполнение наиболее распространенных операций» как одну из своих целей.


Редактировать : Повторяйте ваши изменения, я не сразу понимаю, почему это:

func = function(arg)
   print(arg)
end

существенно легче понять, чем это:

func = function(arg) {
   print(arg);
};

... который является буквальным переводом с Lua на JavaScript, предполагая, что на вашей платформе существует функция с именем print. Я обычно пишу это так:

function func(arg) {
   print(arg);
}

... но другой способ подходит для большинства целей.

Но вы должны использовать то, что вам удобно.

1 голос
/ 26 июня 2011

Вы должны попробовать Jython и JRuby

...