/ / Chamando um programa Java a partir de um aplicativo de cacau - java, objetivo-c, cacau

Chamando um programa Java a partir de um aplicativo de cacau - java, objective-c, cacau

Não consigo encontrar uma biblioteca decente de gráficos de cacau, portanto, gostaria de usar o JFreechart.

Existe alguma maneira de chamar um programa Java a partir de um aplicativo de cacau? Eu estava pensando em escrever um aplicativo java que retornasse uma imagem do gráfico e a exibisse dentro do meu aplicativo Cocoa.

Obrigado,

Respostas:

5 para resposta № 1

A Apple tem um projeto de código de amostra muito bom (mas um tanto antigo) de como criar um aplicativo que usa JNI no Xcode:

http://developer.apple.com/java/jniuniversal.html

Verifique o código de exemplo associado a isso:

http://developer.apple.com/samplecode/MyFirstJNIProject/MyFirstJNIProject.html

Também nesta seção de perguntas e respostas sobre tecnologia:

http://developer.apple.com/mac/library/qa/qa2005/qa1295.html

Eu usei esse exemplo para criar um aplicativo com sucessoque usa a JNI para iniciar e se comunicar com uma única instância da JVM em tempo de execução (em vez de gerar muitas NSTasks, como Pablo mencionado em # 2 abaixo). Basicamente, adotei a abordagem da 1ª sugestão de Pablo abaixo com este aplicativo:

http://ditchnet.org/xslpalette


6 para resposta № 2

Você pode querer olhar para o Núcleo estrutura de plotagem nativa do cacau paraMac e iPhone. É relativamente novo - não tão maduro quanto o JFreeChart -, mas pode fazer o que você precisa. Certamente pouparia a dor do JNI ou da invasão entre processos.


4 para resposta № 3

Tanto quanto eu sei, você tem duas opções:

  1. Use interfaces nativas Java (JNI) e chame suas classes Java de C (Cocoa).
  2. Inicie um processo java separado no aplicativo COCOA para criar gráficos para você. Você pode usar NSTask por isso.

Na minha opinião, embora a primeira opção seja mais difícil de implementar, é mais elegante e provavelmente mais rápida. Mas a segunda opção definitivamente levará menos tempo para ser implementada.

Espero que ajude.