© Excellent backgrounds/Shutterstock.com
Java Magazin
Von der Desktop- zur Multiplattformapplikation

Von C++ zu Java


Von Desktop- zur Webapplikation ist es nicht immer ein einfacher Weg. Wenn eine Desktop­applikation bereits seit guten zwanzig Jahren besteht und in C++ umgesetzt wurde, kommt außerdem hinzu, dass die Komplexität durch mathematische Berechnungen und Regelwerke hoch ist und so die Lines of Code oft bei über einer Million liegen. Nun stellt sich die Frage, wie sich eine Integration des C++-Codes in die Java-Welt umsetzen lässt. In den letzten Jahren hat sich dazu neben dem bekannten Java Native Interface eine weitere ­Library etabliert: Java Native Access.

Es gibt einige typische Szenarien und Anwendungsfälle, für die der Einsatz von Native Code in C/C++ in der Java-Welt sinnvoll ist. So ist z. B. durch die JVM der Zugriff auf Betriebssystemfunktionen oder auf spezielle Hardware nur eingeschränkt möglich. Um diese Lücke zu schließen, kommt oft das Java Native Interface (JNI) zum Einsatz. Ähnliche Anforderungen rücken auch bei aktuellen Topthemen, wie Internet of Things (IoT) oder Industrie 4.0, stärker in den Fokus. Denn Hardware spielt dort ebenfalls eine zentrale Rolle. Eine weitere Anforderung kann die Anbindung einer bereits bestehenden C-/C++-Codebasis sein. Im Folgenden zeigen wir einige Kriterien auf, die in einem Kundenprojekt zu der Entscheidung geführt haben, den existierenden Code wiederzuverwenden.

  • Hohe Aufwände bei der Neuentwicklung für weitere Plattformen (Web, iOS und Android)

  • Respekt vor dem Reverse Engineering einiger in die Jahre gekommener Businesslogik

  • Erschwerte Entwicklung, da aktuelles Produkt parallel zur Neuentwicklung weiterentwickelt werden muss

  • Zukünftige parallele Wartung von unterschiedlichen Codebasen

  • Sicherstellung der absolut identischen mathematischen Berechnungen in allen Codebasen

  • Erhöhte Aufwände im Testing

  • Erheblicher Aus- und Aufbau des Entwickler-Know-hows

Die obigen Kriterien beeinflussen neben den hohen Kosten auch die Time to Market des Produkts, was in diesem Fall ein erhebliches Risiko ist. Denn die Releases der Software sind durch gesetzliche Regularien an feste Termine gebunden.

Gibt es dafür nicht JNI?

JNI ist ein API, das Java-Code innerhalb der JVM erlaubt, native Anwendungen oder Libraries aufzurufen. Viele der Java-Standard-Libraries nutzen JNI, um plattformspezifische Funktionen wie I/O, Sound oder Grafik abstrakt und sicher zur Verfügung zu stellen. JNI ist Teil des Java-Sprachumfangs seit Version 1.1. Der wesentliche Vorteil gegenüber dem Vorgänger NMI (Native Method Interface) aus Java 1.0 ist, das...

Java Magazin
Von der Desktop- zur Multiplattformapplikation

Von C++ zu Java

Von Desktop- zur Webapplikation ist es nicht immer ein einfacher Weg. Wenn eine Desktopapplikation bereits seit guten zwanzig Jahren besteht und in C++ umgesetzt wurde, kommt außerdem hinzu, dass die Komplexität durch mathematische Berechnungen und Regelwerke hoch ist und so die Lines of Code oft bei über einer Million liegen. Nun stellt sich die Frage, wie sich eine Integration des C++-Codes in die Java-Welt umsetzen lässt. In den letzten Jahren hat sich dazu neben dem bekannten Java Native Interface eine weitere Library etabliert: Java Native Access.

Felix Schweitzer, Stefan Zilch, Christian Janz


Von Desktop- zur Webapplikation ist es nicht immer ein einfacher Weg. Wenn eine Desktop­applikation bereits seit guten zwanzig Jahren besteht und in C++ umgesetzt wurde, kommt außerdem hinzu, dass die Komplexität durch mathematische Berechnungen und Regelwerke hoch ist und so die Lines of Code oft bei über einer Million liegen. Nun stellt sich die Frage, wie sich eine Integration des C++-Codes in die Java-Welt umsetzen lässt. In den letzten Jahren hat sich dazu neben dem bekannten Java Native Interface eine weitere ­Library etabliert: Java Native Access.

Es gibt einige typische Szenarien und Anwendungsfälle, für die der Einsatz von Native Code in C/C++ in der Java-Welt sinnvoll ist. So ist z. B. durch die JVM der Zugriff auf Betriebssystemfunktionen oder auf spezielle Hardware nur eingeschränkt möglich. Um diese Lücke zu schließen, kommt oft das Java Native Interface (JNI) zum Einsatz. Ähnliche Anforderungen rücken auch bei aktuellen Topthemen, wie Internet of Things (IoT) oder Industrie 4.0, stärker in den Fokus. Denn Hardware spielt dort ebenfalls eine zentrale Rolle. Eine weitere Anforderung kann die Anbindung einer bereits bestehenden C-/C++-Codebasis sein. Im Folgenden zeigen wir einige Kriterien auf, die in einem Kundenprojekt zu der Entscheidung geführt haben, den existierenden Code wiederzuverwenden.

  • Hohe Aufwände bei der Neuentwicklung für weitere Plattformen (Web, iOS und Android)

  • Respekt vor dem Reverse Engineering einiger in die Jahre gekommener Businesslogik

  • Erschwerte Entwicklung, da aktuelles Produkt parallel zur Neuentwicklung weiterentwickelt werden muss

  • Zukünftige parallele Wartung von unterschiedlichen Codebasen

  • Sicherstellung der absolut identischen mathematischen Berechnungen in allen Codebasen

  • Erhöhte Aufwände im Testing

  • Erheblicher Aus- und Aufbau des Entwickler-Know-hows

Die obigen Kriterien beeinflussen neben den hohen Kosten auch die Time to Market des Produkts, was in diesem Fall ein erhebliches Risiko ist. Denn die Releases der Software sind durch gesetzliche Regularien an feste Termine gebunden.

Gibt es dafür nicht JNI?

JNI ist ein API, das Java-Code innerhalb der JVM erlaubt, native Anwendungen oder Libraries aufzurufen. Viele der Java-Standard-Libraries nutzen JNI, um plattformspezifische Funktionen wie I/O, Sound oder Grafik abstrakt und sicher zur Verfügung zu stellen. JNI ist Teil des Java-Sprachumfangs seit Version 1.1. Der wesentliche Vorteil gegenüber dem Vorgänger NMI (Native Method Interface) aus Java 1.0 ist, das...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang