Wie kann ich Programmiersprachen kombinieren?

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:

  1. 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.
  2. 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.

Woher ich das weiß:Berufserfahrung

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?


Bagheri9476 
Fragesteller
 29.10.2018, 16:43

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?

0
SehrGay  29.10.2018, 16:46
@Bagheri9476

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

1

Java und C++ ist grundsätzlich über Wrapper und ne Nenge Aufwand möglich, will man aber eigentlich nicht.


Bagheri9476 
Fragesteller
 29.10.2018, 16:35

Wäre es nicht vorteilhaft sie zu kombinieren?

0

Sie können mittels CORBA oder Apache Thrift kommunizieren. In Spezialfälle kann man das leichter machen.