Un Java C++ convertisseur/outil existe pas? [fermé]

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

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

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

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

46
demandé sur peterh 2009-02-17 16:36:30

10 réponses

il est possible de faire n'importe quoi avec assez de temps, d'argent et de ressources. Est-il pratique? Au-delà des exemples insignifiants, 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, C++. Java to C# par exemple serait en fait beaucoup plus facile (parce que les expressions sont beaucoup plus similaires). Le plus important, bien sûr, C'est que C++ a des destructeurs et une mémoire gérée manuellement. Java utilise enfin des blocs pour cela genre de comportement et a la collecte des ordures.

Java a aussi un supertype D'objet commun. C++ ne l'est pas.

les génériques aux gabarits seraient presque impossibles, j'imagine.

21
répondu cletus 2010-06-22 18:43:01

Firefox HTML5 parser est écrit en Java et converti en C++. Mais je pense que le convertisseur utilisé là-bas est tout à fait 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 écrit en C++.

j'écris aussi un convertisseur dans le cadre du 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 but général traductrice.

et il y a le projet open source J2C.

il y a donc des façons de convertir Java en C++. Mais ne vous attendez pas à ce que le traducteur supporte toutes les fonctionnalités, et ne vous attendez pas à ce que le code résultant soit plus rapide qu'une bonne JVM Java.

10
répondu Thomas Mueller 2017-05-09 12:23:51

c'Est possible, pas de question, mais il ne sera pas si simple. Ce serait un compilateur Java qui génère du 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, la collecte des ordures).

Btw. Google dispose D'un compilateur Java to JavaScript (inclus dans GWT)

7
répondu Johannes Weiss 2009-02-17 13:40:29

il y en a un, mais je ne suis pas sûr que ça marche vraiment. Java-C++ Convertisseur Tangibles Logiciel Soulutions.

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

5
répondu 2012-02-03 02:05:10

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

je connais un applicaiton qui génère du code en C++/Java/C# à partir d'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
répondu 2009-02-17 17:07:33

il y a des programmes qui prétendent qu'ils peuvent faire cela, mais aucun n'a gagné assez de popularité pour être souvent mentionné, donc nous les laisserons aux "tentatives". Faire un convertisseur exigerait beaucoup de IA intégré dans votre programme. La difficulté est multipliée par dix lorsque swing est impliqué parce que GTK/wxWidgets/Qt/win32 API tous diffèrent grandement de swing. Mais c'est possible. Non pas que la qualité du code sera grande, et aucune garantie que votre programme ne se plantera pas en raison de la mémoire séparée les méthodes de manipulation, mais c'est possible.

2
répondu 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 VM. Je suppose que ce serait possible, mais tout ce qu'il vous resterait c'est une application très mal optimisée avec une couche d'auto-traduction faisant ce que la VM fait déjà. Je veux dire, bien sûr, c'est possible, ça ne serait toujours pas une solution pour quoi que ce soit que je puisse penser. Si vous cherchez à rendre votre application java lente native, peut-être que votre réflexion trop dur, il suffit d'utiliser une application comme JET, son en fait assez bon, et vous donnera les avantages d'une application native. Bien sûr, si la VM fait déjà ce que l'application lui demande de faire aussi bien que le code natif pourrait le faire(cela arrive.. parfois: P) cela pourrait ne rien changer.

Java, c#, tho, des sons plus raisonnable, que les deux langues sont écrites de la même façon, en parlant d'un cadre de référence en tant que telle, mais cela laisserait de code très unoptimized que le code écrit à partir de zéro pour un cadre particulier ne peut pas être battu.

2
répondu Richard Smith 2011-05-12 13:31:59

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

dépend du domaine dans lequel le code sera utilisé, d'un point de vue d'apprentissage peut-être cela pourrait être intéressant.

je viens de le trouver via google car je me souviens en avoir vu un à Univeristy qui créait du code basé sur uml.

2
répondu Paul Whelan 2011-09-10 23:42:52

Java à C serait le plus simple. Rappelez-vous que vous devez convertir la langue, si vous faites cela, les bibliothèques nécessaires 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'oeil à L'Interface Java Native (JNI). Le JNI est une partie de java qui permet de l'utiliser avec C et C++. La raison pour laquelle je commencerais ici est qu'il devient assez évident comment certaines parties de Java peuvent être implémentées en C. Une fois que j'ai saisi les structures de base, comme la façon dont les objets Java peuvent être mappés sur les structures C (struct) et comme presque tout en Java est un objet incluant des tableaux, je pourrais jeter un oeil au code source JDK ouvert.

le convertisseur actuel devrait convertir toutes les bibliothèques Java importées (et leurs bibliothèques importées et ainsi de suite... ce qui veut dire que vous aurez besoin du code source pour tout. Cette conversion n'est pas une petite tâche puisque les bibliothèques Java sont grandes.

le le processus prendrait beaucoup de temps, mais aucune instruction administrative ne devrait être requise. Cependant, je ne vois aucune raison d'effectuer une telle conversion. 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
répondu mitt10tim 2012-01-07 22:00:32

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

2
répondu RzR 2012-10-29 02:28:56