Aversion gegen Java



  • Im C-Unterforum schrieb ...

    Techel schrieb:

    Java hat bei mir verkackt, aber darum geht es hier nicht.

    ... und ...

    SeppJ schrieb:

    Und daher hat es so einen schlechten Ruf. Javas Designziel ist scheinbar, dass irgendwelche Vollhonks damit ein halbwegs akzeptables Programm abliefern können. Mit Betonung auf "halbwegs".

    Woran kann das liegen? Auf welche Probleme stößt jemand wohl, der Java total verwirft?



  • Auf welche Probleme stößt jemand wohl, der Java total verwirft?

    Java-Software ist in freier Wildbahn eher selten. Es gibt zwar wohl reichlich Software, die intern in irgendwelchen Unternehmen läuft, aber Endbenutzer treffen eher selten drauf. Entsprechend kann man den meisten Computernutzern nur zur Deinstallation von Java raten, zumal sich das Ding einigermaßen tief ins System einnistet. Soweit ich weiß, hat auch das BSI schon zur Deinstallation von Java geraten, wenn man es nicht braucht. Ich hab hier schätzungsweise seit mehr als 5 Jahren kein Java mehr installiert - vermissen tue ich es nicht.

    Vor ein paar Jahren hatte ich die Hoffnung, Java würde - so wie Flash - aussterben. Aber den Gefallen hat es mir nicht getan (Flash auch noch nicht wirklich - aber da ist noch Hoffnung).

    Woran kann das liegen?

    Generelle Aversion gegen in Bytecode übersetzte Sprachen, Langsamkeit von Java (allein diese Gedenksenkunden beim Start von Java-Programmen...), Sicherheitslücken, fehlende Kompatiblität (Java hält das Versprechen nicht, dass das selbe Binary überall laufen würde - nicht nur, weil es eine JRE voraussetzt).



  • Mr X schrieb:

    Auf welche Probleme stößt jemand wohl, der Java total verwirft?

    Java-Software ist in freier Wildbahn eher selten. Es gibt zwar wohl reichlich Software, die intern in irgendwelchen Unternehmen läuft, aber Endbenutzer treffen eher selten drauf. Entsprechend kann man den meisten Computernutzern nur zur Deinstallation von Java raten, zumal sich das Ding einigermaßen tief ins System einnistet. Soweit ich weiß, hat auch das BSI schon zur Deinstallation von Java geraten, wenn man es nicht braucht. Ich hab hier schätzungsweise seit mehr als 5 Jahren kein Java mehr installiert - vermissen tue ich es nicht.

    Vor ein paar Jahren hatte ich die Hoffnung, Java würde - so wie Flash - aussterben. Aber den Gefallen hat es mir nicht getan (Flash auch noch nicht wirklich - aber da ist noch Hoffnung).

    Woran kann das liegen?

    Generelle Aversion gegen in Bytecode übersetzte Sprachen, Langsamkeit von Java (allein diese Gedenksenkunden beim Start von Java-Programmen...), Sicherheitslücken, fehlende Kompatiblität (Java hält das Versprechen nicht, dass das selbe Binary überall laufen würde - nicht nur, weil es eine JRE voraussetzt).

    Danke, du hast einige gute Argumente gegen Java genannt. Was ich bisher gehört habe, waren eher so subjektive Aussagen, die letztlich immer auf dasselbe hinauslaufen: "Java kann ich nicht ab, weil ich's doof finde!"

    Mr X schrieb:

    Vor ein paar Jahren hatte ich die Hoffnung, Java würde - so wie Flash - aussterben. Aber den Gefallen hat es mir nicht getan ...

    Demnach müsste die Existenz von Android, das erfolgreiche Smartphone-OS, das ja bekannterweise auf Java setzt, dein Gemüt schwer belasten. 😃



  • “Saying that Java is nice because it works on all OSes is like saying that anal sex is nice because it works on all genders.”

    Gibt kaum mehr dazu zu sagen. Aber: nix gegen Analsex.



  • EOP schrieb:

    “Saying that Java is nice because it works on all OSes is like saying that anal sex is nice because it works on all genders.”

    Gibt kaum mehr dazu zu sagen. Aber: nix gegen Analsex.

    Der Urheber dieses Spruches hatte wohl weniger Probleme mit Analsex, als er Probleme mit Schwulen hat.

    Btw, ich persönlich mag Java und C. Diese Kombination dürfte wohl eher selten sein.

    Dafür bin ich Kritiker der IT-Fastfood-Kette Microsoft. Obwohl ich keinesfalls leugne, dass Windows in einigen Fällen recht brauchbar ist.



  • Ist es aber nicht so, dass sehr viele Projekte in Java entwickelt werden?

    Ich glaub als C++ Programmier würde man schon etwas länger suchen / weniger Auswahl haben.



  • annotation schrieb:

    Ist es aber nicht so, dass sehr viele Projekte in Java entwickelt werden?

    Ja, sicher. Java ist aktuell die mit Abstand am häufigsten genutzte Programmiersprache: http://www.tiobe.com/tiobe_index.
    Danach folgt erstmal lange Zeit nichts und dann kommt C, auf dem zweiten Platz.

    Ich nehme an, dass die massive Nutzung von Java Android zuzuschreiben ist. Während C im Mikrocontroller-Bereich seit vielen Jahren der unangefochtene Platzhirsch ist.



  • Ich arbeite seit ca. 16 Jahre beruflich mit Java, davor C++.

    Java wird heute massiv im Enterprise-Bereich (Inhouse-Individual) eingesetzt, also viel auf Application-Server. Das bekommen User gar nicht mit, auch die in den Unternehmen selbst nicht. Denn das Java läuft ja auf der Server-Seite.

    Aber auch viele bekannte Internet-Seiten, wie XYscout24.de, sind Java-EE Anwendungen.

    Warum? Weil Java heute ein sehr gutes Ökosystem in dem Bereich hat. So wie C++ im Games-Bereich ein sehr gutes Ökosystem aufweisen kann.

    Da kann man Java mögen oder nicht, es sind Fakten.

    Und was die Startzeiten angeht: die sind auf einem Server sowas von egal. Der läuft ja optimalerweise ewig ohne Restart durch. Und wenn er mal neu gestartet werden muss, gibt es ja noch den Loadbalancer, da laufen ja noch die anderen nebenbei.

    Auch was den JIT angeht, irgendwann ist die Anwendung einmal komplett zur Laufzeit übersetzt.

    Es gibt natürlich auch mit Java Memory-Leaks und auch sonst fehlerhaften Code. Aber das ist nicht schlimmer als andere Sprachen. Am Ende ist das Ökosystem einfach für Enterprise einfach super.

    Und nein, ich bin trotzdem kein Java-Fan. :p Aber ich bin Profi! Und ein Profi darf sich nunmal nicht zu sehr von Emotion leiten lassen. 🙂

    Man muss dazu sagen, das sich die Java-Sprache, die Java VM und Java Runtime die letzten 20 Jahre weiter entwickelt haben!
    Es gibt ja Generics (sind keine Templates, aber eine deutliche Unterstützung!), Lambdas, Asynchrone Sprachelemente usw.

    Ja, sogar so etwas wie RAII gibt es. (ich weiß, ist weit her geholt, aber sie versuchen es)

    Die JavaVM unterstützt auch direkt Scriptsprachen. Eine Einbindung in die eigene Anwendung ist damit recht einfach.

    Und JavaFX 2 (ist was anderes als das ursprübgliche JavaFX 1) ist auch eine sehr interessante GUI-Technik, die das elend langsame Swing ablöst! Vor 15 bis 20 Jahren konnte man regelrecht zu sehen, wie sich eine Swing-GUI aufbaut. Mit Java FX 2 ist man auf einem komplett anderen Planeten. 👍

    Wer natürlich generell eine Java-Aversion hat, den wird man nicht mehr mit Java friedlich stimmen können. 😉



  • Mirek schrieb:

    Btw, ich persönlich mag Java und C. Diese Kombination dürfte wohl eher selten sein.

    Muss nicht sein... Ich mag vor allem C++ und nicht C. Aber ich hab zumindest kein Problem mit Java. Ich habe auch eine Weile damit gearbeitet. Ich hab überhaupt keine Abneigung gegen Java, mag das aber auch nicht direkt.
    Wie Artchi geschrieben hat, das Ökosystem im Enterprise Bereich ist sehr gut. In dem Bereich habe ich eben auch gearbeitet und meine Vorstellung von Webanwendungen davor war PHP und print "<html>\n"... Ich fands dann auch toll, Backends mit Java zu entwickeln.
    Die Sprache an sich finde ich aber nicht wirklich toll. Ich habe davor noch viel C# gemacht und sprachlich gesehen war Java ein Rückschritt. Ist es immer noch, C# hat sich seitdem wieder ein gutes Stück weiterentwickelt. Allein schon das Vergleichen von Strings mit equals finde ich immer noch zum Kotzen.
    Der Hauptgrund, warum ich C++ bevorzuge, sind die Projekte. Ich will im Endeffekt im Moment einfach nicht mehr im Enterprise Bereich arbeiten. Das hat paar Jahre Spass gemacht, aber dann wurde es mir zu eintönig und ich habe neue Herausforderungen gesucht. Ich arbeite jetzt im CAD/PDM Bereich und finde es einfach viel spannender und abwechslungsreicher. Und dann kommt jetzt zusätzlich ins Spiel, dass mir auch das Optimieren viel Spass macht und ich das mit C++ viel besser im Griff habe.
    So gesehen habe ich auch die oben zitierte Aussage von SeppJ. Ich "brauche" Java als Sprache nicht. Da gibts sehr viele Kompromisse und Vereinfachungen, die es in C++ nicht gibt. Und das ist wohl auch eindeutig so, dass viel mehr Leute viel schneller mit Java zurechtkommen, als mit C++. Mich eingeschlossen, ich habe eine ganze Weile gebraucht, um mich mit C++ anzufreunden. Aber da ich das schon kann, will ich die vereinfachte und eingeschränkte Welt von Java eigentlich nicht. Außer, ich würde wieder Enterprise Anwendungen schreiben, aber da eben auch nicht wegen der Sprache an sich und nicht wegen der Runtime.



  • Mirek schrieb:

    Ja, sicher. Java ist aktuell die mit Abstand am häufigsten genutzte Programmiersprache: http://www.tiobe.com/tiobe_index.
    Danach folgt erstmal lange Zeit nichts und dann kommt C, auf dem zweiten Platz.

    Tiobe ist sehr mit vorsicht zu geniesen, wobei das an der Tatsache nichts ändert das Java bei vielen Indizes in der Regel recht weit oben (Platz 1-3) rangiert. Allgemein sind viele C-Basierte Sprachen (C, C++, C#, Java...) meist im oberen [Rang 1-10] Umfeld angesiedelt.



  • Mein persönlicher Grund gegen das Benutzen von Java ist einfach fehlende Ausdrucksstärke, es fühlt sich wie in einem Sandkasten mit Gittern an. Das Vorhandensein einer VM ist eher weniger das Problem, siehe Android. Wie Wutz bereits ausdrucksstark geschrieben hat, ist ein Design bei Java einfach unauffindbar, das fängt bei drangeklöppelten Generics an, geht über Operatorenspezialisation und hört bei try-with-resources auf. Besonders Letzteres ist meiner Meinung nach ein Stich ins Auge, da ist mir RAII viel angenehmer, als ein lumpiges try() überall hinein werfen zu müssen



  • asc schrieb:

    Allgemein sind viele C-Basierte Sprachen (C, C++, C#, Java...) meist im oberen [Rang 1-10] Umfeld angesiedelt.

    Der Grund dafür ist aber sicher nicht ihre C-Basiertheit, sondern viel mehr ihre große Akzeptanz unter den Programmierern weltweit. Dann entsteht auch eine große Codebasis, was die Beliebtheit der Sprache(n) weiter verstärkt.


  • Mod

    Mirek schrieb:

    asc schrieb:

    Allgemein sind viele C-Basierte Sprachen (C, C++, C#, Java...) meist im oberen [Rang 1-10] Umfeld angesiedelt.

    Der Grund dafür ist aber sicher nicht ihre C-Basiertheit, sondern viel mehr ihre große Akzeptanz unter den Programmierern weltweit. Dann entsteht auch eine große Codebasis, was die Beliebtheit der Sprache(n) weiter verstärkt.

    Die Akzeptanz ist aber wiederum eine Folge der C-Basiertheit.



  • Lol.
    Versteht ihr unter "C-basiert" dass sie C-ähnliche Syntax haben oder was? Davon abgesehen hat Java mit C wohl kaum etwas gemein. Klar, beides sind imperative Sprachen, aber das war's dann auch schon.

    Trotzdem bin ich der Meinung dass genau die C-ähnliche Syntax wichtig ist um schnell breite Akzeptanz zu bekommen. Weil es die Einstiegsbarriere senkt.



  • hustbaer schrieb:

    Versteht ihr unter "C-basiert" dass sie C-ähnliche Syntax haben oder was?

    Yepp, das sollte aus dem Gespräch eigentlich ersichtlich sein.
    Die Maschinennähe und die schwache Typisierung von C waren nicht gemeint. 😉


  • Mod

    hustbaer schrieb:

    Lol.
    Versteht ihr unter "C-basiert" dass sie C-ähnliche Syntax haben oder was?

    So habe ich das zumindest gemeint.



  • Mirek schrieb:

    hustbaer schrieb:

    Versteht ihr unter "C-basiert" dass sie C-ähnliche Syntax haben oder was?

    Yepp, das sollte aus dem Gespräch eigentlich ersichtlich sein.

    Wo?



  • hustbaer schrieb:

    Mirek schrieb:

    hustbaer schrieb:

    Versteht ihr unter "C-basiert" dass sie C-ähnliche Syntax haben oder was?

    Yepp, das sollte aus dem Gespräch eigentlich ersichtlich sein.

    Wo?

    Ab dem Beitrag von asc: "Allgemein sind viele C-Basierte Sprachen (C, C++, C#, Java...) ..."



  • Hm, OK. Für mich ist das daraus nicht ersichtlich. Man kann es vielleicht erahnen. Für mich ist es der Begriff "C-basiert" dabei so dermassen falsch eigenwillig verwendet, dass ich nie fix davon ausgehen würde dass er mit der Bedeutung verwendet wurde.

    Aber egal.

    Noch etwas zum Thema:

    Ich mag Java auch nicht. Muss ich gottseidank auch nicht, da ich beruflich nicht damit zu tun habe. Die Gründe sind ähnlch denen die Mechanics beschrieben hat.
    str.equals(str2) ist einfach zum Kotzen.
    Daran kann man sich sicher gewöhnen, aber wenn man es nicht gewohnt ist, und keinen Grund hat sich daran zu gewöhnen, dann ist es erstmal grauslich.

    Oder die fehlende Type-Inference ala var/auto. Grund dafür dass es das nicht gibt ist... die wollen das einfach nicht. Weil sie schlauer sind als alle anderen.
    Siehe http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4459053

    Und ganz schlimm finde ich dass Java keine userdefinierten Value-Types hat. Dadurch werden bestimmte Dinge einfach lästig zu optimieren -- man muss z.T. extrem hässlichen und schlecht gekapselten Code schreiben wenn er performant laufen muss. Mehr oder weniger trifft das auf jede Sprache zu, bei Java ist es allerdings viel krasser als bei z.B. C++. C# liegt irgendwo dazwischen.



  • hustbaer schrieb:

    Oder die fehlende Type-Inference ala var/auto. Grund dafür dass es das nicht gibt ist... die wollen das einfach nicht. Weil sie schlauer sind als alle anderen.

    Ich habe den Eindruck, dass bei Java ein bisschen die C-Philosophie Einfluss hatte. Das KISS-Prinzip. Die Sprache soll nicht überladen mit Features sein.

    Aber seitdem Lambda Expressions und Streams Einzug gehalten haben, scheint das auch nicht mehr wirklich zu gelten.



  • Ich hab' das nicht selbst nachrecherchiert, aber ein Freund von mir der viel mit Java macht und sich mit der Entstehung/Geschichte dahinter befasst hat, hat mir erzählt dass der Java-Erfinder eine Sprache "für Doofe" machen wollte bei der man möglicht wenig falsch machen kann. (Wobei "für Doofe" jetzt nicht übermässig abwertend gemeint ist, gemeint sind Programmierer die sich sowohl von den Fähigkeiten als auch der Motivation im unteren Bereich des mittleren Drittels bewegen. Also die Leute mit denen grosse Firmen notgedrungen auch arbeiten müssen.)
    Und dass er daher auch das Featureset entsprechend beschnitten/künstlich klein gehalten hat. Weil's halt immer unübersichtlicher wird je mehr Features/Sprachkonstrukte man hat. Ist aber wie gesagt hörensagen.
    C# 1.0 war ja ähnlich - da waren ja auch nur ein paar wenige Dinge mehr enthalten als in damals aktuellen Java Version.

    Später wurden beide Sprachen dann erweitert - wobei C# die Vorreiterrolle übernommt hat, aber darum geht's ja eigentlich nicht.

    Durch das "möglichst einfach halten" ergeben sich bei Java mMn. ein paar krass schlimme Dinge - die ich ganz bei den Gründen warum ich Java nicht mag vergessen hatte 😃
    z.B. "default access" sollte mMn. "private" sein, und nicht "internal". Oder die "alles ist virtual" Sache. Auauauauweh. Gut, es gibt final, aber auch hier wieder: falscher Default.

    Andrerseits könnte ich C++ da genau so kritisieren. Dass Klassen per Default copyable sind und Konstruktoren per Default "implicit" finde ich auch doof.


Anmelden zum Antworten