"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como integrar Java em aplicativos C++: você pode executar código Java dinamicamente?

Como integrar Java em aplicativos C++: você pode executar código Java dinamicamente?

Publicado em 2024-11-07
Navegar:206

How to Integrate Java into C   Applications: Can You Run Java Code on the Fly?

Integrando Java em aplicativos C

Para estender a funcionalidade de um aplicativo C, incorporar um componente Java pode ser desejável. Embora isso tenha sido alcançado com Python, parece que não houve uma solução clara para integração Java.

JNI e Java Class Usage de C

Java Native Interface (JNI) é uma solução potencial, mas normalmente pressupõe um programa Java completo utilizando classes Java. No entanto, para este caso, o objetivo é utilizar classes Java de dentro do aplicativo C.

Compilando e avaliando código Java dinamicamente

A funcionalidade desejada envolve compilar e executar código Java durante o tempo de execução (como uma linguagem de script) usando JNI ou um mecanismo semelhante.

Exemplo de código Java

import c4d.documents.*;

class Main {
  public static void main() {
    BaseDocument doc = GetActiveDocument();
    BaseObject op = doc.GetActiveObject();
    if (op != null) {
      op.Remove();
    }
  }
}

Solução: JVM incorporada

A solução consiste em incorporar uma Java Virtual Machine (JVM) na aplicação C. O livro de referência da Oracle fornece as informações necessárias. As principais etapas envolvem:

  • Incluir e inicializar argumentos JVM (JavaVM e JNIEnv)
  • Inicializar a JVM chamando JNI_CreateJavaVM()
  • Usando JNI para invocar métodos Java (por exemplo, jclass, jmethodID e jmethod)
  • Destruir a JVM usando JNI_DestroyJavaVM()

Isso permite operações mais sofisticadas, como carregadores de classes personalizados, fornecendo a integração necessária de recursos Java no aplicativo C.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3