Soluzioni ai problemi che .NET può risolvere meglio di Java (o viceversa)

5

Per me sembra che si tratti di due piattaforme diverse che affrontano problemi simili a quelli aziendali (ma non solo). Sono interessato tuttavia a problemi che Java può risolvere meglio di C # /. NET o C # /. NET può risolvere meglio di Java. Tralasciando il fattore "costo", dato che in qualche modo non è un problema per le grandi imprese (gli sviluppatori probabilmente costano più delle licenze di Microsoft - è solo un pensiero) e anche per i piccoli progetti ci sono strumenti gratuiti / open source per .NET quindi il costo può essere pari a zero anche per il mondo .NET. Con Mono è possibile effettuare il porting su .NET anche su Linux e MacOS, quindi il vantaggio che Java ha avuto (multipiattaforma) non è il fattore decisivo per utilizzare Java oggigiorno ..

Quali problemi del mondo reale riesci a pensare a dove .NET sarebbe una soluzione molto migliore di Java e viceversa? Sono interessato solo a soluzioni ai problemi.

    
posta Maxtor 03.12.2010 - 12:28
fonte

5 risposte

8

Ci sono alcune funzionalità linguistiche in C # (4/5) come LINQ,% predicato diusing e alcuni aspetti funzionali che molti potrebbero obiettare di posizionarlo davanti a Java 6 in termini di produttività / flessibilità (YMMV su questo). Altri sostengono che C # sta diventando un grande pozzo nero di ogni nuova idea che è popolare e che sta diventando sempre più difficile da maneggiare (YMMV su questo).

Alcuni sostengono anche che l'eco-sistema Java è molto più flessibile e che la JVM è probabilmente il runtime più capace e flessibile (se si osservano i vari linguaggi che si eseguono sulla JVM e la loro interoperabilità con Java). Di nuovo YMMV.

Ciò che in realtà si riduce è la qualità degli sviluppatori che stanno progettando e scrivendo il codice. .NET e l'eco-sistema Java sono così vicini nelle capacità che di solito è lo sviluppatore a fare la differenza.

Da un aspetto di flessibilità di integrazione dei sistemi, sì, Java ha ancora un vantaggio in questo. La piattaforma incrociata è è ancora un problema - molte aziende vedranno l'utilizzo di Mono come rischioso (di nuovo YMMV qui) e ci sono alcuni sistemi su cui Mono non verrà eseguito che hanno JVM (Alcune vecchie macchine IBM per esempio ). Java è anche stato un po 'più lungo e ha quella' fiducia 'nelle aziende, non è facile per .NET guadagnare quella fiducia, diciamo una mega banca.

Meh - Concludo senza una vera conclusione, che penso rispecchi il fatto che Java e .NET sono testa a testa in questi giorni.

    
risposta data 03.12.2010 - 13:56
fonte
2

Per us possiamo eseguire programmi Java sulla nostra piattaforma di distribuzione e non possiamo eseguire né .NET né Mono.

Il mondo è più grande di Windows + Linux + OS X.

    
risposta data 03.12.2010 - 13:13
fonte
1

le uniche differenze significative di cui sono a conoscenza - e le mie informazioni potrebbero non essere aggiornate - sono:

  • L'automazione / integrazione di MS Office è più semplice in .NET
  • C # supporta il codice 'non sicuro' per la manipolazione diretta della memoria; Java credo che manchi ancora di questo. Non ti serve spesso, ma quando fai la differenza in termini di efficienza può essere incredibile
  • l'integrazione con le librerie non VM (COM / DLL / etc) sembra essere più semplice in .NET che in Java (a meno che JINI non sia notevolmente migliorato negli anni)
  • Java in realtà funziona su più di una piattaforma Windows senza sei versioni obsolete

Se non hai bisogno di queste cose, allora non importa - sebbene Java sia molto meno costoso per il set di strumenti "ufficiale"; -)

    
risposta data 03.12.2010 - 15:19
fonte
0

Non penso che ci sia una classe di dominio problematico che implora l'uno o l'altro. Alcune piattaforme non sono in grado di eseguire .NET, come certi smartphone e quindi J2ME ha una maggiore portabilità.

Nello spazio aziendale, di solito vedo questa decisione in base all'esperienza del team, o se è un nuovo gruppo / progetto, quindi l'esperienza dei suoi manager iniziali.

Nel mio team, abbiamo molti .NET e J2EE. Questo è principalmente per il motivo che ci sono diversi punti di forza in termini di progetti open source esistenti che possiamo usare; e abbiamo piattaforme di runtime dei fornitori che richiedono l'una o l'altra. Facciamo tutta la nostra interfaccia utente in .NET; la maggior parte della nostra piattaforma di integrazione e ricerca è ospitata su Java. Il nostro middleware è una borsa mista. Sono sicuro che questo sconvolge alcune persone, ma ci dà molta flessibilità e ci risparmia un sacco di tempo alla fine perché possiamo sfruttare i migliori prodotti nel loro dominio problematico, non solo sulla nostra piattaforma.

    
risposta data 03.12.2010 - 15:07
fonte
0

Se sei interessato alla programmazione degli smart phone, Android esegue Java, non C #. I telefoni Windows eseguiranno gli strumenti di sviluppo di Microsoft, ma Android ha già un'enorme quota di mercato e resta da vedere se i telefoni Windows 7 possano afferrare un pezzo significativo della torta per se stessi. Con Microsoft dietro di loro non puoi mai contarli a causa delle loro incredibili risorse. Tuttavia, fino a quando non ci sarà un certo grado di parità tra queste due piattaforme telefoniche, se si desidera programmare il telefono Android, è necessario scegliere Java. Dal momento che lo sviluppo di Objective-C / Cocoa non faceva parte della domanda che ho lasciato fuori dallo sviluppo di iPhone del mio post.

Per completezza dovrei sottolineare l'esistenza del progetto MonoDroid che ti permette di usare gli strumenti .NET per le applicazioni Android:

Come sviluppatore C #, dovresti imparare Java per svilupparlo per Android o usare invece MonoDroid?

Forse potrebbe essere considerato un contro-punto alla mia affermazione. Nota che MonoDroid non è gratuito rispetto a Eclipse / Java / Android SDK, e non dimenticare il costo di VS2010 e degli strumenti correlati.

    
risposta data 27.04.2011 - 08:36
fonte

Leggi altre domande sui tag