Vorwort: ich gehe hier nicht zu detailliert auf die Sprachen ein. Ebenfalls ist das meine Persönliche Meinung.
Eigentlich war mein nächster Beitrag der Release der MpNG Source, leider kam ich da etwas dazwischen.. hust* CS:GO hat eine neue Operation *hust*. Durch ein kürzlich angefangenes Projekt bei meiner Ausbildungsstelle, wurde ich leider dazu verdonnert ein Programm in Java zu schreiben, da ich Java so oder so in der Schule lerne. Auch wenn das Lernen eher etwas langsam ist. Aus einem früheren Beitrag weiß man jedoch das ich kein Java Freund bin. Aber warum ist das eigentlich so? Das werde ich euch anhand kleinerer Beispiele näher erklären. Ach und bevor mir irgendwer ankommt. JAVA IST BESSER!! JAVA IST PLATTFORM UNABHÄNGIG!!! MINEKRAFT IST IN JAVA UND SCHAU WIE GUT DAS IST BALÖSDÄASDLFKJDSHNSJKLdö… Bitte drücke Alt F4, Enter.

C#, bzw. dotNET hat durch Mono einen argen Schritt nach vorne gemacht, was die Plattform Unabhängigkeit angeht. Dazu kommt noch Xamarin welches es immer weiter ausbaut. Damit verliert Java einen der größten Vorteile. Es ist nur so häufig benutzt, weil es das nun schon so lange gibt und anfangs auch durchsetzen konnte. Minecraft läuft schon seit Anfang wie scheiße und verbraucht unnötig viele Ressourcen die es mit einer Anständigen C++ Engine ausgleichen könnte. Man sehe einfach Unity Remakes die oftmals besser laufen, wobei diese auch oft nur C# oder ein Misch aus verschiedenen Sprachen sind. Ja auch Javascript.

Ich sag ja nicht, das Java der letzte Scheiß ist, jedoch ist es nun einmal nicht die Anfängerfreundlichste Sprache, auch wenn diese Objektorientiert ist. Viele haben zwar ein schnelles Erfolgserlebnis weil ein Programm was Sie in Java oder C# geschrieben haben, funktioniert. Aber wenn es beschissen geschrieben ist, ist es nun einmal beschissen geschrieben und Sie wissen gar nicht wieso es dann doch funktioniert. Jede Programmiersprache hat Ihre Nachteile, ja auch C#, das soll damit klar gestellt sein.

Als Umgebung, wählen wir eine Konsolenanwendung. Das Ausführen des Build Outputs ist dabei ganz egal, da beides zusätzliche Software benötigt. Ebenfalls versuche ich möglichst einheitlichen Code zu verwenden. Dies bedeutet das ich auf z.B. C# 6 Features verzichten will oder Vorteile der unterschiedlichen IDE mit einbeziehe. Ebenfalls lasse ich Imports Infos weg.

In-/Output in einer Konsolen:
C#

Java

Man beachte das “throws IOException” beim Methoden Kopf und den BufferedReader.
Die Alternative zum throws… wäre ein Try Catch um die “String name = reader.readLine();” Line. Zum Einlesen aus der Konsole, kann ich mir vorstellen auch eine andere Methode zu nutzen. Aber das mir allein so etwas beigebracht wird, heißt für mich das es nicht viel einfacher wird.

Enum Klasse mit ID’s:
C#

Java

Mir ist bewusst das es möglich ist eine Enum Klasse mit Methoden zu erstellen. Dort würden die Enums dann z.B. ipmix(1) heißen. Ist aber nun einmal nicht wirklich eine feste ID wie C# es bereit stellt, sondern nur ein Workaround.

Unsigned Integer:
C#

Java

Jap… richtig.. Java kann keine Unsigned Integer.. Tut mir Leid.. dazu gibt es wirklich nicht viel zu sagen..

Und das sind wirklich alles nur so Kleinigkeiten die mich wirklich stören.
Beachtet das ich C# Entwickler bin und nur für eine kurze Zeit mit Java arbeiten muss.. dennoch ist das lächerlich für mich. Ich habe Respekt vor jedem der mit Java gut klar kommt! Aber an alle jungen Entwickler da draußen. Code der funktioniert ist nicht gleich guter Code. 100 Zeilen die den gleichen Effekt wie 10 Zeilen haben, sind nicht unbedingt besser.

Hachja.. ich werde öfters mal solche Java / C# Problem Posts machen, da ich bestimmt noch die ein oder anderen Probleme mit Java haben werde.