Como posso call.NET código de Java?

Não estou à procura da resposta habitual, como os Serviços Web. Estou à procura de uma solução leve para funcionar na mesma máquina.

editar: estou à procura de forma em Java para chamar os métodos. Net

Author: Jon Seigel, 2008-11-12

6 answers

Acho que o Java pode falar com o COM e o.NET pode expor as interfaces COM. Então isso pode ser uma solução de peso muito leve que não requer nenhum terceiro partido. Há também a opção de usar sockets para se comunicar entre os programas que não exigiriam uma instância pesada de IIS para ser instalado na máquina.
 10
Author: Nick Berardi, 2008-11-12 12:03:50

Sou autor de jni4net, Ponte de interprocesso de código aberto entre JVM e CLR. É construído em cima do JNI e do PInvoke. Não é necessário nenhum código C / C++. Espero que te ajude.

 22
Author: Pavel Savara, 2009-10-31 19:25:51
Já viste o IKVM?
 5
Author: Jon Skeet, 2008-11-12 11:37:16
Já viste a interface nativa Java?

O que fiz no passado foi escrever uma biblioteca C, que pode ser chamada de Java e.NET (e também COM, NSIS scripting language, e outras tecnologias).

A JNI funcionaria bem se apenas quisesse expor alguns métodos, mas poderia tornar-se pesada se quisesse, por exemplo, expor toda a estrutura.net, devido ao número de ficheiros de cabeçalho e métodos de embalagem que teria de criar.

 2
Author: RB., 2008-11-12 12:34:54
Tentámos a IKVM no nosso ambiente de produção, mas não parava de falhar. Nós usamos JNBridge que é um produto comercial, mas é muito estável e tem um bom desempenho em nosso ASP.NET ambiente.
 1
Author: Tony Whalen, 2008-11-12 11:45:36

Se estiver disposto a executar o seu código Java em.NET (ou Mono), é possível fazê-lo usando IKVM.

Porque (tanto quanto sei) Compiladores Java atuais não lêem conjuntos.net, existem 2 passos. Primeiro você precisa gerar um jarro de stub contendo classes e métodos fictícios com as assinaturas do conjunto.NET que você deseja usar, de modo que javac (ou o seu IDE) saiba quais os métodos disponíveis. Por exemplo, se você quiser usar algo na principal .net standard library from Java, run

ikvmstub mscorlib

Que gera o talão mscorlib.jar. (Ele encontrou a montagem Mono mscorlib.dll para mim automaticamente em Linux, mas se ela falhar você pode ter que dar o caminho completo para o DLL.)

Você pode então escrever um ficheiro Java que o usa, por exemplo ( com base no exemplo da documentação do IKVM):

import cli.System.IO.Directory;
public class IKVMTest {
    public static void main(String[] args) {
        for(String file : Directory.GetFiles(".")) // From .NET standard library
            System.out.println(file);              // From Java standard library
    }
}

Note que os pacotes de CLI são prefixados com cli., daí a importação {[[8]} em vez de apenas System.

Para compilar, incluir o frasco de stub no claspath:

javac -classpath mscorlib.jar IKVMTest.java

Desde que a ligação Java ocorre no tempo de execução, os ficheiros de saída class usam os métodos dos nomes e Assinaturas desejados, mas você pode trocar os métodos de stub fictícios com os métodos reais. net quando executados sob o IKVM:

ikvm IKVMTest

E irá imprimir os ficheiros no directório actual, chamando os métodos. net.

 0
Author: Mechanical snail, 2012-07-27 07:14:05