Kotlin en Java : comment convertir des fichiers ? Guide pour développeurs

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Pourquoi convertir Kotlin en Java si Kotlin est le « nouveau Java » ?

\n\n

Cela semble paradoxal : vous écrivez en Kotlin, puis vous voulez obtenir du code Java. Pourquoi ? En réalité, les situations sont nombreuses. Vous pouvez hériter d'un projet écrit en Kotlin, mais votre équipe n'est pas encore prête à y passer. Ou vous étudiez Kotlin par comparaison avec Java — c'est l'une des méthodes les plus efficaces. Ou peut-être devez-vous intégrer une bibliothèque Kotlin dans un ancien projet Java, et vous voulez comprendre comment fonctionne telle ou telle méthode.

\n\n

Dans tous les cas, la question « How to convert a Kotlin source file to a Java source file » est l'une des plus populaires sur Stack Overflow (des milliers de vues). Et aujourd'hui, nous allons l'analyser de A à Z. Vous apprendrez comment, officiellement (via IntelliJ IDEA) et officieusement (via la décompilation), transformer un fichier .kt en .java, quels pièges vous attendent, et que faire si rien ne fonctionne.

\n\n

1. Conversion directe : mythe ou réalité ?

\n\n

Prévenons tout de suite : il n'existe pas de conversion inverse Kotlin → Java « un pour un ». Kotlin n'est pas simplement du « sucre » syntaxique au-dessus de Java, il a sa propre sémantique : sécurité null, coroutines, fonctions d'extension, classes de données. Java ne connaît pas ce luxe. Par conséquent, tout convertisseur produira un code approximatif, souvent volumineux et contenant des appels à des fonctions internes de Kotlin (par exemple, Intrinsics.checkNotNullParameter()).

\n\n

Mais cela ne signifie pas que la tâche est impossible. Il existe trois approches principales :

\n\n
    \n
  • Décompilation du bytecode — la méthode la plus précise, intégrée dans IntelliJ IDEA et Android Studio.
  • \n
  • JADX — pour les développeurs Android, lorsqu'il n'y a pas de code source, mais seulement un APK.
  • \n
  • Convertisseurs en ligne — une option rapide pour de petits fragments.
  • \n
\n\n

2. Méthode n°1 : Décompilation via IntelliJ IDEA (la plus fiable)

\n\n

Si vous avez le fichier source .kt, vous pouvez l'ouvrir dans IntelliJ IDEA (ou Android Studio) et demander à l'IDE d'afficher le code Java équivalent. Comment faire ?

\n\n

Étape 1. Ouvrez le fichier Kotlin

\n

Prenons une simple classe en Kotlin :

\n\n
// File: Person.kt\ndata class Person(val name: String, val age: Int) {\n    fun greet() = "Hello, my name is $name"\n}
\n\n

Étape 2. Lancez la décompilation

\n

Dans le menu d'IntelliJ, sélectionnez Tools → Kotlin → Show Kotlin Bytecode. Un panneau avec le bytecode s'ouvrira. Dans ce panneau, cliquez sur le bouton Decompile — et vous verrez la version Java de votre fichier.

\n\n

Voici ce que l'IDE affichera pour notre Person.kt :

\n\n
// Java-декомпиляция\npublic final class Person {\n   @NotNull\n   private final String name;\n   private final int age;\n\n   @NotNull\n   public final String getName() {\n      return this.name;\n   }\n\n   public final int getAge() {\n      return this.age;\n   }\n\n   public Person(@NotNull String name, int age) {\n      Intrinsics.checkNotNullParameter(name, "name");\n      super();\n      this.name = name;\n      this.age = age;\n   }\n\n   @NotNull\n   public final String greet() {\n      return "Hello, my name is " + this.name;\n   }\n\n   // equals(), hashCode(), toString() — générés automatiquement\n}
\n\n

Important : Le code contient des appels à Intrinsics — cela fait partie de l'environnement d'exécution Kotlin. Si vous copiez ce code dans un projet sans dépendances Kotlin, il ne compilera pas. Vous devrez soit ajouter kotlin-stdlib, soit supprimer manuellement ces vérifications.

\n\n

3. Méthode n°2 : JADX — pour Android sans code source

\n\n

Si vous n'avez qu'un fichier APK et que vous voulez comprendre comment une classe Kotlin est implémentée, utilisez JADX. C'est un décompilateur qui transforme le bytecode DEX en code Java lisible. Les classes Kotlin dans un APK sont de toute façon compilées en bytecode JVM, donc JADX fera l'affaire.

\n\n

Exemple : vous trouvez dans l'APK une classe avec une coroutine. En Kotlin, cela pourrait ressembler à

Blogs

Book Recommendations