gpt4 book ai didi

java - IBM iSeries 上的 RPG 到 Java 迁移

转载 作者:行者123 更新时间:2023-12-02 09:43:13 25 4
gpt4 key购买 nike

我们公司使用 IBM iSeries 进行大部分数据处理。我们所有的内部应用程序都是用 RPG 编写的。根据 IBM 的路线图,IBM 正在插入公司转向 Java/J2EE。我们希望将我们的内部应用程序现代化,使其具有更多的 GUI 界面。我们通过使用 Asp.Net 网络提供外部网络存在,尽管绿地项目可能是 Java。一种选择是在继续使用 RPG 的同时使用屏幕抓取应用程序,但我认为慢慢地遵循 IBM 的路线图并转向 Java 可能会更好。我们的目标是迁移到 GUI 界面并与 IBM 的路线图保持一致。

您是否参与过从 RPG 到 Java 的迁移,即使只有绿地项目是 Java 而棕地项目仍然是 RPG?

我的管理层担心:

1) 在工作站上更新 JRE,尤其是瘦客户端,可能会导致管理噩梦(我们公司使用 80% 的瘦客户端和 20% 的 PC)和

2) Java 需要太多的工作站开销才能有效运行

3) 我们更新时 JRE 客户端之间不兼容,可能会破坏其他需要 JRE 的应用程序。

你能解释一下吗?有什么巨大的好处吗?有什么大问题吗?

澄清:我只对迁移到 Java 感兴趣。从 RPG 到 Java 的难度级别是多少?我会丢失任何东西吗?迁移到 Java 时,屏幕响应速度是否非常快?

最佳答案

我的公司也在尝试从 RPG 迁移到 Java。

  • 我们没有尝试在瘦客户端上使用 JRE,我们正在转向通过浏览器交付的 Web 应用程序。这可能需要(最终)用一些较新的基于 PC 的扫描仪替换我们的旧 POS 扫描仪。
  • 我已经(由公司架构师)告知 iSeries 操作系统上的 JVM 确实存在一些性能问题。我个人不知道这些限制是什么。在我们的案例中,迁移涉及分配 AIX 资源,这应该会好得多 - 与您的 IBM 代表讨论您是否只需要购买操作系统许可证(我只是编写程序,我不参与硬件)。
  • 请参阅对问题 1 的回复。在更大的上下文中,您尝试更新浏览器(或任何其他资源),这通常是通过拥有企业许可证来处理的 - 大多数将具有允许强制远程更新的选项。

  • 其他一些注意事项:
  • 您应该能够只使用 .NET,尽管您可能需要不同的硬件/分区来运行环境。至少,您可以通过这种方式与 DB2 对话。 Java 唯一的好处是它将在与数据库相同的操作系统/硬件上运行。
  • 我在这里看到了一个屏幕抓取应用程序(它在 VB.NET 中,但我很确定这个例子适用)。屏幕抓取是通过获取/放置字符到屏幕上的特定位置来完成的(相当于 substring() )。这可能只是我们使用的 API - 我想我听说过能够读取字段名称的解决方案。但是,它的逻辑也依赖于 RPG 程序流,否则无法维护。
  • 我见过和编写的大多数 RPG 程序都倾向于违反 MVC,这意味着除了集成测试之外,你不能做任何事情——语言本身(和一些开发人员)的历史和架构更喜欢一切(文件访问屏幕显示)在一个文件中。这也将使尝试将 RPG 包装为远程有效调用变得不可能。 如果 您已经将所有内容正确地分离到服务程序中,您应该能够整齐地包装它们(相当于本地方法调用,几乎) - 不幸的是,我在这里没有看到任何不倾向于依赖一个或更多典型的 Web 使用无法支持的技巧(例如,使用 QTEMP 中的文件来控制程序执行 - 每次请求新页面时,iSeries 上的 session 都会有效地消失......)。
  • Java 作为一种语言倾向于促进更好的代码分离(请注意,它也可能被滥用),因为它没有 RPG 的历史。一般而言,将 Java 视为一种一切都是服务程序的语言可能会有所帮助,其中所有参数都通过 VALUE 传递。套装,OPTIONS(*nopass : *omit)不允许,CONST一般推荐使用,大部分参数类型为DS (数据结构 - 这是 RPG 中的一种独特类型)并通过指针传递。如果支持将所有内容封装在传递的数据结构或服务程序过程本身中,则不赞成模块级参数。 STATIC在 Java 中有一些不同的用途,使变量成为全局变量,并且在过程内部不可用。
  • 一般来说,RPG 比 Java 简单得多,而面向对象编程则是完全不同的范式。以下是一些可能会阻碍开发人员迁移到 Java 的事情:
  • RPG 中的数组从 1 开始。Java 中的数组从 0 开始。
  • Java 没有“输出”参数,所有原始类型都按值传递(复制)。这意味着在调用方法中将看不到编辑整数。
  • Java 没有打包/签名编码,因此与数字/字符串之间的转换更为复杂。 Java 中的 Date 类型也有一些严重的问题(它包括时间等),并且更难以有意义地更改为/从字符表示。
  • 在 Java 中读/写文件更加困难,即使使用 SQL(并且忘记直接使用 Java 使用 native I/O) - 然而,这可以通过一个好的框架来缓解。
  • 没有ENDxx Java 中的运算符,一切都使用方括号 ( {} ) 来指定块的开始/结束。
  • Java 中的所有内容都是自由格式,并且没有任何类型的列式规范(尽管仍然需要过程签名)。行长度没有硬性限制,但仍建议使用 ~80 个字符。这些工具(甚至是免费的)更好、更有效,而且通常更有帮助(尽管对于那些接触 SEU 的人来说,它们可能需要一些时间来适应)。还有巨大的免费图书馆可供下载。
  • =符号在 Java 中不像在 RPG 中那样对上下文敏感,它总是用于赋值。使用双等号,==用于比较 Java 中值的运算符。
  • 对象(数据结构)无法与 == 进行有意义的比较- 你经常需要实现一个名为 equals() 的方法相反。
  • 字符串是不可变的,它们不能被改变。对字符串执行的所有操作(对类/数据结构本身,或来自外部库)都返回全新的引用。是的,字符串被认为是数据结构,而不是值类型,因此您无法将它们与 == 进行比较。要么。
  • /copy 没有内置的等效项预编译器指令。试图实现它们是错误地使用 Java。因为这些通常用于处理“样板”代码(变量定义或通用代码),所以最好在架构中处理它。变量(实际上是所有 D 规范)定义将使用 import 处理或 import static语句,而通用代码变体通常由框架处理,或定义一个新类。

  • 我确定还有很多其他问题,如果您有任何其他问题,请告诉我。

    关于java - IBM iSeries 上的 RPG 到 Java 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8218797/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com