Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6850895
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T01:10:51+00:00 2026-05-27T01:10:51+00:00

Our company uses an IBM iSeries for a majority of our data processing. All

  • 0

Our company uses an IBM iSeries for a majority of our data processing. All of our internal apps are written in RPG. According to IBM’s roadmap, IBM is pushing companies to move to Java/J2EE. We’re looking to modernize our internal apps to a more GUI interface. We provide an external web presence by using Asp.Net webs, although perhaps greenfield projects could be Java. One option is to use a screen scraper app while staying on RPG but I think it may be better to slowly go the way of IBM’s roadmap and move to Java. Our goal is to migrate to a GUI interface and to be inline with IBM’s roadmap.

Have you been involved with an RPG to Java migration, even if only greenfield projects were Java and the brownfield projects remained RPG?

My management is afraid that:

1) updating JRE on workstations, particularly thin clients, could cause an administrative nightmare (Our company uses 80% thin clients and 20% PCs) and

2) Java demands too much overhead of the workstation to run effectively

3) Incompatibility between JRE clients as we update, potentially breaking other apps requiring the JRE.

Can you shed some light on this? Are there any huge benefits? Any huge gotchas?

CLARIFICATION: I am only interested in a migration to Java. What is the difficulty level and do I lose anything when going from RPG to Java? Are the screens very responsive when migrated to Java?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T01:10:52+00:00Added an answer on May 27, 2026 at 1:10 am

    My company is also attempting to migrate to Java from RPG.

    1. We’re not attempting to use a JRE on a thin-client, we’re moving to web applications delivered through a browser. This may entail (eventually) replacing our old POS-scanners with some of the newer PC-based ones.
    2. I have been informed (by company architects) that the JVM on the iSeries OS does have some performance issues. I do not personally know what these limitations are. In our case the migration has involved allocating an AIX resource, which is supposed to be much better – talk to your IBM rep about whether you just need to purchase the OS license (I just program on the thing, I don’t get involved in hardware).
    3. See reponse to question 1. In a larger context, where you’re trying to update the browser (or any other resource), this is usually handled by having enterprise licenses – most will have options to allow forced, remote updates.

    Some other notes:

    • You should be able to move to just using .NET, although you may need different hardware/partitions to run the environment. You can talk to DB2 that way, at least. The only benefit Java has there is that it will run on the same OS/hardware as the database.
    • I’ve seen a screenscraper application here (it was in VB.NET, but I’m fairly sure the example applies). Screen-scraping was accomplished by getting/putting characters to specific positions on the screens (the equivalent of substring()). That could be just the API we were using – I think I’ve heard of solutions that were able to read the field names. However, it also relied on the RPG program flow for it’s logic, and was otherwise not maintainable.
    • Most of the RPG programs I’ve seen and written tend to be a violation of MVC, meaning you can’t do anything less than integration testing – the history and architecture of the language itself (and some developers) prefers that everything (file access to screen display) be in one file. This will also make attempting to wrap RPG for calling remotely effectively impossible. IF you’ve properly seperated everything into Service Programs, you should be able to wrap them up (as the equivalent of a native method call, almost) neatly – unfortunately I haven’t seen anything here that didn’t tend to rely on one or more tricks that wouldn’t hold up for typical Web use (for example, using a file in QTEMP for controlling program execution – the session on the iSeries effectively disappears every time a new page is requested…).
    • Java as a language tends to promote better seperation of code (note that it can be misused just as badly), as it doesn’t have quite the history of RPG. In general, it may be helpful to think of Java as a language where everything is a service program, where all parameters are passed with VALUE set, OPTIONS(*nopass : *omit) is disallowed, CONST is generally recommended, and most parameters are of type DS (datastructure – this is a distinct type in RPG) and passed around by pointer. Module level parameters are frowned upon, if favor of encapsulating everything either in passed datastructures or the service program procedures themselves. STATIC has somewhat different use in Java, making variable global, and is not available inside of procedures.
    • RPG is quite a bit more simple than Java, generally, and OO-programming is quite a different paradigm. Here are some things that are likely to trip up developers migrating to Java:
      1. Arrays in RPG start at 1. Arrays in Java start at 0.
      2. Java doesn’t have ‘ouput’ parameters, and all primitive types are passed by value (copied). This means that editing an integer won’t be visible in calling methods.
      3. Java doesn’t have packed/signed encoding, and so translating to/from numbers/strings is more involved. The Date type in Java also has some serious problems (it includes time, sort of), and is far more difficult to meaningfully change to/from a character representation.
      4. It’s harder to read/write files in Java, even when using SQL (and forget about using native I/O directly with Java) – this can be mitigated somewhat with a good framework, however.
      5. There are no ENDxx operators in Java, everything uses brackets ({}) to specify the start/end of blocks.
      6. Everything in Java is in freeformat, and there are no columnar specifications of any sort (although procedure signatures are still required). There is no hardlimit on line length, although ~80 characters is still recommended. The tools (the free ones, even) are better, period, and generally far more helpful (although they may take some getting used to for those exposed to SEU). There are also huge, free libraries available for download.
      7. The = sign is not context-sensitive in Java the way it is in RPG, it is always used for assignments. Use the double-equals, == operator for comparisons of values in Java.
      8. Objects (datastructures) cannot be meaningfully compared with == – you will often need to implement a method called equals() instead.
      9. Strings are not mutable, they cannot be changed. All operations performed on strings (either on the class/datastructure itself, or from external libraries) return brand new references. And yes, strings are considered datastructures, not value types, so you can’t compare them with == either.
      10. There are no built-in equivalents to the /copy pre-compiler directives. Attempting to implement them is using Java incorrectly. Because these are usually used to deal with ‘boilerplate’ code (variable definitions or common code), it’s better to deal with this in the architecure. Variable(ALL D-specs, actually) definitons will be handled with import or import static statements, while common-code variants are usually handled by a framework, or defining a new class.

    I’m sure there are a number of other things out there, let me know if you have any other questions.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Our company uses Google Apps, and I want to find a way to search
Our company uses an internal PHP MVC framework for most of our projects, which
Our company uses Citrix to remote into a terminal server for remote users to
Our company uses an app that was originally ColdFusion + Access later converted to
I have an old project at our company that uses shell scripting a lot.
My company uses Wix 2.0 in the build chain. When our users try to
I work at a small company and our production system uses a hand-rolled RESTful
The company I work for currently uses Go To Meeting to share our desktops
Our Company uses a closed sourced shopping cart system for its e-comreace web site.
My company uses virtual machines for our web/app servers. This allows for very easy

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.