Főbb különbség: A Java egy programozási nyelv, amelyet a C nyelv befolyásolt. A szintaxis nagy részét C és C ++ képezi, de kevesebb alacsony szintű létesítménye van. A Java egy általános célú programozási nyelv, amely a korábbi nyelvekhez képest kevesebb végrehajtási függőséggel rendelkezik. A C #, más néven C éles, egy objektum-orientált programozási nyelv. A C # egy több paradigmás programozási nyelv. A C # a C programozási nyelven alapul. Eredetileg Anders Hejlsberg fejlesztette ki a Microsoft számára .NET-keretrendszerében.
A Java-t James Gosling fejlesztette ki a Sun Microsystems-ben, és 1995-ben adták ki. Eredetileg a Sun Microsystems Java platformjának alapelemeként jelent meg. A Sun a Java-technológiák nagy részét a GNU Általános Nyilvános Licenc alapján újra engedélyezte. Ez azt jelenti, hogy a GNU General Public License által licencelt összes technológia nyílt forráskódú, és általában ingyenesen elérhető. A Sun Microsystems végül beolvadt az Oracle Corporation-be.
A Java-t úgy tervezték, hogy ugyanaz a kód különböző platformokon fusson. azaz a fejlesztők „egyszer írhatnak, bárhol futhatnak” (WORA). Ezért a Java alkalmazások tipikusan bytecode-ba vannak fordítva. A Java bytecode-ot tartalmazó osztályfájl ezután bármely Java virtuális gépen (JVM) futtatható. Ez a számítógép architektúrájától függetlenül lenne.
2012-től a Java az egyik legnépszerűbb programozási nyelv. Ez különösen igaz az ügyfél-szerver webalkalmazásokra. Sok más rendszer kifejlesztette a Sun technológiák alternatív megvalósítását, mint például a GNU Compiler for Java és a GNU Classpath.
A C #, más néven C éles, egy objektum-orientált programozási nyelv. A C # egy több paradigmás programozási nyelv. Tartalmazza az erős gépelési, imperatív, deklaratív, funkcionális, eljárási, általános, objektum-orientált (osztályalapú) és komponens-orientált programozási tudományágakat.
A C # a C programozási nyelven alapul. Eredetileg Anders Hejlsberg fejlesztette ki a Microsoft számára .NET-keretrendszerében. A C # nyelvet később az Ecma (ECMA-334) és az ISO (ISO / IEC 23270: 2006) szabványként hagyta jóvá. A C # a közös nyelvi infrastruktúra számára tervezett programozási nyelvek egyike. A C # egy egyszerű, modern, általános célú, objektum-orientált programozási nyelv.
- A C # nyelv egyszerű, modern, általános célú, objektum-orientált programozási nyelv.
- A nyelvnek és azok megvalósításának támogatnia kell a szoftverfejlesztési elveket, mint például az erős típusellenőrzés, a tömbhatárok ellenőrzése, a nem inicializált változók használatára irányuló kísérletek felderítése és az automatikus szemétgyűjtés. A szoftver robusztussága, tartóssága és programozói hatékonysága fontos.
- A nyelv az elosztott környezetben történő telepítésre alkalmas szoftverösszetevők kifejlesztésére szolgál.
- A forráskód hordozhatósága nagyon fontos, mint a programozó hordozhatósága, különösen azok számára, akik már ismerik a C és C ++ programokat.
- A nemzetközivé válás támogatása nagyon fontos.
- A C # alkalmas arra, hogy olyan alkalmazásokat írjon, amelyek mind a befogadott, mind a beágyazott rendszerekre vonatkoznak, kezdve a nagyon nagy, kifinomult operációs rendszereket használó rendszerekig, egészen a nagyon apró funkciókig.
- Bár a C # alkalmazások a memória és a feldolgozási teljesítmény követelményei tekintetében gazdaságosak, a nyelv nem a C és az összeszerelés nyelvével való közvetlen versenyre és méretre volt szánva.
Ahogy a C nyelvre épül, nagyon hasonlít rá. Még néhány szintaktikai konvenciót is megoszt a C-vel. Ugyanakkor a C # hátránya az, hogy mivel a Microsoft a .NET-keretrendszerben való használatra fejlesztette ki, csak a Microsoft operációs rendszereken működik.
Néhány különbség a Java és a C # között:
- A C # több adattípust biztosít a Java-hoz képest.
- A C # több primitív adattípust tartalmaz, mint a Java.
- A C # támogatja az operátor túlterhelését, míg a Java nem.
- A C # támogatja a sztrájk típusát, míg a Java nem.
- Az AII adattípusok a C # -ben vannak.
- A C # jobb verziójú, mint a Java.
- A C # lehetővé teszi, hogy a ref kulcsszó segítségével paramétereket adhassunk referenciaként, míg a Java lehetővé teszi a paraméterek érték szerinti átadását.
- A C # változó számú paramétert a param kulcsszó segítségével engedélyez.
- A C # statikus konstruktorokat biztosít az inicializáláshoz.
- A C # a szünetkiadás helyett goto nyilatkozatot ad.
- A tömbök deklarálása C-ben eltér a Java-hoz képest.
- A Java-egyezmény az, hogy minden egyes fájlba egy nyilvános osztályt helyezzen el, és néhány fordító ezt igényli. A C # bármilyen forrásfájl elrendezést tesz lehetővé.
- A Java nem támogatja az eseményeket és a küldötteket.
- Java-ban a módszerek alapértelmezés szerint virtuálisak, de véglegesíthetők. Míg a C #-ben alapértelmezés szerint lezárják őket, de virtuálisak lehetnek.
- A C # nem ellenőrizte a kivételeket.
- A Java nem teszi lehetővé a felhasználó által meghatározott értéktípusok létrehozását.
- A Java nem rendelkezik operátor- és konverziós túlterheléssel.
- A Java nem rendelkezik iterátor blokkokkal az iterátorok egyszerű beillesztéséhez.
- A Java nem rendelkezik semmilyen LINQ-val.
- Részben a delegátumok hiánya miatt a Java-nak nincs semmi, ami anonim módszert és lambda kifejezést tartalmaz.
- A Java nem rendelkezik kifejező fákkal.
- A C # nem rendelkezik névtelen belső osztályokkal.
- A Java nem azonos a C # 3.0 névtelen típusokkal.
- A Java nem tartalmaz implicit módon beírt helyi változókat.
- A Java nem rendelkezik kiterjesztési módszerekkel.
- A Java nem tartalmaz objektum- és gyűjtemény inicializáló kifejezéseket.
- A Java-nak nincs tulajdonságai a nyelv részeként; a get / set / is módszerek egyezménye.
- A Java nem felel meg a "nem biztonságos" kódnak.
- A Java enumjai sokkal objektívebbek.
- A Java nem rendelkezik előfeldolgozói irányelvekkel (#define, #if stb. A C # -nél).
- A Java nem felel meg a C # ref és out paramétereinek, ha a paramétereket referenciaként továbbítja.
- A Java nem felel meg a részleges típusoknak.
- A C # interfészek nem jelezhetnek mezőket.
- A Java nem rendelkezik aláírt egész számokkal.
- A Java nem támogatja a tizedes típusú nyelvi támogatást.
- A Java nem felel meg a nullable értéktípusoknak