Keskeinen ero: Java on ohjelmointikieli, jota C-kieli on vaikuttanut. Se syntyy paljon syntaksista C- ja C ++: sta, mutta sillä on vähemmän matalan tason tiloja kuin kumpikin. Java on yleiskäyttöinen ohjelmointikieli, joka on suunniteltu siten, että sillä on vähemmän täytäntöönpano-riippuvuuksia edellisiin kieliin verrattuna. C #, joka tunnetaan myös nimellä C sharp, on objektorientoitu ohjelmointikieli. C # on moni-paradigma-ohjelmointikieli. C # perustuu C-ohjelmointikieleen. Se on alun perin kehittänyt Anders Hejlsberg Microsoftille käytettäväksi sen .NET-kehyksessä.

Java on kehittänyt James Gosling Sun Microsystemsissä ja julkaistiin vuonna 1995. Se julkaistiin alun perin Sun Microsystemsin Java-alustan keskeisenä osana. Sun on sittemmin lisensoinut suurimman osan Java-teknologioistaan GNU General Public License -sopimuksen nojalla. Tämä tarkoittaa, että kaikki GNU General Public License -lisenssin alainen lisenssi on avoimen lähdekoodin ja yleisesti saatavilla ilmaiseksi. Sun Microsystems sulautui lopulta Oracle Corporationiin.
Java on suunniteltu siten, että sama koodi toimii eri alustoilla. Kehittäjät voivat "kirjoittaa kerran, ajaa missä tahansa" (WORA). Näin ollen Java-sovellukset kootaan tyypillisesti bytecode-koodiksi. Tämän jälkeen Java-tavutunnusta sisältävä luokan tiedosto voidaan suorittaa missä tahansa Java Virtual Machine (JVM) -laitteessa. Tämä olisi riippumatta tietokoneen arkkitehtuurista.
Vuodesta 2012 Java on tullut yksi suosituimmista ohjelmointikielistä käytettäväksi. Tämä pätee erityisesti asiakas-palvelin-web-sovelluksiin. Monissa muissa järjestelmissä on kehitetty vaihtoehtoisia Sun-teknologioiden toteutuksia, kuten GNU Compiler for Java ja GNU Classpath.
C #, joka tunnetaan myös nimellä C sharp, on objektorientoitu ohjelmointikieli. C # on moni-paradigma-ohjelmointikieli. Siihen kuuluu vahva kirjoittaminen, pakollinen, julistava, toiminnallinen, menettelyllinen, yleinen, objektorientoitu (luokkakohtainen) ja komponenttikohtainen ohjelmointiala.
C # perustuu C-ohjelmointikieleen. Se on alun perin kehittänyt Anders Hejlsberg Microsoftille käytettäväksi sen .NET-kehyksessä. C # kieli hyväksyttiin myöhemmin standardina Ecma (ECMA-334) ja ISO (ISO / IEC 23270: 2006). C # on yksi ohjelmointikielistä, joka on suunniteltu yhteiseen kieliinfrastruktuuriin. C # on tarkoitettu yksinkertaiseksi, moderniksi, yleiskäyttöiseksi, objektorientoiduksi ohjelmointikieleksi.

- C # -kielen on tarkoitus olla yksinkertainen, moderni, yleiskäyttöinen, objektorientoitu ohjelmointikieli.
- Sen kielen ja niiden toteutusten tulisi tukea ohjelmistojen suunnitteluperiaatteita, kuten vahvaa tyyppitarkistusta, matriisirajojen tarkistusta, yrittämättömien muuttujien käyttökokeiden havaitsemista ja automaattista jätteiden keräämistä. Ohjelmiston kestävyys, kestävyys ja ohjelmoijan tuottavuus ovat tärkeitä.
- Kieli on tarkoitettu käytettäväksi sellaisten ohjelmistokomponenttien kehittämisessä, jotka sopivat käyttöön hajautetuissa ympäristöissä.
- Lähdekoodin siirrettävyys on erittäin tärkeää, samoin ohjelmoijan siirrettävyys, erityisesti niille ohjelmoijille, jotka jo tuntevat C- ja C ++: n.
- Kansainvälistymisen tukeminen on erittäin tärkeää.
- C # on tarkoitettu käytettäväksi sovellusten kirjoittamiseen sekä isännöityihin että sulautettuihin järjestelmiin, jotka vaihtelevat erittäin suurista, hienostuneista käyttöjärjestelmistä, aina hyvin pieniin omistettuihin toimintoihin asti.
- Vaikka C # -sovellukset on tarkoitus olla taloudellisia muistin ja prosessointitehon suhteen, kielen ei ollut tarkoitus kilpailla suoraan suorituskyvystä ja koosta C- tai kokoonpanokielellä.
Koska se perustuu C-kieleen, se on melko samanlainen. Se jakaa jopa joitakin synteettisiä yleissopimuksia C: n kanssa. C #: n haittana on kuitenkin se, että koska Microsoft on kehittänyt sen käytettäväksi sen .NET-kehyksessä, se toimii vain Microsoftin käyttöjärjestelmissä.
Joitakin eroja Java- ja C #: n välillä:
- C # tarjoaa enemmän tietotyyppejä kuin Java.
- C # sisältää enemmän primitiivisiä tietotyyppejä kuin Java.
- C # tukee operaattorin ylikuormitusta, kun taas Java ei.
- C # tukee tukityyppiä, kun taas Java ei.
- A # -tietotyypit C #: ssä ovat tukijalka.
- C # tarjoaa paremman version kuin Java.
- C # sallii parametrien välittämisen viittauksella käyttämällä ref-avainsanaa, kun taas Java sallii parametrien siirtämisen arvon perusteella.
- C # mahdollistaa muuttujien lukumäärän muuttamisen param-avainsanan avulla.
- C # tarjoaa staattisia konstruktoreita alustusta varten.
- C # antaa goto-ilmoituksen taukotiedotuksen sijaan.
- Massiivien julistus on erilainen C #: ssä kuin Java.
- Java-yleissopimus on asettaa yksi julkinen luokka kullekin tiedostolle ja jotkut kääntäjät vaativat tätä. C # sallii minkä tahansa lähdetiedoston järjestelyn.
- Java ei tue tapahtumia ja edustajia.
- Javaissa menetelmät ovat oletusarvoisesti virtuaalisia, mutta ne voidaan tehdä lopullisiksi. Vaikka C #: ssä ne ovat oletusarvoisesti sinetöityjä, mutta ne voidaan tehdä virtuaaliksi.
- C # ei ole tarkistanut poikkeuksia.
- Java ei salli käyttäjän määrittämien arvotyyppien luomista.
- Java: lla ei ole operaattoria ja muunnoksen ylikuormitusta.
- Java: lla ei ole iteraattorilohkoja iteraattoreiden yksinkertaiseen toteuttamiseen.
- Java: lla ei ole mitään LINQ: n kaltaista.
- Osittain johtuen siitä, että ei ole edustajia, Javailla ei ole mitään aivan samanlaista anonyymiä menetelmiä ja lambda-ilmaisuja.
- Java ei sisällä ilmaisupuita.
- C #: llä ei ole nimettömiä sisäisiä luokkia.
- Java: lla ei ole yhtään vastaavaa C # 3.0 nimettömät tyypit.
- Java: lla ei ole implisiittisesti kirjoitettuja paikallisia muuttujia.
- Java ei sisällä laajennusmenetelmiä.
- Java-ohjelmassa ei ole esi- ja kokoelma-alustuslausekkeita.
- Java: lla ei ole ominaisuuksia osana kieltä; he ovat yleissopimus saada / asettaa / on menetelmiä.
- Java ei vastaa "vaarallista" koodia.
- Java: n enumit ovat paljon enemmän objektiivisia.
- Java: lla ei ole esikäsittelyohjeita (#define, #if jne. C: ssä).
- Java ei vastaa C #: n ref ja out -arvoja parametrien ohittamiseksi viitteellä.
- Java ei vastaa osittaisia tyyppejä.
- C # -liitännät eivät voi ilmoittaa kenttiä.
- Java: lla ei ole allekirjoitettuja kokonaislukutyyppejä.
- Java: lla ei ole kielitukea desimaalityypille.
- Java: lla ei ole vastaavia arvoja, joita ei voida mitätöidä