【发布时间】:2014-08-30 03:55:45
【问题描述】:
我有一个用于输出 .net dll 的域特定语言的编译器(然后可以用来做 DSL 所说的任何事情)。它在 .net 下运行良好,但现在我需要使编译后的 dll 功能可以从 Java 访问。接口会根据 DSL 发生变化,就像我在实现 F# 类型提供程序时一样。
理想情况下,我想要一些类似于 Reflection.Emit 的东西,只是它会生成 Java 字节码。重要的是最终用户可以使用我从 Java GUI 生成的库来调试他们的 Java 代码,所以我认为我不能只使用 IKVM 来将 Java 代码包含在 .net 中。我也不能使用 JNBridge 之类的商业产品,因为所有用户都需要安装它,并且每次他们的 DSL 代码更改时都会调用它。
有没有比生成文本格式的 .java 文件并使用 Java 编译器编译更好的解决方案? .java 文件只是通过某种 IPC 机制(可能是命名管道)与 .net dll 对话的轻量级接口,其目的是提供类似于从 .net 应用程序中看到的类型安全接口(除了索引器、获取器、设置器、重载等被某种可怕的冗长语法替换)。非常感谢。
【问题讨论】:
-
java原生接口?
-
这大概也需要生成为文本,并且只会提供我不需要的功能以及能够破坏 VM 的额外好处?