我写在Java中的图形应用程序。 最后,我想在一个脚本语言来构建这样的事情是可编程的。 你推荐哪个语言库?
可能的嫌疑人:
- 犀牛 (JavaScript的)
- JRuby的 (红宝石)
- Jython的 (蟒蛇)
不太可能的候选人是:
- 掀起用我自己的语言的JavaCC
- LuaJava (LUA)
- Groovy的
- JavaFX的
- 脚本富
目标受众也有可能不是铁杆程序员,所以欠晦涩的语言是首选。 我的猜测是JavaScript是他们更容易接受,甚至与它的怪癖只是因为他们更看到它。
Lua中似乎是在C / C ++受欢迎,但至少LuaJava需要额外的.dll /。所以,这使得部署复杂。
编辑: PhiLho写道,有一个Java实现的Lua称为甘露 。
相关的问题:
- 其脚本语言在现有的代码库来支持? (在C / C ++)
- 添加脚本功能.NET应用程序
- 什么是最好的脚本语言在C#桌面应用程序嵌入。
如果目标受众是“没有编程技能....” Jython的选择(Python)的很容易学会。 (我7岁的daugther了解到它非常快)
布鲁斯·埃克尔在“在Java编程思想”提出使用Jython的一章。
在危险得到一个“向下票”巨蟒是基本更容易:-)
Lua是赞赏,除其他事项外,由语言的简单,方便易学。 LuaJava使用原来的Lua的实施,使之成为完整的,但是当你点吧,也许微妙的安装。 我知道至少有Lua中的一个纯Java实现: 甘露 。 它是不完整的(缺少除其他外协程的支持,但我们可以做很多没有他们)对你的目标,但也许已经可用。
不像,说,Groovy的,应该没有太大的开销添加到您的应用程序...
如果你想全力以赴,你可以利用Java平台的脚本定义由JSR 223采取这一办法将允许应用程序使用具有符合任何语言的脚本引擎 。
还有BeanShell中,其中有一个是完全认可的JSR的优势,所以也许更容易坚持。
http://www.beanshell.org/
Java 6中已经拥有的JavaScript作为JSR 223的脚本语言,开箱即用。
我刚才读史蒂夫·耶格的通用设计模式 。 这篇文章是不是在Java应用程序只是嵌入的脚本更广泛的话题,但由于作者写道一个Java应用程序,允许脚本(使用Jython的),还有我发现有趣见地点。
和JavaScript是两个最好的脚本语言在这个星球上的一个,在术语“脚本语言”的最正确的意义:即,专门设计语言被嵌入更大的主机系统,然后使用操纵或“脚本”对象主机系统。 这是JavaScript最初被设计做。 这是相当小的一些可选的扩展,它有一个合理的紧非正式规范,它有堆焊主机系统对象透明地在JavaScript中精心打造的界面。
相比之下,Perl和Python和Ruby是巨大的绵延,所有的努力(如C ++和Java),成为每一个任务的最佳语言。 在那里唯一的其他主流语言,它使用JavaScript竞争脚本任意主机系统是Lua中,著名的是首选游戏产业的脚本语言。
我同意他缩小为JavaScript和Lua。
如果没有实例得心应手,我所能做的是说,使用JavaScript /犀牛(或者Lua中,一旦它成为可用的JVM)可能使我的生活更轻松。
我个人更喜欢在Java平台上的JavaScript。 用户群的人口较大。 由于Yegge所说的那样,它是“世界上最被人误解的编程语言”,但资源在语言中使用的量是一个加号。 犀牛似乎是成熟的野兽。
目前我正在寻找一个库,将允许我使用Java对象和方法从Lua脚本。
我的第一个想法是使用LuaJava过,但我想这是在Linux,Mac和Windows的工作,我被它使用编译LIB除了Java的东西的事实推迟。 只有Windows预编译的二进制文件都可用,我不是在Mac上的专家,所以我试图找到在纯Java,我发现这一点: http://sourceforge.net/projects/luaj
这似乎实现在Lua的文档中描述的C API,以及来自LuaJava的API。
该项目似乎真的先进的,也有从Lua(!)的Swing调用的例子,他们的工作在我的Linux机器。 但奇怪的是,邮件列表,论坛和文档真的很少。
我要试试这个在Windows和Mac了。 希望它的工作原理。
甘露已经提到,但它只是针对J2ME,这就是为什么它缺乏的Lua的某些部分。 我觉得有一个叫Mochalua项目,具有相同的目标。
LuaJ,在另一方面,有两个版本,一个是在实现一切J2SE针对性(协同程序,太),并在J2ME,缺乏2个或3库,我认为(包括LuaJava的东西,需要反思)一个目标。
你可能会考虑的Jacl 。 它是基于它最初被设计为一种嵌入式脚本语言的Tcl。 所以,我们可以认为这是这个目的比其他脚本语言必须嵌入上涨上的能力更适合。
特别是如果目标受众是“不硬派的程序员”,Jacl的做一个不错的选择。 聪明的人(尤其是那些没有硬连接编程偏见)可以很容易地拿起一个上午Tcl的语法。
您可以使用RelProxy - Java的,它提供了真实而纯粹的Java作为脚本语言,包括使用Java做shell脚本,这要归功于其对动态编译。 因为Java“脚本”执行共享启动类加载器,整合是必然的。