Frage von FlugzeugAUT, 77

Androidapp-Programmierung; vollkommene Spezialiserung auf Java?

Also ich habe vor eine Android App zu programmieren, weiß auch dass das einige Zeit dauert und ja.. dazu folgende Frage.. Ich hab genug "Lernstoff" um Java zu lernen bzw. mich in die Programmierung einzufinden. Aber um jetzt wirklich auf meine Wünsche geschneidert zu lernen (da ich ja praktisch Java Vanilla nicht brauche), wäre das sinnvoll oder ist es doch eher sinnvoll sich Lehrstoff spezialisiert auf Android Studio Java (wobei ich nicht weiß, wie stark der Unterschied ist) zu holen?

Umso besser ich Java kann, desto besser, jedoch bringt mir sehr viel, was da so drinnen steht bzw man in vielen Tutorials hört, Einsatz von Arrays (und hunderte andere Sachen mit Arrays); Rechnen mit verschiedenen Variabletypen etc. habe ich das Gefühl nicht viel. Die Designtools sind ja generell eher nicht für Android Studio zu vereinheitlichen. Daher meine Frage gleich auf Android Studio Java konzentrieren, selbst wenn mein Wissen noch eher zurückhaltend ist?

Würde mich sehr über hilfreiche Antworten freuen :-)

Antwort
von medmonk, 50

An deiner Stelle würde allgemein Java lernen und zusätzlich mit der Arbeitsumgebung von Android Studio vertraut machen, anstatt nur auf eines zu setzen. Es ist grundsätzlich nie verkehrt, sich genügend Türen offen zu lassen. Vor allem am Anfang sollte man sich also nicht auf eines versteifen.

Kommentar von androhecker ,

Mit allg. Java und Wissen über Android Studio kann man keine Apps schreiben, man muss auch die Android eigenen Features wie Activities lernen.

Kommentar von medmonk ,

Das ist richtig, jedoch sollte man sich erst einmal essentielles Grundlagenwissen aneignen, bevor man sich auf einen Bereich fokussiert. Kurz um, erst einmal Java verinnerlichen und im Anschluss darauf aufbauen. Java allein samt AS also nicht ausreicht. Man anfangs erst mal kleinere Brötchen backen sollte. ;)

Kommentar von androhecker ,

Das war nur als Ergänzung gedacht, da du nur von Android Studio als Arbeitsumgebung geschrieben hast, aber man damit allein keine Android Apps schreiben kann.

Kommentar von medmonk ,

Achso, zugegeben etwas ungünstig formuliert gewesen. Von daher danke für die Ergänzung.  

Antwort
von heilwigkenner, 27

Erstmal solltest du die Grundlagen von Algorithmen und Datenstrukturen lernen; dann kannst du mit der Praxis anfangen.

Android-Apps verwenden das gleiche JDK wie Desktop-Apps (i.d.R.). Sobald du Java kannst, solltest du dir Wissen über das Android SDK aneignen, z.B. Acitvity Lifecycles, Design-Strukturen (MVP, MVVM) / "Clean Architecture", Dagger (2), u. U. Retrofit, RxJava/RxAndroid, evtl. Firebase usw. und das dann in die Praxis umsetzen. Da du wahrscheinlich keinen Designer hast, solltest du dir die Material Design Guidelines auch genau durchlesen.

Antwort
von DreiGegengifts, 26

da ich ja praktisch Java Vanilla nicht brauche

Doch brauchst du. Du brauchst Java Sprachkonstrukte und auch Teile der Sprachbibliotheken. Ohne Arrays oder Listen kann man nicht viel programmieren. Aber vor allem brauchst du auch das Wissen um die Objektorientierung, auf der Java basiert. Das ist eigentlich die Grundlage.

Grundsätzlich kann man sagen, je mehr du über Java, Objektorientierung und über die Klassen und Konzepte von Android weißt, umso so besser wird die App. Man kann also auch mit relativ schmalen Wissen schon etwas basteln. Ich würde mir aber zunächst mal eine Grundbasis schaffen, sonst ist es wirklich dilettantisches Basteln und kein Programmieren. Es macht auch keinen Spaß sich irgendwelche Sachen zusammen zu kopieren, die man dann nicht mehr anpassen kann, weil man keinen Plan hat, was die eigentlich bedeuten.

Einfache Android Programmierbeispiele kann man auch nachvollziehen, wenn man noch wenig über Objektorientierung, Java oder Android weiß. Aber wie gesagt: Etwas "richtiges" auf die Beine zu stellen benötigt Wissen aus allen drei Bereichen. Wobei ich die Objektorientierung als Basis verstehe. Die muss man auch nur zu 10% kennen, damit man grob weiß, wie überhaupt irgendwas läuft. Aber weniger geht nicht, wenn man ein ernsthaftes Ziel verfolgt.

Was du zweifellos nicht brauchst ist, alle Feinheiten von Vanilla Java zu lernen. Keineswegs. Es geht um Grundlagenwissen.

Antwort
von androhecker, 33

Android und Desktop Java sind von der Sprache her genau gleich. (Auch Arrays etc).
Genauso sind die meisten Funktionen vom Desktop Java (Collections, Threads, Sockets) genau gleich in Android implementiert. Da solche Funktionen auch in Android sehr wichtig sind, solltest du diese unbedingt lernen.

In Android kann man zwar das Design in XML festlegen und mit einem Designer arbeiten, aber den eigentlich Code muss man genauso in Java schreiben. Solange du nicht Desktop spezifische Frameworks wie Swing oder JavaFX lernst, wirst du alles auf Android übertragen können.

Wenn du mit Android arbeiten willst, solltest du immerhin das meiste wissen, was im ersten Java ist auch eine Insel Buch steht.

Kommentar von FlugzeugAUT ,

Ja nur ich muss ehrlich zugeben, ich habe das noch nicht ganz verstanden :) Was bringt es mir Sachen zu wissen, die ich nie brauchen werde, bzw die man wieder vergisst?

Wär das ein Vorteil, weil es wirklich nützlich ist zB für eine zweite App, wo man die Idee noch nicht hat, falls die erste, ich sag jetzt mal "nichts" wird. Und falls man wieder was vergessen sollte, einfach nachschauen, was wiederrum nicht heißt, dass man "dumm" ist, oder? :/

Kommentar von androhecker ,

Fast alle von Oracle/Sun implementierten Funktionen gibt es genau so unter Android auch, und du musst solltest sie auch verwenden. Die ganzen Dinge von Desktop Java sind unter Android eben nicht nutzlos. Wenn du richtig lernen würdest, und die gelernten Dinge auch anwendest, wirst du sie wohl kaum wieder vergessen.

Kommentar von FlugzeugAUT ,

Ok hat jetzt ein wenig gedauert, hab mich ein wenig eingelesen...

Da steht doch auch nur theoretisches Wissen, drinnen, was hilft mir das, wenn ich weiß was das ist und wo man, bzw wie man es verwendet (zuzugüglich etlichen Javageschichtlichen Dingen) wenn ich dann nicht mal weiß, wie man es anwendet? Da hilft mir doch jedes Tutorial mehr oder nicht? :/

Kommentar von androhecker ,

Zu den meisten Dingen gibt es in diesem Buch Anwendungsbeispiele und es wird auch erklärt wozu man die Funktionen verwendet, damit programmieren musst du selber. Wenn du später für Android programmierst, musst du nur dein Wissen übertragen.

Kommentar von FlugzeugAUT ,

Das sind die Materialien zum Buch oder wo finde ich die Übungsbeispiele auf der Seite, da der Link dorthin führte aber da nur Übungsmaterialien zum Downloaden sind :/

Kommentar von androhecker ,

Es gibt keine Übungen. Die relevanten Beispiele stehen alle im Text, das Extra Material beinhaltet nur die ganzen Klassen, falls jemand den ganzen Code und nicht nur die Ausschnitte braucht.

Antwort
von Warfley, 42

Es ist eigentlich komplett egal, da es dir mit genug Programmiererfahrung später auch nicht schwer Fallen wird andere Sprachen/Systeme Kennen zu lernen. Wenn du Java für Android erst mal drauf hast wird der Sprung zu JVM Java auch nicht so schwer sein.

Und schließlich der Sprung zu anderen Programmiersprachen wird auch kein Hexenwerk sein. Später im Berufsleben kann es sogar vorkommen das man bei ein und dem selben Job mehrere Programmiersprachen lernen muss, da sich für einige Projekte einfach z.B. eine Funktionale Sprache mehr anbietet.

Kommentar von FlugzeugAUT ,

Danke für deine Antwort, ich mache das eigentlich nur hobbymäßig und mein Ziel ist es eine App zu schreiben, die wahrscheinlich einfach wirklich eine App, und kein Spiel sein wird! Aber was ich auch bei der anderen Antwort geschrieben habe, was ist wenn man Sachen wieder vergisst, was ja mal vorkommen soll, falls man wirklich Java meine Insel ein wenig beherrscht? Oder kommt das nach genug Übung etc. alles von alleine und wenn man etwas vergessen hat, kommt das ganz von alleine zu wissen was man braucht und sucht einfach wieder danach?

Kommentar von Warfley ,

Du vergisst wahrscheinlich spezielle dinge wie die genaue Verwendung spezieller Klassen, allerdings gibt es genau dafür Dokumentationen. Du wirst die Basics wohl kaum vergessen, und so lang du die drauf hast, kannst du alles andere mit 5 minuten Google wieder anlernen

Kommentar von androhecker ,

Die von Android hinzugefügten Funktionen kann man als Framework betrachten, Android hat das Rad nicht neu erfunden, auf fast alle Java Bibliotheken wird zugegriffen. Es gibt nun mal kein "Android Java", das ist das gleiche wie das "Desktop Java".

Und funktional programmieren kann man mit Java auch spätestens ab Java 8.

Kommentar von Warfley ,

Ich bitte dich, du willst nicht ernsthaft die paar änderungen von Java 8 mit richtiger Funktionaler Programmierung gleichsetzen...

Es sind Funktionale Elemente enthalten. aber das ist als würdest du sagen in Java kann man C Programmieren, da Java den ++ Operator implementiert

Kommentar von androhecker ,

Java 8 bietet die Grundlagen dazu, wenn der Entwickler damit umgehen weiß, kann er damit auch funktional programmieren.

Java bietet mit der Stream API auch schon ein Beispiel an, und dass das funktional ist, ist wohl unbestreitbar. Was der Entwickler damit macht, ist eben seine Sache. Mit meinen eigenen geschriebenen Funktionen konnte ich auch problemlos etwas komplexere Programme (nahezu) komplett funktional schreiben.

Kommentar von Warfley ,

Es ist dennoch Welten von z.B. Haskell entfernt, ein schönes Beispiel dafür ist Haskells Unendlichkeitsarithmetik, oder das Haskell Typ System. Klar kann man das alles mit Java Simmulieren, das ist allerdings eine Eigenschafft der Turingmächtigkeit der beiden Sprachen.

Kommentar von androhecker ,

Trotzdem reicht das in der Regel mehr als aus. Den Rest meiner Antwort hast du wohl auch einfach ignoriert, den das hier war nicht die Hauptaussage.

Keine passende Antwort gefunden?

Fragen Sie die Community