COBOL(面向业务的通用语言)在关键任务应用程序中的持续流行对现代化工作提出了挑战,尤其是在向 Java 过渡的过程中。本文探讨了将 COBOL 转换为 Java 的复杂性,强调了避免 JOBOL - 这是一个为 Java 代码创造的术语,它保留了过程特性,但不采用面向对象的原则。讨论包括面向数据的转换策略、死代码消除以及采用事件驱动的方法,以确保成功过渡,充分利用 Java 的全部潜力。
介绍
COBOL 是 Common Business-Oriented Language 的首字母缩写词,自 1950 年代后期成立以来,它一直是编程领域的中坚力量,尤其是对于商业应用程序。尽管 COBOL 年代久远,但它仍然是许多组织的关键组件,仍有数百万行代码用于核心任务关键型应用程序。然而,随着技术的进步,对现代化的推动力越来越大,Java 因其面向对象的性质、强大的生态系统以及在当代软件开发中的广泛采用而成为流行的目标语言。
COBOL 到 Java 转换的挑战
组织从 COBOL 过渡到 Java 的动机各不相同,包括节省成本、COBOL 人才库的减少以及采用现代开发方法的愿望。市场提供了许多自动化工具和 AI 解决方案,能够自动将 COBOL 代码转换为 Java。
然而,从 COBOL 到 Java 的过渡并非没有挑战。一个重要的障碍是 JOBOL 的潜在创建,它指的是以类似于 COBOL 的过程风格编写的 Java 代码,而没有利用 Java 的面向对象功能。这可能导致代码难以维护、扩展或与现代软件实践和工具集成。
什么是 JOBOL?
COBOL 是一种过程语言,而 Java 是一种现代面向对象的语言。在从 COBOL 到 Java 的转换过程中,如果翻译是逐行完成的,而没有结合面向对象的原则,则生成的代码可以归类为 JOBOL。
COBOL à JOBOL (过程非面向对象的 Java 代码)
有效转化的策略
为了降低落入 JOBOL 坑的风险,可以采用以下几种策略来评估自动化工具或 AI 转换后的代码。
面向数据的转换
强调使用适当的 getter 和 setter 方法为数据元素创建普通旧 Java 对象 (POJO)。这种方法有助于实现更加面向对象的设计,增强了可维护性和可读性。
消除死代码
COBOL 应用程序通常已有数十年的历史,可能包含大量死代码。转换过程提供了一个识别和删除此类代码的机会,从而简化生成的 Java 应用程序并提高性能。
采用事件驱动架构
许多 COBOL 应用程序都被设计为批处理。向 Java 的转换提供了一个重新评估这些设计的机会,并在适当的情况下过渡到实时的、事件驱动的架构。这可以使系统更具响应性和可扩展性。
下面是一个如何规避从 COBOL 到 JOBOL 的转换的图示。
第 1 步
我要求 ChatGPT4 根据以下规格生成一个示例 COBOL 程序,如下所示。
它生成了一个 COBOL 程序,该程序符合所有指定要求,包括添加业务逻辑以根据年龄确定帐户类型,将其分类为“未成年人”或“成人”。此外,该程序包括五行无法访问的代码,满足了对死代码的请求。
整个 ChatGPT 对话的链接。
步骤 2
然后我提示“现在将此 COBOL 代码转换为 Java”。
此提示创建了 Java 程序,其中没有太多关于文件结构的信息。只是一个过程代码,没有考虑很多面向对象的方面。此外,死代码也会被转换。“JOBOL”的典型例子。
整个 ChatGPT 对话的链接。
步骤 3
然后我提示如下:
提示生成代码,包括输入和输出文件结构的相应 POJO 类。这些类在管理业务逻辑的主类中引用。这种转变导致了从过程代码到面向对象程序的转变。此外,在代码转换过程中,任何死代码都已被消除。
整个 ChatGPT 对话的链接。
结论
从 COBOL 到 Java 的过渡是一个复杂的过程,需要仔细规划和执行。通过采用面向数据的方法,消除死代码,并考虑向事件驱动模型的架构转变,组织可以避免 JOBOL 的陷阱,并充分利用 Java 的潜力来实现其现代化应用程序。