La transformation Java permet de générer des classes Java à partir d'éléments de modèle UML. Vous pouvez utiliser la transformation Java pour donner des valeurs de départ à un projet Java à partir de spécifications UML. Vous pouvez également appliquer la transformation Java après avoir donné des valeurs de départ initiales pour fusionner les modèles UML mis à jour avec le code Java existant.
Vous pouvez générer des classes Java à partir de modèles UML, de packages, de classes et d'interfaces non imbriquées. Les classes et interfaces imbriquées sont générées dans la classe de niveau supérieur correspondante.
Vous pouvez appliquer le profil de transformation Java à votre modèle afin de le valider en cas d'incidents éventuels liés à la transformation pouvant être à l'origine d'erreurs de compilation dans le code Java généré (héritages multiples, généralisation d'offres spéciales, conflits d'affectation de noms, conflits de propriété et conflits de visibilité des interfaces/classes de niveau supérieur privé/protégé, par exemple).
La transformation peut générer des fichiers dans un projet Java détenant au moins un dossier source.
Vous pouvez créer un modèle de mappage et indiquer des noms secondaires pour les éléments générés par la transformation sans modifier le modèle source. Vous pouvez indiquer des noms secondaires si vous souhaitez inclure des caractéristiques spécifiques à Java (telles que les règles de dénomination) dans des modèles indépendants de la plate-forme, ou si l'organisation logique du modèle source n'est pas appropriée comme regroupement cible.
Un modèle de mappage est un modèle séparé avec un artefact pour chaque élément transformable. Chaque artefact fait référence à l'élément transformable original et porte le même nom. Vous pouvez préciser un nom secondaire en changeant la propriété de nom de fichier de l'artefact.
Vous pouvez indiquer un nom qualifié (com.ibm.NewName.com, par exemple) ou non qualifié (NewName, par exemple). Si vous indiquez des noms secondaires pour les packages, tous les discriminants de ce package vont être affectés, à moins que le discriminant ne définisse un nom qualifié complet. Vous pouvez également indiquer des emplacements secondaires dans le même projet pour les éléments générés par la transformation.
Une fois la transformation Java effectuée, vous pouvez apporter des modifications à votre modèle UML puis procéder de nouveau à la transformation. La transformation fusionne les modifications en modèle source et code source modifié en utilisant les balises @generated dans les documents Java générés. La transformation possède des éléments Java qui sont marqués par @generated et les écrase au moment de la nouvelle transformation ou les supprime s'ils ont été retirés du modèle source. Vous pouvez supprimer les balises @generated du code source pour que la transformation n'écrase ni ne supprime les éléments.
La transformation peut remplacer les éléments de modèle UML du modèle source par des références visuelles aux classes Java générées. Dès lors, vous pouvez éditer les références visuelles ou apporter des modifications au fichier Java au niveau du code. Les modifications que vous apportez au niveau visuel apparaissent automatiquement dans le fichier Java. Celles que vous apportez au niveau du code apparaissent dans la référence visuelle.
La transformation UML vers Java peut créer des relations dérivées, de classes Java générées à leurs éléments de modèle source UML.