Par Philippe Magne | 06 novembre 2019

RPG Free Form Vs Java

Dans cet article, nous allons discuter de deux langages que tout oppose. D’un côté, un langage procédural très ancien (né en 1959 !), de l’autre beaucoup plus moderne et orienté objet. A priori deux mondes diamétralement opposés, mais est-il vraiment nécessaire de les comparer ?

1. Le mythe de Java

La première réaction d’une entreprise qui souhaite moderniser ses applications, c’est de tout réécrire en Java, plus universel et surtout plus portable que le RPG. C’est une réaction somme toute pas très surprenante. Elle répond à une double problématique : pouvoir sortir de la plateforme quand on veut et résoudre le problème de pénurie des compétences. Cependant, à y regarder de près, ce que l’on peut constater c’est que chaque langage est adapté à tel ou tel environnement technologique. Java est né avec l’avènement du Web. Il a été spécifiquement conçu pour répondre aux besoins de cet eco-système. Les traitements batch de masse ne sont pas son fonds de commerce. C’est la raison pour laquelle nous pensons chez ARCAD que le RPG Free Form est et restera le principal langage de la plateforme IBM i. Il est forcément le plus adapté puisqu’il est né avec. Il doit à l’évidence coexister avec tous les langages du monde ouvert mais il ne peut pas être remplacé car il est le plus adapté et intégré à la plateforme, offrant ainsi des performances meilleures.

De nombreuses sociétés se sont essayées à retranscrire le code RPG en Java de façon plus ou moins automatisée. Le résultat est de bien piètre facture. On ne transforme pas comme ça une application écrite avec un langage procédural avec un langage orienté objet. La philosophie est radicalement différente. Tous les développeurs Java confrontés à ce type de code « transformé » ont la même réaction : pour eux, ce n’est pas du Java. De plus, les risques en matière de performance d’exécution des applications sont particulièrement élevés.

2. Pourquoi RPG Free Form ?

Le Cobol est et restera le langage standard des plateformes Mainframe. Les milliards de lignes de code développées depuis plus de 50 ans font tourner les systèmes centraux des plus grandes entreprises de par le monde. Il en va de même du langage RPG sur la plateforme IBM i avec cependant une différence majeure, mais de taille, c’est que ce langage n’est disponible que sur cette plateforme. Il est d’ailleurs présent dans plus de 85% des applications développées. Sa forme hermétique, sous forme de colonnes, est extrêmement contraignante et le rend rédhibitoire pour qui n’a pas trempé dedans depuis des années. D’où une population de développeurs de plus en plus vieillissante à cause de ressources qui ne se renouvellent qu’à petite échelle.

La différence majeure entre le Cobol et le RPG, c’est que, contrairement au Cobol qui n’a pas évolué dans sa structure depuis 1974, le langage RPG n’a cessé de subir des liftings importants qui l’ont rendu au fil de l’eau plus lisible et donc plus facilement maintenable. L’IBM i étant devenu le seul et unique dépositaire de ce langage, IBM a eu les coudées franches pour le faire évoluer. On a vu apparaître en 1995 l’environnement ILE (Integrated Language Environment) permettant plus de modularité et des caractéristiques se rapprochant des langages orientés objets. Mais la transformation la plus importante fut l’apparition en 2003 du RPG Free Form. Sa caractéristique principale est que sa syntaxe se rapproche de très près de langages plus répandus tels que le Java ou le C#. Ceci le rend d’entrée beaucoup plus accessible par les développeurs qui ne le connaissent pas. Sa prise en main est rapide (une course d’une demi-journée d’e-learning suffit à mettre le pied à l’étrier).

Son autre caractéristique majeure est qu’il est très imbriqué dans l’OS. Il permet ainsi d’accéder à des fonctions que l’on ne retrouve pas dans les autres langages. Ses performances d’exécution sont les plus optimisées qu’il soit grâce à ce haut niveau d’imbrication avec la machine.

Si ce langage moderne conserve ses racines « RPG » dans son nom, c’est qu’il est la pierre angulaire pour assurer la transition entre générations. S’il est facile à appréhender pour les jeunes générations de développeurs, il l’est également pour les « anciens ». Ceci est une qualité exceptionnelle puisqu’il permet d’éviter une quelconque rupture technologique, toujours douloureuse à passer d’un point de vue managérial.

Ainsi, ce qui était considéré comme la principale menace pour la plateforme, à savoir l’unicité de son principal langage de développement, est devenu sa plus grande opportunité, du fait d’un langage qui réconcilie les générations.

Webinar: Check RPG code quality, automatically

Check RPG code quality, automatically

Webinar

Register to our Webinar to learn how to eliminate the « technical debt » in your IBM i application.

3. Pourquoi Java ?

Même s’il est aujourd’hui fortement challengé par tout un tas d’autres langages plus récents, Java reste la norme dans bon nombre d’entreprises. Pour en assurer une bonne maitrise et une bonne productivité, il nécessite des investissements lourds, notamment au niveau des profils d’équipes, que les entreprises ne sont pas prêtes à remplacer.

Java doit être utilisé pour ce qu’il sait faire de mieux : développer des applications (ou des interfaces) web. Nul doute que Java est et restera la référence pour de nombreuses années, mais est-il réellement pour autant besoin d’en faire la norme pour l’ensemble du patrimoine applicatif ?

4. En bref

RPG (dans sa version la plus récente RPG free form) et Java ne sont pas des langages qui s’opposent mais qui se complémentent. Chacun a ses propres atouts, ses adeptes, son eco-système. La bonne approche consiste à les faire coexister afin d’obtenir « le meilleur des deux mondes ».

Pour cela, la bonne stratégie consiste à investir dans une stratégie DevOps. Un bon outillage DevOps permet de rapprocher naturellement les équipes et non de les opposer (et les comparer) les unes aux autres. Il rend le langage moins important que la méthodologie elle-même de gestion des évolutions. De nombreux nouveaux langages voient encore le jour, toujours plus adaptés aux nouveaux besoins du moment. Tout cela pour dire que pour moderniser un système legacy, ce n’est pas le langage qui est la priorité mais bel et bien l’organisation des développements, en un seul mot : DevOps !

philippe-magne

Philippe Magne

CEO

Vidéo : Conversion to Free Form RPG with ARCAD Transformer RPG