Na, der Drumliner hat ja die meisten Fragen schon gut beantwortet.
In einem Punkt muss ich dem Guten jedoch widersprechen.
Zitat
Dann wirst du Java lieben lernen
Die Hürde ist bei Java eig. sehr niedrig.
Das hängt ganz gewaltig von der Vorbildung ab.
Wer C/C++/Objective-C gewöhnt ist, der bekommt bei Java zusätzlich zu diversen Krisen auch noch das kalte Kotzen.
(ich für meinen Teil habe nie etwas Anderes gemacht, außer mal ein paar Dinge in PHP.)
Wer allerdings viel mit Delphi oder C# gearbeitet hat, dem fällt das Umdenken auf Java leicht.
Mit Visual Basic Kenntnissen aus MS Access hingegen ist jede objektorientierte Programmiersprache erst einmal eine mittelschwere Katastrophe, was die Einstiegshürde angeht. Vor Allem Dinge wie die Variablensichtbarkeit bringen einen jedes Mal zur totalen Verzweiflung.
(Bei Java habe ich bis heute nicht verstanden, was dieser 'final'-Quatsch soll - was daran liegt, dass ich das Übergeben von nackten Zeigern gewöhnt bin.)
Hinzu kommt, dass meiner Meinung nach die Integration von UI und Code für Android im Speziellen und Java im Allgemeinen total beschissen gelöst ist.
Bei Cocoa hast du einen Interface-Designer. Dort werden vollständige Objekte in dein Interface gepackt und du kannst problemlos darauf zugreifen, in dem du dein Interface-Objekt lädst.
Bei .NET hast du einen Interface Designer. Dort werden vollständige Objekte in dein Interface gepackt und du kannst problemlos darauf zugreifen, in dem du deine Interface-Klasse instanziierst.
Bei Android hast du eine XML-Datei und musst bei jeder Klasse, die dieses Interface darstellen soll, erst einmal selbst Variablen setzen, zuweisen und umhercasten, bevor du endlich auf dein Interface zugreifen kannst.
Das führt dann zu Dingen wie dem ViewHolder Pattern, welches es weder bei iOS/Mac OS X noch bei Windows/Windows Phone gibt.
Vor allem bei deiner Vorbildung würde auch ich dir empfehlen: Zeit lassen, durchbeißen, nach jedem Teilerfolg erst mal fünf Minuten an die frische Luft gehen, dann darüber nachdenken und Notizen machen.
Die gesamten Programmierfachbücher scheinen meiner Meinung nach davon auszugehen, dass man die zu Grunde liegende Programmiersprache bereits supergut kennt. Damit sie sich dennoch 'Einsteiger' schimpfen können, werden noch einmal die komplett langweiligen, unendlich oft durchexerzierten, in wirklich jeder verdammten Miniprogrammiersprache vorhandenen Dinge wie Schleifen und Abfragen durchgekaspert.
Nur um die wichtigen Dinge kümmert sich da keiner.
Was ist der Unterschied zwischen einer normalen und einer statischen Variable? Was sind innere Klassen? Welche Architekturmuster gibt es und wie werden sie umgesetzt?
Für all diese wichtigen Fragen gibt es nach wie vor eigentlich nur eine einzige Standardreferenz, die glücklicherweise nicht teuer sein muss:
[openbook] Java ist auch eine Insel