Java:用于嵌入Java桌面应用程序的脚本语言(宏)

时间:2008-09-27 10:42:07

标签: java javascript scripting lua jython

我正在用Java编写图形应用程序。最终我想用脚本语言构建,所以事情是可编程的。你推荐哪种语言库?

可能的嫌疑人是:

候选人不太可能:

目标受众可能不是核心程序员,因此首选的是较少的神秘语言。我的猜测是JavaScript更容易接受,即使它的怪癖只是因为他们已经看到了更多。

Lua似乎在C / C ++中很受欢迎,但至少LuaJava需要额外的.dll / .so,这使得部署变得复杂。

编辑: PhiLho写道,有一个名为kahlua的Lua的Java实现。


相关问题:

9 个答案:

答案 0 :(得分:9)

如果目标受众是“没有编程技能......”选择jython(python)它很容易学习。 (我7岁的女儿很快就学会了)

布鲁斯·埃克尔(Bruce Eckel)在“思考java”中用jython作了一章。

在危险中获得“向下投票”的蟒蛇更容易,因为BASIC: - )

答案 1 :(得分:3)

除了其他方面,Lua受到语言的简单性的青睐,因此易于学习。 LuaJava使用原始的Lua实现,使其完整,但正如您所指出的,安装可能很精致。我至少知道Lua的纯Java实现:Kahlua。它不完整(除了其他东西缺乏协程支持,但没有它们可以做很多事情)但可能已经可以用于你的目标。
与Groovy不同,它不应该为您的应用程序增加太多开销......

答案 2 :(得分:2)

如果你想全力以赴,你可以利用JSR 223的defined将Java平台的脚本用作.J3。采用这种方法可以让应用程序使用任何符合script engine的语言。 / p>

答案 3 :(得分:1)

还有BeanShell,它具有成为完全认可的JSR的优势,因此可能更容易坚持下去。

http://www.beanshell.org/

答案 4 :(得分:1)

Java 6已经有javascript可用作JSR 223脚本语言,开箱即用。

答案 5 :(得分:1)

我刚读过Steve Yegge的The Universal Design Pattern。这篇文章的内容比Java应用程序中的嵌入式脚本更广泛,但由于作者编写了一个允许脚本编写的Java应用程序(使用Jython),因此我发现了一些有趣的洞察力。

  

JavaScript是最好的两个之一   这个星球上的脚本语言   最正确的意义   “脚本语言”:即   设计的语言   特别是要嵌入更大的   主机系统,然后习惯   操纵或“编写”对象   主机系统。这就是JavaScript   是为了做。这是合情合理的   小的一些可选扩展,   它有一个相当紧张的非正式   规格,它有一个仔细   精心设计的表面界面   主机系统对象透明地进入   的JavaScript。

     

相比之下,Perl,Python和Ruby都是   巨大的蔓延,所有的尝试(如C ++和   Java)是最好的语言   每一项任务。唯一的其他主流   与之竞争的语言   用于编写任意脚本的JavaScript   主机系统是Lua,以存在而闻名   首选的脚本语言   游戏产业。

我同意他缩小JavaScript和Lua的范围。

  

没有这些例子,我只能这样做   可以说是使用JavaScript / Rhino   (或Lua,一旦它可用   JVM)可能是我的生命   更容易。

我个人更喜欢Java平台上的JavaScript。用户群的人口更多。 正如Yegge所说,它是“世界上最容易被误解的编程语言”,但该语言的可用资源量是一个优势。 Rhino似乎是一只成熟的野兽。

答案 6 :(得分:1)

我目前正在寻找一个允许我使用Lua脚本中的Java对象和方法的库。

我的第一个想法是也使用LuaJava,但是因为我希望它可以在Linux,Mac和Windows上工作,所以除了Java之外它还使用了编译的lib这个事实让我感到沮丧。只有Windows预编译的二进制文件可用,我不是Mac上的专家,所以我试图用纯Java找到一些东西,我发现了这个:http://sourceforge.net/projects/luaj

它似乎实现了Lua doc中描述的C API,以及LuaJava中的API。

该项目似乎非常先进,有一些来自Lua(!)的Swing调用的例子,他们在我的Linux机器上工作。但奇怪的是,邮件列表,论坛和文档真的很少。

我也会在Windows和Mac上尝试这个。希望它有效。

Kahlua已被提及,但它仅针对J2ME,这就是为什么它缺少Lua的某些部分。我认为有一个名为Mochalua的项目具有相同的目标。

另一方面,另一方面,LuaJ有两个版本,一个针对J2SE实现所有内容(也是协同程序),另一个针对J2ME,我认为它缺少2个或3个库(包括需要LuaJava的东西)反射)。

答案 7 :(得分:0)

您可以考虑Jacl。它基于Tcl,最初设计为可嵌入的脚本语言。因此,有人可能认为它比其他具有嵌入能力的脚本语言更适合于此目的。

特别是如果目标受众是“非核心程序员”,Jacl做出了不错的选择。智能人员(尤其是那些没有硬连线编程偏见的人)可以在早上轻松获取Tcl语法。

答案 8 :(得分:0)

您可以使用RelProxy - Java,它提供真实和纯Java作为脚本语言,包括使用Java编写的shell脚本,这要归功于它的动态编译。因为共享启动器ClassLoader执行Java“脚本”,所以集成很简单。