Domanda

Comincio a scrivere un'applicazione client-server utilizzando .net (C#) sia per il lato client che per quello server.

Sfortunatamente, la mia azienda si rifiuta di pagare la licenza Windows sul server box, il che significa che devo riscrivere il mio codice in Java o passare alla modalità Mono.

Esiste un buon modo per tradurre il codice C# in Java?L'applicazione server non utilizzava funzionalità specifiche di .net, ma solo strumenti multilingue come Spring.net, Hibernate.net e log4net.

Grazie.

È stato utile?

Soluzione

Suggerirei di costruire per Mono.Ti imbatterai in qualche zona grigia, ma nel complesso è fantastico.Tuttavia, se vuoi creare per Java, potresti dare un'occhiata Cavalletta.È un prodotto commerciale, ma afferma di essere in grado di tradurre CIL (l'output del compilatore C#) in bytecode Java.

Altri suggerimenti

Possibili soluzioni a parte, le traduzioni dirette di programmi scritti in una lingua in una lingua diversa sono generalmente considerate una cattiva idea™, soprattutto se questa traduzione viene eseguita in modo automatizzato.Anche se eseguita da un programmatore "vero", la traduzione di un'applicazione riga per riga spesso si traduce in un risultato finale meno che desiderabile perché ogni lingua ha i propri idiomi, punti di forza e di debolezza che richiedono che le cose siano fatte in un modo leggermente diverso.

Per quanto doloroso possa essere, probabilmente è nel tuo interesse e in coloro che devono mantenere questa applicazione riscriverla in Java se questo è ciò che richiede il tuo datore di lavoro.

Conosco solo il contrario. Dbo4 è sviluppato in Java e la versione C# viene generata automaticamente dai sorgenti Java.

Non esiste un buon modo.Il mio consiglio è di ricominciare da capo in Java o, come hai detto, di utilizzare Mono.

Sebbene ritenga che il primo errore sia stato scegliere un linguaggio di implementazione senza garantire un ambiente di distribuzione adeguato, al momento non si può fare nulla al riguardo.Penso che il metodo Mono sarebbe migliore.Dover riscrivere il codice non farebbe altro che aumentare il costo del progetto, soprattutto se si dispone già di una buona quantità di codice scritto in C#.Personalmente cerco di evitare di riscrivere il codice quando possibile.

Java e C# sono piuttosto vicini nella sintassi e nella semantica.Il vero problema sono le piccole differenze.Ti morderanno quando non te lo aspetti.

Grasshopper è davvero la soluzione migliore in questo momento, se la licenza funziona per te (la versione gratuita presenta alcune limitazioni significative).È completamente basato sulle librerie di classi Mono (che in realtà sono piuttosto buone), ma funziona su macchine virtuali Java standard.Questo è positivo perché, secondo la mia esperienza, le VM Java sono generalmente un po' più veloci e più stabili di Mono.Presenta più punti deboli di Mono per quanto riguarda le API relative a moduli/grafica, poiché gran parte di queste non è stata tuttavia trasferita su Java dalla VM Mono.

Nei casi in cui funziona, può essere meraviglioso, però.Le prestazioni a volte sono addirittura migliori rispetto a quando si esegue lo stesso codice sulla VM di MS su Windows.:)

Direi che dal punto di vista della manutenzione riscrivere il codice.Aumenterà il costo iniziale del progetto, ma in seguito richiederebbe meno manodopera per chiunque stia guardando il codice.Come hanno affermato i precedenti poster, qualsiasi cosa automatizzata come questa non può funzionare altrettanto bene di un lavoro di un programmatore "reale" e neanche la conversione riga per riga sarà di grande aiuto.Non vuoi produrre in seguito codice che funzioni ma è un inferno da mantenere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top