Androidapp-Programmierung; vollkommene Spezialiserung auf Java?

... komplette Frage anzeigen

5 Antworten

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.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von androhecker
14.08.2016, 14:03

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

1

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 bewerten Vielen Dank für Deine Bewertung

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 bewerten Vielen Dank für Deine Bewertung

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.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von FlugzeugAUT
14.08.2016, 13:48

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?

0
Kommentar von androhecker
14.08.2016, 14:02

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.

0

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.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von FlugzeugAUT
14.08.2016, 13:45

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? :/

0
Kommentar von androhecker
14.08.2016, 13:48

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.

1
Kommentar von androhecker
15.08.2016, 12:25

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.

1

Was möchtest Du wissen?