web-dev-qa-db-fra.com

Convertir automatiquement Scala en Java

J'ai une application écrite en Scala et certains membres de mon équipe en veulent une version Java. Il s'agit d'une application de démonstration pour utiliser une autre API écrite en Scala, et ils veulent qu'une version Java de l'application puisse utiliser l'API de Java. Cependant, l'application est quelque peu volumineuse et je ne veux pas répondre manuellement dans Java (et ils ne veulent pas apprendre Scala). Existe-t-il un outil qui générera automatiquement du code (lisible) Java à partir du code Scala?

19
Jus12

ils veulent une version Java de l'application pour pouvoir utiliser l'API de Java

Les classes Scala sont utilisables à partir de Java (puisque c'est tout le bytecode JVM à la fin). Pouvez-vous simplement empaqueter un fichier jar avec vos classes pour qu'ils les utilisent?

10
dhg

Je ne pense pas qu'il soit possible de convertir de scala retour au standard Java puisque Scala fait un peu de bas niveau manipulation d'octets de code.Je suis sûr à 90% qu'ils font des choses qui ne peuvent pas être traduites en code normal Java code.

8
JohnnyK

Non, un tel outil n'existe pas.
Scala, dans un certain sens, est un script de Java. Regardez comment toutes ces classes funky dans coffescript sont traduit en javascript. Le même * serait avec scala.
Je ne pense pas qu'il y ait beaucoup de fonctionnalités qui ne puissent pas être traduites en Java de quelque façon que ce soit, mais la plupart des fonctionnalités seront traduites en code extrêmement encombré, même si l'humain fera ce travail.

Mais il y a Java vers scala traducteurs .

* ne pas dire littéralement sur les cours

5
om-nom-nom

Vous devez décompiler les fichiers .class en Java fichiers source, attention que scala produit beaucoup plus de fichiers .class

Vous pouvez utiliser javap d'Oracle inclus dans le décompilateur sdk ou jad

pour une explication détaillée, lisez l'article suivant:

Lien scala classe vers Java source

3
firephil

Je ne sais pas si cela fonctionnerait, mais vous pouvez exécuter les fichiers de classe via un décompilateur Java.

Si cela fonctionne du tout, le résultat sera forcément laid comme l'enfer.

2
Jens Schauder