Costi di passaggio a Java [chiuso]

5

Sono un dev di C # e ho intenzione di iniziare a sviluppare app per Android, che ovviamente significa Java. Ho sentito cose positive su Mono per Android e l'idea di riutilizzare il mio set di abilità è allettante, tuttavia il costo delle licenze (per ora) è un po 'proibitivo per me. D'altra parte, da quello che posso vedere, Java è molto simile a C #, quindi sto prevedendo che spostando le mie abilità ad esso sarà più o meno facile (più facile che passare a Obj-C immagino).

Mi sbaglio nell'assumerlo?

Ci sono costi nascosti a cui sono cieco?

    
posta System Down 22.04.2011 - 17:42
fonte

7 risposte

9

Java come linguaggio è simile a un sottoinsieme di C #, perché, per scelta, Java ha una quantità minima di funzionalità linguistiche (che è anche il motivo per cui viene spesso utilizzato come lingua introduttiva nell'università). Imparare la lingua di Java è questione di un'ora per un programmatore C # esperto.

Tuttavia, la piattaforma Java include molte cose che dovrai imparare. Ad esempio, come fare programmazione basata su eventi e programmazione GUI in generale con diversi framework. Come fare i collegamenti dei dati. E così via e così via. Questo è un bel po 'di cose da imparare e potrebbe richiedere del tempo per farti sentire a tuo agio con Java come con .NET.

Non c'è nulla che il linguaggio Java abbia, che C # non abbia, e nulla che la piattaforma Java abbia, che .NET non abbia. Quindi non vedo alcun vantaggio nel passaggio. Soprattutto perché C # è la lingua più ricca di entrambi.

    
risposta data 22.04.2011 - 19:17
fonte
7

Hai ragione, Java e C # sono molto simili. Il costo maggiore sarà imparare il framework Android e forse gli strumenti (Eclipse), ma probabilmente ne varrà la pena.

    
risposta data 22.04.2011 - 17:45
fonte
4

Personalmente sono un C # e sono stato recentemente costretto in Java (a causa della scuola) e ho scoperto che mi diverte molto. L'unica cosa che mi manca (che per me sarebbe un costo) è Visual Studio. Mi piace molto quell'IDE e per me, nulla si avvicina al mondo di Java. Per la scuola dobbiamo usare BlueJ, ma per Java personale uso IntelliJ IDEA Community Edition. Oltre a questo, ho trovato Java molto divertente e spero che lo faccia anche tu.

    
risposta data 22.04.2011 - 17:53
fonte
3

Are there any hidden costs I'm blind to?

Il costo del successivo bisogno anche di imparare Objective-C quando vuoi scegliere come target iPhone.

Non eliminerei MonoDroid / MonoTouch così velocemente, che il costo della licenza può farti risparmiare un lotto di tempo alla fine.

    
risposta data 22.04.2011 - 18:35
fonte
2

Parlando dalla mia parte posteriore, ma con una certa sicurezza che questa stima è più o meno giusta, eccola:

Il costo totale C (in termini di tempo) di passaggio a Java è proporzionale alla media. costo dell'avgC (tempo) di superare la curva di apprendimento della lingua / catena degli strumenti moltiplicata per il numero massimo di spigoli in una rete di n programmatore (l'onere della comunicazione e della collaborazione), non ammortizzato dalla familiarità di ciascun individuo con la nuova lingua (altrimenti, noi Dovrò giocare con grafici ponderati e sbarazzarci di avgC)

C = avgC * n (n-1) / 2

Se è solo tu, allora n = 1:)

Se i termini di rischio lo prendi e moltiplichi per un fattore di rischio R specifico per le dimensioni e l'importanza commerciale dell'applicazione.

C = avgC * n (n-1) / 2 * R

Se si tratta di un progetto animale / esplorativo per apprendere le abilità, possiamo dire che R si avvicina a 1 (ma non lo è perché c'è ancora il rischio di non riuscire o di fare male e quindi di non acquisire le abilità del desiderio.) Se è un vero sistema di produzione, quindi a seconda della dimensione, R aumenta (possibilmente in modo esponenziale).

Mettendo da parte tutto quel rompicapo per divertimento, ma non per davvero, il costo di provare Java (o qualsiasi altra lingua) su un progetto esplorativo con rischi minimi dovrebbe essere minimo per te. E dovrebbe coinvolgere solo l'apprendimento della lingua e della toolchain (che sono molto simili a quelli che già conosci).

Vai per questo;)

    
risposta data 22.04.2011 - 18:17
fonte
0

Quando scriviamo programmi, ciò che chiamiamo il "linguaggio di programmazione" sono in realtà solo gli articoli, le preposizioni e la punteggiatura della lingua. I nomi, i verbi e gli aggettivi provengono tutti dalle librerie e dal resto della tua base di codice, che è la vera carne del tuo software.

L'apprendimento della lingua è insignificante rispetto all'apprendimento delle biblioteche. Inoltre, provare ad apprendere Android senza imparare Java sarà probabilmente più difficile dell'apprendimento di entrambi, a causa di tutte le risorse che saranno inaccessibili a te. Stai anche aggiungendo un altro livello di rischio. Cosa succede se devi aggiornare le piattaforme Android ma l'infrastruttura C # è troppo lenta nel seguire?

    
risposta data 22.04.2011 - 21:04
fonte
0

Dovresti guardare un po 'più vicino a MonoDroid o MonoTouch prima di tuffarti e pagare le tasse.
Alcune persone qui sembrano accaparrarselo come un proiettile d'argento, senza raccontarti i dettagli.

Una cosa che vorresti osservare è che il tuo codice di interfaccia utente e qualsiasi codice che controlla il telefono, non sarà portatile, solo il tuo codice di "regole aziendali" sarà. Dai un'occhiata alle FAQ di Xamarin
Ho un'applicazione MonoTouch o WindowsPhone 7, posso semplicemente ricostruirla con Mono per Android e Android di destinazione?
Sebbene sia possibile scrivere l'interfaccia utente e il codice di controllo del telefono in C #, sarà comunque necessario farlo in base alle specifiche della piattaforma e quindi questo codice è not portabile su più piattaforme. Ciò significa che devi ancora imparare le specifiche della piattaforma per ciascuna piattaforma, sia attraverso C # usando MonoDroid, sia con le chiamate Java native per Android.

Ecco alcuni aspetti da considerare:

    La sintassi
  • C # è quasi identica a Java.
  • Dovrai imparare e programmare per le specifiche della piattaforma Android (controllo dell'interfaccia utente e del telefono) se usi C # tramite MonoDroid o se usi l'API Java nativa. Fare questo attraverso Java non dovrebbe essere un grande salto per te a causa delle somiglianze nella sintassi con C #.
  • Quanto del tuo codice puoi disaccoppiare in modo pulito dall'interfaccia utente e dal codice di controllo del telefono, alle "regole aziendali"? Questo è il codice che sarà trasferibile su progetti Mono ed è il luogo in cui otterrai i tuoi vantaggi in termini di produttività.
  • Anche se avrai accesso ad alcune delle funzionalità linguistiche avanzate di C # che Java non ha, durante lo sviluppo per Android, non sarai ancora in grado di fare più di quello che puoi con l'API Java nativa.
  • In riferimento al punto precedente dovrai considerare la possibilità del contrario. Questa è la possibilità che MonoDroid non implementerà alcune delle caratteristiche native di Android, o che ci sarà un ritardo tra le nuove versioni di Android e l'implementazione in MonoDroid, e quanto sarà importante per questi tipi di ritardi o implementazione mancante. / li>
  • MonoDroid sarà aggiungere circa 4,4 MB al tuo dimensione dell'applicazione . Questo non è un problema per Android 2.2 e versioni successive, perché puoi installare app nella memory card e la quota di mercato di Android 2.1 e versioni successive si sta riducendo , (anche se ho ancora un telefono 2.1). 4.4MB + non è un grosso problema per il wi-fi, ma potrebbe essere lento su alcune reti telefoniche.

Non fraintendermi, non sto criticando Mono, MonoDroid o MonoTouch qui, o dicendo di non seguire questa strada. Penso che siano progetti brillanti e alcune persone li stanno ovviamente trovando utili. Mi sono sentito in dovere di rispondere anche se qui ci sono alcune opinioni unilaterali che non riescono a indicare un numero di cose che potresti voler prendere in considerazione.

    
risposta data 29.10.2011 - 07:14
fonte

Leggi altre domande sui tag