在IBM i上,java编译器会“说”ILE吗?谷歌搜索发现了各种代码示例,显示了RPG如何调用java方法,但找不到任何对java作为ILE语言的引用。有没有这方面的计划,还是有理由说java不能成为IBM i上的ILE语言?
答案 0 :(得分:3)
使Java成为完整的 ILE语言,与RPG和ILE C一样,如果可行的话,将是一项重大任务。 ILE语言具有以下属性:当链接到ILE程序时,它们的编译模块可以自由混合和匹配。换句话说,一旦编译了一个模块,你在概念上就有了一个ILE模块,并且在该模块的源代码中使用哪种语言并不是很重要。您所要做的就是确保调用代码中的所有函数或过程原型与被调用代码中的相应原型兼容。
有一个项目试图在Unix / Linux世界中用Java做这个,名为GNU Compiler for Java (GCJ)。我们的想法是将Java模块编译成二进制形式,可以通过(例如)使用GCC的C ++代码直接链接。目前还不清楚这是否达到了“生产质量”,在撰写本文时,GCJ不再是GCC的一部分。因此,您可以将GCJ视为假设的ILE Java的概念证明,以及针对ILE Java的警示故事。
在任何一种情况下,使ILE Java发生所需的努力可能不会受到相对较小的好处的合理性。虽然您目前无法直接使用ILE代码链接 Java代码,但您仍然可以从RPG 调用 Java,并从Java调用调用 RPG,这是足够用于大多数用例。
比完整的ILE Java更容易的是JVM的本机IBM i实现,使用 ILE语言构建(最明显的选择是ILE C或ILE C ++),这样完全没有使用PASE。但是走这条路仍然需要使用从RPG调用Java的现有方法,反之亦然,因此好处几乎为零。将JVM移植到ILE C ++的努力肯定大于零。还要记住,IBM可能希望更新他们的JVM,以便或多或少地跟上Oracle的JVM,这对于在PASE中实现的JVM而不是用ILE语言实现的JVM更容易。
答案 1 :(得分:2)
IBM i上的Java不是ILE语言......它实际上是在PASE中运行的(对于更多当前版本)。
RPG可以通过创建JVM并运行java应用程序来调用Java代码。
从Java调用RPG代码的常用方法是使用ProgramCall或ProgramCallDocument类。