Domanda

Con alcuni cambiamenti di personale presso l'ufficio, i livelli di C# esperienza è sceso precipitosamente e ora ci sono più sviluppatori Java.Ha ottenuto al punto in cui le alte sfere sono in considerazione lo spostamento di una .NET progetto scritto in C# nel mondo Java.

A parte l'ovvio problema di partendo completamente da zero quali sono i possibili modi in cui la società può compiere una mossa di successo di sviluppo di un progetto .NET C# Java?

È stato utile?

Soluzione

Qui ci sono le cose da considerare:

  • È questo grande progetto?Se Sì, prova a bastone con C#
  • È questo progetto di medie dimensioni con componenti?Se No, prova a bastone con C#
  • È questo piccolo progetto destinato ad essere distribuito solo su windows?Se sì, prova a bastone con C#
  • È questo vecchio codice sorgente?Se Sì, prova a bastone con C#
  • Non si utilizza il sistema operativo windows Api specifiche?Se Sì, prova a bastone con C#
  • Fare uso di terzi Api senza Java controparte?Se Sì, prova a bastone con C#
  • Si usa .Netto nel "profondo"(associazione di dati, Utente controlli etc.)?Se sì, prova a bastone con C#
  • Tempo di migrazione è più accettabile che ottenere nuovi conversione/C# ragazzi?Se no, prova a bastone con C#
  • Pensi che gli utenti finali non saranno ricettivi di modifiche, se si sono per l'utilizzo di Java framework che cambierà la presentazione?Se sì, prova a bastone con C#
  • Controllare pubblicità

Se si decide di convertire:

  • Andare per componente
  • Andare per strato
  • Hanno un sacco di prove
  • Controllare se ci sono strumenti per aiutare (per quanto piccolo aiuto può essere) con la migrazione

Altri suggerimenti

Solo per aggiungere a Brian e Eric opinioni, direi che raccogliendo in C#, per un sviluppatore Java dovrebbe essere molto semplice, a mio parere.Sono concettualmente molto simili lingue e vorrei suggerire l'addestramento del vostro sviluppatori Java per guadagnare un po di C# competenze in modo da non essere costretti ad andare per il fastidio di un processo di migrazione.

Mi iscrivo a Joel che una riscrittura totale è quasi sempre un errore.Altri manifesti sono di destra:C# e Java sono abbastanza simili che qualsiasi competenti sviluppatore Java dovrebbe essere in grado di diventare competenti in C# in una questione di settimane o mesi.Che non vuol dire che saranno esperti.Che richiede più tempo, ma finché si dispone di alcuni degli sviluppatori C# che può guidare il processo, quindi dovrebbe essere OK.

E ' difficile commentare o meno tale transizione è una buona o cattiva idea senza sapere le specifiche della vostra applicazione:le dimensioni, il tipo di applicazione, l'industria e così via.

Sarei estremamente reticenti circa un interruttore perché, a mio modesto parere, C# è ora molto più moderno linguaggio di Java e dico questo a voi come qualcuno che è stato uno sviluppatore Java ofr più di un decennio (dal 1.0.2/1.1 giorni).

Questo non per dire che Java è male.Non è così.Sole non hanno una nuvola appesi su di esso e ha dimostrato una mancanza di volontà o incapacità di guidare la piattaforma avanti negli ultimi anni.

Indipendentemente dalle lingue coinvolte, la gestione di questa azienda suoni folle.Per qualcosa di diverso da un banale applicazione, come può essere economicamente ragionevole riscrivere un'intera base di codice da zero invece di assumere una sola persona con competenze nel linguaggio giusto?È questo un azienda con il ben noto problema:troppo denaro contante di ricambio?!

Quanto tempo ha il codice esistente in fase di sviluppo?Se è appena iniziato, ho potuto capire questo.Se è visto un rilascio e ha di utenti attivi, sarà mai ha senso buttare via.Se hai donato il codice C# per una start-up con le giuste competenze, pensate a quanto di head start che avrebbe su di voi.

Prima di terminare la conversione del .Progetto in rete in Java, tutti quegli sviluppatori Java che facevano parte del progetto di conversione avrà imparato C#.Quindi non è più necessario convertirlo in Java (e si può buttare via tutto il codice Java che è stato prodotto in conversione), perché ora si dispone di un team di sviluppo, che può fare sia in Java che in C#.Problema risolto.:D

Se ci sono componenti che sono già isolato o qualsiasi di esso utilizza una architettura orientata ai servizi, si potrebbero eseguire la migrazione di un componente alla volta (dove ogni singolo componente è una riscrittura) e avere ancora le componenti di parlare l'uno con l'altro utilizzando la stessa interoperabili i protocolli di rete.Probabilmente dipende dal tipo di app di cui stiamo parlando.

Assicurarsi di che avere tonnellate di prove, perché tale migrazione morso, dove ci si aspetta di meno.

Hai più .Net o più applicazioni Java in produzione.Se il vostro già hanno un notevole investimento .Net server e applicazioni, perché non chiedere per i volontari tra gli sviluppatori Java per spostarsi .Net?Il linguaggio e la sintassi è molto simile, quindi la parte più difficile sarebbe imparare il quadro e a meno che non vorresti spendere tutto il loro tempo a fare lo sviluppo dell'interfaccia utente anche di apprendimento, il quadro non è difficile.

Nel nostro ufficio abbiamo una serie di ottimi sviluppatori che si muovono avanti e indietro tra Java e .Net come necessario.

Per dimostrare di gestione, si deve sempre parlare in termini di ROI e numeri.Mostrare loro che se si sposta di queste applicazioni, si avrà un'enorme quantità di tempo, il controllo della qualità delle risorse, e può facilmente prendere un sedile posteriore, se viene de-priorità a causa di qualche altro progetto o di nuovo sviluppo l'assunzione di importanza.

Ho avuto successo quando ho mostrato loro la timeline, il ROI, il lavoro, il denaro, etc.

Così ora venendo al punto, io credo che gli sviluppatori Java sarebbe in grado di sostenere C# a meno che non abbiano fondamentali di un blocco mentale contro Microsoft tecnologie.

Guarda Net2Java, che puports per aiutare a convertire il codice da C# a Java.Dubito che sarà perfetto, ma il suo un modo per rimuovere un sacco di fatica dall'attività, lasciando con il tiro di incompatibilità quadro chiamate e funzionalità del linguaggio di ferro fuori.

Una volta fatto questo, il vostro compito è come qualsiasi altra grande progetto di migrazione - prova, prova e prova di nuovo.Test di unità, di System integration test, quindi per l'utente finale di test.Si dovrebbe havew le prove già utilizzato con l'applicazione originale, a parte il test di unità, che sarà ancora rilevante.

Se si decide di fare questo, è più probabile beneficio da un approccio ibrido, in cui si possono fondamentalmente mix C# e Java nella stessa applicazione, come cambierà lo scenario da una cascata di conversione per una migrazione graduale.Qui so di due possibilità:

1) ikvm (http://www.ikvm.net/) che permette di eseguire codice Java in un .NET runtime.Questo permette al codice Java di chiamare il codice C# e viceversa.Poi si può congelare il codice C# sviluppo, e aggiungere lentamente la revisione funzionalità di Java, mantenendo un'applicazione funzionale.

2) Mainsoft (http://dev.mainsoft.com/Default.aspx?tabid=130), che consente di compilare .NET-bytecode Java bytecode.Hanno un ingresso gratuito versione.Non ho esperienza con il prodotto, ma hanno pubblicizzare pesantemente sulla nostra piattaforma, che ha solo Java disponibile.

Io non sono un Java esperto, ma dalla mia esperienza di lavoro con il codice Java, pur essendo un C# fan, i seguenti sono alcuni dei possibili mal di testa:

  • I generici sono implementati in modo diverso in Java e C#.
  • Boxing/Unboxing comportamenti sono diversi tra Java e C#
  • Classe Java naming convention + un sacco di C# codice generato
  • La gestione delle stringhe (cioèUnicode/ASCII di preoccupazione) può essere problematico a seconda della qualità di Java/C# il codice in fase di porting su.

Personalmente, non credo che la scrittura da zero è una cattiva idea a tutti.Dal momento che si dispone già di un lavoro di architettura.

Io sono un po ' sorpreso nessuno anche suggerito l'idea di rifiutare la migrazione.

Non credo che uno sviluppatore C# può essere costretti a passare a Java (o viceversa) perché gli era stato detto (beh, se ha minacciato con una pistola, poi, magari).Mi prende molto tempo, l'esercizio e la passione per padroneggiare almeno uno stack tecnologico.Semplicemente non è possibile avviare una notte, con una nuova tecnologia e si aspettano di fornire la stessa qualità.

Mi piacerebbe personalmente non da fastidio, fino a detto di iniziare la migrazione.A questo punto io avrei detto il manager che sto .NET ragazzo e non passare a un'altra tecnologia solo perché hanno deciso di.

Come per il lato tecnico, non è la sintassi del linguaggio che è diverso, ma piuttosto le librerie e le loro caratteristiche.Naturalmente, se tutte le ultime campane e fischietti di .NET 3.5 sono stati ampiamente utilizzati, la differenza di lingua vi fornirà una vera e propria sfida.

Questo è certamente un modo divertente, basta decidere la migrazione di applicazioni da .NET a Java.Qualcuno ha idea di cosa sia il fastidio coinvolti...

Forse si potrebbe utilizzare jni4net - opensource ponte ?O di un elenco di altre opzioni So.

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