Geschwindigkeit vs. Sicherheit



  • Simon2 schrieb:

    ist das für mich kein Beispiel dafür, dass Java eine "gute Treibersprache" ist.

    Das habe ich nicht behauptet. Es ging um die Möglichkeit, soetwas zu machen. Einen Grund, warum man das vielleicht in Erwägung ziehen könnte, sieht man in dem Zitat da oben.



  • net schrieb:

    ...
    ja, aber damit benutzt du ausschliesslich den 'kompatibilitätsmodus' von c++ ...

    Ich muß gestehen, dass ich C unter C++ mitgemeint habe.
    Es ging auch nur darum: Versuch' mal, in Java auf rohen Speicher zuzugreifen (lesend&schreibend) .... dafür geben C/C++ Dir etwas an die Hand.

    Gruß,

    Simon2.



  • Gregor schrieb:

    Simon2 schrieb:

    ist das für mich kein Beispiel dafür, dass Java eine "gute Treibersprache" ist.

    Das habe ich nicht behauptet. Es ging um die Möglichkeit, soetwas zu machen. Einen Grund, warum man das vielleicht in Erwägung ziehen könnte, sieht man in dem Zitat da oben.

    Wie gesagt: Kunststück, wenn ich für das eine eine angepasste (Interpreter-)Laufzeitumgebung in meinen OS-Kernel einflicke und den anderen direkt auf die Hardware schicke.... 🙄
    Wenn sie aus dem C-Programm Pseudocode generieren und den über eine VM interpretieren ließen, wäre das Ergebnis identisch.

    Nicht vergessen: Sun will ihr Solaris und ihre VMs verkaufen - da ist Java nur Mittel zum Zweck.

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Wenn sie aus dem C-Programm Pseudocode generieren und den über eine VM interpretieren ließen, wäre das Ergebnis identisch.

    Oh, Wunder! Einige Eigenschaften von Java sind darauf zurückzuführen, dass Javaprogramme in einer JVM laufen. Wer hätte das gedacht? Bei C ist das halt nicht so, da hilft auch kein "wenn..., dann hätte..." oder so. Abgesehen davon würde das nicht ausreichen, um zum gleichen Ergebnis zu kommen.



  • Simon2 schrieb:

    Nicht vergessen: Sun will ihr Solaris und ihre VMs verkaufen - da ist Java nur Mittel zum Zweck.

    OpenSoloaris ist kostenlose OSS und die JVMs sind auch größtenteils kostenlos zu beziehen. Suns Geschäftsmodell läuft anders.



  • Gregor schrieb:

    Simon2 schrieb:

    Wenn sie aus dem C-Programm Pseudocode generieren und den über eine VM interpretieren ließen, wäre das Ergebnis identisch.

    Oh, Wunder! Einige Eigenschaften von Java sind darauf zurückzuführen, dass Javaprogramme in einer JVM laufen. Wer hätte das gedacht? Bei C ist das halt nicht so, da hilft auch kein "wenn..., dann hätte..." oder so.

    Hmmm und dann ist Java auf einer schlechtprogrammierten VM eine schlechte Programmiersprache und auf einer gutprogrammierten eine gute ? ...
    Wenn Du über VMs reden möchtest, kannst Du das gerne machen, aber das entzieht jeglichem Vergleich der Sprachen den Boden - dann kannst Du höchstens sagen "Für Java gibt's aber so schöne VMs" ... dann muß ich aber sagen: Für Visual Basic gibt's viel schönere Anwendungen => als ist doch VB die bessere Sprache ? 😉

    Warten wir mit der Abschaffung der Nicht-Javaprogrammiersprachen mal ab, wie viele Hardwarehersteller VMs für ihre Geräte herstellen, OK ?

    Gruß,

    Simon2.



  • Gregor schrieb:

    Simon2 schrieb:

    Nicht vergessen: Sun will ihr Solaris und ihre VMs verkaufen - da ist Java nur Mittel zum Zweck.

    OpenSoloaris ist kostenlose OSS und die JVMs sind auch größtenteils kostenlos zu beziehen. Suns Geschäftsmodell läuft anders.

    🙄

    Ach, sind wir jetzt im "Fanboy-Modus" angekommen ? Sun verdient gutes Geld und ihr Javaprojekt ist ganz bestimmt keine "pro Bono"-Aktion, sondern gut definierter Teil dieses Geschäftsmodells.....

    Gaaaanz ruhig: Niemand macht Dir Dein Sun/Java schlecht ! Es gibt nur Leute, die wissen, dass es nicht die Alleinseligmachende Universalkraft ist.

    Gruß,

    Simon2.



  • net schrieb:

    treiber mit 'nem c++ compiler machen geht zwar, ist aber nicht toll (selbst kernelhacker wie linus t. raten davon ab).

    Na, das hat aber keinen technischen Grund. "C++ sucks. Sorry, but it does."



  • Simon2 schrieb:

    Warten wir mit der Abschaffung der Nicht-Javaprogrammiersprachen mal ab, wie viele Hardwarehersteller VMs für ihre Geräte herstellen, OK ?

    Warum kommen eigentlich immer so absolute Aussagen in solchen Diskussionen? Ich versuche eigentlich meistens, solche Aussagen zu vermeiden, weil sie im Allgemeinen falsch oder sinnlos sind.



  • Simon2 schrieb:

    Gregor schrieb:

    Simon2 schrieb:

    Nicht vergessen: Sun will ihr Solaris und ihre VMs verkaufen - da ist Java nur Mittel zum Zweck.

    OpenSoloaris ist kostenlose OSS und die JVMs sind auch größtenteils kostenlos zu beziehen. Suns Geschäftsmodell läuft anders.

    🙄

    Ach, sind wir jetzt im "Fanboy-Modus" angekommen ?

    Sorry, aber Deine Aussage war einfach falsch. Das hat nichts mit irgendwelchen Fanboy-Ideen zu tun.

    Abgesehen davon ist mit Sun natürlich sympatisch. Es gibt kaum einen Konzern, der einem so viel schenkt. 🙂



  • Optimizer schrieb:

    net schrieb:

    treiber mit 'nem c++ compiler machen geht zwar, ist aber nicht toll (selbst kernelhacker wie linus t. raten davon ab).

    Na, das hat aber keinen technischen Grund. "C++ sucks. Sorry, but it does."

    ein bisschen schon. solche os-kernel haben ihr eigenes objektmodell das nix mit dem von c++ gemeinsam hat.



  • Gregor schrieb:

    ...
    Sorry, aber Deine Aussage war einfach falsch. ...

    Also in unserer Firma zahlen wir eine Menge Holz für Sun-Hardware, -OS, etc... Ich wüßte nicht, was daran falsch sein soll.

    Gregor schrieb:

    ...
    Es gibt kaum einen Konzern, der einem so viel schenkt. 🙂

    und trotzdem haben sie sagenhafte Umsatzzahlen ... ob die wohl Geld im Keller drucken ? 😉

    Gregor schrieb:

    Simon2 schrieb:

    Warten wir mit der Abschaffung der Nicht-Javaprogrammiersprachen mal ab, wie viele Hardwarehersteller VMs für ihre Geräte herstellen, OK ?

    Warum kommen eigentlich immer so absolute Aussagen in solchen Diskussionen? Ich versuche eigentlich meistens, solche Aussagen zu vermeiden, weil sie im Allgemeinen falsch oder sinnlos sind.

    Das war auch die einzige Aussage ("Man kann alles mit Java machen - man braucht für nichts C++"), gegen die ich hier zu Felde gezogen.
    Damit sind wir uns ja einig. 🕶

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Gregor schrieb:

    ...
    Es gibt kaum einen Konzern, der einem so viel schenkt. 🙂

    und trotzdem haben sie sagenhafte Umsatzzahlen ... ob die wohl Geld im Keller drucken ? 😉

    das war mal. ich glaub' irgendwo gelesen zu haben, dass sun ganz schön am abkacken ist. viele stellen sich lieber 'n paar billige pc's hin als die teuren sun boxen...



  • Simon2 schrieb:

    und trotzdem haben sie sagenhafte Umsatzzahlen ... ob die wohl Geld im Keller drucken ? 😉

    Naja, so gut sind die finanziellen Resultate bei Sun momentan nicht. Aber Deine Aussage bezog sich auf die JVMs und Solaris. Beides ist kostenlos erhältlich. ...wobei das bei Solaris noch nicht so lange der Fall ist. Sun verdient Geld in erster Linie durch den Verkauf von Hardware und durch Support. Es ist also mehr die Infrastruktur um diese Softwareprodukte herum, in der Sun Geld verdient. Geld wirst Du Sun also nur dann zahlen, wenn Du "mehr" haben willst.

    Simon2 schrieb:

    Das war auch die einzige Aussage ("Man kann alles mit Java machen - man braucht für nichts C++"), gegen die ich hier zu Felde gezogen.
    Damit sind wir uns ja einig.

    Weder C++ noch Java werden für bestimmte Aufgaben zwingend benötigt. Da sind wir uns einig.



  • net schrieb:

    ich glaub' irgendwo gelesen zu haben, dass sun ganz schön am abkacken ist.

    Das ist allerdings auch übertrieben. Sun macht zwar momentan Minus, ist aber deutlich in einem Aufwärtstrend. Der Wert von Sun ist in den letzten 2 Jahren oder so von 13 Mrd. $ auf über 18 Mrd. $ angestiegen. Insofern kann es nicht soooo schlimm sein.



  • Simon2 schrieb:

    Es gibt nur Leute, die wissen, dass es nicht die Alleinseligmachende Universalkraft ist.

    Das hat hier auch nie jemand (Trolle ausgenommen) behauptet. 🤡

    Edit: Sun Umsatz Zahlen wurden grade erst bei Heise.de veröffentlicht:

    http://www.heise.de/newsticker/meldung/80116

    Viel Umsatz, jedoch unterm Strich Verluste (jedoch mit Aufwärtstrend).



  • net schrieb:

    Optimizer schrieb:

    net schrieb:

    treiber mit 'nem c++ compiler machen geht zwar, ist aber nicht toll (selbst kernelhacker wie linus t. raten davon ab).

    Na, das hat aber keinen technischen Grund. "C++ sucks. Sorry, but it does."

    ein bisschen schon. solche os-kernel haben ihr eigenes objektmodell das nix mit dem von c++ gemeinsam hat.

    Klar, dass du dich an die Treiberschnittstelle anpassen musst. Ich kann also ein 2kB C-Programm schreiben, dass die JVM startet, mit einem Java-Programm, das den Treiber implementiert. Also insgesamt kann man glaube ich nicht sagen, dass man auf Grund einer Treiberschnittstelle am besten eine bestimmte Sprache verwendet. Es mag natürlich andere gute Gründe geben.



  • Optimizer schrieb:

    net schrieb:

    Optimizer schrieb:

    net schrieb:

    treiber mit 'nem c++ compiler machen geht zwar, ist aber nicht toll (selbst kernelhacker wie linus t. raten davon ab).

    Na, das hat aber keinen technischen Grund. "C++ sucks. Sorry, but it does."

    ein bisschen schon. solche os-kernel haben ihr eigenes objektmodell das nix mit dem von c++ gemeinsam hat.

    Klar, dass du dich an die Treiberschnittstelle anpassen musst. Ich kann also ein 2kB C-Programm schreiben, dass die JVM startet, mit einem Java-Programm, das den Treiber implementiert. Also insgesamt kann man glaube ich nicht sagen, dass man auf Grund einer Treiberschnittstelle am besten eine bestimmte Sprache verwendet. Es mag natürlich andere gute Gründe geben.

    naja, andererseits könnte man 'nen kernel basteln mit c++ -kompatiblen treiberschnittstellen, aber möglicherweise ist das oo-gedöns, das c++ bietet, zu statisch dafür d.h. man müsste selbst dann eine laufzeit-objektverwaltung drum herum bauen. vom speed her ginge es ja, da nehmen c und c++ sich nix.



  • Gregor schrieb:

    Für mich läuft "mit C++ programmieren" meistens darauf hinaus, dass ich viel Zeit mit dem Debugging verbringe. Wenn ich mit Java programmiere, dann läuft das darauf hinaus, dass ich die meiste Zeit programmiere. Ich muss da nicht so viel debuggen.

    Genau aus solchen Gründen glaube ich, dass sich zu viele Leute ein negatives Urteil über C++ erlauben, ohne die Sprache wirklich zu kennen. Ich glaube, ich habe noch nie in C++ einen Debugger zur Fehlersuche verwendet. Oder zumindest ist das solange her, dass ich mich nicht mehr daran erinnern kann. Natürlich verwende ich auch schon mal einen Debugger, aber idR nur dann, wenn ich eine Schrittanalyse brauche, um zu testen, ob ein implementierter Algorithmus auch richtig funktioniert.
    Fehlerhandling gibt's bei mir natürlich trotzdem, und man muss dafür auch einiges tun. Das fällt in den meisten Fällen aber trivialer aus als man glaubt. Mein Leak Detektor zB nötigt mir gerade mal ein simples Include ab. Und ich empfinde es auch nicht als Nachteil, dass bestimmte Sicherheitsmechanismen nicht "eingebaut" sind.
    Du hast ja einen Auszug gebracht, in dem es um die Sicherheit zwischen Java und C++ geht.

    Gregor schrieb:

    As a demonstration of the safety properties provided by Java, we introduced a null pointer dereferencing bug into both the C and Java versions of the RAM disk device. The effect in the Java version was that a Java exception was thrown, resulting in an error code being returned from the kernel to the calling application. The C version caused a panic crash of the Solaris kernel. (This was not unexpected, but it does make for a dramatic conclusion to a presentation!)

    Erstmal, ich dachte eigentlich, dass es in Java keine Zeiger gibt, aber egal.
    Man kann das natürlich positiv für die Sicherheit von Java auslegen, aber genauso negativ für die Performance von Java. Und einzig und allein seinen Blick auf Sicherheit zu richten, wenn man eine generelle Betrachtung machen will, ist zu wenig. Keinem nützt eine sichere Sprache etwas, wenn sie zu langsam ist. Gerade Javaisten dürften das doch mit am besten wissen. Und genau das ist auch der Punkt bei dem Auszug. Um die Sicherheit zu erreichen, muss in Java permanent auf Null abgefragt werden. Auch wenn es praktisch nie notwendig ist, da man normalerweise keinen Nullzeiger dereferenziert. Und wenn tatsächlich der Fall eintreten sollte, dass ein entsprechender Fehler im Programm ist, dann wird er halt gefixt und gut ist. Der unnötige Vergleich auf Null bleibt in Java trotzdem. Und das ist, glaube ich, auch die Thematik, die Java Fanatiker nicht verstehen. Dir wird von C++ nichts aufgezwungen. Du kannst selbst entscheiden, was du möchtest. Optimale Performance oder notwendige Sicherheit, beides gleichzeitig wirst du niemals bekommen. Auch wenn ich davon ausgehe, dass Rechner irgendwann so schnell werden, dass Performance sekundär ist. Aber bis dahin kann man sehr gut mit C++ arbeiten und Java wird dann vermutlich durch etwas vollkommen anderes ersetzt worden sein, was besser auf ein Virtualisierungskonzept zugeschnitten ist.



  • groovemaster schrieb:

    [
    Erstmal, ich dachte eigentlich, dass es in Java keine Zeiger gibt, aber egal.

    innerhalb der vm gibt's welche und die sind auch damit gemeint...


Anmelden zum Antworten