Geschwindigkeit vs. Sicherheit
-
Gibt es eigentlich noch einen Grund für Software C++ zu verwenden und nicht Java? Schon das Datum geht ja in den standard C++ Programmen nur bis 2038 und auch das Exceptionhandling ist viel schlechter (Division durch 0 usw.) und natürlich gibt es noch viele Möglichkeiten mit Pointern schwachsinn anzustellen. Java ist dagegen um ca. 10% langsamer was aber immer durch einen schnelleren PC ausgeglichen werden kann. Das einzige Einstazgebiet für C++ sind doch Spiele, weil sich da keiner für die Sicherheit interessiert, aber sonst spricht doch alles für Java.
-
Troll...
-
Taschenlampe schrieb:
...aber sonst spricht doch alles für Java.
naja, java-anwendungen starten langsamer und wenn der müllsammler losgeht, kann's auch zu verzögerungen kommen...
-
Java schön und gut, aber JRE ist RIESIG
Und außerdem find ich kein JRE für mein jetziges Debian etch (testing).
-
jre's kriegste hier: http://www.java.com/de/download/manual.jsp
-
Man kann es ja auch bleiben lassen, mit Pointern und ähnlichem Unsinn anzustellen.
Ansonsten macht mir Java zu viel auf eigene Faust herum, eine Programmiersprache soll eigentlich kein Eigenleben haben.
-
Taschenlampe schrieb:
Gibt es eigentlich noch einen Grund für Software C++ zu verwenden und nicht Java? Schon das Datum geht ja in den standard C++ Programmen nur bis 2038 und auch das Exceptionhandling ist viel schlechter (Division durch 0 usw.) und natürlich gibt es noch viele Möglichkeiten mit Pointern schwachsinn anzustellen. Java ist dagegen um ca. 10% langsamer was aber immer durch einen schnelleren PC ausgeglichen werden kann. Das einzige Einstazgebiet für C++ sind doch Spiele, weil sich da keiner für die Sicherheit interessiert, aber sonst spricht doch alles für Java.
1. C++ hat einige Einsatzgebiete, für die Java nicht geeignet ist. Ich denke da zum Beispiel an Bereiche, die man so unter dem Begriff "Systemprogrammierung" zusammenfasst.
2. C++ bietet einige Ausdrucksmöglichkeiten, die es so in Java nicht gibt. Metatemplateprogrammierung ist da so ein Beispiel. Wenn man ein Anwendungsgebiet hat, in dem einen das sehr gelegen kommt, dann würde man C++ natürlich gegenüber Java bevorzugen. ...ähnliches gilt aber natürlich auch in die andere Richtung.
Also: Die Einsatzgebiete von Java und C++ überschneiden sich zwar zu großen Teilen, es gibt aber auch genug Einsatzgebiete, in denen diese Sprachen nicht in Konkurrenz zueinander stehen.
-
fdgdfg schrieb:
Java schön und gut, aber JRE ist RIESIG
JRE 1.4 belegt 40 MB
Und zur Laufzeit wird nur geladen, was auch benötigt wird. Der Overhead an Speicher der VM ist maximal im Embedded Bereich ein Problem.
Oder was genau meinst Du mit RIESIG?
-
Nanyuki schrieb:
Ansonsten macht mir Java zu viel auf eigene Faust herum, eine Programmiersprache soll eigentlich kein Eigenleben haben.
selber kein plan wovon du redest nä?
-
Gregor schrieb:
1. C++ hat einige Einsatzgebiete, für die Java nicht geeignet ist. Ich denke da zum Beispiel an Bereiche, die man so unter dem Begriff "Systemprogrammierung" zusammenfasst.
2. C++ bietet einige Ausdrucksmöglichkeiten, die es so in Java nicht gibt. Metatemplateprogrammierung ist da so ein Beispiel. Wenn man ein Anwendungsgebiet hat, in dem einen das sehr gelegen kommt, dann würde man C++ natürlich gegenüber Java bevorzugen. ...ähnliches gilt aber natürlich auch in die andere Richtung.
Also: Die Einsatzgebiete von Java und C++ überschneiden sich zwar zu großen Teilen, es gibt aber auch genug Einsatzgebiete, in denen diese Sprachen nicht in Konkurrenz zueinander stehen.
1. Stimmt
2. Ändert nichts daran, dass Java viel sicherer ist.
-
Java hat Sicherheitslücken. C++ hat keine Sicherheitslücken.
-
Taschenlampe schrieb:
2. Ändert nichts daran, dass Java viel sicherer ist.
Ne, ändert nichts daran. Aber die Sicherheit, die Du da meinst, ist eben auch nicht alles, sondern nur ein Merkmal, das man einer Sprache zuordnen kann. Man wird die Entscheidung für oder gegen eine Sprache im Allgemeinen aber nicht nur von einem Merkmal abhängig machen. Da spielen viele Dinge eine Rolle. Die Ausdrucksfähigkeiten einer Sprache gehören da genauso zu, wie auch Performance-Erwägungen oder auch das Vorhandensein bestimmter Bibliotheken und Werkzeuge oder das Vorhandensein entsprechenden Know-Hows.
Wenn man alles relevante zusammennimmt, dann wird man feststellen, dass es nicht eine beste Sprache für alles gibt, sondern dass das von dem speziellen Einsatz abhängt. Zudem spielen immer auch subjektive Aspekte eine Rolle.
-
pppppppp schrieb:
Java hat Sicherheitslücken. C++ hat keine Sicherheitslücken.
Das liegt daran, dass "Sicherheit" in C++ insgesamt ein Fremdwort ist.
Wenn man keinerlei Sicherheit gewährleistet, kann man auch keine Sicherheitslücken haben.
-
ach schadensroutine kann man auch in java schreiben *g*
-
Man kann doch auch leicht ein Programm mit Java schreiben, das abstürzt oder undefiniertes Verhalten erzeugt. Ich kenne mich mit Java nicht wirklich gut aus, aber in mehreren Threads hier wurden Beispiele gezeigt. Zum Beispiel ging das über das Fangen von System-Fehlern oder irgend wie so etwas.
Java ist doch nicht sicherer, nur weil es keine Pointer gibt. Wenn du vor Pointern angst hast, dann kannst du dir ja auch so komische Java-Pointer für C++ basteln.
Ob ein fehlerhaftes Programm in Java oder C++ geschrieben ist, ist im Grunde egal, da der Kernpunkt ist, das es Fehlerhaft ist.
Und solange Terabyte-RAM nicht handelsüblich ist, sehe ich keinen Grund Java-Software einzusetzen.
Gregor schrieb:
pppppppp schrieb:
Java hat Sicherheitslücken. C++ hat keine Sicherheitslücken.
Das liegt daran, dass "Sicherheit" in C++ insgesamt ein Fremdwort ist.
Wenn man keinerlei Sicherheit gewährleistet, kann man auch keine Sicherheitslücken haben.
Aber es ist im Grunde ein Problem, das man bei Java eben eine dicke Closed-Source VM erhält. Es bleibt einem eben nicht viel über, als sich darauf zu verlassen, dass der Hersteller der VM gut genug gearbeitet hat. So weit ich weiß, hatten bisher schon alle größeren VMs irgend welche Sicherheitslöcher.
Ich halte nicht viel davon, das man Sicherheit schaffen will, in dem man die Code-Basis vergrößert und dann auch noch dem Programmierer die Einsicht verbietet.
-
Taschenlampe schrieb:
Gregor schrieb:
1. C++ hat einige Einsatzgebiete, für die Java nicht geeignet ist. Ich denke da zum Beispiel an Bereiche, die man so unter dem Begriff "Systemprogrammierung" zusammenfasst.
2. C++ bietet einige Ausdrucksmöglichkeiten, die es so in Java nicht gibt. Metatemplateprogrammierung ist da so ein Beispiel. Wenn man ein Anwendungsgebiet hat, in dem einen das sehr gelegen kommt, dann würde man C++ natürlich gegenüber Java bevorzugen. ...ähnliches gilt aber natürlich auch in die andere Richtung.
Also: Die Einsatzgebiete von Java und C++ überschneiden sich zwar zu großen Teilen, es gibt aber auch genug Einsatzgebiete, in denen diese Sprachen nicht in Konkurrenz zueinander stehen.
1. Stimmt
2. Ändert nichts daran, dass Java viel sicherer ist.
Wo ist da Sicherheit? Der Programmier ist da gefragen, wie in C++ kann ich Java Prgramme schreiben, die crashen und nicht zu gebrauchen sind, blos hat man in Java den Vorteil, dass fast immer ne Exception geschmissen wird. Schon ne frühede Netbeans Version ausprobieret, da hat der GUI Designer in der Beta immer Exception gewurfen, folge wieder deinstalliert ^^
-
rüdiger schrieb:
Aber es ist im Grunde ein Problem, das man bei Java eben eine dicke Closed-Source VM erhält. Es bleibt einem eben nicht viel über, als sich darauf zu verlassen, dass der Hersteller der VM gut genug gearbeitet hat. So weit ich weiß, hatten bisher schon alle größeren VMs irgend welche Sicherheitslöcher.
Ich halte nicht viel davon, das man Sicherheit schaffen will, in dem man die Code-Basis vergrößert und dann auch noch dem Programmierer die Einsicht verbietet.
Die Einsicht? In den Code? Den hat man bei Java. Wenn darüber genörgelt wird, dass Java keine OSS sei, dann ist damit gemeint, dass nicht jeder den Code verändern darf und irgendwelche abgeleiteten Produkte damit herstellen darf. Es geht nicht darum, dass die Leute den Code nicht sehen könnten. Der ist öffentlich sichtbar.
...und BTW: Open Source Java ist keine 2 Monate von uns entfernt:
http://news.yahoo.com/s/infoworld/20061025/tc_infoworld/83138
-
Zur Sicherheit:
Ich sehe da in erster Linie zwei Aspekte:
1. Die Frage, ob jemand während des Betriebs eines Programms von außen Code einschleusen kann, der dann ausgeführt wird. Damit meine ich zum Beispiel solche Sicherheitslücken in Browsern, von denen man häufiger mal hört. ...das war zum Beispiel mal durch manipulierte JPGs im IE möglich. In Java ist soetwas viel problematischer: AFAIK sind dafür meistens irgendwelche Buffer-Underruns oder so verantwortlich, die es so in Java nicht gibt. Die JVM macht halt immer Checks bezüglich Indizes usw..
2. Die Frage, ob ein Programm dem Rechner, auf dem es ausgeführt wird, irgendwie Schaden zufügt. In Java kann man das Programm innerhalb einer Sandbox laufen lassen. Dadurch verbietet man praktisch alle möglichen Dinge, die Schaden könnten. IO usw.. Bei Applets wird das ja gemacht, aber ich wüsste nicht, was dagegen spricht, das generell bei Programmen zu machen, denen man nicht vertraut. AFAIK gibt es da JVM-Parameter, mit denen man so eine Sandbox auch für normale Programme anschalten kann.
Ob solche Aspekte für den Programmierer oder auch den Nutzer relevant sind, ist wohl von Einzelfall zu Einzelfall unterschiedlich. Ich würde eigentlich davon ausgehen, dass das meistens keine besonders große Rolle spielt. ...nur halt bei Programmen, die irgendwie am Internet hängen.
-
rüdiger schrieb:
Man kann doch auch leicht ein Programm mit Java schreiben, das abstürzt oder undefiniertes Verhalten erzeugt.
In Java ist viel weniger undefiniert als in C++. Beim Threading kann es zum Beispiel auf unterschiedlichen Plattformen zu unterschiedlichem Verhalten kommen. Viel mehr fällt mir da aber nicht ein. Ich weiß nicht, auf was Du da hinaus willst.
-
ihr tut gerade so, als sei ein auto, das neben den vorwärtsgängen auch einen rückwärtsgang hat, abzulehnen, weil die meisten einparkunfälle rückwärts passieren.
warum sollte man in c++ mist programmieren? gute c++-programme sind allemal sicherer als gute java-programme. nur weil man 15 bis 20 jahre braucht, um mit c++ praktisch fehlerfrei zu programmieren, ist das doch kein grund, gleich zu weinen und baby-sprachen zu benutzen.