Sarebbe una buona scelta invece di Java?

11

Avvieremo un nuovo progetto che coinvolgerà la formazione di tutti gli sviluppatori .net in Java (framework / sistema ECO ecc.). Abbiamo un sacco di codice scritto in C # e sembra che tutto ciò andrà sprecato dato che dobbiamo riscriverlo tutto in Java. Il problema che vedo è che il primo anno circa (probabilmente 2 anni) non avremo nulla da offrire poiché passeremo la maggior parte del tempo a riprodurre ciò che avevamo prima, ma ora in Java.

Dato che il nostro team è distribuito in diversi uffici in tutto il mondo e abbiamo un gran numero di sviluppatori java (da 20 a 30) e 10 sviluppatori che utilizzano .net, vogliamo che tutti gli sviluppatori utilizzino la stessa lingua / piattaforma in modo da può iniziare a riutilizzare componenti / moduli. Quindi posso capire il punto di vista della gestione.

Ieri mi sono imbattuto in Scala e mi chiedevo se sarebbe stato meglio usarlo con il prodotto corrente (che è scritto in C #) e quindi almeno avremo un prodotto funzionante in un anno. Inoltre in un anno abbiamo moduli che possono essere utilizzati nel mondo Java mentre migriamo altre parti del prodotto.

Scala sarebbe una scelta migliore di Java considerando quello che stiamo cercando di ottenere?

    
posta JD01 20.09.2011 - 10:14
fonte

4 risposte

15

Alcuni punti da considerare:

  • Scala è un ottimo linguaggio - ma vale la pena notare che è anche questo un linguaggio piuttosto impegnativo da imparare e usare correttamente. Non solo la mia opinione - anche esperto Scala gli esperti dicono così . A seconda del livello di abilità nel tuo team, probabilmente è più adatto come strumento per i tuoi sviluppatori più esperti / esperti
  • Java e C # sono piuttosto simili in molti modi: non ci vorrà molto sviluppatori addestrati in uno per spostarsi (la sintassi è simile, lo è per lo più solo un caso di imparare le stranezze di ciascuno e ottenere un comprensione delle diverse librerie, che spesso hanno simili funzionalità, ma sono confezionati in modo diverso e / o diverso nomi). Sono passato da Java a C # e ritorno a Java di nuovo senza alcuna difficoltà.
  • Vale anche la pena notare che tutte le lingue JVM (Java e Scala, ma anche JRuby e Clojure ecc.) sono molto compatibili - condividono la stessa piattaforma JVM fondamentale e può condividere molto codice / librerie facilmente.

Dato tutto questo, potresti voler proteggere le tue scommesse e adottare una strategia mista Java / Scala , ovvero migrare alla piattaforma JVM e concentrarti inizialmente su Java , ma tieni aperta l'opzione per usare Scala quando i tuoi sviluppatori sono a loro agio e / o si adatta al problema in questione.

Dal punto di vista della gestione questo ha molti vantaggi:

  • Puoi ancora condividere tutte le librerie in modo che i tuoi investimenti siano sicuri
  • I tuoi sviluppatori meno esperti saranno in grado di trasferire C # - > Java abbastanza veloce
  • Gli sviluppatori più esperti possono sfruttare appieno le funzioni avanzate di Scala
  • Tutti gli strumenti sono compatibili / possono essere condivisi (sistemi di compilazione, IDE, strumenti di distribuzione ecc.)
  • Ottieni l'accesso gratuito all'ecosistema di librerie open source molto vasto della JVM (insieme alla portabilità multipiattaforma, questo è senza dubbio il miglior motivo per essere sulla piattaforma JVM)
  • I tuoi sviluppatori utilizzano la lingua che li rende più produttivi date le loro capacità / il compito a portata di mano (Java in alcuni casi, Scala in altri, forse altri linguaggi come Clojure in futuro)

Il lato negativo è che hai ancora due lingue principali da supportare. Ma probabilmente in realtà ne esistono molti più di due (script di shell? Formati XML specifici del dominio? File di configurazione? Motori di regole? HTML? JavaScript?) In modo che si possa sostenere che non è davvero un grosso problema.

    
risposta data 20.09.2011 - 10:49
fonte
15

Aggiungerò una terza opzione. Qualcuno della tua organizzazione ha esaminato l'intervallo tra i moduli C # e Java? Come stai esponendo la funzionalità C #? I servizi web SOAP o RESTFul sono un'opzione?

Una riscrittura di 2 anni può essere una campana a morto per un'organizzazione (basta chiedere a Netscape). Tuttavia, una migrazione graduale mentre il codice esistente funziona bene tra loro ha un impatto potenzialmente meno aziendale.

    
risposta data 20.09.2011 - 11:00
fonte
3

Riscrivere C # su Scala sarà difficile quanto riscrivere su Java. Per quanto riguarda la lingua che è "migliore", quel punto è discutibile, ogni lingua ha i suoi punti più e meno.

Non so quanto sia grande il tuo codebase, ma 2 anni per 30 sviluppatori sembrano enormi per una semplice riscrittura. Raccogliere Java quando conosci C # è facile. Mi ci sono voluti un giorno o due per mettermi comodo.

Il mio consiglio sarebbe quello di consentire alla gestione di ottenere il loro modo e goderti il fatto che sei pagato per espandere il tuo skillset.

    
risposta data 20.09.2011 - 10:25
fonte
1

Penso che l'opzione più semplice sarebbe quella di far imparare agli sviluppatori java C #. Entrambe le lingue sono molto simili in molti modi e non ci vuole molto tempo prima che uno sviluppatore java recuperi C #. Ho lavorato con molti sviluppatori Java che hanno imparato C # e di solito è una transizione graduale. L'area in cui potrebbero rimanere bloccati per un po 'è il modello di programmazione WebForms. Gli sviluppatori Java si adattano meglio al paradigma MVC. In questo modo, non è necessario attendere un anno prima di iniziare a sviluppare nuove funzionalità. Per quanto riguarda Scala, temo che introdurrà un nuovo problema con tutti i 30 sviluppatori che cercano di imparare una nuova lingua.

    
risposta data 20.09.2011 - 10:19
fonte

Leggi altre domande sui tag