再向banq老师及广大道友求教一个关于java如何调用脚本语言中的类的问题

09-10-03 atester
    

我打算在应用里集成脚本语言支持,可是我怎样才能在我的java程序中调用脚本语言里定义的类呢?

任何脚本语言都可以,javafx/jpython/groovy等等,随便一种都可以。

*请注意,是调用脚本,我不管编译,java或容器可以编译但是我不管细节,因为我想通过web浏览器来直接编辑脚本。

这个想法可以实现吗?Banq老师请多指教

    

banq
2009-10-04 09:04

你这个想法和主流思路相反。

脚本调用java ,简化开发,甚至到了只需要jvm ,基于jvm 的脚本。

java调用脚本,没有必要,脚本有自己的特定条件。

atester
2009-10-04 10:01

banq老师,现实里经常有这样一种情况:

大的框架需要用java语言规划出来,但是应用里还有一部分经常变动的规则,这部分最好由脚本语言嵌入进来,现实经常变化的规则定制。

有一种典型的应用,在RPG游戏里,像资源管理、图像显示、通讯等等都是固定的,这些可以用C++实现,但是游戏的剧情是经常变化的,每个节日都要定制针对这个节日的剧情,每年的节日活动,剧情都不一样,这一部分就用lua等脚本语言嵌入进来实现。

这种需求其实在很多场合下都有,我想知道在java里能实现这样的功能吗?

最好不用我来编译,能够互相传递java对象是必须的。

如果用我来编译的话也可以,可是我的应用在jboss里。我试过一使用一个简单的classloader load出自己编译过的java类,但是发现这些类与jboss的classloader加载的类发生cast Exception。我应该把我的class loader的parent设置成jboss ejb组件的classloader,这样只有脚本中定义的类是从自定义的class loader中加载的,其它的基本类还由jboss ejb的class loader加载,可惜这方面资料太少,谁能给一点资料或是一点提示...

另一条路就是绕过java的classloader机制,尝试使用更高层一点的协议,像基于http的webservice等...? 如果可能,还是pure java+脚本简单...

先谢谢banq老师的热心回复!

[该贴被atester于2009-10-04 10:29修改过]

banq
2009-10-04 12:42

我个人认为,剧本由脚本编写属于脚本调用java 类型,现在脚本双向调用技术很成熟,包括javascript jython scala jruby 等都可以的。而且这是一个

banq
2009-10-04 12:47

你的需求包含很多技术架构,用脚本写规则,这是直接运行在服务器上,如用脚本实现界面逻辑,可通过rest 等接口通讯来实现。

3Go 1 2 3 下一页