Java lernen ein Fehler?

  • Hey Leute,

    ich nutze AutoIt zum Automatisieren meines Büro- und Privatalltags und erstelle auch manchmal kleine Programme mit GUI. Bisher bekomme ich alles (soweit meine Unfähigkeit nicht die Grenze markiert) alles mit AutoIt hin. Allerdings möchte ich eine weitere Programmiersprache lernen und für einen Kurs auch meinen Bildungsurlaub aufwenden. Ich habe mich eigentlich für Java entschieden. Allerdings fielen mir in letzter Zeit häufiger negative Kommentare zu dieser Sprache in der SB auf. Daher würde ich mich freuen, wenn mir hier Leute mit einem weiteren Horizont einen begründeten Rat geben könnten, ob ich lieber etwas anderes lernen sollte.

    Warum ich an Java dachte:
    - Plattform unabhängig (- würde mich gerne auch mal an einer Android App versuchen).
    - Keine Skriptsprache. (- hoffe, damit vielleicht auch mal umfangreichere Datenmengen (DBs) noch besser nutzen zu können).
    - Strikt objektorientierte Sprache (- das möchte ich gerne, um mein Verständnis zu verbessern (- habe schon in PHP objektorientiert gearbeitet, aber ich neige zur Vermeidung..)).

    Über jeden Hinweis freue ich mich.

    Grüße autoiter

  • Eins vorweg: Ich programmiere, sofern nicht in AutoIt, meistens in C# mit der Microsoft Visual Studio IDE.

    Ich habe mich eigentlich für Java entschieden. Allerdings fielen mir in letzter Zeit häufiger negative Kommentare zu dieser Sprache in der SB auf.

    Meinst du das rumgezicke mit den AVMs bei Android Studio? Daran würde ich Java auf keinen Fall festmachen!

    Der stärkste Punkt in dem Java glänzen kann ist die Plattformunabhängigkeit - keine Frage. Man kann auf jedem Gerät seinen Code ausführen und muss nur minimales ändern, falls entsprechende Schnittstellen für das Gerät nicht zur Verfügung stehen. Die Frage sollte doch eher sein: Brauche ich die plattformunabhängig wirklich wenn ich nur auf Windows bin?

    Allerdings komme ich persönlich bei Java mit der GUI Gestaltung nicht zurecht. Controls relativ zu positionieren die sich verschieben wenn das Fenster gescrollt wird, oder Layouts zu verwenden ist ziemlich anstrengend und frisst einfach nur unfassbar viel Zeit (wenn man es per Hand macht). In C# kann ich alles per Hand positionieren und da die meisten Fenster ja eh nicht größer als 800x600 sind muss ich auch kein relatives Layout haben. AutoSize/AutoAlign kann ich ja auch anschalten wenn ich das Fenster resizable haben will (wie in AutoIt).

    In Sachen Syntax kann ich nichts sagen da sich Java mit C# eigentlich in fast jedem Punkt gleicht.

    Aber bei Java hat man z.B. das Problem für jede Klasse eine eigene Datei erstellen zu müssen da der Compiler sonst nicht mitmacht.
    Das überflutet das Projektverzeichnis wenn man keine gute Struktur hat.

    Für Java gibts auch gute IDEs die man nutzen kann mit vielen Features (ich nutze im Rahmen meines Studiums eclipse) aber ich persönlich bevorzuge Visual Studio, weil es besser aussieht.
    Der Form-Designer ziemlich schick ist und alles in allem einen soliden Eindruck macht. Ich wüsste jetzt nicht was das eine kann was das andere nicht könnte.

    Da du dich ja auch an Android Apps probieren möchtest solltest du dir überlegen ob man nicht mit anderen Sprachen auf Android programmieren kann.
    Und das geht, sieh dir zum Beispiel Xamarin an. Ich hab mit Android Entwicklung keine guten Erfahrungen gemacht aufgrund des XML Designs das auch bei C# WPF nötig ist.

    Zu dem Punkt mit dem OO. Du kannst in Java / C# auch weitestgehend auf das OO verzichten. Man sollte nicht versuchen alles mit OO zu basteln, weil es ein "Allheilmittel" ist.
    Es ist schön wenn das Programm das man basteln möchte hervorragend mit OO zu bewerkstelligen ist aber man sollte es nicht immer überall anwenden.


    Um das ganze Mal zu einem Abschluss zu bringen:
    Sofern du mit dem Wissen was du in dem Bildungsurlaub erlangst kein Geld verdienen willst, würde ich mir nicht den Kopf über jedes Argument darüber zerbrechen welche Sprache wo besser ist und welche am Ende besser abschneidet. Du programmierst für dich und nicht für andere (nehme ich an!).

    Probier Java / C# mal aus und schau wie du damit zurecht kommst. Beide sind ziemlich perfomant und auch auf dem Smartphone verfügbar.
    Sollte dir die eine Sprache nicht gefallen kannst du ja auf die andere umsteigen. Das geht auch ziemlich schnell.

    Aber Java lernen ist definitiv kein Fehler. Java installiert zu haben ist vielleicht einer, aber das ist eine andere Baustelle :whistling:

  • Hey vielen Dank @alpines für die Erläuterungen. Freut mich, dass du geschrieben hast.

    Sofern du mit dem Wissen was du in dem Bildungsurlaub erlangst kein Geld verdienen willst, würde ich mir nicht den Kopf über jedes Argument darüber zerbrechen welche Sprache wo besser ist und welche am Ende besser abschneidet. Du programmierst für dich und nicht für andere (nehme ich an!).

    Genau. In erster Linie geht es für mich darum, mein grundsätzliches Verständnis zu verbessern, weil ich Spaß am Programmieren gefunden habe und hoffe, allgemein von den vertieften Kenntnissen später zu profitieren. Da dachte ich, ich suche mir eine möglichst flexible Sprache - und gerade da wird immer Java erwähnt (Desktop, Server-seitig, mobil und andere Betriebssysteme).

    C# auf Android war mir total neu (ich dachte, damit wäre ich genauso wie mit AutoIt an Windows gebunden). Danke für den Tipp mit Xamarin! Das schaue ich mir an.

    Grüße autoiter

  • Ich programmiere nen bisschen mehr in Java und muss sagen, für Androidprogrammierung hat mich Java nicht ganz so begeistert, aber was Desktopanwendungen angeht bin ich auf jedenfall Fan.
    Ich sag mal dazu, dass ich neben AutoIt auch C und C++ gerne verwende.

    Was alpines meinte mit den Layouts kann ich nachvollziehen, ging mir am Anfang auch so, aber nach ner kurzen Gewöhnungsphase kann ich sagen, dass es mir sogar gefällt. Auch wenn ich immernoch gerne mit Pixeln arbeite.
    Als IDE nutze ich IntelliJ. Ich hab Eclipse vorher genutzt, IntelliJ ist aber gerade bei Vorschlägen performanter 8zeigt sie schneller an) und die Vorschläge sind auch Intelligenter sortiert, jenachdem, was man vermutlich braucht, steht es oben, und es ist fast immer richtig. Die XML-Datei für die Fenstererstellung ignorier ich dabei immer einfach und bau mir das Fenster selbst :D ist dynamischer.
    Und bei IntelliJ mag ich besondern, dass man Fehler/Warnungen,... anklicken kann, dann mit ner Tastenkombi direkt fixmöglichkeiten angeboten bekommt. Sehr nützlich, insbesondere bei Abstrakten Klassen u.ä.

    Ansonsten ist es eh geschmackssache. Also ausprobieren. Nen paar kleine Scripte ausm Internet suchen, testen und nachvollziehen, und dann entscheiden.

  • @alpines das ist ein schlechter Scherz, oder? Eclipse für Java, wenn du Student bist?
    Schon mal an IntelliJ gedacht? (gibt btw auch @autoiter ne freie Community Edition, die - wenn du nicht abgespaceter Entwickler bist - allemal langt)
    DAS ist ne IDE, da kann Eclipse einpacken.

    Ansonsten: Spricht "nichts" gegen Java, auch wenn erstmal nichts für Java spricht, außer dass es verbreitet ist.
    Mein Hauptpunkt wäre das Form Designen, da gebe ich alpines Recht, das ist Cancer. Rest ist ganz angenehm und geht auch gut von der Hand, Code schreibt sich angenehm, ...
    Wobei ich mir in Java wünschen würde, dass man auch Operatoren überladen könnte. Das würde das .equals() von ganz vielen Objekten hinfällig machen.

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Danke @Kanashius und @Xorianator für eure Erläuterungen. ..und auch danke für den Tipp mit der Community Edition von IntelliJ. Ich bin kein Student mehr und der Preis für die Lizenz wäre mir für meine Zwecke viel zu hoch.
    Ich werde mir IntelliJ mit Java und VS mit C# ansehen und die nächste Zeit damit spielen. In zwei Wochen müsste ich mich dann entscheiden, wofür ich meinen Urlaub verwende.
    Jedenfalls fühle ich mich sicherer. Danke Leute. :thumbup:

    Grüße autoiter

  • Ich habe vor einiger Zeit angefangen Java zu lernen und war bei der SB-Diskussion auch meist dabei. Daher meld ich mich auch mal zu Wort 8o

    Zu meinem Hintergrund. Ich arbeite mit Kollegen die alle 20/25 Jahre mehr Berufserfahrung haben als ich. Hier geht es nicht darum die tollsten Sprachen zu nutzen damit es nach außen modern klingt, hier heißt es Berufserfahrung und Wissen zu nutzen. Daher sind meine Sprachen aktuell Perl/AutoIt und noch ein paar ganz alte Sprachen, die heute wohl niemand mehr lernen würde :D

    Entwickler die seit den 90igern programmieren gehen nicht danach was den größten Hype hat, sondern was langfristig eine sichere Lösung ist.
    Beispiel Java. Swing wurde/wird viel genutzt um GUI-Applikationen zu entwickeln. Nun löst JavaFX dies ab. Java hat jedoch noch nie eine alte Version komplett abgesägt bzw. ein altes Modul komplett rausgeworfen.
    (Ich weiß das nicht mit Sicherheit, aber frag mal einige .NET Spezialisten, was passiert wenn Microsoft ein Major-Releasewechsel von .NET macht. Ich glaube die haben da reichlich zu tun, da die komplette Struktur umgeworfen wird.)
    Wir wollen einfach sicher gehen, dass unsere Arbeiten nicht durch einen einfachen Versionswechsel für die Tonne sind. Jetzt gibt es Leute die sagen das wäre bei Microsoft ja nie so ... schaut man sich da mal Strukturen aus anderen Bereichen bei Microsoft an, Stichwort GPO, wird das mit jedem Betriebssystem über den Jordan geworfen und die Systemadministratoren dürfen sich das alles neu ansehen. Die Uralt-Variante zur GUI-Entwicklung in Java vor Swing kann theoretisch immer noch genutzt werden.

    Bei mir Stand zur Auswahl Java und C#. Ich habe mich für Java entschieden. Warum? Platformunabhängigkeit ist ein wichtiger Punkt für uns. Wir arbeiten auf Linux wie Windoof. Außerdem brauche ich Java für andere Projekte die am laufen sind. Eigentlich eine einfache Entscheidung, auch wenn ich lieber C# gelernt hätte ... Ich mag das arbeiten im VistualStudio, und das arbeiten mit WIndows-Forms besonders. Zumal kann ich debugging unter Java nicht leiden. Zu sagen ich mache das eine so, das andere so ist keine Option. Beide Sprachen sind einfach riesig. Um eine der beiden Sprachen wirklich zu meistern braucht es Jahre. Nur weil ich 10 Anwendungen habe die laufen heißt das ja noch lange nicht, dass ich eine Sprache wirklich gut kenne und kann. Zumindest ist das meine Vorstellung dazu.

    Nun habe ich mit Java begonnen und muss sagen es wird. Ich habe jetzt zwar fast einen ganzen Tag gebraucht um die Callbakcs wie cellValueFactory zu verstehen ( :whistling: ), aber irgendwann fiel auch dieser Groschen. Alles in allem ist Java eine schöne Sprache. Vielfältig und gern gesehen. Es gibt immer Leute die in Gesprächen sagen "ihh wie kannst du nur .." aber das sind meist die Leute die eine Sprache nie tiefer betrachten als deren GUI-Designer.
    Fast alle meine Bekannten/Freunde die im IT Bereich sind schwören auf VB/C# und wie es nicht alles heißt. Aber die arbeiten auch alle in einem reinen Windows Umfeld wo deren Aufgabe nichts weiter ist als eine Windows-Anwendung zu entwickeln. Dies ist bei mir schlichtweg nicht so.

    Für mich ist Android ein ganz eigener Bereich. Man kann Java nicht daran bewerten wie Android Entwicklung läuft.

    Entwicklungsumgebungen sind auch ein eigenes Thema. Mit MS-Sprachen nutze ich immer VS. Ausnahmslos. In Java habe ich nun Eclipse genommen, da der Einstieg in so eine Sprache schwer genug ist, und ich nicht noch nebenher eine IDE studieren muss/will. Eclipse kenne ich halt aus Schulzeiten noch ein wenig. Ich werde mir sicherlich in Zukunft IntelliJ anschauen, der Ruf der IDE ist halt einfach enorm. Da ich aber jetzt noch nicht abschätzen konnte, ob und in welchen Punkten die IDE wirklich besser sein soll, habe ich Eclipse genommen.

    Um das mal abschließend zusammen zu fassen würde ich dir raten: Mach dir erstmal Gedanken wofür du eine neue Sprache lernen willst, und in welchem Bereich du mal arbeiten willst.
    Wenn du aus beruflicher Sicht nichts damit zu tun hast nimm was auch immer für dich interessant ausschaut. Sollst ja schließlich Spaß daran haben. Wenn dein Job Einfluss nimmt, mach dir halt Gedanken was du brauchst und was du tun willst. Für mich gibt es keine Sprache die so viel Spaß bereitet wie AutoIt. Wenn aber eine Datenbank z.B. nativ nur Java unterstützt, tendiere ich dazu auch die nativ unterstützte Sprache zu nutzen. Ich möchte halt das Maximum rausholen können, und nicht mit den Fähigkeiten beschränkt sein durch die falsche Wahl der Programmiersprache.

    Grüße Yaerox

    Grüne Hölle

  • Hi!

    Wie so viele hier muss ich mich im Rahmen meines Studiums mit Java rumschlagen. Hin und wieder zwinge ich mich auch dazu, eine Anwendung in Java zu entwickeln. Aber gerade, wenn du vorher viel mit AutoIt gearbeitet hast, kommst du dir vor, als würdest du eine Menge unnützen Text schreiben. Versteh mich nicht falsch, Java ist eine sehr gut durchdachte Sprache, die sich auch sehr streng an die eigenen Richtlinien hält. Aber genau das macht das ein oder andere relativ aufwändig.
    Ein Beispiel, was mir schon öfters sauer aufgestoßen ist, ist ein einfacher Callback. Wo ich in C einfach die Speicheradresse angebe, in AutoIt den Funktionsnamen... Muss ich in Java mit Interfaces arbeiten, um diese Funktionalität nachzubilden. Wenn ich den Callback universell nutzen möchte, sieht das Konstrukt dann so aus: Hauptklasse A ruft Methode X von Klasse B auf, welche das Interface Xable (X-Able) implementiert.
    Macht natürlich Sinn, das so streng zu verfolgen. Stört mich aber immer wieder...

    Und was z.B. Swing angeht... Darüber ist ja nun wirklich schon genug geredet worden. Pfui.

    Java ist keine schlechte Sprache, da bin ich mir sicher. Aber das alles hängt auch davon ab, wie sympathisch dir eine Sprache ist, wie viel Spaß dir das Arbeiten mit ihr bereitet. Der Spaß mit Java hört bei mir bspw. bei grafischen Oberflächen auf. Gerade da fängt AutoIt ja erst an, Spaß zu machen. Deswegen schreibe ich auch lieber ein Projekt in AutoIt, auch wenn es dann schnell mal unübersichtlich wird. Es macht mehr Spaß und hält so die Motivation oben.

  • Der Spaß mit Java hört bei mir bspw. bei grafischen Oberflächen auf.

    Hier sind alle so negativ gestimmt gegenüber GUI-Anwendungen in Java. Ich mache aktuell JavaFX mit FXML und ja, es ist viel aufwendiger als ich es aus anderen Sprachen kenne, aber es ergibt sich mir sonst bislang kein Nachteil. Im Gegenteil fühlen sich die GUIs bislang für mich noch besser an als Standard-Windows-Dialoge. Ich halte zudem am MVC Konzept feste (etwas abgeändert an meine Bedürfnisse).

    Grüße Yaerox

    Grüne Hölle

  • @alpines das ist ein schlechter Scherz, oder? Eclipse für Java, wenn du Student bist?
    Schon mal an IntelliJ gedacht? (gibt btw auch @autoiter ne freie Community Edition, die - wenn du nicht abgespaceter Entwickler bist - allemal langt)
    DAS ist ne IDE, da kann Eclipse einpacken.

    Nö warum? Tut was es soll und fertig. Mehr will ich von der IDE ja auch nicht.

  • Dieses Argument würde ich bei Netbeans verstehen, das habe ich vor IntelliJ benutzt. Aber wahrlich nicht Eclipse, war mir immer ein Graus, diese IDE zu benutzen.

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Super, dass so viel ausführliche Rückmeldung kam. Vielen Dank an alle.

    Um das mal abschließend zusammen zu fassen würde ich dir raten: Mach dir erstmal Gedanken wofür du eine neue Sprache lernen willst, und in welchem Bereich du mal arbeiten willst.
    Wenn du aus beruflicher Sicht nichts damit zu tun hast nimm was auch immer für dich interessant ausschaut. Sollst ja schließlich Spaß daran haben.

    Ein guter Hinweis, der so oder so ähnlich hier ja mehrfach von euch gegeben wurde. Beruflich wäre am interessantesten VBA zu üben, da wir ab und an auch Accessanwendungen an Kunden weitergeben. Aber daran bin ich nicht so interessiert. Daher läuft es erst einmal (kann sich ja mal ändern) auf den Spaß an der Sache hinaus. Ich habe auch kein direktes Projekt oder Anwendungsgebiet, sondern ich möchte einfach eine Sprache gut beherrschen lernen, mit der ich in möglichst vielen Kontexten gut ausgestattet bin.

    Grüße autoiter

  • Mit den großen Sprachen Java / C# und noch ein paar andere von MS (Ich kenne mich da nicht so aus) wirst du als Programmierer auf jeden Fall nie arbeitslos.

    Grüße Yaerox

    Grüne Hölle

  • Falls es hilft einen weiteren Hut in die Runde zu werfen, schau dir mal GO an. Habe mich dort etwas eingearbeitet und bin sehr zufrieden (schreibt sich wie ne Mischung aus C und Autoit, ohne Pointerarithmetik, mit optionalem OOP, ohne die Strenge oder Vielfältigkeit der Objektbeziehungen von Java, UND OHNE SEMIKOLONS). Die Sprache ist allerdings noch jung und besitzt bei weitem nicht so viele Bibliotheken wie die meisten anderen Sprachen. Wie viel Zukunft sie hat steht auch noch in den Sternen.

  • Hey @Mars,
    danke dir noch für deinen Einwurf. Ich habe GO nur gegoogelt (die Sprache hat ja jetzt schon eine sehr große Verbreitung).
    Allerdings hatte ich mich jetzt auf C# und Java eingeschossen und diese getestet. Beides finde ich interessant und eigentlich gut (auch die IDEs). Ich kann aber aktuell überhaupt nicht sagen, was mir besser gefällt. Dafür bräuchte ich wohl auch mehr Zeit.. Dennoch habe ich mich nun entschieden, mit Java weiter zu arbeiten. Das hängt auch mit dem Zufall zusammen, dass da zeitnah ein passender Kurs in der Nähe verfügbar ist (- ist vllt. nicht der beste Grund. ^^ Aber ich finde es auch ok, bin ungeduldig und will mal einen besser fundierten Start darin, als bei meinen bisherigen "Keine Ahnung -> Tutorials und Videos ansehen -> im Forum mitlesen-> Trial and Error"-Versuche).
    Danke nochmal.

    Grüße autoiter

  • Java ist imho die bessere Wahl, wenn man C# und Java gegeneinander aufwiegt, schlichtweg wegen der Verbreitung. Andererseits hat sowieso jeder Hans ein Windows Betriebssystem, von daher bleibt sich das vermutlich gleich.

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal