IBM RPG und Java im Vergleich – Terminologie, Konzepte und Einsatzgebiete auf IBM i

Was bedeutet „Library“ im Vergleich zu einem Schema? Ist ein IBM-i-Job ein Thread? Und wann ist RPG die bessere Wahl als Java – oder umgekehrt?
1. Kurzfassung: RPG vs. Java auf IBM i
RPG und Java werden oft gegeneinander gestellt. Das ist verständlich, aber meistens zu grob. RPG ist auf IBM i tief verwurzelt, sehr nah an klassischen Geschäftsprozessen, Batch-Verarbeitung, 5250-Anwendungen und Db2-for-i-Datenstrukturen. Java ist stärker in plattformübergreifenden Architekturen, APIs, Webanwendungen, Frameworks, Integrationen und verteilten Systemen zu Hause.
Modernes RPG, insbesondere ILE RPG mit freier Syntax und vollständig freiem Quellformat, ist deutlich lesbarer und modularer als ältere feste Spaltenformate. Java wiederum bringt ein riesiges Ökosystem mit: Build-Tools, Frameworks, Testbibliotheken, REST-Stacks, Observability, Cloud-Integration und eine große Entwicklerbasis.
| Frage | RPG ist oft stark bei … | Java ist oft stark bei … |
|---|---|---|
| Wo läuft die Kernlogik? | Direkt auf IBM i, nahe an Db2 for i und bestehenden Programmen. | Auf IBM i, Linux, Container-Plattformen oder anderen JVM-Umgebungen. |
| Welche Art Anwendung? | Transaktionslogik, Batch, klassische IBM-i-Anwendungen, bestehende Geschäftsregeln. | APIs, Webanwendungen, Microservices, Integrationen, moderne Frontend-Backends. |
| Was ist das Hauptziel? | Bestehende IBM-i-Logik stabil weiterentwickeln. | Systeme öffnen, integrieren, skalieren oder plattformübergreifend bereitstellen. |
| Typischer Fehler | Neue Anforderungen zu lange in alte Muster pressen. | Bewährte Geschäftslogik vorschnell neu schreiben und dabei Fachdetails verlieren. |
2. AS/400, System i, IBM i – erst die Namen sortieren
Viele sprechen bis heute von „AS/400“. Gemeint ist damit in der Praxis häufig eine moderne IBM-i-Umgebung auf IBM Power Systems. Historisch ist das aber nicht dasselbe. Die AS/400 wurde 1988 vorgestellt. Später kamen Namen wie iSeries und System i. Seit 2008 spricht man vom Betriebssystem IBM i auf IBM Power Systems.
Diese Unterscheidung ist mehr als Kosmetik. Wer „AS/400“ sagt, meint manchmal Hardware, manchmal Betriebssystem, manchmal 5250-Oberfläche, manchmal RPG-Anwendung und manchmal einfach „das alte System im Keller“. Für technische Entscheidungen ist das zu ungenau. Besser ist:
- IBM i für das Betriebssystem.
- IBM Power Systems beziehungsweise Power-Server für die Plattform.
- Db2 for i für die integrierte relationale Datenbank.
- RPG / ILE RPG für die Programmiersprache beziehungsweise Laufzeitumgebung.
- 5250 für die klassische Terminal-orientierte Benutzeroberfläche.
3. RPG und Java: zwei Sprachen, zwei Denkwelten
RPG entstand aus der Welt der geschäftlichen Datenverarbeitung. Ursprünglich ging es stark um Berichte, Dateien, Satzverarbeitung und klar strukturierte Geschäftsabläufe. Genau deshalb passt RPG bis heute gut zu vielen Kernprozessen: Auftrag, Kunde, Bestand, Buchung, Rechnung, Versand, Tagesabschluss.
Java entstand später mit einem anderen Versprechen: eine Sprache und Laufzeitumgebung, die auf unterschiedlichen Plattformen lauffähig ist. In Unternehmenssystemen wurde Java vor allem durch die JVM, breite Bibliotheksunterstützung, Server-Frameworks und eine große Community stark.
**FREE. IBM dokumentiert, dass vollständig freier RPG-Code ab Spalte 1 beginnen kann und die alten Spalten 6 und 7 keine Sonderrolle mehr haben. Das ist ein massiver Unterschied zu alten RPG-Quellen im festen Format.Der spannendste Punkt ist: Beide Sprachen können auf IBM i relevant sein. IBM i unterstützt Java über IBM Technology for Java beziehungsweise aktuelle JDK-Optionen. Gleichzeitig bleibt RPG für bestehende IBM-i-Geschäftsanwendungen sehr wichtig, weil dort oft jahrzehntelang gewachsene Fachlogik steckt.
| Dimension | RPG / ILE RPG | Java |
|---|---|---|
| Herkunft | Geschäftliche Datenverarbeitung, IBM-Midrange, Datei- und Transaktionslogik. | Plattformübergreifende Laufzeit, objektorientierte Unternehmenssoftware, Web und Services. |
| Stärke | Nähe zu IBM i, Db2 for i, bestehenden Programmen und Geschäftsprozessen. | Ökosystem, Frameworks, APIs, Testing, Integrationen, Teamverfügbarkeit. |
| Typische Architektur | ILE-Programme, Serviceprogramme, Batch, 5250, Stored Procedures, native IBM-i-Aufrufe. | JVM-Anwendungen, REST-Services, Spring/Jakarta/Open Liberty, Integrationsschichten. |
| Modernisierungsrolle | Bestehende Logik stabilisieren, modularisieren, in Services kapseln. | Neue Schnittstellen, moderne Frontends, externe Integration, plattformübergreifende Services. |
4. Terminologie: IBM-i-Begriffe sauber übersetzt
Viele Übersetzungen von IBM-i-Begriffen sind nur Annäherungen. Eine Library ist nicht einfach ein Ordner. Ein Job ist nicht einfach ein Thread. Und ein Logical File kann je nach Kontext eher an einen Index, eine View oder einen Zugriffspfad erinnern. Genau deshalb lohnt sich eine vorsichtige Terminologie-Tabelle.
| IBM-i-Begriff | Grobe Entsprechung in anderen Welten | Saubere Einordnung |
|---|---|---|
| Library | Schema, Namespace, Objektcontainer | Eine Library gruppiert IBM-i-Objekte. Bei SQL-Objekten liegt der Vergleich mit einem Schema nahe, aber eine Library enthält nicht nur Tabellen. |
| Physical File | Tabelle | Ein physisches Datenbankdateiobjekt speichert Daten. SQL-Tabellen und traditionelle Physical Files treffen sich in Db2 for i, sind aber historisch unterschiedlich entstanden. |
| Logical File | Index, View, Zugriffspfad | Ein Logical File beschreibt eine logische Sicht oder einen Zugriffspfad auf Physical Files. Es ist nicht immer 1:1 eine SQL-View und auch nicht immer nur ein Index. |
| Member | Teil einer Datei, Source-Member | Source Physical Files können mehrere Member enthalten. In moderner Entwicklung werden Quellen oft zusätzlich oder stattdessen im IFS und Git verwaltet. |
| Object | Datei, Programm, Ressource | IBM i ist stark objektorientiert auf Betriebssystemebene. Programme, Dateien, Queues, Jobbeschreibungen und vieles mehr sind Objekte mit Typ und Berechtigungen. |
| Job | Prozess, Task, Ausführungskontext | Ein Job ist die zentrale Ausführungseinheit auf IBM i. Er ist näher an einem Prozess- oder Serverkontext als an einem einzelnen Java-Thread. |
| Subsystem | Service-Umgebung, Workload-Container | Subsysteme steuern, wo und wie Jobs laufen. Das ist eher Betriebs- und Workload-Steuerung als ein Application Server im Java-Sinn. |
| Job Queue | Warteschlange für auszuführende Jobs | Hier warten Batch-Jobs auf Ausführung. Nicht zu verwechseln mit Messaging-Queues wie JMS oder RabbitMQ. |
| Data Queue | Message Queue, einfache Interprozess-Kommunikation | Data Queues sind schnelle IBM-i-Objekte für den Nachrichtenaustausch zwischen Programmen. Sie sind konzeptionell verwandt mit Queues, aber kein vollständiger JMS-Ersatz. |
| Message Queue | Systemnachrichten, Bedienerhinweise, Fehlerkanal | Message Queues dienen auf IBM i stark der System- und Programmnachrichtenverarbeitung. Das ist nicht dasselbe wie Enterprise Messaging. |
| Journal | Transaction Log, Änderungsprotokoll | Journale zeichnen Änderungen auf und sind zentral für Commitment Control, Recovery, Replikation und Audit-Szenarien. |
| Commitment Control | Transaktionssteuerung | Commitment Control steuert Commit und Rollback. Voraussetzung ist in vielen Fällen eine passende Journalisierung der beteiligten Objekte. |
| Spool File | Druck-/Ausgabedatei | Spool Files sind aufbereitete Ausgaben, häufig für Druck, PDF-Erzeugung oder Nachverarbeitung. |
| IFS Stream File | Datei im Unix-/Windows-Sinn | Das Integrated File System bietet Pfade und Streamfiles, etwa für Java, Open Source, Git-Workflows, SQL-Skripte und Konfigurationsdateien. |
5. Datenbankdenken: Physical Files, SQL-Tabellen und Db2 for i
Db2 for i ist tief in IBM i integriert. Das unterscheidet die Plattform deutlich von Umgebungen, in denen Datenbankserver, Betriebssystem und Anwendungsschicht klar getrennte Produkte sind. Auf IBM i können traditionelle Datei-Zugriffe und SQL-Zugriffe auf ähnliche Datenbestände treffen – aber sie sprechen teilweise unterschiedliche Sprachen.
Der alte Artikel setzte „Physical File = SQL Table“ und „Logical File = SQL Index / SQL View“ sehr direkt gleich. Als Einstieg ist das okay, aber fachlich sollte man vorsichtiger sein. Eine Physical File kann wie eine Tabelle behandelt werden. Eine SQL-Tabelle ist ebenfalls ein Datenbankobjekt. Aber die Historie, DDS-Definitionen, Member-Konzepte, Zugriffspfade und Namenslogik können Unterschiede machen.
Gerade Java-Teams unterschätzen oft, wie viel Geschäftslogik in Datenstrukturen, DDS-Beschreibungen, Triggern, Programmen, Jobumgebung, Bibliotheksliste und Batch-Abläufen steckt. Umgekehrt unterschätzen klassische IBM-i-Teams manchmal, wie wichtig explizite API-Verträge, automatisierte Tests und saubere Deployment-Pipelines für moderne Systemlandschaften sind.
6. Laufzeitmodell: Jobs, Programme, Threads und Services
Ein IBM-i-Job ist eine eigene Welt: Benutzerprofil, Jobbeschreibung, Bibliotheksliste, Aktivierungsgruppen, Meldungen, Protokoll, Umgebung und Ressourcen hängen daran. Deshalb ist die Gleichsetzung „Job = Thread“ zu kurz.
| Konzept | IBM i / RPG | Java-Welt | Was beim Vergleich wichtig ist |
|---|---|---|---|
| Ausführungseinheit | Job, Programm, Aktivierungsgruppe | Prozess, JVM, Thread, Executor | Ein IBM-i-Job trägt viel Umgebung mit sich. Java-Threads teilen sich dagegen typischerweise eine JVM. |
| Modularisierung | Programme, Module, Serviceprogramme, Prozeduren | Klassen, Packages, JARs, Module, Services | RPG kann sehr modular sein, aber die Artefakte und Deployment-Muster unterscheiden sich deutlich. |
| Fehleranalyse | Joblog, Messages, Dumps, Spool | Logs, Exceptions, Stacktraces, Metrics, Traces | Für hybride Systeme braucht man oft beide Diagnosewelten. |
| Transaktionen | Commitment Control, Journale, Db2 for i | JDBC, JTA, Framework-Transaktionen | Beide Seiten können transaktional arbeiten. Die Grenzen müssen aber sauber definiert sein. |
Für Integrationsarchitekturen ist diese Ebene entscheidend. Java kann RPG-Programme aufrufen, Daten über JDBC lesen, REST-Schnittstellen bereitstellen oder als separate Service-Schicht neben IBM i laufen. Aber jeder Zugriff auf bestehende Logik muss die IBM-i-Laufzeitrealität respektieren: Bibliotheksliste, Berechtigungen, CCSID, Sperren, Commitment Control, Fehlerkanäle und Antwortzeiten.
7. Mini-Codevergleich: gleiche Aufgabe, anderes Denken
Ein einfaches Beispiel zeigt den Unterschied ganz gut. Die fachliche Aufgabe lautet: Für einen Kunden wird der Umsatz aus Bestellungen gelesen und ausgegeben. In RPG denkt man häufig näher an Db2 for i und bestehender Programmlogik. In Java denkt man oft stärker in Repository, Service und Objektmodell.
**FREE
ctl-opt dftactgrp(*no) option(*srcstmt:*nodebugio);
dcl-s customerNo packed(7:0) inz(4711);
dcl-s amount packed(11:2) inz(0);
exec sql
select coalesce(sum(order_total), 0)
into :amount
from orders
where customer_no = :customerNo;
dsply ('Umsatz: ' + %char(amount));
*inlr = *on;
return;
import java.math.BigDecimal;
public class CustomerRevenueService {
private final OrderRepository orders;
public CustomerRevenueService(OrderRepository orders) {
this.orders = orders;
}
public BigDecimal revenueForCustomer(int customerNo) {
return orders.sumOrderTotalByCustomerNo(customerNo);
}
}
Das Beispiel ist bewusst klein. In echten Anwendungen wäre die RPG-Seite oft in bestehende Programme, Serviceprogramme oder Stored Procedures eingebettet. Die Java-Seite hätte Tests, Dependency Injection, Logging, Fehlerbehandlung, Transaktionsgrenzen und eine API-Schicht. Der Punkt ist: Beide können dieselbe Fachfrage beantworten, aber sie organisieren Verantwortung unterschiedlich.
8. Einsatzgebiete: Wann RPG, wann Java?
Die beste Wahl hängt selten nur an der Sprache. Wichtiger sind Zielbild, Risiko, Datenmodell, Schnittstellenbedarf, Team und Lebensdauer der Anwendung.
| Szenario | Empfehlung | Warum |
|---|---|---|
| Bestehende Kernlogik mit stabilen Geschäftsregeln | RPG modernisieren und modularisieren | Fachlogik bleibt nah am System. Risiko ist geringer als bei kompletter Neuentwicklung. |
| Neue REST-API für bestehende Funktionen | RPG kapseln, Java oder IBM-i-native API-Schicht prüfen | Oft reicht eine kontrollierte Schnittstelle. Nicht jede API rechtfertigt einen Rewrite. |
| Modernes Web-Frontend | Java/TypeScript-Frontend-Backend plus IBM-i-Integration | Java-Ökosystem und moderne Web-Stacks sind hier meist produktiver. |
| Batch-nahe Massenverarbeitung auf IBM i | RPG oder SQL auf IBM i bevorzugen | Datenlokalität, Stabilität und bestehende Betriebsprozesse sprechen oft dafür. |
| Plattformübergreifender Service | Java stark prüfen | JVM, Frameworks, Deployment und Observability sind hier große Vorteile. |
| Unverstandene Altlogik ersetzen | Erst analysieren, nicht sofort neu schreiben | Der größte Fehler ist ein Rewrite ohne vollständiges Fachverständnis. |
9. Modernisierung: Ergänzen ist oft klüger als Ersetzen
Modernisierung bedeutet nicht automatisch Migration. Ein gesundes Zielbild kann so aussehen:
- Alte RPG-Programme in verständliche Module und Serviceprogramme schneiden.
- Feste Formatquellen schrittweise in freiere, lesbarere RPG-Formen überführen.
- SQL-Zugriffe, Datenmodell und Transaktionsgrenzen dokumentieren.
- RPG-Fachlogik über definierte Schnittstellen verfügbar machen.
- Neue APIs, Weboberflächen und Integrationen mit Java oder anderen modernen Stacks bauen.
- Tests, Logging, Monitoring und Deployment-Pipelines ergänzen.
Ein Rewrite kann sinnvoll sein, wenn die bestehende Anwendung fachlich verstanden, technisch stark begrenzt, schlecht wartbar oder strategisch nicht mehr tragfähig ist. Aber ein Rewrite ist kein Selbstzweck. Gerade bei IBM-i-Systemen steckt viel Wissen in kleinen Details: Sonderfälle, Datenkorrekturen, jahrzehntelang gewachsene Regeln, Betriebsfenster, Sperrlogik, Batch-Reihenfolgen und Ausnahmebehandlungen.
10. Entscheidungsmatrix für Projekte
Für konkrete Projekte hilft eine nüchterne Matrix. Nicht sexy, aber wirksam. Architekturentscheidungen sollten nicht aus Bauchgefühl entstehen, sondern aus nachvollziehbaren Kriterien.
| Kriterium | Spricht eher für RPG | Spricht eher für Java |
|---|---|---|
| Daten liegen vollständig auf IBM i | Sehr stark | Nur bei API-/Integrationsbedarf |
| Bestehende Fachlogik ist in RPG implementiert | Sehr stark | Java eher als Hülle oder Ergänzung |
| Neue externe Schnittstellen nötig | Möglich, aber oft Zusatzaufwand | Stark |
| Team hat primär Java-Know-how | Nur mit IBM-i-Schulung realistisch | Stark |
| Batch-Verarbeitung mit engem IBM-i-Betrieb | Stark | Nur bei sauberer Betriebsintegration |
| Cloud- oder Container-Zielbild | Eher indirekt | Stark |
| Regulatorisch kritische Altlogik | Modernisieren statt riskant ersetzen | Nur mit Tests, Spezifikation und Migrationsplan |
| Langfristige Talentstrategie | RPG-Wissen sichern und dokumentieren | Java kann Recruiting und Ökosystem verbreitern |
Eine gute IBM-i-Modernisierung respektiert die Plattform und öffnet sie gleichzeitig dort, wo es fachlich sinnvoll ist. Genau darin liegt der Charme: Nicht nostalgisch am Alten kleben, aber auch nicht blind alles neu bauen, nur weil ein Stack moderner klingt.
11. Fazit
Der alte Vergleich „RPG ist Legacy, Java ist Zukunft“ ist zu billig. Besser ist: RPG ist oft das fachliche Gedächtnis des Unternehmens. Java ist oft die Brücke zu modernen Architekturen. Wer beides versteht, kann IBM-i-Landschaften deutlich risikoärmer modernisieren.
Glossar
Kurz erklärt – für alle, die zwischen RPG-, IBM-i- und Java-Welt übersetzen müssen.
- IBM i
- Aktuelles IBM-Betriebssystem für Power Systems, historisch aus OS/400 und i5/OS hervorgegangen.
- AS/400
- Historischer IBM-Systemname von 1988. Wird umgangssprachlich noch oft für IBM-i-Umgebungen verwendet, ist aber nicht der aktuelle Produktname.
- ILE RPG
- RPG im Integrated Language Environment. Ermöglicht modulare Programme, Serviceprogramme, Prozeduren und moderne Entwicklungsformen.
- Fully free-form RPG
- RPG-Quellformat mit
**FREE, bei dem Code ab Spalte 1 beginnen kann und die alte Spaltenlogik weitgehend entfällt. - Db2 for i
- In IBM i integrierte relationale Datenbank. Sie unterstützt SQL und traditionelle IBM-i-Dateizugriffe.
- Library List
- Suchpfad für nicht qualifizierte Objektzugriffe in einem IBM-i-Job. Für Java-Teams grob mit Classpath-/Suchpfad-Denken vergleichbar, aber fachlich anders.
- JT400 / IBM Toolbox for Java
- Java-Bibliothek zur Integration mit IBM i, etwa für Datenbankzugriffe, Befehle, Programme und Systemressourcen.
Quellen
- IBM Documentation: Fully free-form statements – https://www.ibm.com/docs/en/i/7.4.0?topic=statements-fully-free-form
- IBM Documentation: ILE RPG Reference, IBM i 7.6 PDF – https://www.ibm.com/docs/it/ssw_ibm_i_76/pdf/sc092508.pdf
- IBM Support: Java on IBM i – https://www.ibm.com/support/pages/java-ibm-i
- IBM Support: Supported IBM Java Development Kit versions by IBM i release – https://www.ibm.com/support/pages/supported-ibm-java-development-kit-jdk-versions-ibm-i-operating-system-version-and-release
- IBM Documentation: Database overview / SQL versus traditional file access – https://www.ibm.com/docs/es/ssw_ibm_i_72/rzatc/rzatcpdf.pdf
- IBM Documentation: Integrated file system concepts – https://www.ibm.com/docs/ssw_ibm_i_72/ifs/rzaaxpdf.pdf
- IBM Documentation: Journal management / journal entries – https://www.ibm.com/docs/en/i/7.4.0?topic=information-all-journal-entries-by-code-type
- IBM History: The AS/400 – https://www.ibm.com/history/as-400



tiny-tool.de
tiny-tool.de