Wie kann ich Programmiersprachen kombinieren?
Wollte mal fragen wie ich Programmiersprachen kombinieren kann und ich weiß das man bestimmte Compiler halt Pre-Prozessor mit Sprachindikatoren aber wie sieht es mit einer Programmierumgebung aus wenn ich zb C++ und Java kombiniere soll ich dann CodeBlocks verwenden? wie wurde so ein Quellcode mit Java und C++ aussehen ? Oder doch lieber mit Luna? Wenn ich eine Webseite besser verwalten will bräuchte ich ja auch noch Javascript mit HTML & Css ich glaube da geht das ganze bisschen leichter da diese Scriptsprachen sind oder?
5 Antworten
Du kannst C++ Code sehr komfortabel in Java-Programmen über das JNI aufrufen. Welche IDE du dafür verwendest, ist völlig Wurst.
Innerhalb von Java erinnert eine Methode mit JNI entfernt an einen Prototypen in C++:
native void foobar();
Mithilfe des Java-Compilers kannst du dann aus deiner *.java Datei eine dazugehörige *.h Datei erzeugen lassen, die unter anderem diese Zeile enthält:
JNIEXPORT void JNICALL Java_FooBar_foobar(JNIEnv *, jobject);
Du musst dann "nur noch" eine passende Übersetzungseinheit basteln, also eine passende Implementierung in C++.
Nach ein paar Zwischenschritten musst du dann am Ende eine normal kompilierte dynamische Bibliothek (z. B. *.dll oder *.so) zusammen mit deiner *.class Datei ausliefern.
Das hat aber zwei große Nachteile:
- Innerhalb von Java benötigt ein Aufruf von "native" markierten verglichen mit herkömmlichen Methoden viiiieeel mehr Zeit. Diesen Overhead kann man in vielen Situationen nicht vernachlässigen. Also überlege dir genau wann es sich wirklich lohnt, C++ Code aufzurufen, denn meistens wird der Schuss nach hinten los gehen.
- Kompilierte Javaklassen sind portabel, aber den dazugehörigen C++ Code musst du für jede Plattform (Windows, Linux, Mac, BSD, ...) extra kompilieren, und eine entsprechende Bibliothek mitliefern.
Lua kannst du nutzen um C oder C++ Programme um eine schlanke Skriptsprache zu erweitern und bestimmte Dinge zur Laufzeit zu automatisieren.
Abgesehen davon ist jede Kombination von Programmiersprachen sehr speziell und muss individuell abgewogen werden, da so etwas auch immer neben Vorteilen, vielfältige Nachteile hat.
Nur als Info - Java bietet Dir keine wirklichen Vorteile, wenn Du das Gros des Programms in C++ erstellst. Das gilt umgekehrt genauso.
Wenn es ohnehin um eine mehrschichtige Anwendung ("multi tier") geht, kann es aber sinnvoll sein, jeweils eine komplette Schicht in einer eigenen Sprache zu entwickeln. Das kann z.B sein:
Backend in C++
Middleware in Java
Frontend in C#.
Bei HTML und co ist es gang und gebe, dass verschiedene Formate präsent sind...das ist auch sinnvoll.
Aller dingst gilt das nicht unbedingt auch für so genannte Hochsprachen wie z.B. c++, Python, Java ... Ich frage mich warum dies überhaupt geschehen soll...Nur Neugier oder willst du das wirklich anwenden?
Letztendlich wird sowieso alles in Maschinensprache kompiliert...also möglich wäre es mit Sicherheit. Nur, die Mehrarbeit kann man dann auch in das Ursprüngliche Programm stecken oder gleich die Sprache wechseln...also es würde meiner Meinung nach nicht viel Sinn ergeben
Java und C++ ist grundsätzlich über Wrapper und ne Nenge Aufwand möglich, will man aber eigentlich nicht.
Sie können mittels CORBA oder Apache Thrift kommunizieren. In Spezialfälle kann man das leichter machen.
Einzelne Programmiersprachen haben ja verschiedene Bereiche wo sie nützlich sind zb ist C++ auch im IT Sicherheit gefragt da es im Assembler nähe ist und C++ mit Java zu kombinieren wurde ja ein besseren Wirkung haben oder?