Existe-t-il un convertisseur/outil Java vers C++? [fermé]


Je me suis toujours demandé s'il serait possible de faire un convertisseur Java en C++.

Peut-être un outil qui convertit la syntaxe Java en syntaxe C++?

Je suis conscient que les langues diffèrent, mais des choses simples comme des boucles où la sémantique correspond à 1 à 1.

Existe-t-il un tel outil? Ou est-il possible de le faire?

Author: peterh, 2009-02-17

10 answers

Il est possible de faire n'importe quoi avec suffisamment de temps, d'argent et de ressources. Est-il pratique? Au-delà des exemples triviaux pas vraiment. Ou plutôt, cela dépend de ce qui constitue un taux d'erreur acceptable.

Le vrai problème est que les idiomes sont différents en Java en C++. Java vers C # par exemple serait en fait beaucoup plus facile (car les idiomes sont beaucoup plus similaires). Le plus important, bien sûr, est que C++ a des destructeurs et de la mémoire gérée manuellement. Java utilise enfin des blocs pour ce type de comportement et a la collecte des ordures.

Java a également un supertype d'objet commun. C++ ne le fait pas.

Les génériques aux modèles seraient presque impossibles, j'imagine.

 21
Author: cletus, 2010-06-22 18:43:01

L'analyseurFirefox HTML5 est écrit en Java et converti en C++. Mais je pense que le convertisseur utilisé là-bas est assez spécifique pour ce projet. Fait intéressant, il s'est avéré que l'analyseur C++ résultant était plus rapide que l'ancien analyseur écrit en C++.

J'écris également un convertisseur dans le cadre de la base de données H2, sous src/tools/org/h2/java. L'idée est de permettre la conversion d'un sous-ensemble de la base de données H2 en C++, donc ce n'est pas non plus un traducteur à usage général.

Et il y a le projet open source J2C.

Il existe donc des moyens de convertir Java en C++. Mais ne vous attendez pas à ce que le traducteur prenne en charge toutes les fonctionnalités et ne vous attendez pas à ce que le code résultant soit plus rapide qu'une bonne JVM Java.

 10
Author: Thomas Mueller, 2017-05-09 12:23:51

Est possible, sans aucun doute, mais ce ne sera pas si simple. Ce serait un compilateur Java qui génère C++.

Si vous voulez le faire à partir de zéro, ce sera très difficile, vous devez faire tout le travail que javac et la JVM font pour vous (par exemple, garbage collection).

Btw. Google a un compilateur Java vers JavaScript (inclus dans GWT )

 7
Author: Johannes Weiss, 2009-02-17 13:40:29

Il y en a un, peu je ne suis pas sûr si cela fonctionne réellement. Convertisseur Java vers C++-Soulutions logicielles tangibles .

C'est bizarre comment il y a des convertisseurs c++ vers java, mais seulement 1 convertisseur java vers c++.

 5
Author: , 2012-02-03 02:05:10

Comme dit, il serait difficile de convertir Java en C++ mais nous pouvons avoir une application ou un outil qui génère du code en Java et un code équivalent en C++.

Je connais une application qui génère du code en C++/Java/C# étant donné un modèle qui a sa propre façon de le déifiner.

Cet outil appartient à CA et son nom est CA Plex. Rechercher sur www.ca.com

 3
Author: , 2009-02-17 17:07:33

Il existe des programmes qui prétendent pouvoir le faire, mais aucun n'a gagné assez de popularité pour être fréquemment mentionné, nous les laisserons donc à des "tentatives". Faire un convertisseur nécessiterait beaucoup d'IA intégrée à votre programme. La difficulté est décuplée lorsque swing est impliqué car les API GTK/wxWidgets/Qt/win32 diffèrent toutes grandement de swing. Mais c'est possible. Non pas que la qualité du code soit excellente, et aucune garantie que votre programme ne se bloque pas en raison d'une gestion séparée de la mémoire méthodes, mais c'est possible.

 2
Author: John T, 2009-02-17 14:24:26

Le problème principal est que java est un langage écrit et conçu pour parler à une machine virtuelle. Je suppose que ce serait possible, mais il ne vous resterait plus qu'une application très mal optimisée avec une couche auto-traduisant faisant ce que fait déjà la machine virtuelle. Je veux dire, bien sûr, c'est possible, ce ne serait toujours pas une solution pour tout ce à quoi je pourrais penser. Si vous cherchez à rendre votre application java lente native, peut-être que votre réflexion est trop dure, utilisez simplement une application comme JET, c'est en fait assez bon, et vous donnera les avantages d'une application native apporterait. Bien sûr, si la machine virtuelle fait déjà ce que l'application lui demande de faire aussi bien que le code natif pourrait(cela arrive.. parfois: P) cela pourrait ne rien changer.

Java to c#, tho, semble plus raisonnable, car les deux langages sont écrits de manière similaire, parlant à un framework en tant que tel, mais cela laisserait toujours le code très peu optimisé car le code écrit à partir de zéro pour un framework particulier ne peut pas être battu.

 2
Author: Richard Smith, 2011-05-12 13:31:59

Http://www.tangiblesoftwaresolutions.com/Order/Order_Upgrade_Instant_CPlus_Java_Edition.htm

Dépend du domaine où le code sera utilisé, du point de vue de l'apprentissage, cela pourrait peut-être être intéressant.

Je viens de trouver cela via un Google car je me souvenais d'en avoir vu un dans Univeristy qui a créé du code basé sur uml.

 2
Author: Paul Whelan, 2011-09-10 23:42:52

Java vers C serait en fait le plus simple. Rappelez-vous que vous devez convertir la langue, Si vous faites cela, les bibliothèques requises peuvent être converties par votre nouveau compilateur. En d'autres termes, Swing et AWT ne devraient pas être un gros problème...

Je commencerais par jeter un bon coup d'œil à l'interface native Java (JNI). Le JNI est une partie de java qui lui permet d'être utilisé avec C et C++. La raison pour laquelle je commencerais ici est qu'il devient assez évident comment des parties de Java peuvent être implémentées en C. Une fois que j'ai eu une compréhension des structures de base, comme la façon dont les objets Java peuvent être mappés sur des structures C (struct) et à quel point tout en Java est un objet, y compris les tableaux, je pourrais jeter un coup d'œil au code source JDK ouvert.

Le convertisseur réel devrait convertir toutes les bibliothèques Java importées (et leurs bibliothèques importées et ainsi de suite...) ce qui signifie que vous auriez besoin du code source pour tout. Cette conversion n'est pas une mince tâche car les bibliothèques Java sont grandes.

Le processus serait temps consommer, mais aucune IA ne devrait être requise. Cependant, je ne vois aucune raison d'effectuer une conversion comme celle-ci. Il perd la portabilité de Java et ne garantit pas l'efficacité de C (sauf qu'il serait compilé en code natif, mais il serait préférable de compiler le code machine directement à partir de Java).

 2
Author: mitt10tim, 2012-01-07 22:00:32

Quelque chose de bien serait un outil , qui traduirait java en "C++ en utilisant Java API" (comme GNU GCJ CNI), un problème reste à gérer array.length (tableau pas vecteur) ...

 2
Author: RzR, 2012-10-29 02:28:56