Qt Jenny: Java-Code-Generator
Qt Jenny übersetzt Java-APIs in Qt-C++-Wrapper, wodurch Qt-C++-Programme Java-Funktionen aufrufen können. Dies ist besonders nützlich auf Plattformen mit Java-System-APIs, wie beispielsweise Android.
Funktionen
Qt Jenny:
- Generierung von Wrappern für beliebige Java-Klassen.
- Vorlagengestützte Generierung mit anpassbaren Vorlagen, die geändert werden können, um die C++-Ausgabe individuell anzupassen.
- Konfigurierbare Generierung, die die Steuerung des Namespace der generierten Wrapper ermöglicht.
- Unterstützung für die Generierung von Code, der „ QJniObject “ im generierten Code verwendet und somit alle Vorteile nutzt, die „ QJniObject “ bietet.
Beispiele
Ein Beispiel für die Verwendung von „ Qt Jenny “ finden Sie in der QtJenny-Demo.
So funktioniert „ Qt Jenny “
Qt Jenny übersetzt Java-APIs mithilfe der folgenden Bausteine in Qt-C++-Wrapper:
- Kotlin-Code, der die zu verpackenden Klassen importiert.
- Annotationen in diesem Code, die angeben, welche Klassen umhüllt werden sollen.
- Ein Codegenerator, der die Annotationen ausliest und den Wrapper-Code generiert.
Mit diesen Bausteinen wird das Qt-Projekt dann so strukturiert, dass es ein separates Gradle-Projekt zur Generierung des Codes gibt, den das Qt-CMake-Projekt verwendet. Das CMake-Projekt löst die Codegenerierung bei der Projektkonfiguration aus (mit anderen Worten: wenn Sie CMake ausführen). Für eine Anwendung, die Methoden aufruft, aber keine Callbacks implementieren muss, reicht ein einziges Codegenerierungsprojekt aus. Für eine Anwendung, die sowohl Methodenaufrufe als auch Schnittstellen-Callbacks verwendet, sind zwei Generierungsprojekte erforderlich: eines für die Methoden-Proxys und eines für die Callback-Hierarchie. Für eine Anwendung, die Klassen erweitern muss, sind drei Generierungsprojekte erforderlich: eines für die Methoden-Proxys, eines für den Java-Glue-Code und eines für die Callback-Hierarchie.
Der Beispielcode in der QtJenny-Demo verwendet drei Generierungsprojekte, da er Klassenerweiterungen nutzt.
Referenz
Lizenzen und Quellenangaben
Qt Jenny enthält möglicherweise Module von Drittanbietern unter den folgenden freizügigen Lizenzen:
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.