2008-09-27 213 views
7

我正在用Java编写图形应用程序。最终我想用脚本语言来编写程序。你推荐哪种语言库?Java:脚本语言(宏)嵌入Java桌面应用程序

那么值得怀疑的是:

不太可能的候选人是:

的目标受众也有可能不是铁杆程序员,所以欠晦涩的语言是首选。我的猜测是,即使只是因为他们已经看到了它的怪癖,JavaScript也更容易被他们接受。

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

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


相关的问题:如果

回答

1

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

和JavaScript是两个最好的 脚本语言在这个星球上的一个,在 术语 “脚本语言”的最正确的意义:即,设计 语言专门嵌入更大 主机系统,然后用于 操作或“脚本”主机系统中的对象。这就是JavaScript 的设计目的。它相当 小一些可选的扩展, 它有一个相当紧张的非正式 规范,它有堆焊 主机系统精心制作 接口 的JavaScript对象透明。

相比之下,Perl和Python和Ruby是 巨大的绵延,所有的努力(如C++和Java的 )条为 每个任务的最佳语言。唯一的其他主流 语言与那里竞争 JavaScript的脚本任意 主机系统是Lua,是着名的 脚本语言的首选 游戏行业。

我同意他缩小到JavaScript和Lua。

没有得心应手的例子,我可以 做的是说,使用JavaScript /犀牛 (或Lua语言,一旦上 成为可用的JVM)可能使我的生活更轻松 。

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

9

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

Bruce Eckel用jython在“Thinking in Java”中做了一章。

在危险得到一个“向下票”巨蟒是基本:-)容易

+1

+1 - 基本O) – 2010-04-27 14:35:36

3

Lua是赞赏,除其他事项外,由语言的简单,方便易学。 LuaJava使用原始的Lua实现,使其完整,但正如您指出的那样,可能安装起来很微妙。我至少知道一个纯粹的Lua实现的Java:Kahlua。它并不完整(缺少协程支持等其他方面的支持,但如果没有它们,可以做很多事情),但也许已经可以用于你的目标。与Groovy不同,它不应该为你的应用增加很多开销......

1

还有BeanShell,它具有完全批准的JSR的优点,因此可能更容易遵守。

http://www.beanshell.org/

+0

另外的一面:它基本上是动态的Java,所以它真的很容易将其附加到一个Java程序。缺点:它基本上是动态Java,所以它可能不是最简单的学习语言。 – 2008-09-29 13:38:07

+0

如果我喜欢Java,并且使用Java,但我不希望我的用户知道他们正在运行Java应用程序,那么就像是为丑陋的女朋友感到羞耻?无权利? – 2008-10-01 10:32:44

0

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

特别是如果目标受众是“不是硬核程序员”,Jacl是一个很好的选择。聪明的人(特别是那些没有硬编程偏见的人)可以很容易地在一个早晨拿起Tcl语法。

2

如果您想全力以赴,可以使用JSR 223的defined为Java平台编写脚本。采用此方法将允许应用程序使用符合script engine的任何语言。

+0

“然而,用于JavaScript编程语言的Mozilla Rhino引擎目前作为JDK 6和JRE 6库中的一项功能。”这是否让犀牛略微领先其他人? – 2008-09-30 07:05:52

1

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

1

目前,我正在寻找一个图书馆,让我用Java对象和方法从Lua脚本。

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

它似乎实现了Lua doc以及来自LuaJava的API。

这个项目好像真的很先进的,也有从Lua(!)的Swing调用的例子,他们的工作在我的Linux机器。但奇怪的是,邮件列表,论坛和文档非常稀少。

我要试试这个在Windows和Mac了。希望它有效。

甘露已经提到,但它只是针对J2ME,这就是为什么它缺乏的Lua的某些部分。我认为有一个名为Mochalua的项目具有相同的目标。另一方面,LuaJ有两个版本,一个针对J2SE,它实现了一切(协程),另一个针对J2ME,缺少2或3个libs我认为(包括LuaJava的东西,其中需要反思)。

0

您可以使用RelProxy - Java的,它提供了真实而纯粹的Java作为脚本语言,包括使用Java做shell脚本,这要归功于其对动态编译。由于Java脚本是在共享启动器ClassLoader的情况下执行的,所以整合非常简单。