Rozdíl mezi C++ a Java
Klíčový rozdíl mezi C++ a Java
- C++ používá pouze kompilátor, zatímco Java používá jak kompilátor, tak interpret.
- C++ podporuje přetížení operátorů i přetížení metod Java podporuje pouze přetížení metody.
- C++ podporuje ruční správu objektů pomocí klíčových slov new a delete Java má vestavěný automatický sběr odpadu.
- C++ podporuje struktury zatímco Java nepodporuje struktury.
- C++ zatímco podporuje odbory Java nepodporuje odbory.
Co je C++ Jazyk?
C++ je počítačový programovací jazyk, který obsahuje funkci programovacího jazyka C a také Simula67 (první objektově orientovaný jazyk). C++ představil koncept třídy a objektů.
Zapouzdřuje jazykové rysy vysoké a nízké úrovně. Je tedy považován za jazyk střední úrovně. Dříve se nazýval „C s třídami“, protože měl všechny vlastnosti jazyka C.
Co je Java Jazyk?
Java je programovací jazyk vyvinutý společností Sun Microsystems. Tento jazyk vyvinul malý tým vývojářů softwaru. Byli známí jako Zelený tým, který inicioval Java jazyk v roce 1991.
Historie C++
C++ jazyk vyvinul Bjarne Stroustrup z AT & T Bell Laboratories. Stroustrup byl velkým zastáncem C a obdivovatelem Simula67. Chtěl spojit to nejlepší z obou jazyků. Jeho cílem bylo vytvořit jazyk, který podporuje objektově orientované programovací funkce a stále si zachovává sílu C. Výsledkem bylo C++.
Historie Java
Jedno Java jazyk byl zpočátku nazýván OAK. Původně byl vyvinut pro manipulační zařízení a set-top boxy. Dub byl obrovským selháním. V roce 1995 tedy Sun změnil název na Java a upravili jazyk tak, aby využili výhody rozvíjejícího se vývoje World Wide Web.
Later, v roce 2009, Oracle Společnost získala Sun Microsystems a převzala vlastnictví dvou klíčových softwarových aktiv Sun: Java a Solaris.
Rozdíl mezi C++ a Java
Parametr | C++ | Java |
---|---|---|
Vztah | Žádný striktní vztah mezi názvy tříd a názvy souborů. V C++, hlavičkové soubory a implementační soubory se používají pro konkrétní třídu. | Je vynucován striktní vztah, např. zdrojový kód pro třídu PayRoll musí být v PayRoll.java. |
Vstupní mechanismus | I/O příkazy používané in a cout, např. v » x; cout« y; | Mechanismus vstupu I/O je poměrně složitý, protože čte jeden bajt po druhém (System.in). Výstup je snadný, např. System.out.println(x); |
Překladač a tlumočník | C++ podporuje pouze kompilátor | Java podporuje jak kompilátor, tak interpret |
Kompatibilita s jinými jazyky | Kompatibilní se zdrojovým kódem C, kromě některých výjimečných případů. | Žádná zpětná kompatibilita s jakýmkoli předchozím jazykem. Syntaxe je ovlivněna C/C++. |
Kontrola přístupu a ochrana objektů | Flexibilní model s trvalou ochranou | Těžkopádný model podporuje slabé zapouzdření. |
Pojem | Napište jednou zkompilujte kdekoli | Napište jednou spusťte kdekoli a všude |
Podpora pro typ programování | Umožňuje jak procedurální programování, tak objektově orientované programování. | Podpora objektově orientovaného programovacího modelu. |
Rozhraní | Umožňuje přímá volání do nativních systémových knihoven. | Volejte pouze přes Java Nativní rozhraní a nedávno Java Nativní přístup |
Správa paměti | Přístupné pro programátora | Systém řízen |
Kořenová hierarchie | C++ taková kořenová hierarchie neexistuje. C++ podporuje procedurální i objektově orientované programování; proto se nazývá hybridní jazyk. | Java je čistě objektově orientovaný programovací jazyk. To je. Proč se řídí jedinou kořenovou hierarchií. |
Nejlepší vlastnosti | C++ podporuje objektově orientované funkce Funkce procedurálního programování. | Java podporovat automatický sběr odpadu. Nepodporuje destruktory jako C++ ano. |
Přejít na prohlášení | C++ má prohlášení goto. I když není ideální použít příkaz goto. | Java nemá žádné goto prohlášení. Klíčová slova got a const jsou rezervována, i když nejsou použita. |
Vícenásobné dědictví | C++ poskytnout vícenásobnou dědičnost. Klíčové slovo virtual se používá k řešení problémů během vícenásobné dědičnosti, pokud nějaké existují. | Java neposkytuje vícenásobné dědictví. |
Operátor rozlišení rozsahu | C++ má operátor rozlišení rozsahu (: :) který se používá k definování metody mimo třídu ak přístupu ke globální proměnné v rámci oboru, kde také existuje lokální proměnná se stejným názvem. |
Žádný operátor rozlišení rozsahu (: :) in Java. Definice metod se musí vyskytovat v rámci třídy, takže není potřeba rozlišení rozsahu. |
Podpůrná metoda | C++ podporuje přetížení obou metod i přetížení operátorů | Java podporuje pouze přetížení metody. Neposkytuje podporu pro přetížení operátora. |
Přenositelnost | Zdroj musí být překompilován pro platformu; kód tedy není přenosný. | Třídy bajtového kódu jsou přenosné do JVM specifických pro platformu. |
Sémantika typů | Konzistentní mezi primitivními a objektovými typy. | Liší se u primitivních a objektových typů. |
knihovny | Funkčnost převážně nízké úrovně | Masivní, třídy pro služby na vysoké úrovni. |
Detekce běhových chyb | Zodpovědnost programátora. | Systémová odpovědnost. |
Funkce a data | Funkce a data mohou existovat mimo jakoukoli třídu, k dispozici jsou globální rozsahy a obory názvů. | Všechny funkce a data existují uvnitř tříd; rozsah balíčku je k dispozici. |
Plošina | C++ programy jsou závislé na platformě. Je třeba je zkompilovat pro konkrétní platformu. | Java programy jsou nezávislé na platformě. Java programy jsou napsány pro Java Virtuální stroj (JVM). Poběží bez nutnosti rekompilace. |
Detekce běhových chyb | In C++, Za kontrolu chyb odpovídá programátor. | Je odpovědností systému zkontrolovat chyby v programu. |
ukazatel | C++ podpora ukazatelů. | Java nabízí pouze omezenou podporu pro ukazatele. |
Struktura | Podporuje struktury. | Nepodporuje struktury. |
Odbory | C++ podporuje odbory. | Java nepodporuje odbory. |
Správa objektů | C++ podporuje ruční správu objektů pomocí klíčových slov new a delete. | Java je těžká, závisí na automatickém sběru odpadu. Nepodporuje destruktory. |