c vs java top 30 differences between c
Denne grundige veiledningen forklarer noen av de viktigste forskjellene mellom to objektorienterte programmeringsspråk C ++ mot Java:
C ++ og Java er begge objektorienterte programmeringsspråk. Likevel skiller begge språk seg fra hverandre på mange måter.
C ++ er avledet fra C og har funksjonene til både prosessuelle og objektorienterte programmeringsspråk. C ++ ble designet for applikasjon og systemutvikling.
Java er bygget på en virtuell maskin som er veldig sikker og svært bærbar. Den er gruppert med et omfattende bibliotek for å gi støtte for abstraksjonen av den eksisterende plattformen.
Java ble hovedsakelig designet for applikasjonsprogrammering og har en funksjonalitet til en tolk for utskriftssystemer som senere ble utviklet til nettverksdatamaskiner.
Foreslått lese => C ++ treningsguide for alle
Hva du vil lære:
- Viktige forskjeller mellom C ++ Vs Java
- Tabellformat: C ++ mot Java
- Ofte stilte spørsmål i C ++ og Java
- Konklusjon
- Anbefalt lesing
Viktige forskjeller mellom C ++ Vs Java
La oss nå diskutere noen av de viktigste forskjellene mellom C ++ Vs Java, mens vi fortsetter i dette
opplæringen.
# 1) Plattform Selvstendighet
C ++ | Java | ||
---|---|---|---|
7 | Bibliotekgrensesnitt | Tillater direkte anrop til innfødte systembiblioteker. | Ringer bare via Java Native-grensesnitt og Java Native Access. |
C ++ er et plattformavhengig språk. Kildekoden skrevet i C ++ må kompileres på hver plattform. | Java er plattformuavhengig. Når den er samlet i byte-kode, kan den kjøres på hvilken som helst plattform. |
# 2) Kompilator og tolk
C ++ | Java |
---|---|
C ++ er et kompilert språk. Kildeprogrammet skrevet i C ++ er samlet til en objektkode som deretter kan utføres for å produsere en utgang. | Java er et samlet så vel som et tolket språk. Den kompilerte utgangen til en Java-kildekode er en bytekode som er plattformuavhengig. |
# 3) Bærbarhet
C ++ | Java |
---|---|
C ++ - koden er ikke bærbar. Den må kompileres for hver plattform. | Java oversetter imidlertid koden til byte-kode. Denne byte-koden er bærbar og kan utføres på hvilken som helst plattform. |
# 4) Minnehåndtering
C ++ | Java |
---|---|
Minnehåndtering i C ++ er manuell. Vi må tildele / avdele minne manuelt ved å bruke de nye / slette operatorene. | I Java er minnestyringen systemstyrt. |
# 5) Flere arv
C ++ | Java |
---|---|
C ++ støtter forskjellige typer arv, inkludert enkelt og flere arv. Selv om det er problemer som oppstår fra flere arv, bruker C ++ det virtuelle nøkkelordet for å løse problemene. | Java, støtter bare enkelt arv. Effekter av flere arv kan oppnås ved hjelp av grensesnittene i Java. |
# 6) Overbelastning
C ++ | Java |
---|---|
I C ++ kan metoder og operatører overbelastes. Dette er statisk polymorfisme. | I Java er bare metodeoverbelastning tillatt. Det tillater ikke operatørens overbelastning. |
# 7) Virtuelt nøkkelord
C ++ | Java |
---|---|
Som en del av dynamisk polymorfisme, i C ++, brukes det virtuelle nøkkelordet med en funksjon for å indikere funksjonen som kan overstyres i den avledede klassen. På denne måten kan vi oppnå polymorfisme. | I Java er det virtuelle nøkkelordet fraværende. I Java kan imidlertid alle ikke-statiske metoder som standard overstyres. Eller i enkle termer, alle ikke-statiske metoder i Java er virtuelle som standard. |
# 8) Pekere
C ++ | Java |
---|---|
C ++ handler om pekere. Som sett i veiledninger tidligere, har C ++ sterk støtte for pekere, og vi kan gjøre mye nyttig programmering ved hjelp av pekere. | Java har begrenset støtte for pekere. I utgangspunktet var Java helt uten pekere, men senere versjoner begynte å gi begrenset støtte til pekere. Vi kan ikke bruke pekere i Java så rolig som vi kan bruke i C ++. |
# 9) Dokumentasjonskommentar
C ++ | Java |
---|---|
C ++ har ingen støtte for dokumentasjonskommentarer. | Java har en innebygd støtte for dokumentasjonskommentarer (/ ** ... * /). På denne måten kan Java-kildefiler ha sin egen dokumentasjon. |
# 10) Trådstøtte
C ++ | Java |
---|---|
C ++ har ikke innebygd trådstøtte. Det er hovedsakelig avhengig av tredjeparts trådbiblioteker. | Java er innebygd trådstøtte med en klasse “tråd”. Vi kan arve trådklassen og deretter overstyre kjøringsmetoden. |
Noen flere forskjeller ...
# 11) Rothierarki
C ++ er prosessuelt så vel som et objektorientert programmeringsspråk. Derfor følger den ikke noe spesifikt rothierarki.
Java er et rent objektorientert programmeringsspråk og har et enkelt rothierarki.
# 12) Kildekode og klasseforhold
I C ++ har ikke både kildekoden og filnavnet noe forhold. Dette betyr at vi kan ha mange klasser i C ++ - programmet, og filnavnet kan være hva som helst. Det trenger ikke være det samme som klassenavnene.
I Java er det et nært forhold mellom kildekodeklassen og filnavnet. Klassen som inneholder kildekoden og filnavnet skal være den samme.
For eksempel , hvis vi har en klasse i Java som heter lønn, så skal filnavnet som inneholder denne klassekoden være “lønn.java”.
# 1. 3) Konsept
Konseptet bak C ++ - programmer er skrevet en gang og kompileres hvor som helst, ettersom C ++ ikke er plattformuavhengig.
Tvert imot, for Java-programmer skrives den en gang, kjøres overalt og hvor som helst, da bytekoden generert av Java-kompilatoren er plattformuavhengig og kan kjøres på hvilken som helst maskin.
# 14) Kompatibilitet med andre språk
C ++ er bygget på C. C ++ språk er kompatibelt med de fleste andre høyt nivå språk.
Java er ikke kompatibelt med andre språk. Da Java ble inspirert av C og C ++, ligner syntaksen på disse språkene.
#femten) Type programmeringsspråk
C ++ er både et prosessuelt og objektorientert programmeringsspråk. Derfor har C ++ funksjoner som er spesifikke for prosessuelle språk, samt funksjoner i objektorientert programmeringsspråk.
Java er et helt objektorientert programmeringsspråk.
# 16) Bibliotekgrensesnitt
C ++ tillater direkte anrop til de innfødte systembibliotekene. Derfor er den mer egnet for programmering på systemnivå.
Java har ingen direkte samtalestøtte til sine opprinnelige biblioteker. Vi kan ringe bibliotekene gjennom Java Native Interface eller Java Native Access.
# 17) Kjennetegn
Funksjoner relatert til prosessuelle språk og objektorientert språk er kjennetegn ved C ++.
gratis windows registry cleaner og reparasjon
Automatisk søppelinnsamling er det særegen ved Java. I mellomtiden støtter ikke Java destruktører.
# 18) Skriv Semantikk
Når det gjelder typen semantikk for C ++, er primitive og objekttyper konsistente.
Men for Java er det ingen konsistens mellom primitive og objekttyper.
# 19) Inngangsmekanisme
C ++ bruker cin and cout sammen med ‘>>’ og ‘<<’ operators respectively to read in and write the data.
I java brukes systemklassen til input-output. For å lese inngangen brukes System.in som leser en byte om gangen. Konstruksjonen System.out brukes til å skrive utdataene.
#tjue) Tilgangskontroll og objektbeskyttelse
C ++ har en fleksibel modell for objekter med tilgangsspesifikatorer som kontrollerer tilgangen og sterk innkapsling som sikrer beskyttelse.
Java har en relativt tungvint objektmodell med svak innkapsling.
#tjueen) Gå til uttalelse
C ++ støtter goto-setningen, men bruken av den bør minimeres for å forhindre konsekvensene av å bruke den i et program.
Java gir ikke støtte for goto-setningen.
# 22) Omfangsoppløsningsoperatør
Scope resolution operator brukes til å få tilgang til de globale variablene og definere metoder utenfor klassen.
C ++ støtter omfangsoppløsningsoperatør da den bruker den til å få tilgang til globale variabler. Det lar oss også definere funksjoner utenfor klassen og få tilgang til dem ved hjelp av operatøren for omfangsoppløsning.
I motsetning til dette støtter Java ikke operatøren for omfangsoppløsning. Java tillater heller ikke å definere funksjonene utenfor. Alt relatert til programmet, inkludert hovedfunksjonen, må være i en klasse.
# 2. 3) Prøv / Catch Block
I C ++ kan vi ekskludere prøve / fangst-blokken, selv om vi vet at koden kan kaste et unntak.
Men i Java, hvis vi er sikre på at koden vil gi et unntak, må vi inkludere denne koden under prøve / fangst-blokken. Unntak er forskjellige i Java, da det ikke støtter destruktører.
# 24) Runtime Error Detection
I C ++ er det kjøretøyets ansvar å registrere kjøretidsfeil.
I Java kontrolleres kjøretidsoppdagelsen av systemet.
# 25) Språkstøtte
På grunn av sin nærhet til maskinvare og biblioteker som gir tilgang til systemressurser, er C ++ mer egnet for systemprogrammering, selv om vi har et bredt spekter av applikasjoner, inkludert database, enterprise, gaming, etc. utviklet i C ++.
# 26) Data og funksjoner
C ++ har et globalt omfang så vel som et navneområde. Dermed kan data og funksjoner også eksistere utenfor klassen.
I Java må alle data og funksjoner være i klassen. Det er ikke noe globalt omfang, men det kan være pakkeomfang.
# 27) Strukturer og fagforeninger
Strukturer og fagforeninger er datastrukturer som kan ha medlemmer med forskjellige datatyper. C ++ støtter både strukturer og fagforeninger.
Java støtter imidlertid ikke strukturer eller fagforeninger.
# 28) Objektstyring
I C ++ håndteres objekter manuelt. Opprettelse og ødeleggelse av objekter utføres manuelt ved hjelp av henholdsvis de nye og sletteoperatorene. Vi bruker også konstruktører og destruktorer for klasseobjekter.
Java støtter ikke destruktører, selv om det støtter konstruktører. Java er også sterkt avhengig av automatisk søppeloppsamling for å samle og ødelegge gjenstander.
# 29) Parameter passerer
Pass by Value og pass by reference er de to viktige parameteroverføringsteknikkene som brukes i programmering. C ++ støtter begge disse teknikkene.
Java støtter imidlertid bare pass by Value-teknikk for parameteroverføring.
# 30) Maskinvare
C ++ er nær maskinvare og har mange biblioteker som kan manipulere maskinvareressursene. På grunn av sin nærhet til maskinvare brukes C ++ ofte til systemprogrammering, spillapplikasjoner, operativsystem og kompilatorer.
Java er for det meste et applikasjonsutviklingsspråk og er ikke i nærheten av maskinvaren.
Tabellformat: C ++ mot Java
Nedenfor er den tabellrepresentasjonen av sammenligningen mellom C ++ og Java som vi allerede har diskutert.
Ikke. | Sammenligningsparameter | C ++ | Java |
---|---|---|---|
1 | Plattformuavhengighet | C ++ er plattformavhengig. | Java er plattformuavhengig. |
to | Kompilator og tolk | C ++ er et kompilert språk. | Java er et samlet så vel som et tolket språk. |
3 | Kildekode og klasseforhold | Ingen strenge forhold til klassenavn og filnavn. | Styrker strengt forhold mellom kursnavnet og filnavnet. |
4 | Konsept | Skriv en gang kompil hvor som helst. | Skriv en gang løp hvor som helst og overalt. |
5 | Kompatibilitet med andre språk | Kompatibel med C bortsett fra objektorienterte funksjoner. | Syntaksen er hentet fra C / C ++. Ingen bakoverkompatibilitet med noe annet språk. |
6 | Type programmeringsspråk | Prosedyremessig og objektorientert. | Objekt orientert. |
8 | Rothierarki | Ingen rothierarki. | Følger enkeltrothierarki. |
9 | Kjennetegn | Støtter prosessuelle så vel som objektorienterte funksjoner. | Ingen destruktører. Automatisk søppeloppsamling. |
10 | Bærbarhet | C ++ - koden er ikke bærbar. | Java er bærbar. |
elleve | Skriv Semantikk | Konsistent mellom primitive og objekttyper. | Ikke konsistent. |
12 | Inngangsmekanisme | Cin og Cout brukes til I / O. | System.in og System.out.println |
1. 3 | Tilgangskontroll og objektbeskyttelse | En fleksibel objektmodell og jevn beskyttelse. | Objektmodellen er tungvint og innkapslingen er svak. |
14 | Minnehåndtering | Håndbok | Systemstyrt. |
femten | Flere arv | Tilstede | Fraværende |
16 | Gå til uttalelse | Støtter Goto-uttalelse. | Støtter ikke goto-uttalelsen. |
17 | Omfangsoppløsningsoperatør | Tilstede | Fraværende |
18 | Prøv / Catch Block | Kan ekskludere prøve / fangstblokk. | Kan ikke ekskludere hvis koden skal gi et unntak. |
19 | Overbelastning | Støtter overbelastning av operatør og metode. | Støtter ikke overbelastning av operatøren. |
tjue | Virtuelt nøkkelord | Støtter virtuelt nøkkelord som muliggjør overstyring. | Ingen virtuelle nøkkelord, alle ikke-statiske metoder er som standard virtuelle og kan overstyres. |
tjueen | Runtime Error Detection | Overlatt til programmerer. | Systemansvar |
22 | Språkstøtte | Brukes hovedsakelig til systemprogrammering. | Brukes hovedsakelig til applikasjonsprogrammering. |
2. 3 | Data og funksjoner | Data og funksjon eksisterer utenfor klassen. Globale omfang og navneområdet støttes. | Data og funksjoner er bare tilstede i klassen, pakkeomfanget er tilgjengelig. |
24 | Pekere | Støtter pekere. | Bare begrenset støtte til pekere. |
25 | Strukturer og fagforeninger | Støttet | Ikke støttet |
26 | Objektstyring | Manuell objektadministrasjon med nytt og slett. | Automatisk objekthåndtering ved bruk av søppeloppsamling. |
27 | Parameter passerer | Støtter samtale etter verdi og samtale med referanse. | Støtter bare samtale etter verdi. |
28 | Trådstøtte | Trådstøtten er ikke veldig sterk, den er avhengig av tredjepart. | Veldig sterk trådstøtte. |
29 | Maskinvare | Nærmere maskinvaren. | Ikke veldig interaktiv med maskinvare. |
30 | Dokumentasjonskommentar | Støtter ikke dokumentasjonskommentarer. | Støtter dokumentasjonskommentarer (/ ** ... * /) som lager dokumentasjon for Java-kildekode. |
Så langt har vi sett nøkkelforskjellene mellom C ++ og Java i detalj. Den kommende delen vil svare på noen av de ofte stilte spørsmålene knyttet til C ++ og Java i programmeringsverdenen.
Ofte stilte spørsmål i C ++ og Java
Q # 1) Hvilken er bedre C ++ eller Java?
Svar: Vel, vi kan ikke definitivt si hva som er bedre. Både C ++ og Java har sine egne fordeler og ulemper. Mens C ++ stort sett er bra for systemprogrammering, kan vi ikke gjøre det med Java. Men Java utmerker seg i applikasjoner som web, desktop, etc.
Faktisk kan C ++ gjøre alt fra systemprogrammering til bedrift til spill. Java kan gjøre mer av et nett eller en bedrift. Det er noen applikasjoner som visse programmeringsprogrammer på lavt nivå eller spill osv. Som ikke kan overlates til Java å utvikle seg.
Dermed avhenger det helt av hvilken applikasjon vi utvikler. Den beste måten er å evaluere fordeler og ulemper med begge språkene på forhånd og verifisere deres unike for applikasjonen vi utvikler, og deretter konkludere med hvilken som er den beste.
Q # 2) Er C ++ kraftigere enn Java?
Svar: Igjen er dette et vanskelig spørsmål! Når det gjelder hvor enklere er syntaksen eller å lære språket, scorer Java. Når det gjelder systemprogrammering og / eller andre applikasjoner på lavt nivå, er C ++ kraftigere.
Noen mennesker kan hevde at det å ha automatiske GC-samlinger, ingen pekere, ingen flere arv gjør Java kraftigere.
Men når det gjelder hastighet, er C ++ kraftig. Også i applikasjoner som spill hvor vi trenger å lagre staten, kan automatisk søppelinnsamling ødelegge oppgavene. Dermed er C ++ åpenbart kraftig her.
Q # 3) Kan vi lære Java uten å vite C eller C ++?
Svar: Ja, definitivt!
Når vi vet grunnleggende om programmering og objektorienterte programmeringskonsepter, kan vi begynne å lære Java.
Q # 4) Er C ++ som Java?
Svar: På noen måter, ja, men på noen måter, nei.
Som for eksempel er både C ++ og Java objektorienterte programmeringsspråk. De kan brukes til applikasjonsutvikling. De har lignende syntaks.
Men i andre tilfeller som minnehåndtering, arv, polymorfisme osv., Er C ++ og Java helt forskjellige. På samme måte, når det gjelder primitive datatyper, objekthåndtering, pekere osv., Er begge språkene forskjellige.
Q # 5) Er Java skrevet i C ++?
Svar: Java i den forstand Java Virtual Machine (JVM) av Sun og IBM er skrevet i C ++. Java-bibliotekene er i Java. Noen andre JVM er skrevet i C.
Konklusjon
C ++ og Java er begge objektorienterte programmeringsspråk. I tillegg er C ++ også et prosessuelt språk. Det er noen funksjoner som arv, polymorfisme, pekere, minnehåndtering, etc. der begge språkene er helt forskjellige fra hverandre.
Det er noen kjennetegn ved C ++ som nærhet til maskinvare, bedre objektadministrasjon, hastighet, ytelse, etc. som gjør den kraftigere enn Java og dermed motiverer utviklerne til å bruke C ++ til lavnivåprogrammering, høyhastighets spillapplikasjoner, systemprogrammering , etc.
På en lignende måte gjør den enklere syntaksen til Java, automatisk søppelinnsamling, mangel på pekere, maler, etc. Java til en favoritt for nettbaserte applikasjoner.
=> Besøk her for den komplette C ++ opplæringslisten .
Anbefalt lesing
- JAVA-opplæring for nybegynnere: 100+ praktiske Java-videoveiledninger
- Java-grensesnitt og abstrakt klasseopplæring med eksempler
- OOP Java: Introduksjon til objektorientert programmering i Java
- Få tilgang til modifikatorer i Java - opplæring med eksempler
- Java-distribusjon: Opprettelse og utføring av Java JAR-fil
- Introduksjon til Java Programming Language - Video Tutorial
- Java Virtual Machine: Hvordan JVM hjelper med å kjøre Java-applikasjoner
- Java Reflection Tutorial med eksempler