Java:Javaデスクトップアプリケーションに埋め込むスクリプト言語(マクロ)
-
02-07-2019 - |
質問
Javaでグラフィックアプリケーションを作成しています。最終的には、スクリプト言語でビルドして、プログラムをプログラムできるようにします。どの言語ライブラリをお勧めしますか?
おそらく容疑者は:
あまり考えられない候補者:
対象読者はおそらく筋金入りのプログラマーではないため、難解な言語はあまり好まれません。私の推測では、JavaScriptの癖は、もっと見たからといって、JavaScriptの方が受け入れやすいと思います。
LuaはC / C ++で人気があるようですが、少なくともLuaJavaには追加の.dll / .soが必要であり、展開が複雑になります。
編集: PhiLho は、 kahlua と呼ばれるLuaのJava実装。
関連する質問:
解決 6
Steve Yeggeのを読みましたユニバーサルデザインパターン。この記事は、Javaアプリケーションに埋め込まれたスクリプティングよりもはるかに幅広いトピックを扱っていますが、著者は(Jythonを使用して)スクリプティングを許可するJavaアプリケーションを書いているので、興味深い発見がありました。
そしてJavaScriptは2つの最高の1つです 地球上のスクリプト言語 用語の最も正しい意味 「スクリプト言語」:つまり、 設計された言語 特に大きいに埋め込まれる ホストシステム 操作または「スクリプト」のオブジェクト ホストシステム。これがJavaScript するように設計されました。それは合理的です オプションの拡張機能を備えた小規模、 かなりきつい非公式 仕様、およびそれは慎重に 浮上のための細工されたインターフェース ホストシステムオブジェクトを透過的に JavaScript。
対照的に、Perl、Python、およびRubyは 巨大なスプロール、すべて試行(C ++や Java)に最適な言語 すべてのタスク。他の唯一の主流 競合する言語 任意のスクリプト用のJavaScript ホストシステムはLuaであり、 選択のためのスクリプト言語 ゲーム業界。
私は彼にJavaScriptとLuaに絞り込むことに同意します。
便利な例がなければ、できることはすべて JavaScript / Rhinoを使用すると言う (またはLua、利用可能になったら JVM)私の人生を作ったかもしれない 簡単に。
個人的には、JavaプラットフォームのJavaScriptを好みます。ユーザーベースの人口は多いです。 Yeggeが言うように、「世界で最も誤解されているプログラミング言語」です。しかし、その言語で利用可能なリソースの量はプラスです。 Rhino は成熟した獣のようです。
他のヒント
ターゲットオーディエンスが「プログラミングスキルがありません...」の場合jython(python)を選択すると、簡単に習得できます。 (私の7歳の娘は非常に早くそれを学びました)
Bruce Eckelは、「thinking in java」でjythonとの章を作成しました。
「下票」を取得する危険がある場合pythonはBASICほど簡単です:-)
Luaは、とりわけ言語のシンプルさにより高く評価されており、習得が容易です。 LuaJavaは元のLua実装を使用して完全なものにしますが、ご指摘のとおり、インストールは微妙かもしれません。 Luaの少なくとも純粋なJava実装を知っています: Kahlua 。それは完全ではありません(コルーチンのサポートは特にありませんが、それらがなくても多くのことができます)。 たとえば、Groovyとは異なり、アプリケーションに大きなオーバーヘッドを追加すべきではありません...
すべてを使いたい場合は、Javaプラットフォームのスクリプトを JSR 223で定義。このアプローチを採用すると、アプリケーションは準拠するスクリプトエンジン。
BeanShellもあります。これには、完全に承認されたJSRであるという利点があり、おそらくこれに留まる可能性が高くなります。
Java 6には、JSR 223スクリプト言語としてすぐに使用可能なjavascriptが既に用意されています。
現在、LuaスクリプトのJavaオブジェクトとメソッドを使用できるライブラリを探しています。
最初のアイデアはLuaJavaも使用することでしたが、これをLinux、Mac、およびWindowsで動作させたいので、Javaに加えてコンパイル済みのlibを使用するという事実に先送りされました。事前にコンパイルされたWindowsバイナリのみが利用可能で、私はMacの専門家ではないので、純粋なJavaで何かを見つけようとしましたが、これを見つけました: http://sourceforge.net/projects/luaj
LuaJavaのAPIと同様に、Lua docで説明されているC APIを実装しているようです。
プロジェクトは本当に進んでいるようで、LuaからのSwing呼び出しの例(!)があり、彼らは私のLinuxボックスで作業しました。しかし、奇妙なことに、メーリングリスト、フォーラム、およびドキュメントは本当にまばらです。
これもWindowsとMacで試してみます。うまくいきますように。
Kahluaが言及されましたが、J2MEのみを対象としているため、Luaの一部が欠けています。同じ目標を持つMochaluaというプロジェクトがあると思います。
一方、LuaJには2つのバージョンがあります。1つはすべてを実装するJ2SE(コルーチンも)を対象とし、もう1つはJ2MEを対象としています。リフレクション)。Jacl を検討できます。元々は埋め込み可能なスクリプト言語として設計されたTclに基づいています。そのため、タックオンで埋め込むことができる他のスクリプト言語よりも、その目的にはるかに適していると主張できます。
特にターゲットオーディエンスが「筋金入りのプログラマーではない」場合、Jaclは良い選択をします。賢い人(特に、プログラミングに偏見がない人)は、朝にTcl構文を簡単に理解できます。
RelProxy を使用できます-Java。オンザフライでコンパイルしたおかげで、Javaで作成されたシェルスクリプト。 Javaの「スクリプト」がランチャーClassLoaderを共有して実行されるため、統合は簡単です。