> Tech > Meilleure portabilité : introduction aux outils de développement Java

Meilleure portabilité : introduction aux outils de développement Java

Tech - Par iTPro.fr - Publié le 24 juin 2010
email

par George Farr, Phil Coulthard, Don Yantzi Mis en ligne le 14/02/2006 - Publié en Juin 2005

Bienvenue dans notre série d’articles qui suit l’itinéraire du développeur iSeries. Dans l’article « Etendre une application WebFacing avec des outils Web », nous avons vu comment étendre une application Web avec des outils Web pour intégrer des applications WebFacing au nouveau développement Web. Dans l’article « Meilleure intégration : Introduction aux portlets avec WebFacing », nous avons utilisé le même exemple et créé une application portail pour bénéficier du nouveau support portail en V5.1.2. Les articles précédents se concentraient sur les outils de WDSc (WebSphere Development Studio client) pour développer de nouvelles applications d’interface utilisateur Web (voir l’encadré « Articles précédents »).Ici, nous examinons l’étape 4 de l’itinéraire : meilleure portabilité. Il sera question de porter des applications existantes sur Java et d’en écrire de nouvelles, également en Java. Pour commencer, nous verrons comment Java offre cette portabilité, et quelques raisons qui plaident en faveur de la portabilité de vos applications. Pour finir, nous examinerons les outils de développement Java (Java Development Tools) inclus avec WDSc et comment ils facilitent le développement Java.

Meilleure portabilité : introduction aux outils de développement Java

Quel que soit le langage de programmation, quand nous codons du logiciel, nous utilisons les API fournies par le langage de programmation et par le système d’exploitation cible, pour élaborer une application. Ainsi, les systèmes d’exploitation OS/400 et i5/OS fournissent de puissantes API qui serviront pour la sécurité, la gestion des transactions, la programmation des sockets, l’accès aux bases de données, et l’accès aux fichiers.

Le code ainsi obtenu est compilé dans un format binaire qui correspond à l’architecture matérielle de la plate-forme cible, afin qu’il soit exécutable le moment venu. C’est cette combinaison d’API de systèmes d’exploitation et d’exécutables binaires qui rend le logiciel écrit en langages tels que C, C++, RPG et Cobol, non portable.

Les standards que l’on trouve dans les définitions de langages C, C++ et Cobol facilitent quelque peu le portage des applications écrites avec eux, mais il est quand même nécessaire de recompiler pour la plate-forme cible et de modifier le code en fonction des différences des API des systèmes d’exploitation. L’architecture i5/OS protège les programmes RPG et Cobol contre les changements apportés au matériel eServer i5 ; cependant, les programmes RPG et Cobol s’exécuteront exclusivement sous i5/OS.

Donc, si l’on veut que les applications soient portables (nous verrons pourquoi ciaprès), que faut-il faire ? Se tourner vers Java. D’emblée, Java a été conçu comme un langage de programmation hétérogène, sans dépendances de programmation vis-à-vis de toute architecture matérielle et de tout système d’exploitation. Voici les différents aspects de Java qui permettent cela :

Tailles et présentations standard des types de données. Chaque type de données en Java a la même taille et la même présentation, indépendamment du système d’exploitation et du matériel sous-jacents. Ainsi, un short est toujours de deux octets et un int est toujours de quatre octets.

Riches API de langage. Java fournit un ensemble d’API à la fois vaste et riche pour toutes sortes d’actions (manipulation de chaînes, programmation de sockets, entrées/sorties de fichiers, analyse syntaxique XML, cryptage, par exemple). Par conséquent, vous disposerez de ces fonctions sans recourir au système d’exploitation ou à un package logiciel externe.

Services conteneurs. Dans la J2EE, les clients autonomes, applets, serveurs et EJB (Enterprise JavaBeans) sont désignés sous le nom de composants. Les composants fonctionnent à l’intérieur d’un conteneur, lequel offre des services semblables à ceux d’un système d’exploitation. (Donc, là non plus, il n’est pas nécessaire de recourir à un système d’exploitation spécifique pour ces services.) A titre d’exemple, les conteneurs peuvent fournir les services de sécurité, de gestion des transactions, et de consultation des ressources.

JVM (Java Virtual Machine). Les fichiers source Java (fichiers .java) sont compilés en « bytecodes » (fichiers .class). Les bytecodes sont des instructions machine pour la JVM (Java Virtual Machine). A l’exécution, la JVM charge les bytecodes et les convertit en instructions machine natives pour la plate-forme matérielle en place (comme x86, Power5). Cela explique pourquoi Java a la réputation de fonctionner plus lentement que les applications compilées en mode natif. Toutefois, les JVM modernes, comme la machine virtuelle IBM J9, ont des compilateurs JIT (Just In Time) très élaborés qui compilent nativement les bytecodes à la volée, améliorant grandement la performance. Souvent, ces compilateurs JIT collecteront des statistiques d’exécution au moment où les bytecodes s’exécutent et les utiliseront pour optimiser encore plus le code natif compilé. Ces récentes avancées de JVM ont nettement réduit l’écart de performances entre les applications Java et natives.

Après avoir vu comment Java permet la portabilité des applications, voyons pourquoi il est intéressant de rendre les applications plus portables.

Java offre une plus grande latitude de déploiement d’une application. Supposons que votre serveur iSeries actuel soit surchargé et que vous attendiez de commander un nouveau eServer i5. Temporairement, vous pourriez déployer l’application sur un serveur Linux autonome. A l’arrivée du eServer i5, il vous suffira de déplacer l’application déployée sur un i5 OS/400 ou une partition Linux du nouveau serveur.

Si vous êtes un FAI, le fait d’écrire vos applications en Java vous permettra de cibler une base de clientèle beaucoup plus large que si vous écriviez ces mêmes applications pour un système spécifique.

Cela ne signifie nullement que vos applications existantes ne valent plus rien et que vous devez commencer à les réécrire en Java ! Examinez l’ensemble des applications de votre société et décidez lesquelles sont importantes pour le futur et si certaines d’entre elles pourraient bénéficier de Java. Pour les nouvelles applications, comparez les avantages qu’il y a à les écrire en Java plutôt qu’en RPG ou Cobol, et décidez en fonction de vos besoins de gestion et des compétences disponibles.

Cela ne signifie pas non plus que vous devez choisir entre Java ou RPG/Cobol. Il existe de nombreux moyens d’intégrer les différents langages dans la même application. Ainsi, vous pourriez réutiliser une certaine logique de gestion RPG existante dans une nouvelle application Java en l’invoquant comme une procédure stockée SQL ou en l’appelant via les classes d’appel de programme dans l’IBM Toobox for Java.

Téléchargez cette ressource

Guide de Sécurité IA et IoT

Guide de Sécurité IA et IoT

Compte tenu de l'ampleur des changements que l'IA est susceptible d'entraîner, les organisations doivent élaborer une stratégie pour se préparer à adopter et à sécuriser l'IA. Découvrez dans ce Livre blanc Kaspersky quatre stratégies efficaces pour sécuriser l'IA et l'IoT.

Tech - Par iTPro.fr - Publié le 24 juin 2010