Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 08:14

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Unterschied Java/ c++

Discussion on Unterschied Java/ c++ within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Dec 2010
Posts: 283
Received Thanks: 16
Unterschied Java/ c++

Wie der Titel schon sagt, wüsste ich gerne genau, was der Unterschied ist.
Zurzeit lerne ich Java und deswegen ist es mir wichtig, ob ich anschließend auf c++ umsteigen kann, damit dies nicht nachher mehr arbeit ist, als von anfang an c++ zu lernen. Java lerne ich hauptsächlich weil ich es für informatik in der schule brauche, möchte danach aber umsteigen.

Vielen dank im vorraus
Godfather0945 is offline  
Old 10/11/2011, 22:26   #2
 
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
Ein C++ Kompilier erzeugt maschienencode der direct von der cpu ausgeführt werden kann (ausser man nutzt CLI). Dagegen liegt ein Proramm das in Java geschrieben wurde in Bytecode vor. Dieser kann nicht von der cpu direkt ausgeführt werden sondern muss vor dem ausführen erst in maschienencode übersetzt werden. Deswegen ist ein Java Programm langsammer als ein programm in C++. Dafür ist Java aber solange man nicht auf Systemspezifische Api´s zugreift Plattformunabhängig.
Akorn is offline  
Thanks
2 Users
Old 10/14/2011, 00:01   #3
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
Quote:
Originally Posted by Akorn View Post
Ein C++ Kompilier erzeugt maschienencode der direct von der cpu ausgeführt werden kann (ausser man nutzt CLI). Dagegen liegt ein Proramm das in Java geschrieben wurde in Bytecode vor. Dieser kann nicht von der cpu direkt ausgeführt werden sondern muss vor dem ausführen erst in maschienencode übersetzt werden. Deswegen ist ein Java Programm langsammer als ein programm in C++. Dafür ist Java aber solange man nicht auf Systemspezifische Api´s zugreift Plattformunabhängig.
wobei der teil mit der system spezifischen api eher nebensächlich ist, es gibt da genug libs die cross compatible sind (und im endeffekt die gleichen funktionen bringen)
Tyrar is offline  
Thanks
1 User
Old 10/14/2011, 00:44   #4
 
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
Quote:
Originally Posted by HeavyHacker View Post
wobei der teil mit der system spezifischen api eher nebensächlich ist, es gibt da genug libs die cross compatible sind (und im endeffekt die gleichen funktionen bringen)
Schon klar das es für fast alles Plattformunabhänigee librarys gibt. Ich wollt damit halt eigentlich auch nur sagen das wen man auf systemspezifische Api´s zugreift das programm nicht mehr Plattformunabhängig ist.
Akorn is offline  
Thanks
1 User
Old 10/14/2011, 10:51   #5
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
Quote:
Originally Posted by Akorn View Post
Schon klar das es für fast alles Plattformunabhänigee librarys gibt. Ich wollt damit halt eigentlich auch nur sagen das wen man auf systemspezifische Api´s zugreift das programm nicht mehr Plattformunabhängig ist.
hab ich mir schon fast gedacht

aber grundsätzlich: c++ ist schneller/sicherer/einfacher (wenn mans kann)

sicherer in dem sinn das mans nicht vernünftig decompilen kann
Tyrar is offline  
Thanks
1 User
Old 10/14/2011, 13:42   #6
 
NikM's Avatar
 
elite*gold: 0
Join Date: Aug 2010
Posts: 972
Received Thanks: 1,583
ich habe erst c++ gelernt und jetzt lerne ich java
ich muss sagen java ist um einiges einfacher
beispielsweise muss man nicht darüber nachdenken speicher wieder freizugeben, da es einen garbage-collector gibt der immer nach speicher sucht der nicht mehr gebraucht wird und ihn automatisch wieder freigibt
von der syntax her sind sich beide sprachen sehr ähnlich
NikM is offline  
Thanks
1 User
Old 10/14/2011, 23:01   #7


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Quote:
Originally Posted by HeavyHacker View Post
hab ich mir schon fast gedacht

aber grundsätzlich: c++ ist schneller/sicherer/einfacher (wenn mans kann)

sicherer in dem sinn das mans nicht vernünftig decompilen kann
Dann nenne es doch bitte nicht sicherer, das trifft es nicht.

Und einfacher ist es gewiss auch nicht. Sprachlich sind sie auf dem selben Niveau, denn C++ und Java haben syntaxtechnisch so gut wie keine Unterschiede, demnach gibt es eigentlich nur die Unterschiede, die Akorn schon nannte.
Aber die Java VM übernimmt viele Dinge, die das Programmieren einfacher machen, zb. der Garbage Collector, das Zugreifen auf Klassennamen, strenger Typisierung, keine Pointer, ...

C++ ist nebenbei eine Mischung aus generischer, prozeduraler und objektorientierte Programmiersprache; Java ist hingegen komplett objektorientiert.

Außerdem bietet Java eine systemunabhängige Standard-GUI-Schnittstelle, auf welche man bei C++ auch verzichten muss.
MrSm!th is offline  
Old 10/15/2011, 14:52   #8
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
Quote:
Originally Posted by MrSm!th View Post
Dann nenne es doch bitte nicht sicherer, das trifft es nicht.

Und einfacher ist es gewiss auch nicht. Sprachlich sind sie auf dem selben Niveau, denn C++ und Java haben syntaxtechnisch so gut wie keine Unterschiede, demnach gibt es eigentlich nur die Unterschiede, die Akorn schon nannte.
Aber die Java VM übernimmt viele Dinge, die das Programmieren einfacher machen, zb. der Garbage Collector, das Zugreifen auf Klassennamen, strenger Typisierung, keine Pointer, ...
hab mich da wohl falsch ausgedrückt:
mit einfacher meinte ich eher dass man direkt auf speicher zugreifen kann (was sich meines wissens in java ein wenig umständlicher umsetzen lässt)

und mit sicherer dass man einfach den quelltext nicht wieder herstellen kann (was meines wissens in java aber möglich ist)
Tyrar is offline  
Old 10/15/2011, 16:43   #9


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Und was sollte an dieser Einfachheit positiv sein? Im allgemeinen werden Sprachen aufgrund ihrer Alltagstauglichkeit bewertet und nicht aufgrund ihrer Hacking-Tauglichkeit.
Demnach ist der Zugriff auf den Speicher eher ein Negativpunkt; für das Anwendungsprogrammieren ist das ohnehin nicht notwendig, Speicherverwaltung bleibt dem OS überlassen.
Ich weiß btw gar nicht, ob es in Java überhaupt möglich ist; in C# schon.

Ich sagte schon, dieses "sicher" trifft es aber nicht ganz.
Dann sag eher, dass es schwerer ist, den Quelltext wieder zurück zu erlangen, wobei das auch nur so halb stimmt oder dass C++ leichter gegen Reverse Engineering zu schützen ist, aber C++ ist ganz sicher nicht sicherer.

Und ich muss ganz ehrlich sagen, gegen Anti-Debugging etc. kann man mit viel Wissen und Ergeiz noch vergleichsweise leicht gegen ankommen; auch gegen VMs.
Aber ein guter Obfuscater macht den Code einfach so unverständlich, dass man einfach total durcheinander kommt, wenn man versucht, ihn zu entschlüsseln; das braucht nochmal eine ganze Ecke mehr Ergeiz. Dazu kommt, dass man nicht mal eben wie bei nativen Executables den Code auf niedrigster und simpelster Ebene ansehen kann, was es nochmal schwerer macht, wie ich finde, da obfuscateter highlevel Code schwerer zu lesen ist als obfuscateter ASM Code.

Außerdem gibt es auch schon große Fortschritte in der Decompilertechnik für C++.

Ach ja:

Quote:
dass man einfach den quelltext nicht wieder herstellen kann
Das ist so einfach falsch. Auch wenn es nicht möglich ist, den Source Code mit einem Decompiler 100%ig originalgetreu wiederherzustellen, so kann man doch sehr wohl durch Reverse Engineering und auch teilweise mit Decompilern den Code wiederherstellen; letzter ist zwar immer nur eine Art Pseudo-Code, der dem Original wohl kaum ähnlich ist, aber er lässt sich wieder compilen.
Ersteres ist zwar aufwändiger, da es von Hand geschieht, dafür erkennt ein Mensch normalerweise den Sinn von bestimmten Code Abschnitten und kann den Code deutlich "natürlicher" (also so, wie ihn ein Mensch schreiben würde) und originalgetreuer wiederherstellen.
MrSm!th is offline  
Reply

Tags
unterschied java/ c++


Similar Threads Similar Threads
[JAVA Error] Could not create the java virtual machine
07/21/2013 - Technical Support - 10 Replies
Schönen Abend! Leider hat es sich aus einem unerfindlichen Grund ergeben, dass sobald ich die Minecraft.exe starten will die Errormeldung kommt. Die Tips auf Minecraft.net habe ich schon ohne Erfolg befolgt. Hoffe ihr könnt mir weiterhelfen... Mein PC:
java virtual machine launcher could not create the java virtual machine
08/29/2011 - Minecraft - 5 Replies
Wie der Titel schon sagt ist bei mir plötzlich folgendes Problem aufgetreten Minecraft ging immer perfekt, dann wollte ich den millionaire minecraft mod installieren und seit dem kommt immer diese fehler meldung: java virtual machine launcher could not create the java virtual machine minecraft deinstalliert aber ich kann es nicht mehr installieren da die Meldung immer kommt wenn ich auch Minecraft.exe klicke ich habe windows xp und davor lief es immer perfekt das mit der .bat datei...
[Java] Could not create the Java virtual machine
06/22/2011 - Minecraft - 1 Replies
hallo ihr minecraftler ^^ habe seit heute das problem das wenn ich minecraft starte original als auch cracked das diese fehlermeldung kommt: Java virtual machine Launcher Could not create the Java virtual machine



All times are GMT +1. The time now is 08:14.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.