För/nackdelar med Java om man jämför med C++

Permalänk
Medlem

För/nackdelar med Java om man jämför med C++

På gymnasiet där jag (troligen) ska börja i höst kommer vi på programmeringslektionerna att läsa Java. Så jag vill veta vad det finns för för/nackdelar med Java om man jämför med C++.

Permalänk
Medlem

En sådan jämförelse är inte svårt att hitta om du söker på google. Det här är vad jag tycker iaf:

+ Automatisk garbage collection
+ Portabelt
+ Går snabbare att utveckla i
+ Utmärkt för nätverks- och trådprogrammering
+ Mer objekt-orienterat än C++
+ Alla klasser ärver från Object (som har den trevliga metoden toString)

- Lååångsamt
- Ingen kontroll över minne
- För begränsande (detta borde man kanske helst inte syssla med men det vore trevligt om det fanns):
...- Inga pekare
...- Inga templates
...- Ingen operator overloading
...- Inget multipelt arv
...- Dåligt för pixelmanipulation
- Inte särskilt portabelt trots allt, med tanke på att nästan ingen som inte själv programmerar i Java har ett Java VM installerat på sin dator och de flesta inte kan köra Java 2-applets
- Mer restriktiv syntax

Fördelarna med Java är väldigt stora, men det finns väldigt många små irritationsmoment som gör att jag inte tycker om det. T ex att pga Javas design är det omöjligt att göra en swap-funktion

Visa signatur

:€

Permalänk
Medlem

Största fördelen med Java är att man inte behöver kompilera om koden för att köra på olika plattformar, du behöver bara installera JVM på datorn och köra.

Visa signatur

Scud: The other day, in the park, I was wondering why frisbees look bigger and bigger as they get closer to you
Scud: And then it hit me

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av eighty
- Lååångsamt

jag måste bara fråga...

är det verkligen så väldigt långsamt om man kör med sk. "just-in-time-kompilering"?

jag förstår att det endå är långsammare än tex C++, men jag tycker inte skillnaden borde bli allt för stor

Permalänk
Avstängd

C++ Java med JITC Java utan Integer division 1.8 1.8 4.8 Dead code 3.7 3.7 9.5 Dead code with Integer division 5.4 5.7 20 Floating-point division 1.6 1.6 8.7 Static method 1.8 1.8 6.0 Member method 1.8 1.8 10 Virtual member method 1.8 1.8 10 -||- with down cast and RTTI 11 4.3 12 (värdena är sekunder, så färre är bättre)

här vann faktiskt java med JITC över C++

finns det några nackdelar med JITC?
kan alla använda detta?

EDIT: värdena blev knasiga, så det kan vara svårt att se vad det står

Permalänk
Medlem

Vad är "dead code"?

Jag känner till JITC men jag har aldrig använt det och vet inte hur det fungerar... på namnet verkar det ju som om det skulle köras som ett scriptspråk... vilket inte borde vara snabbare än kompilerat. Kan någon förklara?

Visa signatur

:€

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av eighty
Vad är "dead code"?

Jag känner till JITC men jag har aldrig använt det och vet inte hur det fungerar... på namnet verkar det ju som om det skulle köras som ett scriptspråk... vilket inte borde vara snabbare än kompilerat. Kan någon förklara?

glömde att spara sidan med förklaringarna, darn...

JITC är att den gör om allt till maskinär kod under tiden den kör, om den sedan ska göra om samma del av koden så är den redan kompilerad.

tydligen ska det gå nästan lika snabbt som C++ förutom i tunga grafiska saker (tror också att den kompilerar under tiden en wait kör)

Permalänk
Medlem

Java varit långsammare än c++ på många plan och är det på vissa (så som grafik) fortfarande. Men Java kan vara otroligt skönt att utveckla med. Det finns oftast källkod till det mesta klasser man använder och suns java apin är hur bra som helst.
Det finns förövrigt andra kompilatorer som är bättre än suns som ytterligare snabbar upp det.
Java löser multipelt arv till stor del med interface. (Fast det finns tillfällen då det inte räcker till.)

Btw så använder väll c# JITC? eller?

För att lära sig från början så föredrar jag att man först läser c, sen c++ och sen Java för att få full förståelse för oo tänkandet.

Denna sida http://java.sun.com/docs/white/langenv/Simple.doc2.html är helt ok för att visa på vad som tagits bort fårn c/c++ i Java. (Den är dock ganska vinklad från sun.)

Visa signatur

Per molestias eruditio oderint dum metuant

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av svoctor
Btw så använder väll c# JITC? eller?

jag tror att C# kompilerar allt innan körningen medans JITC kompilerar under tiden (jag är dock långt ifrån säker)

Permalänk
Medlem

c# kompilerar det till IL kod men jag tror att den använder JITC för att göra maskinkod. Tror jag.

Visa signatur

Per molestias eruditio oderint dum metuant

Permalänk
Hedersmedlem

Vill man lära sig Java, kan man gå genom Ada också om man vill.

Visa signatur

The variable 'brain' is declared but never used

Permalänk
Medlem

damme: Vad är Ada bra för? Alltså, varför ska man lära sig det?

Visa signatur

:€

Permalänk
Citat:

Ursprungligen inskrivet av eighty
damme: Vad är Ada bra för? Alltså, varför ska man lära sig det?

det är hårt typat och kompilatorn ger solklara besked om vad som är fel så det är ett bra språk att lära sig programmera i, sen kan man även koda java med ada om man vill

Permalänk
Medlem

Det här med att man inte kan få fram exe filer som går att köra på vilken dator som helst stör mig ganska mycket.
Låt säga att man gjort ett kul spel, som man vill skicka till en kompis som inte är så hej på¨datorer, chansen att han får i gång det är ganska liten...

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av eighty
damme: Vad är Ada bra för? Alltså, varför ska man lära sig det?

Att börja programmera Java är ett naturligt steg efter att man har lärt sig Ada. Man tittade på Ada när man byggde Java.

Visa signatur

The variable 'brain' is declared but never used

Permalänk
Medlem

Java är enkelt att lära sig då det saknar saker som tex pekare och jag anser iaf att man borde börja med Java om man vill lära sig c++ då man måste kladda ned mindre kod för att utföra samma sak i java som i c++ (objekt då).

Känner mig dock begränsad när jag proggar java så det har jag lagt på is men har man tur kanske man får ngt softjobb på något roligt nätföretag...

Permalänk
Medlem

Svårt att mäta så där, C++s hastighet beror på kompilator..

Visa signatur

Perl - Made by Idiots, Java - Made for Idiots, C++ - Envied by Idiots

Permalänk
Medlem

Hur som helst så lämpar sig båda språken för olika saker.
Om du ska skriva en stor databasdriven-flerlagers-äffarsapplikation så passar java hur bra som helst men om du ska skriva nästa quake-killer så är c++ ett bättre alternativ.

Visa signatur

Per molestias eruditio oderint dum metuant

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av jaqob
Det här med att man inte kan få fram exe filer som går att köra på vilken dator som helst stör mig ganska mycket.
Låt säga att man gjort ett kul spel, som man vill skicka till en kompis som inte är så hej på¨datorer, chansen att han får i gång det är ganska liten...

Just det jag syftar på när jag säger att Java trots allt inte är särskilt portabelt... har man gjort ett program i C++ kan [nästan] vem som helst som har samma operativsystem köra det på sin dator. Om inte, är det bara att kompilera om det på den datorn. För att köra Java-program måste man ha ett VM installerat vilket nästan ingen har och det lär ju aldrig bli standard pga MS-Java-grejen. Att installera ett VM är minst lika jobbigt som att kompilera om lite kod. Jag tror dessutom att det är fler som inte programmerar i C++ har en C++-kompilator än vad de som inte programmerar i Java har ett JVM.

Visa signatur

:€

Permalänk
Medlem

Min erfarenhet av java är att det är segt att starta och inte fungerar i dom flesta fallen.

/me tar två steg ifrån java. Bra ide men det räcker tyvärr inte

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av Sunray
Svårt att mäta så där, C++s hastighet beror på kompilator..

nog är det så, tänkte mig inte för när jag stängde av sidan där siffrorna stog...

men olika språk är även olika snabba (beroende på att de liknar eller skilljer sig olika mycket från assembly, om de är väldigt olika brukar koden få mycket knas när den kompileras)

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av eighty
Jag tror dessutom att det är fler som inte programmerar i C++ har en C++-kompilator än vad de som inte programmerar i Java har ett JVM.

det är det verkligen inte, JVM följer med till flera windows OS och om jag inte minns fel även till Mac OS (och säkert många fler)

dessutom så kommer Java följa med till de kommande windows (för visst blev MS tvungna efter att ha blivit stämda av Sun?)

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Haricots
dessutom så kommer Java följa med till de kommande windows (för visst blev MS tvungna efter att ha blivit stämda av Sun?)

Jag har också fått för mig något liknanade. Kan se om jag hittar tidningen där jag läste en artikel om Sun (tror det var i Linux Journal el dyl.).

Visa signatur

Scud: The other day, in the park, I was wondering why frisbees look bigger and bigger as they get closer to you
Scud: And then it hit me

Permalänk
Medlem

Det visste jag inte. Jag tar tillbaka vad jag sade. Jag skulle vara intresserad av att läsa artikeln.

Visa signatur

:€

Permalänk
Avstängd
Permalänk
Medlem

Jag vill påstå att om man gör ett program som ska kunna användas av fler personer (på olika plattformar) så känns det som om det är lättare att få folk och installera en jvm än att kompilera om en massa saker.

Visa signatur

Per molestias eruditio oderint dum metuant

Permalänk
Medlem

Nja. Bättre att i början kompilera några versioner för varje tänkt plattform så att det är klart sedan, istället för att be alla som ska använda det installera jvm.

Visa signatur

:€

Permalänk
Medlem

JAVA känns lite tjejigt, medans männen håller på med C++..

Visa signatur

Perl - Made by Idiots, Java - Made for Idiots, C++ - Envied by Idiots

Permalänk
Citat:

Ursprungligen inskrivet av eighty
Nja. Bättre att i början kompilera några versioner för varje tänkt plattform så att det är klart sedan, istället för att be alla som ska använda det installera jvm.

Bättre att ge källkoden så folk kan kompilera själva. Men kanske inte för dom som kör windows.

Visa signatur

Sverker G. Johansson

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av jallabert
Bättre att ge källkoden så folk kan kompilera själva. Men kanske inte för dom som kör windows.

Nä, vi med windows ska fan få köpa skiten