Portabilidade JNI

Boa-tarde…

Pessoal preciso integrar um programa principal em JAVA com um auxiliar em C#.

A questão é utilizando o método JNI como fica a questão da portabilidade? Ele será desenvolvido para funcionar no LINUX.

Existe alguma outra alternativa mais viável sem ser via JNI?

Este programa principal em JAVA é a interface gráfica e o em C# irá aplicar filtros (salientar bordas, escala de cinza, inverter, etc…) numa imagem que é captada por um microscópio, ou seja, será necessário enviar a imagem captada ao programa escrito em C# e ele irá retornar essa mesma imagem só que com os filtros aplicados.

E por último, o que daria mais resultado passar o que está escrito em JAVA para C# ou continuar tentando fazer a integração??

Obrigado

Por que misturar as linguagens? Por não faz tudo em C#? Esta parte aparentemente e a mais complicada.

Olá,

Pode usar WebService. JNI não creio que seja uma opção válida.

Abraço!

[quote=narciso.benigno]Olá,

Pode usar WebService. JNI não creio que seja uma opção válida.

Abraço![/quote]

Não complicaria mais? Aparentemente é uma aplicação Desktop!

Escrever todos os programas em C# é uma opção…mas como disse está sendo desenvolvido para ambiente LINUX, talvez C++ seria melhor? Já que pelo o que pesquisei precisa utilizar o MONO para rodar esse tipo de aplicação e não sei o quão avançado ele está e nem se dá suporte para as aplicações ( rodei o programa migration do MONO e apareceu algumas complicações).

Realmente vou procurar também sobre webservice, poderia me dizer se ele atrapalha o desempenho ? Pois a intenção é realmente integrar JAVA + C# pois a parte em JAVA está meio lenta( interface gráfica) e não produz resultados satisfatórios em relação a manipulação de imagens ( aplicação de filtros).

Olha, qualquer uma das linguagens que você escolher das que citou(java, c++ ou c#) possuem um bom acervo para imagens digitais.

  • Se precisar rodar java em um ambiente c# considere a ikvm. Dê uma olhada no site e veja se te atende.

http://www.ikvm.net/

  • Para c# existe uma biblioteca chamada aforge. Possui a maioria dos algoritmos relacionados com visão artificial, learning e processamento de imagens. (Imagino que seja a melhor opção começar o aplicativo do zero e usá-la no projeto). Se usar winforms 2.0, você vai rodar sua aplicação em qualquer lugar com o mono.

http://www.aforgenet.com/framework/

  • A outra opção é usar c++ e um framework robusto como o qt. Ele possui classes para trabalhar com imagens, e são melhores que as anteriores(atenção- são classes de io e não são algoritmos implementados. São melhores porque tem mais desempenho que as anteriores).

http://qt.nokia.com/

A questão do jni é que você vai ter um trabalho triplicado para mapear a biblioteca c# com c++ e posteriormente vai ter que mapear essa outra biblioteca para java novamente e vice versa. Um trabalho porco que vai matar o desempenho da sua aplicação de uma maneira que não pode nem imaginar. Use somente uma dessas linguagens com o framework correto.

[quote=ck]Escrever todos os programas em C# é uma opção…mas como disse está sendo desenvolvido para ambiente LINUX, talvez C++ seria melhor? Já que pelo o que pesquisei precisa utilizar o MONO para rodar esse tipo de aplicação e não sei o quão avançado ele está e nem se dá suporte para as aplicações ( rodei o programa migration do MONO e apareceu algumas complicações).

Realmente vou procurar também sobre webservice, poderia me dizer se ele atrapalha o desempenho ? Pois a intenção é realmente integrar JAVA + C# pois a parte em JAVA está meio lenta( interface gráfica) e não produz resultados satisfatórios em relação a manipulação de imagens ( aplicação de filtros).

[/quote]
Cara, usar web service nesse caso me parece uma gambia!
A meu ver deveria ser utilizado uma única linguagem nesse caso, pois você não está dividindo o problema e sim adicionando mais problemas. Creio que seria mais simples usar o mono do que integrar C# com o Java. Como disse juliocbq escrever o programa em C++ é uma opção também, mas você perderia o que já tem feito, fora a curva de apreendizado que mais complicada.
Não faz muito sentido utilizar java somente para interface gráfica. Provalmente está utilizando Swing e C# possui uma boa opção gráfica também.
Se vocês querem ter menos trabalho, acretido que vão acabar tendo é muito mais se adotarem a solução da integração.
Outra questão é fazer tudo em java. Estranho esse desempenho fraco, teria que ser investigado.

Muito obrigado pelas respostas…elas foram de grande ajuda.

Bom vou optar mesmo por transformar tudo em C++ mas antes vou procurar sobre os frameworks citados.

Agora outra questão é como fazer a interface gráfica em C++. Se eu utilizar o Visual Studio terei problemas de compatibilidade com o linux provavelmente né???

Procurei se existe alguma forma de fazer essa interface gráfica em C++ utilizando o próprio netbeans, no estilo drag-and-drop, pois preciso fazer isto rápido (clientes e chefes não gostam de esperar). Alguém sabe se isto é possível?? Pois seria realmente muito bom pois toda a interface pronta em JAVA está utilizando netbeans.

[quote=ck]Muito obrigado pelas respostas…elas foram de grande ajuda.

Bom vou optar mesmo por transformar tudo em C++ mas antes vou procurar sobre os frameworks citados.

Agora outra questão é como fazer a interface gráfica em C++. Se eu utilizar o Visual Studio terei problemas de compatibilidade com o linux provavelmente né???

Procurei se existe alguma forma de fazer essa interface gráfica em C++ utilizando o próprio netbeans, no estilo drag-and-drop, pois preciso fazer isto rápido (clientes e chefes não gostam de esperar). Alguém sabe se isto é possível?? Pois seria realmente muito bom pois toda a interface pronta em JAVA está utilizando netbeans.[/quote]

O qt framework é multiplataforma(mais que o próprio java). O QTCreator é melhor que o visualstudio no quesito “MFC” vs “QtFramework”. Não tem nem comparação.

Dizer que escrever software portável e estável em c++ é complicado é pura falácia.

Bom então utilizando qt framework eu posso criar interfaces gráficas de modo parecido com o netbeans né arrastando e colando,painel de opções para selecionar os botões etc… ? Estou baixando ele neste mesmo momento daqui umas 3horas termina ( net está instável).

Muito obrigado pela ajuda.

Vou procurar ainda sobre a compatibildade no linux.

Ae pelo o que encontrei aqui era isso mesmo que eu estava procurando ! Obrigado…vou testá-la aqui.

[quote=ck]Bom então utilizando qt framework eu posso criar interfaces gráficas de modo parecido com o netbeans né arrastando e colando,painel de opções para selecionar os botões etc… ? Estou baixando ele neste mesmo momento daqui umas 3horas termina ( net está instável).

Muito obrigado pela ajuda.

Vou procurar ainda sobre a compatibildade no linux.[/quote]

No mesmo local onde você está baixando existem versões para linux, macos, symbian, meego, maemo, etc…
Só precisa pegar o fonte do seu projeto e compilar na plataforma x com o qt referente a ela.