Aversion gegen Java



  • Ethon_ schrieb:

    Trotzdem bin ich sehr gespannt wann die Value-Typen (aka C# struct) in Java kommen, Java 9 wohl nicht, und

    Da Java seit Anfang an immer wieder Sprachmottel von C++ jahrelang amlehnt und dann doch abkupfert, warum sich nicht jede Menge Arbeit sparen und gleich das Original nehmen?



  • Bitte ein Bit schrieb:

    Ich glaube Java ist über seinen eigenen Hype gestolpert.

    Java ist überhaupt nicht gestolpert, sondern eine äußerst erfolgreiche Sprache.



  • Gregor schrieb:

    Bitte ein Bit schrieb:

    Ich glaube Java ist über seinen eigenen Hype gestolpert.

    Java ist überhaupt nicht gestolpert, sondern eine äußerst erfolgreiche Sprache.

    Naja, so ein bisschen vielleicht schon. Als ich mit dem Programmieren anfangen wollte (Ende der neunziger) und mich umgehört habe, war Java damals allgegenwärtig. Es gab auch sehr viele Bücher zu Java, die sich mit Applets beschäftigt haben. Zumindest die sind schon mal ausgestorben. Und ansonsten gibts heute auch etwas mehr ernsthafte Alternativen und C++ ist auch wieder etwas interessanter geworden. Jedenfalls hatte ich damals den Eindruck, Java würde mindestens 90% ausmachen, und ansonsten gabs nur etwas Delphi und VB und dann noch C++ für Vollprofis. Ist heute zum Glück nicht mehr so einseitig.



  • Java ist doch ok. Man muss sich bei weiten nicht so doll mit der Programmiersprache beschäftigen wie bei C++ und die Ausführungsgeschwindigkeit reicht meistens aus.

    Klar sind dann auch Entwickler zum Teil im Boot die nicht die Experten sind, aber solange der Kunde zahlt und zufrieden ist, ist das doch egal.

    Entwicklungszeit zählt und auch dass man schnell Ersatz findet wenn ein Mitarbeiter weg fällt.

    Ich selbst mache jetzt kein Java mehr, weil ich mich jetzt sehr auf C++ mit Qt freue. Aber Java hat mich immer schnell ans Ziel gebracht und Fehler wurden schnell gefunden.

    Die Vielfalt ist doch gerade das Schöne.



  • Bjarne Stroustrup

    In C++ ist es schwieriger, sich selbst in den Fuß zu schießen, aber wenn man es tut, dann ist gleich das ganze Bein weg

    Mehr gibt es auch nicht zu sagen. Es mag ja C++ Entwickler geben die Ahnung haben, aber die sind rar gesät. Wie schwer der richtige Umgang mit C und C++ ist, sieht man schon an den unendlichen Sicherheitslücken. So gut wie jede C++ Software ist doch wie ein Schweizer Käse, bei dem man sich das Loch nur aussuchen muss.

    Das ist nicht nur Schuld der Sprache, aber um mit dieser Sprache sicher und hochperformant zu programmieren, muss man schon ein C++-Oberprofi sein und wer ist das schon?

    Je mehr C++ gemieden wird, und auf neue Sachen wie Rust oder so gesetzt wird, desto sicherer wird die IT-Welt. Leider ist Wahl für C++ meist keine freiwillige Entscheidung, sondern eher ein Muss wegen bestimmter Libs und Altprojekten.

    C++ ist toll für Egoshooter und Grafikszeugs, aber C++ ist nichts für Sicherheit, egal wie viel da noch an die Sprache rangeflanscht wird. Da blickt doch kaum noch Jemand durch. Und ein Leute zu finden die wirklich kompetent ein C++-Projekt weiter entwicklen dürfte auch sehr schwer sein und immer schwerer werden, weil sich kaum noch Leute dieses Relikt aus den 80er antun wollen.



  • Eigentlich müsste man auch an diesem Forum hier sehen, dass das Interesse an C++ immer mehr zurück geht.



  • Ich weiß nicht wie es in der Industrie aussieht, aber beim Heimanwender geht ja so gut wie gar nichts mehr ohne Java. Android macht viele PCs obsolet. Es sei denn man arbeitet wirklich in der IT und brauch einen PC. Aber der Löwenanteil der Bevölkerung wird immer seltener einen vollwertigen PC brauchen.



  • Javalove schrieb:

    Bjarne Stroustrup

    In C++ ist es schwieriger, sich selbst in den Fuß zu schießen, aber wenn man es tut, dann ist gleich das ganze Bein weg

    Mehr gibt es auch nicht zu sagen. Es mag ja C++ Entwickler geben die Ahnung haben, aber die sind rar gesät.

    Richtig, mehr gibts da auch nicht zu sagen. Willst du zur Elite gehören oder zu der breiten Masse an Vollhonks, die sich so ein bisschen oberflächlich auskennen? Für mich kommt nur ersteres in Frage.



  • Mechanics schrieb:

    Javalove schrieb:

    Bjarne Stroustrup

    In C++ ist es schwieriger, sich selbst in den Fuß zu schießen, aber wenn man es tut, dann ist gleich das ganze Bein weg

    Mehr gibt es auch nicht zu sagen. Es mag ja C++ Entwickler geben die Ahnung haben, aber die sind rar gesät.

    Richtig, mehr gibts da auch nicht zu sagen. Willst du zur Elite gehören oder zu der breiten Masse an Vollhonks, die sich so ein bisschen oberflächlich auskennen? Für mich kommt nur ersteres in Frage.

    Wenn Du "zur Elite" gehören möchtest, solltest Du das Beherrschen einer bestimmten Programmiersprache nicht zu der Fähigkeit erklären, die Dich auszeichnet.



  • Wenn man es auf eine einzige Fähigkeit reduziert, dann wohl nicht.
    Allerdings kann man sich mMn. als wirklich guter Programmierer auch nicht durch eine einzige Fähigkeit auszeichnen.

    Und wenn jemand C++ so richtig gut kennt und kann, dann ist das schonmal ordentlich was.
    Natürlich lange nicht genug, aber mMn. auch alles andere als uninteressant.



  • Javalove schrieb:

    Ich weiß nicht wie es in der Industrie aussieht, aber beim Heimanwender geht ja so gut wie gar nichts mehr ohne Java.

    Hätte ich jetzt genau das Gegenteil gesagt.
    Mir fallen genau zwei Sachen ein wo Herr Heimanwender mit etwas arbeitet was mit Java läuft, und das ist eben Android und Minecraft.
    Möglicherweise ist dann noch einiges in den ganzen Smart-* (TV, ...) Teilen auch Android bzw. allgemein Java. Viel ist aber auch native (C, C++).

    Javalove schrieb:

    Android macht viele PCs obsolet. Es sei denn man arbeitet wirklich in der IT und brauch einen PC. Aber der Löwenanteil der Bevölkerung wird immer seltener einen vollwertigen PC brauchen.

    Der Löwenanteil der Bevölkerung hat sowieso nie einen PC *gebraucht*.
    Und was lustig ist, ist dass gerade die wichtigste Anwendung auf Smartphones, nämlich der Browser, überall native ist.



  • @Javalove:
    Du klingst wie ein Mensch, welcher eine Lieblingssprache gefunden hat und nun total an Hypemärchen glaubt.

    Der Titel der unsichersten Programmiersprache geht eindeutig an Java. Java hat einen vergleichbaren Patchzyklus wie Windows weil eben Java im Internet genutzt wird, dieses offenbar professionell angegriffen wird und dadurch viele Lücken gefunden werden. Das BSI hat sogar schon empfohlen das Java Plugin zu deinstallieren. Das Konzept der sicheren Sprache Java ist gescheitert.

    Und wenn halt Buffer-Overflows nicht unter Java funktioniern, so sucht man sich halt andere Wege die Rücksprungadressen zu manipulieren, Programme mit erhöhten Rechten laufen zu lassen, Informationen zu klauen...

    Wenn du mal unter Windows das EMET Programm von Microsoft anschaust, siehst du diverse Angriffsarten wie DEP, Heap Spray, ASLR. Sicherheit ist ein komplexes Thema.

    Mittels EMET kann man diverse Programme absichern s.d. diverse Angriffstechniken wie Buffer-Overflow nicht mehr so einfach funktionieren. Aus meiner Sicht ein guter Schritt Richtung Sicherheit.



  • @Bitte ein Bit: Wenn Du Java als unsicherste Programmiersprache bezeichnest, dann heißt das, dass Du auch einige Sprachen nennen kannst, die in Sachen Sicherheit viel besser dastehen. Kannst Du mal ein positives Beispiel für so eine Sprache nennen, die in einem Bereich eingesetzt wird, in dem Java entsprechende Probleme hat?



  • hustbaer schrieb:

    Javalove schrieb:

    Ich weiß nicht wie es in der Industrie aussieht, aber beim Heimanwender geht ja so gut wie gar nichts mehr ohne Java.

    Hätte ich jetzt genau das Gegenteil gesagt.
    Mir fallen genau zwei Sachen ein wo Herr Heimanwender mit etwas arbeitet was mit Java läuft, und das ist eben Android und Minecraft.
    Möglicherweise ist dann noch einiges in den ganzen Smart-* (TV, ...) Teilen auch Android bzw. allgemein Java. Viel ist aber auch native (C, C++).

    Javalove schrieb:

    Android macht viele PCs obsolet. Es sei denn man arbeitet wirklich in der IT und brauch einen PC. Aber der Löwenanteil der Bevölkerung wird immer seltener einen vollwertigen PC brauchen.

    Der Löwenanteil der Bevölkerung hat sowieso nie einen PC *gebraucht*.
    Und was lustig ist, ist dass gerade die wichtigste Anwendung auf Smartphones, nämlich der Browser, überall native ist.

    Ich nutze den Browser auf meinem Smartphone extrem selten im Gegensatz zu den anderen Apps.

    Als Java-Programm unter Windows läuft bei mir JDownloader, Eclipse, CLion, Android-Studio und fast jeden Tag Minecraft. Also ohne Java wäre das ziemlich trostlos bei mir auf dem Laptop und erst recht auf dem Smartphone.



  • Javalove schrieb:

    Bjarne Stroustrup

    In C++ ist es schwieriger, sich selbst in den Fuß zu schießen, aber wenn man es tut, dann ist gleich das ganze Bein weg

    Mehr gibt es auch nicht zu sagen.

    Ich wünschte bei manchen Java-Programmen, dass der Kopf gleich mit explodieren würde, nicht nur der Fuss.
    Man kann das nämlich auch als Vorteil lesen, dass beschissene C++-Programme wenigstens direkt als solche erkannt werden und nicht irgendwie scheinbar halbwegs funktionieren, obwohl sie schrott sind und nicht das machen, was sie sollen.
    Auch Java zaubert aus einem schlechten Programmierer keinen Guten heraus.



  • Das ist richtig, aber bei Java hat ein mittel talentierter Programmierer(was die meisten wohl sind) vielleicht Performanceprobleme produziert, aber kann sich ziemlich sicher sein keine Speicherfehler, in der Art wie sie in C und C++ möglich sind, mit einzubauen.

    Warum gibt es denn Exploits, die auf Speicherproblemen aufbauen, wie Sand am Mehr? Weil kaum jemand C und C++ richtig programmieren kann. Das ist die Praxis und die zählt weit mehr als dass man ja theoretisch sicher programmieren könnte.

    Sicherheit allein dem Programmiere aufzulasten ist extrem fahrlässig. Meist geht das aus den unterschiedlichsten Gründen schief(Zeitmangel, ungenügendes Wissen, schlechte Doku/Team, alter Code usw.) Die Beweise gehen täglich durch die IT-Presse.



  • CFrager schrieb:

    Warum gibt es denn Exploits, die auf Speicherproblemen aufbauen, wie Sand am Mehr?

    Du bist mir auch so ein "Sand am Mehr". Root exploits ist was für die Chefs, die meisten exploits nutzen dämliche php-Programmierer aus.


  • Mod

    Ich mag Java auch nicht.
    Java ist höchstselbst eine Art Exploit.

    Java fügte dem erfolgreichen Unternehmen Sun wirtschaftlichen Schaden zu, bis in die Krise und hat der Open-Source Entwicklung eine rote Nase aufgesetzt.

    (aber ich kenne mich vielleicht auch nicht so gut aus. Wie bekommt man sowas hier
    wie man auf http://tryhaskell.org austesten kann

    [2^x | x <- [1..100]]
    

    auch im Java online Interpreter hin? )
    (nach Möglichkeit noch ohne Ausgabefehler/-abbruch(zeigt sich bei mir so) bei 2^88..)



  • Javalove schrieb:

    ...
    Wie schwer der richtige Umgang mit C und C++ ist, sieht man schon an den unendlichen Sicherheitslücken. So gut wie jede C++ Software ist doch wie ein Schweizer Käse, bei dem man sich das Loch nur aussuchen muss.
    ...

    Als C++ Programmierer kann ich die Sicherheitslöcher selber stopfen, wenn welche gefunden werden. Auch kann ich entscheiden, wie dringend ein Loch gestopft werden muss. Wenn bei Java die VM Sicherheitslöcher hat kann ich das nicht mehr und bin auf ein Update angewiesen, das dieses Loch stopft. Und je nach Anforderung muss ich mit einer neuen VM vielleicht größere Funktionstests machen, um das Verhalten bestehenden Codes unter der neuen VM zu prüfen.



  • nachtfeuer schrieb:

    Ich mag Java auch nicht.
    Java ist höchstselbst eine Art Exploit.

    Java fügte dem erfolgreichen Unternehmen Sun wirtschaftlichen Schaden zu, bis in die Krise und hat der Open-Source Entwicklung eine rote Nase aufgesetzt.

    (aber ich kenne mich vielleicht auch nicht so gut aus. Wie bekommt man sowas hier
    wie man auf http://tryhaskell.org austesten kann

    [2^x | x <- [1..100]]
    

    auch im Java online Interpreter hin? )
    (nach Möglichkeit noch ohne Ausgabefehler/-abbruch(zeigt sich bei mir so) bei 2^88..)

    Wie wäre es mit

    import java.math.*;
    import java.util.*;
    
    public class HelloWorld{
    
         public static void main(String []args){
            BigDecimal two=new BigDecimal(2);
            String[] result=new String[100];
            for(int i=0;i<result.length;i++)
            {
                result[i]=(i+1)+" - "+two.pow(i+1).toString();
            }
            System.out.println(Arrays.toString(result));
         }
    }
    

    ?
    Getestet hier.
    Bricht auch nicht bei 2^88 ab 😉


Anmelden zum Antworten