Warum programmiert ihr in Java?

Mich würde mal interessieren wie ihr so zu Java gekommen und warum ihr dabei geblieben seid? Ich persönlich habe schon viele Sprachen seit dem C64 Basic immer mal wieder ausprobiert. Allerdings komme ich irgendwie mit Java + IDE am besten zum Ziel, probiert habe ich vorher schon Basic, Assembler, C, C++, PHP, Javascript und Python. Alles sehr unregelmäßig und über viele Jahre verteilt. So richtig voran bin ich aber nur mit Java gekommen, da bin ich schnell rein gekommen, habe gute Unterstützung durch die IDE und irgendwie passt das einfach zu mir. Ich wäre z.B. auch gerne so ein cooler und richtiger C+±Programmierer, aber mit der Sprache breche ich immer wieder. Da ich an einem Punkt komme, wo mich die ganzen Compilerfehler einfach nur nerven, weil ich dann ewig wieder nachschauen muss wie das genau in der Sprache war und wenn ich dann mal einen Code in einem C+±Forum gepostet haben, dann wurde der gleich komplett auseinander genommen(Nicht Threadsicher, nicht Exceptionsicher, C und C++ gemischt, nimm doch Templates und so weiter). Kurz ich habe keine Lust mehr mich mit C++ zu beschäftigen, sondern ich will mich mit meinen Programmen beschäftigen(Algorithmen verstehen und ein wenig Grafik- und Spielprogrammierung betreiben, vielleicht auch später für Android)

Also, wie ist eure Geschichte, die euch zu Java geführt hat? Und warum gerade Java und keine andere Sprache?

Die Uni hats gelehrt, ich habs gelernt und konnte damit die Sachen machen die ich damals wollte.

Die Frage “und keine andere Sprache” denk ich ist falsch. Man sollte in der lage sein weitere Sprachen zu beherrschen. Es ist nicht wie in der Ehe, man kann ruhig polygam sein

Ja, klar erweitert die Kenntnis mehrerer Sprachen den Horizont. Da würde ich aber noch einmal unterscheiden ob ich nur in meiner Freizeit programmiere oder das auch beruflich mache. Ich habe früher beruflich PHP programmieren müssen und mich nicht eine Minute privat für die Sprache oder im allgemeinen für die Webentwicklung interessiert, es war einfach tot langweilig, aber hat halt Geld nach Hause gebracht. Nun habe ich den Beruf vor einigen Jahren komplett an den Nagel gehängt und programmiere nur noch privat. Und da nehme ich natürlich nur die Sprache die mir am meisten liegt und das scheint irgendwie Java zu sein. Jedenfalls komme ich in keiner Sprache so gut voran bis jetzt. Ich hätte mich der Sprache schon viel früher widmen sollen.

Java ist schlicht konkurrenzlos :wink:
zumindest um die Jahrtausendwende herum, C++ Schrott, PHP Schrott usw.

neuerdings C# vielleicht eher annehmbar, bisher kein Grund es anzuschauen (edit: der Quelltext bei Wiki sieht verdächtig nach Java aus),
Sondersprachen wie Ruby, Scala usw. eine Frage für sich, aber dagegen zählt allein schon die ‚Nische der Unwichtigkeit‘ bzw. ‚Unwichtigkeit der Nische‘

wenn du selber auch von Java überzeugt bist und hier vielleicht hauptsächlich nur Bestätigungen hören wirst,
dann kannst du ja eher in einem C#-Forum nachfragen für mehr Diskussion

wobei es wohl auch dort nicht hilft, wenn die jeweiligen Jünger stattdessen C# loben :wink:
du brauchst also nur Kommentare von denen, die beides gut kennen, in beiden Foren evtl. zu finden,
bitte entsprechende vortreten!

Java hat eine enorm stabile Basis, mit tausenden von freien Bibliotheken. Die Sprache selbst ist nicht gerade schön, aber solide, und mit Java 8 zumindest wieder den Anschluss an die aktuellen Entwicklungen gefunden.

Ich habe festgestellt, dass mir dynamisch getypte Sprachen nicht liegen. Allerdings ist Javas Typsystem nicht das beste.

Ich selbst mag deshalb - bei allen Schwächen - Scala und Haskell. Die Sprachen der Zukunft werden sich grob in diese Richtung bewegen (auch wenn dazu Scala noch kräftig ausgemistet werden müsste), vielleicht auch etwas weniger radikal (Kotlin, Ceylon).

Bei mir ist es die favorisierte Sprache meines Studienganges gewesen. Es wurde zwar auch PHP, C#, Visual Basic und Assembler gelehrt, aber alles immer nur sehr oberflächlich. Dann hab ich angefangen als HiWi in einem Forschungsprojekt mitzuarbeiten was in Java entwickelt wurde. Mein jetziger Arbeitgeber hat auch nach einem Java-Entwickler gesucht.

Ich bin auch mit Java am besten zurecht gekommen, obwohl das Oberflächen zusammmen klicken in Visual Studio auch sehr komfortabel ist.

Assembler hat mir auch Spaß gemacht, weil es sehr maschinennah ist. Nimm Inhalt aus Register abc, addiere Inhalt von Register xy dazu und schreibe das Ergebnis in Register xy.

Bestätigung suche ich nicht. Ich suche eher nach Gleichgesinnten, oder bin gespannt wie andere halt bei Java gelandet sind. Im C++ Foren braucht man mit Java gar nicht zu kommen. Da wird mir dann erzählt, das ich wegen GC etc irgendwann immer in Probleme rennen werden und C++ die schon während der Entwicklung abfängt und deswegen ich so viele Fehlermeldungen bekommen und dies deswegen gut sei usw. Python fand ich auch ganz nett, aber da sagt mal irgendwie doch die Geschwindigkeit der Sprache und die IDEs nicht so zu. Ich will zwar nicht auf den Speed von C++ kommen, da ich eh eher am Lernen der Konzepte und ein wenig Mobile-Development interessiert bin, aber Python war mir dann doch zu lahm für Grafik und Co.

C# habe ich nur ganz kurz probiert und fand es aber auch recht nett. Wenn ich nur für Windows programmieren würde wollen, dann käme die Sprache auch in die engere Wahl, denke ich.

Am meisten hat mich wirklich C++ genervt. Ich habe viele teure Bücher gekauft und es wirklich die letzten 6 Jahre immer mal wieder probiert zu lernen. Ich habe auch in der Zeit einiges Begriffen und auch Erfolge gehabt, aber irgendwie ist das Entwickeln mit Java tausendmal entspannter. Ich habe zuletzt noch ein wenig C++11 gelernt und habe mich dabei erwischt wie ich tagelang nur darüber nachdachte ob ich die C+±Klasse jetzt so einigermaßen hin bekommen habe(Da gibt es ja so viele Regeln und Feinheiten und und und). Dann habe ich vor ein paar Tagen wieder mit Java angefangen und war sofort im alten Projekt wieder drinn, weil ich den Quellcode auch gleich wieder verstand und konnte einfach loslegen. Klingt vielleicht alles blöd und subjektiv. Ich will hier auch nicht C++ schlecht machen, da es für viele Anwendungen einfach viel Sinn macht C++ zu nehmen, aber ich habe vor der Sprache kapituliert. Ich bin anscheinend zu dumm für C++ und wer Java mag ist eh kein echter Programmierer, so kommt da jedenfalls immer in deren Foren rüber.

Wie man bei Java landet? Vor 15 Jahren gab es einfach nichts vergleichbares - .NET war noch gar nicht da und Windows MFC mit C/C++ war so übel wie es nur geht. Damals war Java eben auch neu, sehr sexy und ziemlich „klein“ und relativ leicht zu begreifen.

Zur Zeit ist es nicht mehr die Sprache (oder die Tatsache, dass man die eben am besten kennt), sondern

  • verfügbare Bibliotheken und Frameworks für jeden Mist
  • das ganze Ökosystem (Build, Test, Deployment, Jenkins,…)
  • die IDEs „durchschauen“ die Sprache extrem gut und bieten: Inspection, Refactoring, usw.

Leider fehlt das alles bei Scala/Haskell (dazu die Möglichkeit vernünftige GUIs oder Webanwendungen zu schreiben) - also kein Grund zum Wechseln.

Ökosystem ist ein guter Begriff, genau das gefällt mir auch an Java. Viele Libs gibt es in C++ auch, aber wo es unter Linux noch leicht ist eine Lib zu installieren und auch nutzen zu können ,bin ich bei Windows mit MinGW teilweise verzweifelt. Das macht einfach keinen Spaß so zu arbeiten. Was wirklich OK war, das war Qt mit dem Creator aber sobald wieder was anderes dazu kam war das auch wieder einfach nur anstrengend.

Aber genau so wie du es mit dem Ökosystem und den intelligenten IDEs es beschrieben hast, so empfinde ich es auch. Das ist fast mehr Wert als die Sprache an sich, jedenfalls für mich.

[QUOTE=Bleiglanz]

  • verfügbare Bibliotheken und Frameworks für jeden Mist
  • das ganze Ökosystem (Build, Test, Deployment, Jenkins,…)
  • die IDEs „durchschauen“ die Sprache extrem gut und bieten: Inspection, Refactoring, usw.

Leider fehlt das alles bei Scala/Haskell[/quote]

Einspruch! Scala kann sowieso Java-Bibliotheken nutzen, genauso wie Haskell auch C/C+±Bibliotheken einbinden kann, und auf Hackage doch eine Menge natives Haskell herumschwirrt. Build, Deployment und Jenkis-Krams funktioniert für Scala, Haskell hat hier Schwächen (wobei die Haskell Platform einiges bietet). Bei der IDE-Unterstützung hättest du bis vor ungefähr zwei Jahren recht gehabt, aber die Scala-Unterstützung in Intellij IDEA ist wirklich exzellent. Und auch ScalaIDE auf Eclipse-Basis ist inzwischen recht gut. Haskell ist wiederum nicht ganz so komfortabel, aber auch Leksah hat zugelegt (zu EclipseFP kann ich nichts sagen, außer dass es auch funktioniert).

(dazu die Möglichkeit vernünftige GUIs

Vorsichtige Zustimmung, obwohl sich da auch einiges getan hat.

oder Webanwendungen zu schreiben)

Nochmal lauter Einspruch. Play und Lift sind inzwischen recht verbreitet. Wenn du unbedingt Webanwendungen in Haskell schreiben willst, gibt es z.B. Yesod.

Wenn es wirklich die mangelnde Tool-Unterstützung ist, die dich von Haskell abhält, nimm einfach Frege, dann hast du das Beste aus beiden Welten, wenn auch noch mit ein paar Kinderkrankheiten. Jedenfalls kannst du damit Java-Bibliotheken nutzen, in Eclipse programmieren und Java-Bytecode (*) erzeugen.

(*) auch Java-Sourcecode, aber den willst du nicht wirklich lesen…

Scala ist doch eine funktionale Programmiersprache, oder? Ich kann da gar nichts mit anfangen. Ich habe lieber 20 Zeilen Code den ich verstehe, als eine elegante Funktionszeile, wo ich einen Knoten im Kopf bekomme:D Aber ich bin auch kein Informatiker. Die kommen damit bestimmt super klar, da sie Formalismus und Mathematik generell lieben und auch super sich damit ausdrücken können.

Jein, es ist eine Mischung aus OO- und funktionaler Sprache (Prof. M. Odersky nennt es eine „postfunktionale“ Sprache). Du kannst so objektorientierten oder funktionalen schreiben, wie du willst (im Idealfall beides gleichzeitig).

Ich kann da gar nichts mit anfangen. Ich habe lieber 20 Zeilen Code den ich verstehe, als eine elegante Funktionszeile, wo ich einen Knoten im Kopf bekomme:D Aber ich bin auch kein Informatiker. Die kommen damit bestimmt super klar, da sie Formalismus und Mathematik generell lieben und auch super sich damit ausdrücken können.

Du kommst also eher mit dysfunktionalen Sprachen zurecht?

Im Ernst: Ich hatte am Anfang auch große Probleme mit funktionaler Programmierung. Variablen, die sich nicht ändern? Funktionen, die immer das gleiche Ergebnis liefern müssen? WTF!?! So komisch sich das anhört: Im Nachhinein betrachtet war das schwerste, das Erlernte aus der prozeduralen / OO-Welt zu vergessen.

Aber ganz ohne funktionale Programmierung wirst du ab Java 8 mit seinen Lambdas nicht mehr auskommen, auch wenn es nur bescheidene Anfänge sind. Und wenn du dich da nur ein wenig auskennst, kannst du dann z.B. solche Tricks aus dem Ärmel schütteln: http://forum.byte-welt.net/members/landei/40-java-8-und-der-kombinator.html

[quote=The-Last-Ninja]Ich will hier auch nicht C++ schlecht machen[/quote]Nicht nötig, dass machen andere schon: C++ Frequently Questioned Answers ;o)

bye
TT

Yesod - so unfertig, keine Verbreitung, winzige Community…und das ist immer alles so im Fluss

Was Play betrifft: OK, schon sehr gut

Im Vergleich zu Java: JEE, JSF, Primefaces, ICEfaces, Click, GWT, Vaadin, Play für Java, zig Template-Engines, Spring…

Ich meine ja nur, dass die pure Masse an halbwegs stabilen, ausgereiften, dokumentierten Frameworks in Java einfach ungleich größer ist.

Und was die Java/Scala interop betrifft: zu viele winzige, unsichtbare Fallstricke

^^ Von C++ habe ich die Nase voll. Aber es schadet auch nicht das mal kennen gelernt zu haben, da macht Java gleich zehnmal soviel Spaß.
@Landei
Ja ok, das funktionale Programmieren werde ich mir dann später mal anschauen, wenn ich es in Java dann brauche. Erst einmal will ich durch einige Grund-Algorithmen durch und zwar ganz gewohnt imperativ mit OO.

Also zum Compiler programmieren habe ich C++ immer noch am liebsten ^^

Das ist ja auch in Ordnung. Meine Sachen, die ich so machen will, würden in C++ auch bestimmt viel schneller laufen. Aber bei mir zählt da nicht unbedingt das performante Ergebnis. Der Weg dahin ist für mich viel wichtiger. Um so entspannter der Weg zum Ziel für mich ist, umso mehr Spaß habe ich bei der Entwicklung und bleibe motiviert.

Weil’s die Firma verwendet. Und weil’s das Android-Framework mehr oder weniger aufzwingt.

Für die meisten Hobby-Projekte sind’s eher Javascript und Node.

*** Edit ***

Da fuq? Codegeneratoren lassen sich gerade mit Java-Tools 1000x besser bauen xD. xText und Antlr sind so viel besser als alles was ich von C++ kenne …

Hast du leicht ein Javabinding für LLVM?

Ich würd’ das Compiler-Frontend mit xText oder Antlr machen und hinten LLVM IR ausspucken. Das Compiler-Backend braucht ja kein Binding oder hab’ ich da jetzt einen Denkfehler?

Für xText gibt’s mit xTend eine sehr brauchbare Template-Sprache und das arbeiten auf Metamodellen ist auch einfacher als selber den AST durchzugehen.