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??
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).
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.
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).
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.