Java raggiungerà C #? [chiuso]

17

Oggi ho postato una domanda che chiedeva su quale lingua C # o Java sarebbe stato meglio per me studiare. Ho avuto delle ottime risposte. Una cosa che è venuta fuori è che forse Java ora è piuttosto dietro C # con nuove funzionalità. Ho visto alcuni collegamenti web e la maggior parte ha sottolineato cosa C # aveva e cosa Java non aveva.

Quindi la mia domanda a tutti voi è che Java raggiungerà di nuovo C #? E se tu dovessi indovinare dove sarebbe tra 5 anni. Avrebbe forse tutte le cose che forse mancano? Che ne dici di Java 7?

    
posta MandyNelson 31.03.2011 - 15:52
fonte

9 risposte

32

Le funzionalità linguistiche sono una parte molto piccola di ciò che rende Java e C # spuntano. In definitiva si tratta di parti di ecosistemi J2EE e .NET più grandi.

Entrambi hanno i loro punti di forza e dovrebbero diventare più grandi nei prossimi 5 anni.

    
risposta data 31.03.2011 - 16:08
fonte
16

Avrei detto fino a quando Oracle non è entrato nella foto. Il che è triste, perché mi è piaciuto molto il salto di qualità nelle funzionalità Java e C # negli ultimi sei anni circa.

    
risposta data 31.03.2011 - 15:55
fonte
6

Come linguaggio, non espongo Java per aggiungere innovazione a un ritmo significativo, principalmente perché quelli della comunità open source all'avanguardia sono più propensi a concentrarsi sui linguaggi JVM più recenti, come Scala , Clojure, Groovy, JRuby e JPython.

Inoltre, l'impegno di Java nella retrocompatibilità significa che l'aggiunta di funzionalità linguistiche è intrinsecamente più difficile rispetto ai giorni precedenti della lingua.

    
risposta data 31.03.2011 - 16:14
fonte
5

Il grande punto interrogativo qui è Oracle. Sun ha davvero rallentato le cose per Java nell'ultimo mezzo decennio circa. La speranza di molti nella comunità di Java era che Sun avrebbe spento Java o lo avrebbe venduto a qualcuno che avrebbe messo molte risorse e sforzi. Mentre Oracle certamente potrebbe farlo, è una grande azienda con molti gruppi con i propri interessi. La mia ipotesi, ed è solo che, suppongo, Oracle lascerà che Java stagnerà e lo userà principalmente come strumento per le azioni legali sui brevetti.

Forse lo venderanno a Google per una grossa somma di denaro e tutti saranno felici. È nelle mani di consigli di amministrazione e avvocati piuttosto che ingegneri e progettisti di software.

Dal lato positivo, anche senza miglioramenti, Java è un buon linguaggio e ha un bel ecosistema attorno. Mentre personalmente preferisco C # e il mondo .net, Java è ancora un'ottima scelta. Andando avanti, il tempo dirà, ma a partire da ora, Java non è affatto male. (Librerie di data e ora escluse ... wow, sono sempre brutte e disordinate)

    
risposta data 31.03.2011 - 17:03
fonte
4

Non c'è niente da recuperare, quindi la domanda non ha senso.

Solo perché Java non replica esattamente C # non significa che sia "inferiore" in qualche modo, è solo diverso. Potrebbe anche chiedere quando C # "recupererà" con Cobol.

    
risposta data 31.03.2011 - 16:34
fonte
4

La questione se C # o Java sia in anticipo rispetto agli altri è in discussione, ma invece di focalizzarmi sulle caratteristiche linguistiche dell'uno o dell'altro preferirei concentrarmi su ciò che è coinvolto con l'evoluzione di una lingua . Il fatto è che non credo che qualcuno possa discutere: Java è più vecchio di C #.

Problemi con la modifica di come funziona una lingua:

  1. Se rompi la compatibilità a ritroso, fai incazzare molti sviluppatori
  2. Se incolli i tuoi sviluppatori, passano a un'altra lingua che li supporta meglio. Quindi, nessun motivo per continuare a lavorare con la lingua.
  3. Java ha preso alcune decisioni di progettazione in anticipo con la pressione per introdurre la lingua sul mercato. La speranza era di tornare indietro e riempire alcuni degli spazi vuoti. Queste decisioni continuano ad affliggere la lingua perché i manutentori non vogliono violare il primo punto.
  4. Java ha infiammato un sacco di nuovi territori, e ha dimostrato una volta per tutte che un linguaggio spazzatura può essere preso sul serio - e funziona abbastanza bene per la maggior parte delle persone.
  5. C # è arrivato più tardi e ha imparato molte delle lezioni in cui si è imbattuto Java, quindi sono stati in grado di evitare alcune delle limitazioni tecniche che Java ha a causa del punto 3.
  6. Le nuove funzionalità linguistiche devono risolvere un problema reale in modo sensato. Non tutte le funzionalità linguistiche hanno senso nel contesto della lingua in cui stai cercando di aggiungerla. Questo è il motivo per cui, nonostante le loro somiglianze, Java e C # continueranno a essere lingue diverse.

Quindi C # ha più funzioni linguistiche di Java? Credo di si. Sono utili? Credo di si. Significa che C # è migliore o più maturo di Java? Che non sono d'accordo. Sono diversi, semplici e semplici. Java non avrà mai tutte le caratteristiche di C # in quanto C # non avrà mai tutte le funzionalità di Java.

Una delle funzionalità di Java, la possibilità di scrivere un programma su Windows e distribuirlo su Unix o Mac, non avverrà mai direttamente dal supporto di Microsoft. Perchè lo chiedi? Non è perché Microsoft è il male (che sia vero o no non mi interessa davvero). È perché hanno imparato una lezione che Sun non ha mai fatto: scrivere una volta eseguito ovunque si adatta ai sistemi operativi e all'hardware. Se ti interessa fare soldi con le vendite del tuo sistema operativo, non vuoi renderlo banale da scambiare e continuare a far funzionare un'applicazione. Se lo hai fatto, non puoi ottenere alcun profitto dal sistema operativo perché ci sono sempre opzioni più economiche.

    
risposta data 31.03.2011 - 20:10
fonte
1

Java non ha davvero bisogno di nuove "funzionalità" più di quanto non faccia C o C ++. È un linguaggio ben progettato per lo sviluppo orientato agli oggetti. Le aggiunte che possono essere fatte sono nella creazione di librerie per l'esecuzione di una vasta gamma di attività. Lo stesso vale per C #: la maggior parte delle funzionalità vengono aggiunte per fare in modo che il linguaggio faccia più cose. Personalmente penso che la maggior parte di queste funzionalità non siano necessarie - i puntatori in OO sono davvero così voluminosi a meno che tu non stia lavorando a livello hardware (a quel punto è probabilmente meglio usare qualcosa come C). Inoltre, l'esecuzione in una VM dovrebbe rendere difficile l'accesso diretto all'hardware, se non impossibile.

Unix ha iniziato la tendenza a creare moduli che facciano una una cosa molto bene. Penso che entrambi Java e C # stanno diventando un po 'sfortunati per quanto riguarda la funzionalità. È meglio creare un nucleo facilmente estendibile rispetto a un gigantesco "linguaggio" multiuso che è più simile a un quadro. Per me , Java soddisfa questo requisito meglio di C #.

    
risposta data 31.03.2011 - 17:05
fonte
1

Non c'è niente di sbagliato in molte delle funzionalità aggiunte da C #, ma data la velocità con cui stanno cambiando la lingua, rendono consapevolmente difficile se non impossibile per Mono mantenere il passo. Se è così, allora dico che stiamo aspettando che C # raggiunga Java in termini di gamma di sistemi a cui può essere distribuito. Non è sufficiente eseguire solo su Windows.

    
risposta data 31.03.2011 - 19:30
fonte
0

Non avvierò un forum di discussione, ma penso che Java fosse qui molto prima di C # e, a tale proposito, C # sembra più una replica di java.

Per quanto riguarda l'analisi della tua domanda: Java e C # sono lingue diverse, quindi non puoi confrontarle solo con le loro caratteristiche. Quello che puoi fare in Java potresti non farlo in C # e in vica versa.

Quindi finalmente questo è come avviare un argomento Windows vs Linux.

    
risposta data 31.03.2011 - 20:25
fonte

Leggi altre domande sui tag