There are a few reasons people don’t like it. Some of those reasons are valid, and some of them are bullshit.
[ol]
[li]Java is verbose - This is true. The lack of type inference is pretty painful, and while your IDE can help with a lot of the boilerplate, it can be tedious.
[/li]> [li]Java is slow - This is bullshit. Take a look at Java vs C++ g++ | Computer Language Benchmarks Game, you’ll see it is very comparable to C++. If you are really CPU bound, just use C.
[/li]> [li]Design patterns suck - This is bullshit. Design patterns have nothing to do with Java (the GoF book was all in C++). Design patterns are a powerful tool that should be used with care.
[/li]> [li]Ant/Maven suck - Quasi-true. XML based build tools are rough, but Gradle is really very nice to work with.
[/li]> [li]Garbage collection sucks - Bullshit. Garbage collection is an elegant solution for many problems. It may not be the correct solution for your problem (like in a real time system), but it really makes life a lot easier in many situations.
[/li]> [li]Java is for babies - Now we are waist deep in the spew-age of arrogant bullshit. Java is a high powered professional tool for solving complex problems. People who think that spending their time debugging off-by-one errors and tracking down what exactly is corrupting the stack/heap this time makes them ‚better‘ and ‚smarter‘ are dicks.
[/li]> [/ol]
Falsch. Gradle ist nur der neueste Bullshit und die Leute haben noch nicht gemerkt, dass sie auch dieses Tool in ein paar Jahren hassen werden.
Blödsinn von Anfängern. Wie oft kommt es schon vor, dass man beim Programmieren in Java explizit an die GC denkt - NIE.
(oder fast nie, aber wenn dann nur bei ganz speziellen Fragestellungen)
Ganz genau, da gehört Java (übrigens eine recht gute Programmiersprache) auch hin. Typisches „Ich bin beleidigt“ Gedöns.
Weshalb es auch praktisch keine relevanten Desktop-Anwendungen gibt, die in Java geschrieben wurden. Und btw: mit welcher Sprache löst man dann simple problems?
Och da hab ich schon ganz andere sachen gehört / gelesen. Meist von Leuten mit Microsoft-background. Auf Facebook hat sich mal einer über Java ausgelassen. Hinterher kam raus, der arbeitet bei MS.
Ant/Maven suck - Quasi-true. XML based build tools are rough
Den Blödsinn höre ich zwar selten, aber trotzdem noch viel zu oft…
Das Problem an Maven ist nicht XML.
Das Problem ist dass zu viele Entwickler meinen dass das Buildsystem sie nicht betrifft und sich deswegen nicht damit auseinandersetzen.
Nö, das Problem aller Buildsysteme ist, dass so ein Build eben recht kompliziert werden kann. Dass die Tools diese Komplexität abbilden, eine steile Lernkurve haben und dass das Handling viel Zeit verschlingt, in der ein Entwickler lieber Software schreiben würde. Also stümpern die Programmierer (ok, wahrscheinlich nur ich) einfach so rum, erreichen so ungefähr was sie wollen und erzeugen im Lauf der Zeit ein schrottiges XML-Ungetüm von einem POM (aus Faulheit und Unwissenheit).
„schrottiges XML“ ist aber nicht das Problem sondern „schrottiges Builds“, dh nicht reproduzierbar, zufällige Versionen der Abhängigkeiten, bei einem läuft er beim nächsten wieder nicht usw.
Ob schrottiges XML oder schrottiges Groovy, das nimmt sich nix.
Bildhauer die kein Interesse an Hammel und Meisten haben, haben es auch schwerer als nötig
[ul]
[li]Java (nicht das Problem, Ant)
[/li][li]Cross-Compiling für ptxDist (Embedded Linux, TouchPanel)
[/li][li]Sprachdateien für Qt4 und Java erzeugen (da dummerweise beide 2 verschiedene Möglichkeiten nutzen und man nicht alles doppelt in DE, EN, RU und ZH übersetzen will)
[/li][li]bisherige Ergebnisse müssen noch durchs Customizing (für verschiedene Default-Projekte)
[/li][li]Cross-Compiling BlackFin (properitäres OS)
[/li][li]Cross-Compiling SHARC (anderes properitäres OS)
[/li][/ul]
Das Ganze wird unter Linux gestartet, da sich ptxDist nur unter Linux compilieren lässt. Damit wird das TouchPanel unter Linux erstellt, JAR ebenfalls. Dann wird über eine TCP-Brücke der Build für BlackFin und SHARC auf Windows angestoßen. Um das alles zusammen als Update-Packete für verschieden Projekte zu bündeln. Das ist alles eine Mischung aus Ant, Bash und sonstigen Dingen.
Falls mir da jemand ein Build-System empfehlen kann, das hier alles abdecken kann…
Ansonsten sehe ich das mit Buildsystemen wie mit den Sprachen. Es gibt verschiedene Werkzeuge die für verschiedene Herausforderungen.