是否存在一种在 COBOL 中标准化的 Java 互操作形式?

Is there an form of Java interop that is standardized in COBOL?

快速浏览一下就会发现 IBM、Microfocus 和 GNU COBOL 为 Java 和 COBOL 互操作提供的产品都是不同的 API。然而,在维基百科上目前引用 2002 规范“改进了与其他编程语言和框架环境(如 .NET 和 Java] 的互操作性。”

那么这方面的规范是什么? (我没有该规范的副本,因为我刚刚接触 COBOL,并且希望探索 Java 和 COBOL 互操作,目前作为一种爱好)。

问题有明确答案:没有

添加了不同的东西,特别是在 2002 标准中,但在后来的标准中也允许符合 API 标准的 Java 互操作性,但与非 COBOL 交互的细节在标准中始终依赖于处理器或依赖于实现。

定义的其实很多,想到的东西:

  • ENTRY-CONVENTIONCALL-CONVENTION
  • 用户自定义函数
  • 面向对象的 COBOL,具有 类、对象、方法、工厂...
  • 函数和调用原型
  • NATIONAL 和其他类型定义的编码

作为问题的一部分可能会产生误导:GnuCOBOL 没有 API 用于与 Java 互操作(还)。

如果您想编写可移植的 COBOL <-> Java 代码,您可能会使用两种方法。

首先:使用 JNI Java 提供的“C”API。如果 COBOL 环境可以与“C”互操作(这对于大多数实现来说可能是正确的),这将“非常好”地工作。
查看 Call c function from Java 了解详情。
警告:应该注意 JNI 原则,例如从 Java 调用的 COBOL 不应该 STOP RUN(或者在没有机会在 Java 端捕获它的情况下终止)。

第二:不要使用直接接口,而是在 COBOL 和 Java 之间进行通信,例如使用 REST 服务。

因为这也是问题的一部分:如果您想了解更多关于什么是 COBOL(作为一种语言,不一定由“实现者 X”支持),那么 COBOL 标准是一个很好的资源。
在大多数情况下,只要抓住下一个 COBOL 标准的当前“草案”是什么就“足够”了,您可以在 ISO's document page of the COBOL working group [旧版本通常在标准发布后消失,新版本当下一个准备第一次 public 审查时,一个出现了。