我正在用 Java 编写一个图形应用程序。最终我想用脚本语言构建,这样事情就可以编程了。您推荐哪种语言库?

可能的嫌疑人是:

不太可能的候选人是:

目标受众可能不是铁杆程序员,因此首选较少晦涩难懂的语言。我的猜测是,即使 JavaScript 存在一些怪癖,他们也更容易接受它,因为他们见过它更多。

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

编辑:菲洛 写道 Lua 有一个 Java 实现,名为 卡鲁瓦.


相关问题:

有帮助吗?

解决方案 6

我刚刚读了史蒂夫·耶吉的 通用设计模式. 。这篇文章的主题比 Java 应用程序中的嵌入式脚本要广泛得多,但由于作者编写了一个允许脚本编写的 Java 应用程序(使用 Jython),因此我发现其中有一些有趣的见解。

JavaScript是地球上两种最好的脚本语言之一,从“脚本语言”一词中最正确的意义:也就是说,专门设计的语言是嵌入在较大的主机系统中,然后用于操纵或“脚本”对象中的主机系统中的语言。这就是JavaScript旨在做的。它具有相当小的可选扩展,它具有相当紧张的非正式规范,并且具有精心设计的界面,可在JavaScript中透明地透明宿主系统对象。

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

我同意他的观点,将范围缩小到 JavaScript 和 Lua。

没有方便的示例,我所能做的就是说,使用JavaScript/Rhino(或Lua在JVM上使用后)可能会使我的生活更轻松。

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

其他提示

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

Bruce Eckel 在《Thinking in java》中用 jython 做了一章。

冒着获得“反对票”的危险,Python 比 BASIC 更容易:-)

Lua 因其语言简单、易于学习而受到赞赏。LuaJava 使用原始的 Lua 实现,使其完整,但正如您指出的那样,安装起来可能很困难。我至少知道 Lua 的纯 Java 实现: 卡鲁瓦. 。它并不完整(缺乏协程支持等,但没有它们也可以做很多事情),但也许已经可以用于您的目标。
与 Groovy 不同,它不会给您的应用程序增加太多开销......

如果您想全力以赴,您可以利用 Java 平台的脚本作为 定义的 通过 JSR 223。采用这种方法将允许应用程序使用任何具有符合标准的语言 脚本引擎.

还有 BeanShell,它的优点是成为完全认可的 JSR,因此也许更有可能保留下来。

http://www.beanshell.org/

Java 6 已经将 javascript 作为开箱即用的 JSR 223 脚本语言提供。

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

我的第一个想法是也使用 LuaJava,但由于我希望它能够在 Linux、Mac 和 Windows 上运行,所以我被它除了 Java 之外还使用编译的库这一事实所推迟。只有Windows预编译的二进制文件可用,而且我不是Mac方面的专家,所以我试图在纯Java中找到一些东西,我发现了这个: http://sourceforge.net/projects/luaj

它似乎实现了Lua文档中描述的C API,以及来自LuaJava的API。

该项目看起来非常先进,有 Lua 调用 Swing 的示例(!),并且它们在我的 Linux 机器上运行。但奇怪的是,邮件列表、论坛和文档确实很少。

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

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

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

你可能会考虑 雅克. 。它基于 Tcl,最初被设计为一种嵌入式脚本语言。因此,有人可能会说,它比其他能够嵌入附加功能的脚本语言更适合这一目的。

特别是如果目标受众是“不是铁杆程序员”,Jacl 会做出不错的选择。聪明的人(尤其是那些没有硬连线编程偏见的人)可以在早上轻松掌握 Tcl 语法。

您可以使用 相对代理 - Java,它提供了真正的、纯粹的Java作为脚本语言,包括用Java编写的shell脚本,这要归功于它的动态编译。由于 Java“脚本”是共享启动器类加载器执行的,因此集成非常简单。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top