2008-09-27 61 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的情況下執行的,所以整合非常簡單。