Warum ich kein Java-Programmierer werde…

Hallo Leute,

heute gibts mal wieder einen Post von mir. Leider kein Tutorial (kommt noch, keine Sorge. Werde wohl am Wochenende etwas programmieren, damit meine Projekte vorankommen).
Dafür gibts aber mal einen kleinen (klein im Sinne von mindestens 1000 Wörter, ich kenn mich doch :D) allgemeinen Beitrag, der ausnahmsweise mal keine Statusmeldung ist.

Und zwar gehts darum, wieso ich kein Java-Programmierer werde. Die Gründe und den Hintergrund gibt es gleich. Ich wünsche euch viel Spaß beim Lesen.

Seit nun etwa zweieinhalb Wochen (ich habe am 02.07 angefangen) bin ich nun im Berufsleben.Noch mache ich derzeit ein Praktikum bis (1.8), danach aber fängt die Ausbildung zum Fachinformatiker Bereich Anwendungsentwicklung an. Dies bedeutet natürlich auch, dass es ums programmieren geht.

Aber nun zur eigentlichen Story. Auf der Arbeit habe ich mit einem Steuermodul zu tun, welches dafür zuständig ist, eine Reihe von LEDs anzusteuern (bis zu 500). Dies geschieht mittels einem Identifier, der jeder LED einzigartig zugewiesen wird. Die Ansteuerung selbst erfolgt von der Programmseite her über einen Webservice und SOAP (nein, keine Seife :D).

War es anfangs meine Aufgabe, das noch für das WindowsPhone als Testapp zu machen (C#, also mein Gebiet), um mich einzuarbeiten, so wurde es aber danach quasi zur „Hölle“. In Visual Studio war das ja nach kurzer Googlesuche kein Problem. Rechtklick auf die Verweise, Dienstverweis hinzufügen, URL zur WSDL angegeben und OK geklickt. Visual Studio hat mir dann ne Proxyklasse erstellt, wo ich nur hingehen musste und deren Methoden aufrufen + passende Parameter.
Leider war der VS Part aber nur die Übung, wie ich ja eben sagte. Eigentlich wird diese Aufgabe über Android Tablets erledigt, weswegen ich mich jetzt derselben Aufgabe nochmals konfrontiert sehe, nur eben auf Android ausgerichtet.

Und hier kommt die von mir beschriebene Hölle zum Anspruch. Da sowohl die Androi-Programmierung als auch Java Neuland für mich sind, muss ich mich natürlich in alles komplett neu reinfinden. Die Syntax an sich ist ja kein Problem, Java verwendet auch eine C-ähnliche Syntax, so wie es bei C# der Fall ist. (C# unterliegt übrigens Einflüssen aus Java, was das Design angeht usw.)
Nein, der Teufel liegt im Detail. Um es mal genau auszudrücken, ist alles ziemlich schlimm.

Wer VS kennt, der weiß, was Komfort ist und welche Features VS einem bietet (und auch C#). Wenn man allerdings auf Java wechselt, ist das quasi mit einem Wechsel von einer Luxusvilla auf ein Bauernhaus zu vergleichen. Der Grund ist einfach:

Die offizielle IDE für Android-Entwicklung ist normalerweise Eclipse, was ich auch verwende. Eclipse ist allerdings VS (meiner Meinung nach) nicht wirklich in der Lage das Wasser zu reichen. Es fängt schon bei der Autovervollständigung an. in VS tippt man, hat gleich seine Auswahlmöglichkeiten und spart sich dadurch einiges an Zeit. In Eclipse ist kommt die Autovervollständigung soweit nur dann, wenn sie Lust hat (was meist nur bei den Methoden ist) oder auf Druck von STRG+Leertaste.
Aber die Autovervollständigung ist nicht alles. Java hat auch so seine Tücken.

So fehlen mir z.B. die von mir in C# gern genutzten Delegates. Und die einfache Nutzung des WebService kann ich auch vergessen. Zwar gibt es auch in Java die Möglichkeit, sich eine Proxyklasse erstellen zu lassen, wenn auch nicht so einfach wie in VS, aber sie läuft ja nicht auf Android, da selbiges nur einen Teil der benötigten Klassen und Funktionen unterstützt.
Also läuft alles darauf hinaus, umständlich gemacht zu werden, das dann auch noch ein einer IDE, die nur halb so viel Komfort bietet, wie VisualStudio.

Es gibt noch genügend andere Dinge, die mir fehlen, aber ich muss und will nicht alles aufzählen, sonst wird der Beitrag zu lang.
Somit fasse ich mal kurz zusammen. Dies sind zumindest mal die Hauptargumente, wieso ich VS lieber mag als Eclipse:

  1. Visual Studio hat mehr Funktionen und mehr Komfort (dafür ist es kommerziell und kostet was, je nachdem, was für Features man will). Eclipse lässt sich zwar erweitern durch Plugins, aber da weiß ich nicht wirklich, welche es gibt und welche mir das Leben leichter machen könnten (an den fehlenden Sprachfeatures ändert das sowieso nix)
  2. C# hat mehr nette Features als Java. So hat C# Delegates (und diese können verdammt nützlich sein) und ich bekomme in C# eine Eigenschaft mit Hilfe einer Programmzeile hin (da der Compiler nen Teil der Arbeit für mich erledigt), während ich in Java für in etwa die gleiche Funktionalität mindestens mal 3 Zeilen brauche.
  3. Die Android-Programmierung ist auch eher umständlich, der Emulator ruckelt usw. Beim Windows Phone läuft hingegen alles flüssig, auch im Emu und ich muss keine umständliche Art verwenden, um ein Control im Code zu anzusprechen und zu nutzen.

 

Alles in allem lautet mein Fazit: Wer VS kennt und nutzt, sollte es möglichst auch weiterhin nutzen, sofern er nicht, so wie ich, z.B. beruflich umsteigen muss. Die Probleme, die ich habe mit Eclipse, also vom Komfort her, könnten zwar daher kommen, dass ich evtl. nicht die richtigen Plugins habe, aber im Grunde möchte ich normalerweise gewisse Features schon eingebaut haben (nichmal die Art, wie VS z.B. Exceptions handhabt, ist enthalten) und nicht erst per Plugin nachrüsten müssen.
Falls ihr Vorschläge habt, so könnt ihr mir diese gern übermitteln, vielleicht wird mein berufliches Javaleben ja etwas erträglicher. Privat werde ich (allein schon wegen DeltaEngine) weiterhin auf C# setzen.

 

Das war es auch schon mit diesem Beitrag. Ich hoffe, es hat euch trotzdem gefallen, obwohl der Beitrag anders wurde, als ich ihn beabsichtigt hatte. (hatte zwischen der Denkphase im Kopf und dem finalen Niederschreiben eine mehrstündige Pause).
Wir sehen (bzw. lesen) wieder voneinander, wenn der nächste Artikel anrollt (welcher das ist, kann ich nicht sagen, kommt darauf an, was mir als nächstes in den Sinn kommt zum Bloggen. Vielleicht paar neue Deltagerüchte, sollten mir wieder neue zukommen?)

 

~internetfreak

2 Gedanken zu „Warum ich kein Java-Programmierer werde…

  1. Barsack

    Hallo,

    Da ich glücklicher Besitzer von 2 Android Smartphones & einem Tablet bin, habe ich mich auch schon mit Java und Android-Programmierung beschäftigt. Ich wollte damals es mit dem Buch „Java ist auch eine Insel“ lernen. Nun ja, es ist nun eine Ewigkeit her… bis heute habe ich ein paar Striche und ein Bild auf den Bildschirm meiner „Geräte“ gezaubert. Mehr nicht.
    Okay, hätte ich ein paar Stunden mehr dahin investiert, wäre es schon etwas mehr, jedoch macht auch mir Java irgendwie keinen Spaß.
    Einmal wegen Eclipse, ich finde der Code sieht darin einfach nur hässlich aus. Dazu versteh ich dort meinen eigenen Code nicht wirklich, selbst wenn ich ihn gerade erst geschrieben habe (kann auch an mir liegen).
    Dazu verstehe ich auch nie was für einen Fehler ich gemacht habe, zwar hat man manchmal den Luxus, dass der Fehler automatisch behoben wird, sonst aber verstehe ich nie wirklich den Fehler.

    Nun ja, genug gemeckert! Immerhin finde ich Android eigentlich ganz toll, da hat Google sonst fast alles richtig gemacht ^^

    Und, wenn du es beruflich brauchst, solltest du dir mal „Mono for Android“ anschauen. Ich will mir des auch demnächst zulegen. Kostet nur halt etwas ^^

    MfG Barsack

    PS: Diesmal hab ich auch viel geschrieben….

    Antworten
    1. internetfreak Beitragsautor

      Wie man an meinem Beitrag ja sieht, bin ich auch nicht so begeistert von java und Android. Nichts gegen beides, schlecht ist es ja nicht. Aber wenn man von C# kommt und nur VisualStudio-Luft geschnuppert hatte, fällt es einem richtig schwer, sich neu zu orientieren, wenn einem erst einmal liebgewonnene Features fehlen. Bei mir wären das anständige Autovervollständigung, gutes Sytax-Highlighting, anständiges Debugging (man sieht zwar, dass ne Exception geflogen ist, aber VisualStudio präsentiert es einem nochmals ein Stück besser und man kann vorallem dann Variablen ansehen usw, was Eclipse nicht kann)
      Das QuickFix von Eclipse ist insofern keine schlechte Sache und die Fehler sind teilweise auch zu verstehen, aber es ist wirklich nich das Wahre.

      Das Google mit Android sonst alles richtig gemacht hab, kann ich nicht wirklich beurteilen, es hätte durchaus noch paar Sachen gegeben, die geändert werden müssten (u.a. fehlen z.B wichtige Packages mit denen ich den Webservice viel besser bedienen könnte).
      Aber ich selbst hab nur ein WindowsPhone, Android im Detail lerne ich erst seit der Arbeit kennen.

      Zu Mono4Android: Ich hab auch eine Lizenz im Auge, aber ich weiß nicht so recht, inwiefern ich die nutzen kann, wenn ich eine App damit verteile (auch wenn sie evtl. nur firmenintern wäre). Hinzu kommt der Preis von 399$ für eine Privatperson (als Schüler gibts eine für 79$, aber ka, inwiefern die limitiert ist)
      Aber mal sehen, evtl. schaffe ich es ja, eine Lizenz zu bekommen und so, mal sehen.

      Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.