Java到C ++的桥梁?

时间:2010-09-18 07:55:29

标签: java c++ android

我知道有很多关于将C ++集成到Java中的教程,但是有什么相关的方法,从Java到C ++的桥梁?

我问这个的原因是Android

每个想为android编写应用程序的C ++开发人员都注意到,没有严肃的(成熟的)C ++ api for android(事实上,android缺乏STL的实现)。

唯一能够成功编写Android应用程序的API是Java。因此,不是从头开始编写api,是不是可以使用C ++中的Java类?

我知道这听起来只是一个不切实际的梦想,但大多数C ++开发人员并没有被迫学习新语言。

2 个答案:

答案 0 :(得分:2)

基本上,Java到C ++与C ++到Java相同,但需要手动启动VM:

#include <jni.h>

JNIEnv* create_vm() {
    JavaVM * jvm;
    JNIEnv * environment;

    JavaVMInitArgs args;
    JavaVMOption options[1];

    args.version = JNI_VERSION_1_4;
    args.nOptions = 1;

    options[0].optionString = "-Djava.class.path=/path/to/project's/root/";
    args.options = options;
    args.ignoreUnrecognized = JNI_FALSE;

    JNI_CreateJavaVM(& jvm, (void **) & environment, & args);

    return environment;
}

其余的是/ normal / JNI编程。


请注意,这是针对真正的 Java。 Dalvik可能采取不同的做法,或完全禁用它们。

答案 1 :(得分:1)

Java API是适用于Android的 API。 NDK从未打算取代它。您可以选择使用C ++编写应用程序的性能关键部分,但就是这样。我不知道为什么你甚至想用C ++编写活动?最好不要浪费你的时间,如果你已经知道C ++切换到Java将是一件小事。