c vs java top 30 differences between c
Deze diepgaande zelfstudie legt enkele van de belangrijkste verschillen uit tussen twee objectgeoriënteerde programmeertalen C ++ versus Java:
C ++ en Java zijn beide objectgeoriënteerde programmeertalen. Toch verschillen beide talen in veel opzichten van elkaar.
C ++ is afgeleid van C en heeft de kenmerken van zowel procedurele als objectgeoriënteerde programmeertalen. C ++ is ontworpen voor applicatie- en systeemontwikkeling.
Java is gebouwd op een virtuele machine die zeer veilig en zeer draagbaar van aard is. Het is gegroepeerd met een uitgebreide bibliotheek om ondersteuning te bieden voor de abstractie van het bestaande platform.
Java is voornamelijk ontworpen voor applicatieprogrammering en heeft een functionaliteit van een tolk voor printsystemen die later werd ontwikkeld tot netwerkcomputers.
Voorgesteld lezen => C ++ Trainingsgids voor iedereen
Wat je leert:
- Belangrijkste verschillen tussen C ++ en Java
- Tabelformaat: C ++ versus Java
- Veelgestelde vragen in C ++ en Java
- Gevolgtrekking
- Aanbevolen literatuur
Belangrijkste verschillen tussen C ++ en Java
Laten we nu enkele van de belangrijkste verschillen tussen C ++ versus Java bespreken, terwijl we hiermee verder gaan
tutorial.
# 1) Platform Onafhankelijkheid
C ++ | Java | ||
---|---|---|---|
7 | Bibliotheekinterface | Maakt directe oproepen naar systeemeigen systeembibliotheken mogelijk. | Oproepen alleen via Java Native interface en Java Native Access. |
C ++ is een platformafhankelijke taal. De broncode geschreven in C ++ moet op elk platform worden gecompileerd. | Java is platformonafhankelijk. Eenmaal gecompileerd in bytecode, kan het op elk platform worden uitgevoerd. |
# 2) Compiler en tolk
C ++ | Java |
---|---|
C ++ is een gecompileerde taal. Het bronprogramma is geschreven in C ++ wordt gecompileerd in een objectcode die vervolgens kan worden uitgevoerd om een uitvoer te produceren. | Java is zowel een gecompileerde als een geïnterpreteerde taal. De gecompileerde uitvoer van een Java-broncode is een bytecode die platformonafhankelijk is. |
# 3) Draagbaarheid
C ++ | Java |
---|---|
C ++ -code is niet draagbaar. Het moet voor elk platform worden samengesteld. | Java vertaalt de code echter in bytecode. Deze bytecode is draagbaar en kan op elk platform worden uitgevoerd. |
# 4) Geheugenbeheer
C ++ | Java |
---|---|
Geheugenbeheer in C ++ is handmatig. We moeten geheugen handmatig toewijzen / ongedaan maken met behulp van de nieuwe / delete-operators. | In Java wordt het geheugenbeheer systeembestuurd. |
# 5) Meervoudige overerving
C ++ | Java |
---|---|
C ++ ondersteunt verschillende soorten overervingen, waaronder enkele en meervoudige overervingen. Hoewel er problemen zijn die voortkomen uit meerdere overervingen, gebruikt C ++ het virtuele sleutelwoord om de problemen op te lossen. | Java ondersteunt alleen eenmalige overerving. Effecten van meervoudige overerving kunnen worden bereikt met behulp van de interfaces in Java. |
# 6) Overbelasting
C ++ | Java |
---|---|
In C ++ kunnen methoden en operators worden overbelast. Dit is statisch polymorfisme. | In Java is alleen overbelasting van methoden toegestaan. Het staat overbelasting van de operator niet toe. |
# 7) Virtueel trefwoord
C ++ | Java |
---|---|
Als onderdeel van dynamisch polymorfisme wordt in C ++ het virtuele sleutelwoord gebruikt met een functie om de functie aan te geven die kan worden overschreven in de afgeleide klasse. Op deze manier kunnen we polymorfisme bereiken. | In Java ontbreekt het virtuele sleutelwoord. In Java kunnen echter standaard alle niet-statische methoden worden overschreven. Of in eenvoudige bewoordingen: alle niet-statische methoden in Java zijn standaard virtueel. |
# 8) Aanwijzingen
C ++ | Java |
---|---|
C ++ heeft alles te maken met aanwijzingen. Zoals we eerder in tutorials hebben gezien, heeft C ++ sterke ondersteuning voor pointers en kunnen we veel nuttig programmeren met pointers. | Java heeft beperkte ondersteuning voor verwijzingen. Aanvankelijk was Java volledig zonder verwijzingen, maar latere versies begonnen beperkte ondersteuning voor verwijzingen te bieden. We kunnen pointers in Java niet zo ontspannen gebruiken als in C ++. |
# 9) Documentatie Commentaar
C ++ | Java |
---|---|
C ++ ondersteunt geen documentatiecommentaar. | Java heeft een ingebouwde ondersteuning voor documentatiecommentaar (/ **… * /). Op deze manier kunnen Java-bronbestanden hun eigen documentatie hebben. |
# 10) Draadondersteuning
C ++ | Java |
---|---|
C ++ heeft geen ingebouwde thread-ondersteuning. Het is meestal afhankelijk van threading-bibliotheken van derden. | Java is ingebouwde thread-ondersteuning met een klasse 'thread'. We kunnen de thread-klasse overnemen en vervolgens de run-methode overschrijven. |
Nog enkele verschillen ...
# 11) Roothiërarchie
C ++ is zowel een procedurele als een objectgeoriënteerde programmeertaal. Daarom volgt het geen specifieke wortelhiërarchie.
Java is een pure objectgeoriënteerde programmeertaal en heeft een enkele roothiërarchie.
# 12 Broncode en klassenrelatie
In C ++ hebben zowel de broncode als de bestandsnaam geen relatie. Dit betekent dat we veel klassen in het C ++ -programma kunnen hebben en de bestandsnaam kan van alles zijn. Het hoeft niet hetzelfde te zijn als de klassenamen.
In Java is er een nauwe relatie tussen de broncodeklasse en de bestandsnaam. De klasse met de broncode en de bestandsnaam moeten hetzelfde zijn.
Bijvoorbeeld , als we een klasse in Java hebben met de naam salaris, dan moet de bestandsnaam die deze klassecode bevat “salaris.java” zijn.
# 13 Concept
Het concept achter C ++ -programma's is één keer geschreven en kan overal worden gecompileerd, aangezien C ++ niet platformonafhankelijk is.
Integendeel, voor Java-programma's wordt het één keer geschreven, overal en overal uitgevoerd, aangezien de bytecode die door de Java-compiler wordt gegenereerd, platformonafhankelijk is en op elke machine kan worden uitgevoerd.
# 14 Compatibiliteit met andere talen
C ++ is gebaseerd op C. De taal C ++ is compatibel met de meeste andere talen op hoog niveau.
Java is niet compatibel met andere talen. Omdat Java is geïnspireerd door C en C ++, is de syntaxis vergelijkbaar met deze talen.
#vijftien Type programmeertaal
C ++ is zowel een procedurele als objectgeoriënteerde programmeertaal. Daarom heeft C ++ functies die specifiek zijn voor proceduretalen, evenals kenmerken van objectgeoriënteerde programmeertaal.
Java is een volledig objectgeoriënteerde programmeertaal.
# 16 Bibliotheekinterface
C ++ maakt directe oproepen naar de native systeembibliotheken mogelijk. Daarom is het meer geschikt voor programmering op systeemniveau.
Java heeft geen directe oproepondersteuning voor zijn eigen bibliotheken. We kunnen de bibliotheken oproepen via Java Native Interface of Java Native Access.
# 17 Onderscheidende kenmerken
Kenmerken met betrekking tot de proceduretalen en objectgeoriënteerde taal zijn de onderscheidende kenmerken van C ++.
java j2ee interviewvragen en antwoorden voor ervaren
Automatische garbage collection is het onderscheidende kenmerk van Java. Ondertussen ondersteunt Java geen destructors.
# 18 Typ Semantiek
Wat betreft de semantiek van het type voor C ++ zijn primitieve typen en objecttypen consistent.
Maar voor Java is er geen consistentie tussen de primitieve en objecttypen.
# 19 Invoermechanisme
C ++ gebruikt cin en cout samen met ‘>>’ en ‘<<’ operators respectively to read in and write the data.
In java wordt de klasse System gebruikt voor invoer-uitvoer. Om de invoer te lezen, wordt System.in gebruikt dat één byte per keer leest. Het construct System.out wordt gebruikt om de uitvoer te schrijven.
#twintig) Toegangscontrole en objectbescherming
C ++ heeft een flexibel model voor objecten met toegangsspecificaties die de toegang regelen en sterke inkapseling die bescherming garandeert.
Java heeft een relatief omslachtig objectmodel met zwakke inkapseling.
#eenentwintig) Ga naar verklaring
C ++ ondersteunt de instructie goto, maar het gebruik ervan moet tot een minimum worden beperkt om de gevolgen van het gebruik ervan in een programma te voorkomen.
Java biedt geen ondersteuning voor het goto-statement.
# 22 Scope Resolution Operator
Bereikresolutie-operator wordt gebruikt om toegang te krijgen tot de globale variabelen en om methoden buiten de klasse te definiëren.
C ++ ondersteunt bereikresolutie-operator omdat het deze gebruikt om toegang te krijgen tot globale variabelen. Het stelt ons ook in staat om functies buiten de klasse te definiëren en ze te openen met behulp van de scope-resolutieoperator.
Java ondersteunt daarentegen de operator voor bereikresolutie niet. Java staat ook niet toe om de functies buiten te definiëren. Alles wat met het programma te maken heeft, inclusief de hoofdfunctie, moet in een klas staan.
# 2. 3 Probeer / vangblok
In C ++ kunnen we het try / catch-blok uitsluiten, zelfs als we weten dat de code een uitzondering kan genereren.
Als we er in Java echter zeker van zijn dat de code een uitzondering genereert, moeten we deze code opnemen onder het try / catch-blok. Uitzonderingen zijn anders in Java, aangezien het geen destructors ondersteunt.
# 24 Runtime-foutdetectie
In C ++ is de runtime-foutdetectie de verantwoordelijkheid van de programmeur.
In Java wordt de runtime-foutdetectie gecontroleerd door het systeem.
# 25 Taalondersteuning
Vanwege de nabijheid van hardware en bibliotheken die toegang tot systeembronnen mogelijk maken, is C ++ geschikter voor systeemprogrammering, hoewel we een breed scala aan toepassingen hebben, waaronder database, enterprise, gaming, enz. Ontwikkeld in C ++.
# 26 Gegevens en functies
C ++ heeft zowel een globaal bereik als een naamruimtebereik. Zo kunnen gegevens en functies ook buiten de klas bestaan.
In Java moeten alle gegevens en functies zich in de klas bevinden. Er is geen globale reikwijdte, maar er kan een pakketomvang zijn.
# 27 Structuren en vakbonden
Structuren en vakbonden zijn gegevensstructuren die leden met verschillende gegevenstypen kunnen hebben. C ++ ondersteunt zowel structuren als vakbonden.
Java ondersteunt echter geen structuren of vakbonden.
# 28 Objectbeheer
In C ++ worden objecten handmatig beheerd. Het maken en vernietigen van objecten wordt handmatig uitgevoerd met respectievelijk de nieuwe en verwijderoperatoren. We gebruiken ook constructors en destructors voor klasseobjecten.
Java ondersteunt geen destructors, hoewel het wel constructors ondersteunt. Java is ook sterk afhankelijk van automatische garbage collection voor het verzamelen en vernietigen van objecten.
# 29 Parameter passeren
Pass by Value en pass by reference zijn de twee belangrijke technieken voor het doorgeven van parameters die bij het programmeren worden gebruikt. C ++ ondersteunt beide technieken.
Java ondersteunt echter alleen de pass-by-waardetechniek van parameteroverdracht.
# 30) Hardware
C ++ staat dicht bij hardware en heeft veel bibliotheken die de hardwarebronnen kunnen manipuleren. Vanwege de nabijheid van hardware, wordt C ++ vaak gebruikt voor systeemprogrammering, gamingtoepassingen, besturingssystemen en compilers.
Java is meestal een applicatie-ontwikkeltaal en staat niet dicht bij de hardware.
Tabelformaat: C ++ versus Java
Hieronder is de weergave in tabelvorm van de vergelijking tussen C ++ en Java die we al hebben besproken.
Nee. | Vergelijkingsparameter | C ++ | Java |
---|---|---|---|
een | Platformonafhankelijkheid | C ++ is platformafhankelijk. | Java is platformonafhankelijk. |
twee | Samensteller en tolk | C ++ is een gecompileerde taal. | Java is zowel een gecompileerde als een geïnterpreteerde taal. |
3 | Broncode en klassenrelatie | Geen strikte relatie met klassenamen en bestandsnamen. | Dwingt een strikte relatie af tussen de klassenaam en de bestandsnaam. |
4 | Concept | Schrijf een keer ergens compileren. | Schrijf eenmaal overal en overal. |
5 | Compatibiliteit met andere talen | Compatibel met C behalve voor objectgeoriënteerde functies. | De syntaxis is afkomstig uit C / C ++. Geen achterwaartse compatibiliteit met een andere taal. |
6 | Type programmeertaal | Procedureel en objectgericht. | Objectgeoriënteerd. |
8 | Root Hiërarchie | Geen wortelhiërarchie. | Volgt een enkele wortelhiërarchie. |
9 | Onderscheidende kenmerken | Ondersteunt zowel procedurele als objectgeoriënteerde functies. | Geen vernietigers. Automatische afvalinzameling. |
10 | Draagbaarheid | C ++ -code is niet draagbaar. | Java is draagbaar. |
elf | Typ Semantiek | Consistent tussen primitieve en objecttypes. | Niet consistent. |
12 | Invoermechanisme | Cin en Cout worden gebruikt voor I / O. | System.in en System.out.println |
13 | Toegangscontrole en objectbescherming | Een flexibel objectmodel en consistente bescherming. | Het objectmodel is omslachtig en de inkapseling is zwak. |
14 | Geheugen management | Handboek | Systeem gestuurd. |
vijftien | Meerdere overerving | Cadeau | Afwezig |
16 | Ga naar verklaring | Ondersteunt de Goto-verklaring. | Ondersteunt de goto-verklaring niet. |
17 | Scope Resolution Operator | Cadeau | Afwezig |
18 | Probeer / vangblok | Kan try / catch-blok uitsluiten. | Kan niet uitsluiten als de code een uitzondering moet genereren. |
19 | Overbelasting | Ondersteunt overbelasting van operator en methode. | Ondersteunt geen overbelasting door de operator. |
twintig | Virtueel trefwoord | Ondersteunt virtuele sleutelwoorden die overschrijven vergemakkelijken. | Geen virtueel trefwoord, alle niet-statische methoden zijn standaard virtueel en kunnen worden overschreven. |
eenentwintig | Runtime-foutdetectie | Overgelaten aan programmeur. | Systeemverantwoordelijkheid |
22 | Taalondersteuning | Wordt voornamelijk gebruikt voor systeemprogrammering. | Hoofdzakelijk gebruikt voor het programmeren van applicaties. |
2. 3 | Gegevens en functies | Gegevens en functie bestaan buiten de klas. Globale en naamruimtebereiken worden ondersteund. | Gegevens en functies zijn alleen aanwezig binnen de klasse, pakketbereik is beschikbaar. |
24 | Aanwijzers | Ondersteunt aanwijzingen. | Slechts beperkte ondersteuning voor aanwijzingen. |
25 | Structuren en vakbonden | Ondersteund | Niet ondersteund |
26 | Objectbeheer | Handmatig objectbeheer met nieuw en verwijder. | Automatisch objectbeheer met garbage collection. |
27 | Parameter passeren | Ondersteunt call by value en call by reference. | Ondersteunt alleen bellen op waarde. |
28 | Draadondersteuning | Draadondersteuning is niet erg sterk, het is afhankelijk van de derde partij. | Zeer sterke draadondersteuning. |
29 | Hardware | Dichter bij de hardware. | Niet erg interactief met hardware. |
30 | Documentatie Commentaar | Ondersteunt geen documentatiecommentaar. | Ondersteunt documentatiecommentaar (/ **… * /) waarmee documentatie voor Java-broncode wordt gemaakt. |
Tot nu toe hebben we de belangrijkste verschillen tussen C ++ en Java in detail gezien. De komende sectie zal enkele van de veelgestelde vragen beantwoorden met betrekking tot C ++ en Java in de programmeerwereld.
Veelgestelde vragen in C ++ en Java
V # 1) Welke is beter C ++ of Java?
Antwoord: Welnu, we kunnen niet met zekerheid zeggen wat beter is. Zowel C ++ als Java hebben hun eigen voor- en nadelen. Hoewel C ++ meestal goed is voor systeemprogrammering, kunnen we dit niet doen met Java. Maar Java blinkt uit in applicaties zoals web, desktop, etc.
In feite kan C ++ alles doen, van systeemprogrammering tot enterprise tot gaming. Java kan meer een web of onderneming zijn. Sommige applicaties, zoals bepaalde low-level programmeertoepassingen of gaming enz., Kunnen niet aan Java worden overgelaten om te ontwikkelen.
Het hangt dus volledig af van welke applicatie we ontwikkelen. De beste manier is om van tevoren de voor- en nadelen van beide talen te evalueren en hun uniekheid voor de applicatie die we ontwikkelen te verifiëren en vervolgens te concluderen welke de beste is.
Vraag 2) Is C ++ krachtiger dan Java?
Antwoord: Nogmaals, dit is een lastige vraag! Als het gaat om hoe gemakkelijker de syntaxis is of om de taal te leren, scoort Java. Als het gaat om systeemprogrammering en / of andere low-level applicaties, is C ++ krachtiger.
Sommige mensen zullen misschien beweren dat Java krachtiger wordt als ze beschikken over automatische GC-verzamelingen, geen aanwijzingen of meerdere overervingen.
Maar als het op snelheid aankomt, is C ++ krachtig. Ook in applicaties zoals gaming waar we de staat moeten opslaan, kan automatische garbage collection de taken verpesten. C ++ is hier dus duidelijk krachtig.
V # 3) Kunnen we Java leren zonder C of C ++ te kennen?
Antwoord: Ja absoluut!
Zodra we de basisprincipes van programmeren en objectgeoriënteerde programmeerconcepten kennen, kunnen we beginnen met het leren van Java.
V # 4) Is C ++ zoals Java?
Antwoord: In sommige opzichten ja, maar in sommige opzichten nee.
Net als bijvoorbeeld C ++ en Java zijn objectgeoriënteerde programmeertalen. Ze kunnen worden gebruikt voor applicatieontwikkeling. Ze hebben een vergelijkbare syntaxis.
Maar in andere gevallen, zoals geheugenbeheer, overerving, polymorfisme, etc., zijn C ++ en Java totaal verschillend. Evenzo zijn beide talen verschillend als het gaat om primitieve gegevenstypen, objectafhandeling, pointers, enz.
V # 5) Is Java geschreven in C ++?
Antwoord: Java in de zin dat de Java Virtual Machine (JVM) van Sun en IBM zijn geschreven in C ++. De Java-bibliotheken zijn in Java. Enkele andere JVM's zijn geschreven in C.
Gevolgtrekking
C ++ en Java zijn beide objectgeoriënteerde programmeertalen. Bovendien is C ++ ook een procedurele taal. Er zijn enkele kenmerken zoals overerving, polymorfisme, pointers, geheugenbeheer, enz. Waarin beide talen volledig van elkaar verschillen.
Er zijn enkele kenmerken van C ++, zoals de nabijheid van hardware, beter objectbeheer, snelheid, prestaties, enz., Wat het krachtiger maakt dan Java en dus de ontwikkelaars motiveert om C ++ te gebruiken voor programmering op laag niveau, snelle gamingtoepassingen, systeemprogrammering , enz.
Op een vergelijkbare manier maken de eenvoudigere syntaxis van Java, automatische garbage collection, gebrek aan verwijzingen, sjablonen, enz. Java tot een favoriet voor webgebaseerde applicaties.
Bezoek hier voor de volledige C ++ Tutorials-lijst
Aanbevolen literatuur
- JAVA-zelfstudie voor beginners: 100+ praktische Java-videotutorials
- Java-interface en abstracte les met voorbeelden
- OOP Java: inleiding tot objectgeoriënteerd programmeren in Java
- Toegang tot modificatoren in Java - Tutorial met voorbeelden
- Java-implementatie: creatie en uitvoering van Java JAR-bestand
- Inleiding tot de programmeertaal van Java - videozelfstudie
- Java Virtual Machine: hoe JVM helpt bij het uitvoeren van Java-applicaties
- Zelfstudie over reflectie in Java met voorbeelden