Bestaat een Java naar C++ Converter / Tool?

Ik heb mezelf altijd gevraagd of het mogelijk zou zijn om een ​​Java te maken naar C++ Converter.

Misschien een tool die de Java-syntaxis converteert naar de C++ -syntaxis?

Ik ben me ervan bewust dat de talen verschillen, maar eenvoudige dingen zoals lussen waar de semantiek 1 tot 1 overeenkomt met 1.

Is er een dergelijk hulpmiddel? Of is het mogelijk om er een te maken?


Antwoord 1, Autoriteit 100%

Het is mogelijk om iets te doen dat genoeg tijd, geld en middelen heeft gegeven. Is het praktisch? Beyond triviale voorbeelden niet echt. Of liever afhankelijk van wat een aanvaardbaar foutenpercentage vormt.

Het echte probleem is dat de idioomen verschillen in Java tot C++. Java tot C # bijvoorbeeld zou eigenlijk veel gemakkelijker zijn (omdat de idioomen veel meer vergelijkbaar zijn). De grootste natuurlijk is dat C++ destructors en handmatig beheerd geheugen heeft. Java gebruikt eindelijk blokken voor dit soort gedrag en heeft een garbage-collectie.

Ook Java heeft een gemeenschappelijk object Supertype. C++ doet dat niet.

De generiek aan sjablonen zouden bijna onmogelijk zijn. Ik zou me voorstellen.


Antwoord 2, Autoriteit 60%

De Firefox HTML5 Parser is geschreven in Java en geconverteerd naar C++ . Maar ik denk dat de convertor die er is gebruikt, is vrij specifiek voor dit project. Interessant is dat het de resulterende C++ Parser sneller was dan de oude parser geschreven in C++.

Ik schrijf ook een converter als onderdeel van de H2-database , onder SRC / Tools / Org / H2 / Java. Het idee is om een ​​subset van de H2-database toe te staan ​​naar C++, dus dit is ook geen algemene vertaler.

En er is het open source project j2c .

Dus er zijn manieren om Java naar C++ te converteren. Maar verwacht niet dat de vertaler alle functies ondersteunt en verwacht niet dat de resulterende code sneller is dan een goede Java JVM.


Antwoord 3, Autoriteit 28%

is mogelijk, geen vraag, maar het zal niet zo eenvoudig zijn. Het zou een Java-compiler zijn die C++ genereert.

Als je dat helemaal opnieuw wilt doen, zal het heel moeilijk zijn, je moet al het werk Javac en de JVM doen voor jou (b.v. Garbage Collection).

BTW. Google heeft een Java naar Javascript Compiler (opgenomen in gwt )


Antwoord 4, Autoriteit 24%

Er is er een, een beetje, ik weet niet zeker of het daadwerkelijk werkt.
JAVA tot C++ Converter-tastbare softwaregoussutaties .

Het is raar hoe er C++ zijn naar Java-converters, maar slechts 1 Java tot C++ Converter.


Antwoord 5, Autoriteit 12%

Zoals gezegd, zou het moeilijk zijn om Java naar C++ te converteren, maar we kunnen een applicatiesiton of tool hebben die code genereert in Java en Equivalnet C++ -code.

Ik ken een applicatie die code genereert in C++ / Java / C # die een model heeft gegeven dat zijn eigen manier heeft om het te duwen.

Die tool behoort tot CA en naam is CA Plex.
Zoeken op www.ca.com


Antwoord 6, Autoriteit 8%

Er zijn programma’s die beweren dit te kunnen, maar geen enkele is zo populair geworden om vaak genoemd te worden, dus laten we het bij “pogingen”. Het maken van een converter vereist veel AI die in je programma is ingebouwd. De moeilijkheidsgraad wordt vertienvoudigd als er sprake is van swing, omdat de GTK/wxWidgets/Qt/win32 API allemaal sterk verschillen van swing. Maar het is mogelijk. Niet dat de codekwaliteit geweldig zal zijn, en geen garanties dat je programma niet crasht vanwege afzonderlijke geheugenverwerkingsmethoden, maar het is mogelijk.


Antwoord 7, autoriteit 8%

Het belangrijkste probleem is dat Java een taal is die is geschreven en ontworpen om met een VM te praten. Ik veronderstel dat het mogelijk zou zijn, maar het enige dat overblijft is een zeer slecht geoptimaliseerde applicatie met een zelfvertalende laag die doet wat de VM al doet. Ik bedoel, zeker, het is mogelijk, het zou nog steeds geen oplossing zijn voor alles wat ik zou kunnen bedenken. Als je je trage Java-app native wilt maken, denk je misschien te hard na, gebruik dan gewoon een applicatie zoals JET, het is eigenlijk best goed, en geeft je de voordelen die een native app zou bieden. Natuurlijk, als de VM al doet wat de app hem vraagt, net zo goed als native code zou kunnen (het gebeurt … soms: P), kan het niets veranderen.

Java naar c# klinkt redelijker, omdat beide talen op dezelfde manier zijn geschreven, waarbij ze met een framework als zodanig praten, maar dit zou nog steeds code erg niet-geoptimaliseerd laten, omdat code die helemaal opnieuw is geschreven voor een bepaald framework niet kan worden overtroffen.


Antwoord 8, autoriteit 8%

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

Afhankelijk van het domein waar de code zal worden gebruikt, kan het vanuit een leerperspectief interessant zijn.

ik vond dit net via Google, omdat ik me herinnerde dat ik er een had gezien op de universiteit die code maakte op basis van uml.


Antwoord 9, autoriteit 8%

Java naar C zou eigenlijk het gemakkelijkst zijn. Onthoud dat u de taal moet converteren. Als u dat doet, kunnen de vereiste bibliotheken worden geconverteerd door uw nieuwe compiler. Met andere woorden, Swing en AWT zouden geen groot probleem moeten zijn…

Ik zou beginnen met eens goed te kijken naar de Java Native Interface (JNI). De JNI is een onderdeel van Java waardoor het kan worden gebruikt met C en C++. De reden dat ik hier zou beginnen, is dat het vrij duidelijk wordt hoe delen van Java in C kunnen worden geïmplementeerd. Toen ik eenmaal de basisstructuren onder de knie had, zoals hoe Java-objecten kunnen worden toegewezen aan C-structuren (struct) en hoe vrijwel alles in Java is een object inclusief arrays, ik zou een kijkje kunnen nemen in de Open JDK-broncode.

De eigenlijke converter zou alle geïmporteerde Java-bibliotheken (en hun geïmporteerde bibliotheken enzovoort…) moeten converteren, wat betekent dat je voor alles de broncode nodig hebt. Deze conversie is geen geringe taak aangezien de Java-bibliotheken groot zijn.

Het proces zou tijdrovend zijn, maar er zou geen AI nodig moeten zijn. Ik zie echter geen reden om een dergelijke conversie uit te voeren. Het verliest de portabiliteit van Java en zou niet de efficiëntie van C krijgen (behalve dat het zou worden gecompileerd naar native code, maar het zou beter zijn om de machinecode rechtstreeks vanuit Java te compileren).


Antwoord 10, autoriteit 8%

Iets leuks zou een tool zijn , die java vertaalt naar “C++ met behulp van Java API” (zoals GNU GCJ CNI), een probleem blijft het beheren van array.length(array niet vector) .. .

Other episodes