c vs java top 30 differences between c
Tento podrobný výukový program vysvetľuje niektoré kľúčové rozdiely medzi dvoma objektovo orientovanými programovacími jazykmi C ++ Vs Java:
C ++ a Java sú objektovo orientované programovacie jazyky. Oba jazyky sa však v mnohom líšia.
Jazyk C ++ je odvodený od jazyka C a má vlastnosti procedurálnych aj objektovo orientovaných programovacích jazykov. C ++ bol navrhnutý pre vývoj aplikácií a systémov.
Java je postavená na virtuálnom stroji, ktorý je vo svojej podstate veľmi bezpečný a vysoko prenosný. Je zoskupená s komplexnou knižnicou, ktorá poskytuje podporu pre abstrakciu existujúcej platformy.
Java bola navrhnutá hlavne pre programovanie aplikácií a má funkčnosť tlmočníka pre tlačové systémy, ktorá sa neskôr vyvinula do sieťových výpočtov.
Navrhované čítanie => Sprievodca školením v C ++ pre všetkých
Čo sa dozviete:
- Kľúčové rozdiely medzi C ++ Vs Java
- Tabuľkový formát: C ++ Vs Java
- Často kladené otázky v jazykoch C ++ a Java
- Záver
- Odporúčané čítanie
Kľúčové rozdiely medzi C ++ Vs Java
Teraz si ukážeme niekoľko kľúčových rozdielov medzi jazykom C ++ Vs Java a postupujeme ďalej
návod.
# 1) Platforma Nezávislosť
C ++ | Java | ||
---|---|---|---|
7 | Knižničné rozhranie | Umožňuje priame volania do natívnych systémových knižníc. | Hovory iba prostredníctvom rozhrania Java Native a Java Native Access. |
C ++ je jazyk závislý od platformy. Zdrojový kód napísaný v C ++ je potrebné kompilovať na každej platforme. | Java je nezávislá na platforme. Po zostavení do bajtového kódu ho možno vykonať na ľubovoľnej platforme. |
# 2) Kompilátor a tlmočník
C ++ | Java |
---|---|
C ++ je kompilovaný jazyk. Zdrojový program je napísaný v C ++ je skompilovaný do objektového kódu, ktorý potom možno vykonať na vytvorenie výstupu. | Java je kompilovaný a interpretovaný jazyk. Kompilovaný výstup zdrojového kódu Java je bajtový kód nezávislý na platforme. |
# 3) Prenosnosť
C ++ | Java |
---|---|
Kód C ++ nie je prenosný. Musí byť zostavený pre každú platformu. | Java však prekladá kód do bytového kódu. Tento bajtový kód je prenosný a je možné ho vykonať na ľubovoľnej platforme. |
# 4) Správa pamäte
C ++ | Java |
---|---|
Správa pamäte v C ++ je manuálna. Potrebujeme alokovať / deallocate pamäť manuálne pomocou operátorov new / delete. | V prostredí Java je správa pamäte riadená systémom. |
# 5) Viacnásobné dedičstvo
C ++ | Java |
---|---|
Jazyk C ++ podporuje rôzne typy dedičstiev vrátane jednoduchého a viacerých dedičstiev. Aj keď existujú problémy vyplývajúce z viacerých dedičstiev, program C ++ na riešenie problémov používa kľúčové slovo virtual. | Java, podporuje iba jedno dedičstvo. Účinky viacnásobného dedičstva je možné dosiahnuť pomocou rozhraní v prostredí Java. |
# 6) Preťaženie
C ++ | Java |
---|---|
V C ++ môžu byť metódy a operátory preťažené. Toto je statický polymorfizmus. | V prostredí Java je povolené iba preťaženie metód. Neumožňuje preťaženie operátora. |
# 7) Virtuálne kľúčové slovo
C ++ | Java |
---|---|
Ako súčasť dynamického polymorfizmu sa v jazyku C ++ používa kľúčové slovo virtual s funkciou na označenie funkcie, ktorú je možné v odvodenej triede prepísať. Týmto spôsobom môžeme dosiahnuť polymorfizmus. | V Jave virtuálne kľúčové slovo absentuje. V Jave však možno predvolene prepísať všetky nestatické metódy. Alebo zjednodušene povedané, všetky nestatické metódy v Jave sú predvolene virtuálne. |
# 8) Ukazovatele
C ++ | Java |
---|---|
C ++ je predovšetkým o ukazovateľoch. Ako sme už videli v tutoriáloch, C ++ má silnú podporu pre ukazovatele a pomocou ukazovateľov môžeme robiť veľa užitočného programovania. | Java má obmedzenú podporu ukazovateľov. Spočiatku bola Java úplne bez ukazovateľov, ale neskoršie verzie začali pre ukazovatele poskytovať obmedzenú podporu. Ukazovatele v Jave nemôžeme používať tak príjemne, ako v C ++. |
# 9) Dokumentačný komentár
C ++ | Java |
---|---|
C ++ nemá podporu pre komentáre k dokumentácii. | Java má zabudovanú podporu pre komentáre k dokumentácii (/ ** ... * /). Takto môžu mať zdrojové súbory Java vlastnú dokumentáciu. |
# 10) Podpora vlákien
C ++ | Java |
---|---|
C ++ nemá zabudovanú podporu vlákien. Väčšinou sa spolieha na vláknové knižnice tretích strán. | Java má zabudovanú podporu vlákien s triedou „vlákno“. Môžeme dediť triedu vlákien a potom prepísať metódu spustenia. |
Niektoré ďalšie rozdiely ...
# 11) Koreňová hierarchia
C ++ je procedurálny aj objektovo orientovaný programovací jazyk. Preto nenásleduje nijakú konkrétnu koreňovú hierarchiu.
Java je čistý objektovo orientovaný programovací jazyk a má jednu koreňovú hierarchiu.
# 12) Vzťah medzi zdrojovým kódom a triedou
V jazyku C ++ nemajú zdrojový kód ani názov súboru žiadny vzťah. To znamená, že v programe C ++ môžeme mať veľa tried a názov súboru môže byť akýkoľvek. Nemusí to byť rovnaké ako názvy tried.
V prostredí Java existuje úzky vzťah medzi triedou zdrojového kódu a názvom súboru. Trieda obsahujúca zdrojový kód a názov súboru by mala byť rovnaká.
Napríklad , ak máme v Jave triedu s názvom plat, potom názov súboru, ktorý obsahuje tento kód triedy, by mal byť „plat.java“.
# 13) Koncepcia
Koncept programov C ++ je napísaný raz a kompiluje sa kdekoľvek, pretože C ++ nie je nezávislý na platforme.
Naopak, pre programy Java je napísaný jednorazovo, beží všade a kdekoľvek, pretože bajtový kód generovaný kompilátorom Java je nezávislý na platforme a je možné ho spustiť na akomkoľvek počítači.
# 14) Kompatibilita s inými jazykmi
Jazyk C ++ je postavený na jazyku C. Jazyk C ++ je kompatibilný s väčšinou ostatných jazykov na vysokej úrovni.
Java nie je kompatibilný s inými jazykmi. Pretože sa Java inšpirovala jazykmi C a C ++, jej syntax je podobná týmto jazykom.
# pätnásť) Typ programovacieho jazyka
C ++ je procedurálny aj objektovo orientovaný programovací jazyk. Preto má C ++ vlastnosti špecifické pre procedurálne jazyky, ako aj vlastnosti objektovo orientovaného programovacieho jazyka.
Java je úplne objektovo orientovaný programovací jazyk.
# 16) Knižničné rozhranie
C ++ umožňuje priame volania do natívnych systémových knižníc. Preto je vhodnejšia na programovanie na systémovej úrovni.
Java nemá podporu priamych hovorov do svojich natívnych knižníc. Knižnice môžeme volať cez natívne rozhranie Java alebo natívny prístup Java.
# 17) Rozlišujúce vlastnosti
Charakteristické znaky C ++ sú súvisiace s procedurálnymi jazykmi a objektovo orientovaným jazykom.
kde nájdem kľúč zabezpečenia siete na mojom smerovači
Automatický zber odpadu je charakteristickým znakom Java. Medzitým Java nepodporuje deštruktory.
# 18) Sémantika typu
Pokiaľ ide o sémantiku typov pre C ++, primitívne a objektové typy sú konzistentné.
Ale pre Javu neexistuje konzistencia medzi primitívnym a objektovým typom.
# 19) Vstupný mechanizmus
C ++ používa cin a cout spolu s „>>“ a „<<’ operators respectively to read in and write the data.
V Jave sa na vstup-výstup používa trieda System. Na načítanie vstupu sa používa System.in, ktorý číta naraz jeden bajt. Na zápis výstupu sa používa konštrukt System.out.
#twenty) Kontrola prístupu a ochrana objektov
C ++ má flexibilný model pre objekty so špecifikátormi prístupu riadiacimi prístup a silným zapuzdrením zaisťujúcim ochranu.
Java má pomerne ťažkopádny objektový model so slabým zapuzdrením.
#dvadsaťjeden) Choďte na vyhlásenie
C ++ podporuje príkaz goto, ale jeho použitie by sa malo minimalizovať, aby sa zabránilo následkom jeho použitia v programe.
Java neposkytuje podporu príkazu goto.
# 22) Prevádzkovateľ riešenia rozsahu
Operátor rozlíšenia rozsahu sa používa na prístup k globálnym premenným a na definovanie metód mimo triedy.
C ++ podporuje operátora rozlíšenia rozsahu, pretože ho používa na prístup k globálnym premenným. Umožňuje nám tiež definovať funkcie mimo triedy a pristupovať k nim pomocou operátora rozlíšenia rozsahu.
Na rozdiel od toho Java nepodporuje operátora rozlíšenia rozsahu. Java tiež neumožňuje definovať funkcie zvonka. Všetko, čo súvisí s programom vrátane hlavnej funkcie, musí byť v rámci triedy.
# 2. 3) Vyskúšajte / Chyťte blok
V C ++ môžeme blok try / catch vylúčiť, aj keď vieme, že by kód mohol spôsobiť výnimku.
Ak sme si však v Jave istí, že kód vyvolá výnimku, musíme tento kód zahrnúť pod blok try / catch. Výnimky sa v Jave líšia, pretože nepodporuje deštruktory.
# 24) Detekcia chýb za behu
V C ++ je detekcia chýb za behu zodpovednosťou programátora.
V Jave je detekcia runtime chýb riadená systémom.
# 25) Jazyková podpora
Vďaka svojej blízkosti k hardvéru a knižniciam, ktoré umožňujú prístup k systémovým prostriedkom, je C ++ vhodnejší na programovanie systému, aj keď v C ++ máme vyvinutú širokú škálu aplikácií vrátane databázových, podnikových, herných atď.
# 26) Dáta a funkcie
C ++ má globálny rozsah aj rozsah menného priestoru. Dáta a funkcie teda môžu existovať aj mimo triedy.
V prostredí Java musia byť všetky údaje a funkcie v tejto triede. Neexistuje žiadny globálny rozsah, môže však existovať rozsah balíkov.
# 27) Štruktúry a odbory
Štruktúry a únie sú dátové štruktúry, ktoré môžu mať členov s rôznymi typmi údajov. C ++ podporuje obidve štruktúry a odbory.
Java však nepodporuje štruktúry ani odbory.
# 28) Správa objektov
V C ++ sa objekty spravujú manuálne. Vytváranie a ničenie objektov sa vykonáva ručne pomocou operátorov new a delete. Pre objekty triedy používame tiež konštruktory a deštruktory.
Java nepodporuje deštruktory, aj keď podporuje konštruktory. Java je tiež silne závislá na automatickom zbere odpadu pre zhromažďovanie a ničenie objektov.
# 29) Prechod parametrov
Pass by Value a pass by reference sú dva dôležité techniky odovzdávania parametrov používané v programovaní. C ++ podporuje obe tieto techniky.
Java však podporuje iba odovzdávanie hodnotovej techniky odovzdávania parametrov.
# 30) Hardware
C ++ je blízky hardvéru a má veľa knižníc, ktoré môžu manipulovať s hardvérovými prostriedkami. Pre svoju blízkosť k hardvéru sa C ++ často používa na programovanie systému, herné aplikácie, operačný systém a kompilátory.
Java je väčšinou jazyk pre vývoj aplikácií a nie je blízka hardvéru.
Tabuľkový formát: C ++ Vs Java
Ďalej je uvedená tabuľková reprezentácia porovnania medzi C ++ a Java, o ktorej sme už hovorili.
Nie. | Parameter porovnania | C ++ | Java |
---|---|---|---|
1 | Nezávislosť na platforme | C ++ je závislé na platforme. | Java je nezávislá na platforme. |
dva | Kompilátor a tlmočník | C ++ je kompilovaný jazyk. | Java je kompilovaný a interpretovaný jazyk. |
3 | Vzťah medzi zdrojovým kódom a triedou | Žiadny prísny vzťah s názvami tried a názvami súborov. | Presadzuje prísny vzťah medzi názvom triedy a názvom súboru. |
4 | Koncepcia | Píšte raz zostavené kdekoľvek. | Píšte raz, kdekoľvek a kdekoľvek. |
5 | Kompatibilita s inými jazykmi | Kompatibilné s C okrem objektovo orientovaných funkcií. | Syntax je prevzatá z C / C ++. Žiadna spätná kompatibilita s iným jazykom. |
6 | Typ programovacieho jazyka | Procedurálne a objektovo zamerané. | Objektovo orientovaný. |
8 | Koreňová hierarchia | Žiadna koreňová hierarchia. | Sleduje hierarchiu jednotlivých koreňov. |
9 | Rozlišujúce vlastnosti | Podporuje procedurálne aj objektovo orientované funkcie. | Žiadni ničitelia. Automatický zber odpadu. |
10 | Prenosnosť | Kód C ++ nie je prenosný. | Java je prenosná. |
jedenásť | Sémantika typu | Konzistentné medzi primitívnymi a objektovými typmi. | Nie je v súlade. |
12 | Vstupný mechanizmus | Pre I / O sa používajú Cin a Cout. | System.in a System.out.println |
13 | Kontrola prístupu a ochrana objektov | Flexibilný objektový model a dôsledná ochrana. | Objektový model je ťažkopádny a zapuzdrenie je slabé. |
14 | Správa pamäte | Príručka | Riadené systémom. |
pätnásť | Viacnásobné dedičstvo | Prítomný | Absentuje |
16 | Choďte na vyhlásenie | Podporuje vyhlásenie Goto. | Nepodporuje vyhlásenie goto. |
17 | Prevádzkovateľ riešenia rozsahu | Prítomný | Absentuje |
18 | Vyskúšajte / Chyťte blok | Môže vylúčiť blokovanie pokusov / úlovkov. | Nie je možné vylúčiť, ak má kód vyvolať výnimku. |
19 | Preťaženie | Podporuje preťaženie operátorov a metód. | Nepodporuje preťaženie operátora. |
dvadsať | Virtuálne kľúčové slovo | Podporuje virtuálne kľúčové slovo, ktoré uľahčuje prepísanie. | Žiadne virtuálne kľúčové slovo, všetky nestatické metódy sú predvolene virtuálne a je možné ich prepísať. |
dvadsaťjeden | Detekcia chýb za behu | Ponechané programátorovi. | Zodpovednosť systému |
22 | Jazyková podpora | Používa sa hlavne na programovanie systému. | Používa sa hlavne na programovanie aplikácií. |
2. 3 | Dáta a funkcie | Údaje a funkcie existujú mimo triedy. Podporované sú globálne a rozsahy menného priestoru. | Údaje a funkcie sú prítomné iba vo vnútri triedy, rozsah balíka je k dispozícii. |
24 | Ukazovatele | Podporuje ukazovatele. | Iba obmedzená podpora ukazovateľov. |
25 | Štruktúry a odbory | Podporované | Nie je podporované |
26 | Správa objektov | Manuálna správa objektov s novými a vymazanými. | Automatická správa objektov pomocou zberu odpadu. |
27 | Prechod parametrov | Podporuje volanie podľa hodnoty a volanie podľa referencie. | Podporuje iba volanie podľa hodnoty. |
28 | Podpora nití | Podpora vlákna nie je príliš silná, spolieha sa na tretiu stranu. | Veľmi silná podpora nití. |
29 | Hardware | Bližšie k hardvéru. | Nie veľmi interaktívne s hardvérom. |
30 | Komentár k dokumentácii | Nepodporuje komentár k dokumentácii. | Podporuje komentár k dokumentácii (/ ** ... * /), ktorý vytvára dokumentáciu pre zdrojový kód Java. |
Doteraz sme detailne videli kľúčové rozdiely medzi C ++ a Java. Nasledujúca časť odpovie na niektoré často kladené otázky týkajúce sa jazykov C ++ a Java v programovacom svete.
Často kladené otázky v jazykoch C ++ a Java
Otázka č. 1) Ktorý z nich je lepší v C ++ alebo Java?
Odpoveď: Nemôžeme s určitosťou povedať, čo je lepšie. C ++ aj Java majú svoje vlastné prednosti a nedostatky. Zatiaľ čo C ++ je väčšinou vhodný na programovanie systému, s Javou to nedokážeme. Ale Java vyniká v aplikáciách ako web, desktop atď.
C ++ v skutočnosti dokáže čokoľvek, od programovania systému, cez podnikanie až po hranie hier. Java dokáže viac z webu alebo z podnikania. Existujú niektoré aplikácie, ako sú niektoré programovacie aplikácie na nízkej úrovni alebo hry, atď., Ktoré nemožno nechať na vývoj Java.
Teda úplne záleží na tom, akú aplikáciu vyvíjame. Najlepším spôsobom je vopred vyhodnotiť výhody a nevýhody oboch jazykov a overiť ich jedinečnosť pre aplikáciu, ktorú vyvíjame, a potom dospieť k záveru, ktorá je najlepšia.
Otázka 2) Je C ++ výkonnejší ako Java?
Odpoveď: Opäť je to ošemetná otázka! Pokiaľ ide o to, ako ľahšia je syntax alebo učenie sa jazyka, Java boduje. Pokiaľ ide o programovanie systému a / alebo iné nízkoúrovňové aplikácie, program C ++ je výkonnejší.
Niektorí ľudia môžu namietať, že vďaka automatickému zhromažďovaniu GC, bez ukazovateľov a viacnásobného dedičstva je Java výkonnejšia.
Ale pokiaľ ide o rýchlosť, C ++ je výkonný. Aj v aplikáciách, ako je hranie hier, kde potrebujeme uložiť stav, môže automatické zhromažďovanie odpadkov úlohy zničiť. C ++ je tu teda zjavne výkonný.
Otázka č. 3) Môžeme sa naučiť jazyk Java bez znalosti jazyka C alebo C ++?
Odpoveď: Áno, určite!
Keď poznáme základy programovania a koncepcie objektovo orientovaného programovania, môžeme sa začať učiť Javu.
Otázka č. 4) Je C ++ ako Java?
Odpoveď: V niektorých ohľadoch áno, ale v niektorých ohľadoch nie.
Rovnako ako napríklad C ++ aj Java sú objektovo orientované programovacie jazyky. Môžu byť použité pre vývoj aplikácií. Majú podobnú syntax.
Ale v iných prípadoch, ako je správa pamäte, dedičnosť, polymorfizmus atď., Sú jazyky C ++ a Java úplne odlišné. Podobne, pokiaľ ide o primitívne dátové typy, manipuláciu s objektmi, ukazovatele atď., Obidva jazyky sú odlišné.
Otázka č. 5) Je Java napísaná v C ++?
Odpoveď: Java v zmysle Java Virtual Machine (JVM) od spoločností Sun a IBM sú písané v jazyku C ++. Knižnice Java sú v prostredí Java. Niektoré ďalšie JVM sú napísané v C.
Záver
C ++ a Java sú objektovo orientované programovacie jazyky. C ++ je navyše aj procedurálny jazyk. Existuje niekoľko funkcií, ako je dedičnosť, polymorfizmus, ukazovatele, správa pamäte atď., V ktorých sa obidva jazyky navzájom úplne líšia.
Existuje niekoľko charakteristík C ++, ako je blízkosť k hardvéru, lepšia správa objektov, rýchlosť, výkon atď., Vďaka ktorým je výkonnejší ako Java, a tak motivuje vývojárov, aby používali C ++ na programovanie na nízkej úrovni, vysokorýchlostné herné aplikácie, programovanie systému , atď.
Podobným spôsobom, vďaka ľahšej syntaxi Javy, automatickému zberu odpadu, nedostatku ukazovateľov, šablón atď., Je Java obľúbená pre webové aplikácie.
=> Celý zoznam tutoriálov C ++ nájdete tu .
Odporúčané čítanie
- Výukový program JAVA pre začiatočníkov: viac ako 100 praktických výučbových programov Java Video
- Výukový program pre rozhranie Java a abstraktnú triedu s príkladmi
- OOP Java: Úvod do objektovo orientovaného programovania v Jave
- Modifikátory prístupu v Jave - návod s príkladmi
- Nasadenie Java: Vytvorenie a vykonanie súboru Java JAR
- Úvod do programovacieho jazyka Java - videonávod
- Virtuálny stroj Java: Ako JVM pomáha pri spúšťaní aplikácií Java
- Výukový program Java Reflection s príkladmi