Conversão automatizada de Java para C#

Antes de vocês me acusarem de “vendido para o lado negro da força” e outras coisas menos elogiosas, como é que vocês fariam se vocês precisassem de converter uma biblioteca Java (que não usa nada gráfico - o máximo que ela usa são os pacotes java.net e java.io) para C#? É que preciso disso.

a) Usariam o “Java Language Conversion Assistant”
b) copy *.java *.cs
while (houver paciência && tempo) {
compile + remove compiler errors
}
c) IKVM.NET e não se fala mais nisso

isso é um dilema shakerpeariano

opção D, refaria o sistema

lado negro prq? Um profissional desenvolve em qualquer linguagem.

[quote=bezier curve]Antes de vocês me acusarem de “vendido para o lado negro da força” e outras coisas menos elogiosas, como é que vocês fariam se vocês precisassem de converter uma biblioteca Java (que não usa nada gráfico - o máximo que ela usa são os pacotes java.net e java.io) para C#? É que preciso disso.

a) Usariam o “Java Language Conversion Assistant”
b) copy *.java *.cs
while (houver paciência && tempo) {
compile + remove compiler errors
}
c) IKVM.NET e não se fala mais nisso
[/quote]

d) Escrever a API de novo em C#

Converter código não se faz. simplesmente não se faz. Isso é uma coisa que a Microsoft inventou para vender, mas nunca funcionou realmente. Veja eles querem vender consultoria sobre as ferramentas que não funcionam sozinhas…

Se vc tem a lib em java use-a diretamente em .NET. Se é complexa (ou seja, vc não consegue refazê-la) use o ikvm para começar ( opção mais simples) . O ideal é que vc escreva outra biblioteca que faz o mesmo.

Veja NHibernate é um port para .NET do hibernate de java. “port para X” significa : foi reescrito em X fazendo o mesmo.
Opção c) ou d)

[quote=sergiotaborda][quote=bezier curve]Antes de vocês me acusarem de “vendido para o lado negro da força” e outras coisas menos elogiosas, como é que vocês fariam se vocês precisassem de converter uma biblioteca Java (que não usa nada gráfico - o máximo que ela usa são os pacotes java.net e java.io) para C#? É que preciso disso.

a) Usariam o “Java Language Conversion Assistant”
b) copy *.java *.cs
while (houver paciência && tempo) {
compile + remove compiler errors
}
c) IKVM.NET e não se fala mais nisso
[/quote]

d) Escrever a API de novo em C#

Converter código não se faz. simplesmente não se faz. Isso é uma coisa que a Microsoft inventou para vender, mas nunca funcionou realmente. Veja eles querem vender consultoria sobre as ferramentas que não funcionam sozinhas…

Se vc tem a lib em java use-a diretamente em .NET. Se é complexa (ou seja, vc não consegue refazê-la) use o ikvm para começar ( opção mais simples) . O ideal é que vc escreva outra biblioteca que faz o mesmo.

Veja NHibernate é um port para .NET do hibernate de java. “port para X” significa : foi reescrito em X fazendo o mesmo.
Opção c) ou d)

[/quote]

Olá Sérgio,

Tudo bem que deve ocorrer alguns problemas, mas não é mais fácil corrigir esses problemas que reescrever novamente? Acredita que não seja tão recomendado por que motivo? Design? Desempenho? Características de cada plataforma?

À primeira vista me parece mais fácil corrigir os problemas que surgem do que reescrever do zero. Mas confesso que imagino que as características de cada plataforma podem ser melhor usadas se o código for reescrito ou analisado, muito bem analisado.

[]'s!

eu sou bem preguiçoso e por isso não gosto de ficar corrigindo erros. Eu prefiro fazer de novo.

A razão por detrás disso é simples : mantenha seu codigo limpo.
Se converte vc está limitando a api c# ao pensamento da API java. Por exemplo, o monte de get/set do java viram coisas mais simples em c#. Além disso as API base não são iguais e são os detalhes que vão causar erros.

Um exemplo bobo que não se aplica a C# mas aplicaria a VB6. VB6 tem array baseado em 1. java é baseado em 0. Portanto imagine mudar todos aqueles for, é muito trabalho.

Escrever do zero é bem mais simples. Vc escreve usado a APi do C# e suas mecanicas que podem nem sequer existir em java.
Básicamente seria: caracteriticas de cada plataforma e codigo limpo.

Olá Sergio,

Concordo com isso em alguns casos. Mas por exemplo, tivemos aqui uma série de validadores de documentos bancários (cheque, boleto, uma cacetada de coisas, todos os tipos de documentos bancários) que foi mais fácil apenas converter. Pois o código era ruim, iamos gastar um tempo enorme refazendo-o, e mesmo sendo de dificil compreensão em termos de nomes de métodos, etc, eles eram testados e funcionavam perfeitamente.

Nesse caso optamos apenas por isso, estava funcionando, não tinhamos tempo, e eram classes complexas e com nome de métodos bem estranhos.

Um abraço!