Die Argumentation die man ganz oben auf uncyclopedia findet höre ich öfter und frage mich ob das jemand wirklich ernst meint. Wieso sollte es schlecht sein wenn ein Programm, das man geschrieben hat, plattformunabhängig funktioniert? Die Argumentation wirkt auf mich als würde man sagen:
"Wenn du nicht dein eigenes Linux/GNU System von Hand zusammengestellt und compiliert hast, ist das so als würdest du eine Zahnbürste mit dem Rest der Ubuntu Nutzer teilen."
Das ist interessant. Welche Features meinst du? Als was wird Java denn verkauft?
(Ich meine das ernst, ich hab die Argumentation noch nicht gehört bisher.)
Die Plattformunabhängigkeit ist der größte Trugschluss.
Damit das funktioniert wurde die Java Virtual Machine programmiert, die als Schnittstelle zwischen dem Java-Byte Code und der Hardware dient. Das macht sinn, wenn man "einfache" Programme über eine Vielzahl unterschiedliche Geräte verteilen will, z.B bei den alten Handys. Alles spezifische ist in die JVM gepackt und man braucht sich nicht darum kümmern.
Aber da hört der Spaß auch schon auf, weil die JVM entscheidet zwangsläufig ob dein Programm funktionieren wird. Und dadurch, dass die JVM auf die Hardware und das Betriebssystem angepasst ist, bedeutet das zwangsläufig Konflikte. Das wird bei einem Hello World oder einfachen Programmierübungen nicht auffallen, aber bei größeren Programmen schon.
Ich hatte das mit einem Tool was die Daten eines Wii-Controllers per Bluetooth nutze um ein Whiteboard zu generieren. Das funktionierte nicht in der offiziellen Version mit meinem damaligen Ubuntu, erst mit der Beta-Version direkt vom Programmierer konnte ich es zum laufen bringen.
Minecraft hat regelmäßig Probleme mit Java, so viele das es eine eigene Fehlerseite gibt:
http://www.java.com/de/download/help/mi ... _error.xml
Dinge wie Garbage Collector, Speicher oder Heap-Verwaltung sind nichts neues, viele andere Sprachen besitzen dies auch. Objektorientierung ist nichts, was Java alleine stellt, dynamisches Linken ist etwas, was man auch in anderen Sprachen implementiert hat und die Möglichkeit, "applets" für Websiten zu Programmieren ist aufgrund der Empfehlung Java wegen der Sicherheitsrisiken abzustellen, hinfällig.
Anfänger wollen anfangen (deswegen der Name).
Ich weis nicht wie oft ich jetzt schon in irgendwelchen Foren gelesen habe das jemand g++ nicht bedienen konnte bzw. die compiler argumente in kdevelop und co. falsch gesetzt hat.
Nimmt man
...Java Eclipse als die IDE die einem Hilft...
macht es Java einfacher und schneller in Betrieb zu nehmen.
Für mich war es genau umgekehrt. Ich habe mit C angefangen, noch mit "TurboC" auch wenn zu der Zeit schon total veraltet. Das funktionierte auch super, man hat seinen Code eingetippt, hat "Compilieren und Ausführen" gedrückt und es lief durch. Das selbe war auch mit den meisten anderen IDEs, die ich getestet habe.
Als ich jedoch anfangen wollte Java zu lernen, habe ich keinen Einstieg gefunden, was auch an dem Tutorial lag, an dem ich mich orientierte.
Da musste man allen scheiß installieren und nichts hat funktioniert, da hab ich es gelassen. Das nächste mal als ich mit Java zu tun hatte war, als ich die Schriftgröße in einem Audioplayer ändern wollte. Dabei habe ich ein total vermurkstes Kapselungskonzept bewundern dürfen, wo dann die Schriftgröße Quasi alleine in einer Klasse zu finden war, fest eingestellt.
Die nächste Java-Erfahrung war dann bisschen App-Programmieren für Android.
Dabei war der Entwicklungsprozess für Java mir irgendwie immer fremd. In C/C++ ist die einfachst mögliche Compiler-Anweisung folgende:
Es wird dein Source-Code genommen und es kommt ein ausführbares Programm raus.
Das war für mich immer sehr "straight forward"
Korrekt, für C/C++ gibt es auch genügend Hilfe.
Ich kann jetzt nur mutmaßen, aber für mein Gefühl sind Probleme in Java Code mit Hilfe von Foren und Helfenden schneller gelöst als C/C++ Probleme. (Ich denke es liegt daran das Java sehr an dem Konzept der Objektorientierung hängt und mit dem fehlen von hardwarenahen Prozeduren häufig nur an Logikfehlern auf eher höherer Ebene endet.)
Die wenigsten der Probleme, die hier im Forum gestellt wurden, haben irgendwie mit der Hardware zu tun.
Die meisten sind auch hier Logik- oder Verständnis Fehler.
Man muss hier auch mal sagen, dass Hardwarenah nicht bedeutet, dass man sich seine Bits und Bytes mit ner Häkelnadel selber stricken muss. Hardwarenah bezieht sich nur darauf, wie du Einfluss auf die Erzeugung des Maschinencodes ausüben kannst, um bestimmte Ergebnisse zu erzielen. Wenn man das aber (noch) nicht kennt, dann nutzt man das nicht.
Objektorientierung ist ein Paradigma, das man so als solches auch erstmal verstehen muss.
In wie fern? Der Allgemeinheit das Java das Mittel gegen alles ist, der Unis die Java als DIE Standartsprache sehen oder meinerseits weil ich Java verteidige?
Ohne jetzt zu Meta zu werden, vielleicht gibt es hier eine Indoktrinierung der Meinung über die Indoktrinierung von Java? Vielleicht hat Java tatsächlich einen wichtigen Platz unter den Programmiersprachen, eben wegen Plattformunabhängigkeit, solider Syntax, Bekanntheit und das es eben funktioniert?
Vielleicht alles 3, vielleicht auch keins davon
Ich denke, die Einstellung gegenüber bestimmten Sprachen/Aspekten wird stark davon geprägt, wann und wo man es lernt.
Ich habe mich freiwillig dazu entschlossen, das Programmieren zu lernen und habe aus purer Unwissenheit das erst beste Tutorial genommen und das war für C. Ich habe am Anfang ziemlich ineffizient gelernt und es hat lange gedauert, bis ich auf einem stand war, wo ich davon sprechen konnte, Programmieren zu können, zumindest in ansätzen. Ganz einfach, weil es nicht nur notwendig ist, eine Sprache zu beherrschen, sondern auch die Mathematik und Logik dahinter, die Datenstrukturen und Algorithmen und noch einiges mehr.
Und dann fängt man an herumzuprobieren und kommt zu neuen Sprachen und es wird hinfällig, ob man mit Java, C/C++ oder Brainfuck angefangen hat.
Diese Diskussion dreht sich darum, mit welcher Sprache es am sinnvollsten ist anzufangen. Dabei ist die Frage vielleicht nicht sinnvoll, denn viele haben keine Wahl, da sie gezwungen werden, etwas bestimmtes zu lernen. Andere wie ich, die wissen nicht aus welchen Sprachen sie wählen sollten und nehmen die erst beste, was auch nicht unbedingt schlecht ist. Im Endeffekt ist ja nicht wichtig, ob man nun Java oder C++ programmieren kann, solange man versteht was programmieren ist.
Wir sind hier etwas ins Off-Topic abgedrifted, wir sollten daher hier auch einen Schlussstrich ziehen. Wenn du deinen Standpunkt nicht genug vertreten siehst, verschiebe ich die Beiträge in ein anderen Thread und können uns da austoben, ansonsten können wir auch heiter fröhlich per PN diskutieren