Redigerer
Forskjeller mellom C++ og Java
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
Dette er en sammenlikning mellom [[Programmeringsspr%C3%A5k|programmeringsspråkene]] [[Java_%28programmeringsspr%C3%A5k%29|Java]] og [[C%2B%2B]]. {| class="wikitable" ! width=50% | C++ ! width=50% | Java |- | Mer eller mindre bakoverkompatibel med C kildekode. | Ikke kildekode-kompatibel med noe annet språk. |- | Tillater direkte kall til systembiblioteker. | Kall til andre biblioteker enn Java-biblioteket er mulig gjennom [[Java Native Interface]]. |- | Avdekker lavnivåfunksjoner i operativsystemet. Dette er en sikkerhetsrisiko. | Kjører i en beskyttet virtuell maskin. |- | Valgfri automatisert grensesjekking (f.eks tabellgrenser). | Utfører alltid grensesjekking. |- | Støtter tall uten fortegn (+-) og aritmetiske metoder for slike tall. | Ingen innebygd støtte for tall uten fortegn. |- | Parametere overføres enten "by value", med en peker eller ved referanser. | Parametere overføres alltid "by value"; forvirring kan oppstå ut fra det faktum at alle objekter aksesseres ved bruk av referanser (men uten "*" syntaksen i C). Det er disse referansene som overføres eller returneres "by value".<ref>[http://javadude.com/articles/passbyvalue.htm Referanse (engelsk)]</ref> |- | Eksplisitt minnestyring. "Garbage collection" er mulig ved bruk av eksterne biblioteker. | Bare automatisk "garbage collection". |- | Tillater eksplisitt overskrevne typer. | Rigid type-sikkerhet bortsett fra utvidende konverteringer. |- | C++ standardbiblioteket er noe begrenset, men inkluderer: Språkstøtte; diagnostikk, locales, containers, algoritmer, iteratorer, numerics, IO og C-biblioteket. Plattformspesifikke områder som tråder, nettverk og brukergrensesnitt (GUI) krever ofte tredjeparts-biblioteker. | Inneholder et omfattende antall biblioteker. Dette inkluderer containers, locales, algoritmer, iteratorer, GUI programmering, grafikk, flertråding, nettverk og sikkerhet. |- | Tillater overloading av operatorer. F.eks + og -. Riktig bruk fører til elegant og oversiktlig kode. | Funksjonen til en operator kan ikke forandres. |- | Full og multippel arving. | Full arving. Multippel arving er bare mulig fra grensesnitt. |} == Ytelse == Tidligere versjoner av Java ble i stor grad utkonkurrert av statisk kompilerte språk som C++. Java har derfor hatt et rykte som mindre effektivt. [https://web.archive.org/web/20071030003859/http://www.linuxguiden.no/index.php/Java] [http://wiki.biblioteklaboratoriet.no/index.php/Java]{{død lenke|dato=juli 2017 |bot=InternetArchiveBot }} Årsaken til den dårlige ytelsen var måten Java-kode ble kompilert på. C++ kompileres til maskinkode. Java ble kompilert til bytekode for eksekvering på en virtuell maskin. For eksempel: {| class="wikitable" ! Java/C++ uttrykk ! C++ kompilert (x86) ! Java bytekode |- | vector[i]++; | mov edx,[ebp+4h]<br /> mov eax,[ebp+1Ch]<br /> inc dword ptr [edx+eax*4] | aload_1<br /> iload_2<br /> dup2<br /> iaload<br /> iconst_1<br /> iadd<br /> iastore |- |} Selv om bytekode og virtuelle maskiner fortsatt brukes i visse [[innkapslete systemer]] på grunn av minnebegrensninger, er ofte argumentet at forbedringer innen "Just-in-time" kompilering (JIT) vil minke ytelsesgapet mellom C++ og Java. Flere studier som for det meste består av numeriske ytelsestester argumenterer for at Java potensielt kan være raskere enn C++ under visse omstendigheter.<ref>[http://www.idiom.com/~zilla/Computer/javaCbenchmark.html "Performance of Java versus C++ (2004)"] {{Wayback|url=http://www.idiom.com/~zilla/Computer/javaCbenchmark.html |date=20080513070555 }}</ref><ref>[http://trs-new.jpl.nasa.gov/dspace/bitstream/2014/18351/1/99-1827.pdf&e=9797 "Java will be faster than C++ (2001)"]</ref> * Pekere gjør optimalisering vanskelig fordi de kan peke til vilkårlige data. Dog tilbyr mange C++ kompilatorer [[C99]] nøkkelordet 'restrict' som takler dette problemet.<ref>{{Kilde www |url=http://www.cellperformance.com/mike_acton/2006/05/demystifying_the_restrict_keyw.html |tittel=Demystifying the Restrict Keyword |besøksdato=2008-05-30 |arkiv-url=https://web.archive.org/web/20080619120934/http://www.cellperformance.com/mike_acton/2006/05/demystifying_the_restrict_keyw.html |arkivdato=2008-06-19 |url-status=død }}</ref> == Referanser == <references/> {{programmeringsspråk}} [[Kategori:Java (programmeringsspråk)]] [[Kategori:C++]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Maler som brukes på denne siden:
Mal:Død lenke
(
rediger
)
Mal:Fix
(
rediger
)
Mal:Fix/category
(
rediger
)
Mal:Hlist/styles.css
(
rediger
)
Mal:ISOtilNorskdato
(
rediger
)
Mal:Ifsubst
(
rediger
)
Mal:Kilde www
(
rediger
)
Mal:Navboks
(
rediger
)
Mal:Programmeringsspråk
(
rediger
)
Mal:Wayback
(
rediger
)
Modul:Arguments
(
rediger
)
Modul:Citation/CS1
(
rediger
)
Modul:Citation/CS1/COinS
(
rediger
)
Modul:Citation/CS1/Configuration
(
rediger
)
Modul:Citation/CS1/Date validation
(
rediger
)
Modul:Citation/CS1/Identifiers
(
rediger
)
Modul:Citation/CS1/Utilities
(
rediger
)
Modul:Citation/CS1/Whitelist
(
rediger
)
Modul:ISOtilNorskdato
(
rediger
)
Modul:Navbar
(
rediger
)
Modul:Navbar/configuration
(
rediger
)
Modul:Navboks
(
rediger
)
Modul:Navbox/configuration
(
rediger
)
Modul:Navbox/styles.css
(
rediger
)
Modul:Wayback
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon