- Czy warto uczyć się tego języka? Słyszałem o nim wiele niepochlebnych opinii.
Warto się uczyć każdego języka. Ponadto Java jest powszechnie używana nie tylko w aplikacjach mobilnych, ale też internetowych, biznesowych, etc. Jest to powszechnie stosowana technologia używana w wielu poważnych systemach, więc tym bardziej warto ją dobrze poznać.
- Czy jest on cały czas wiodącym językiem używanym do programowania aplikacji mobilnych
Tak, jeśli chodzi o aplikacje biznesowe, użytkowe, etc. czyli większość tego, co jest dostępne w Google Play. Gry często pisze się w C# i Unity, ale jest też sporo bibliotek do tworzenia gier w Javie. Można też pisać w C++ z użyciem NDK, ale robi się to bardzo rzadko. Ten język można wykorzystać tylko wtedy, gdy chcemy dokonać jakiejś niskopoziomowej optymalizacji, modyfikować system lub podpiąć do projektu bibliotekę w C++.
Materiały:
Android
-
http://developer.android.com/sdk/installing/studio.html - warto nauczyć się porządnie obsługiwać to IDE
-
http://developer.android.com/index.html - oficjalna dokumentacja - podstawowa sprawa
-
http://www.vogella.com/android.html - wspomniane już tutoriale Vogelli
-
http://vladnevzorov.com/ - patrz tagi: http://vladnevzorov.com/tag/android-application-architecture/ , http://vladnevzorov.com/tag/android-application-development/
Java
-
http://docs.oracle.com/javase/tutorial/ - oficjalne tutoriale
- Książka "Effective Java" - autor: Joshua Bloch - jest też polskie tłumaczenie
- Oca Java Se 7 Associate Study Guide - podstawy Javy i przy okazji przygotowanie do certyfikatu OCJAP
Czytałem kiedyś książkę "Android 2. Tworzenie aplikacji". Wyszły też wersje tej książki dla Androida 3 i 4, choć pewne podstawy i architektura systemu jest w większości bez zmian. Są jedynie dodawane nowe funkcjonalności, część rzeczy jest usprawniona i GUI podrasowane oraz dostosowane do tabletów. Książka jest dobra, jeśli ktoś chce się nauczyć podstaw i zgłębić wiedzę na temat tej platformy. Niemniej jednak, czasem czułem się jakbym czytał dokumentację, co było średnio ekscytujące.
Dodatkowo, przejrzyj sobie źródła apki konferencyjnej Google I/O. Google udostępnia jej kod na zasadach open-source. Warto się uczyć na podstawie kodu najlepszych.
https://code.google.com/p/iosched/
Warto też zapoznać się z bibliotekami firmy Square z Kalifornii. Spora część tych rozwiązań jest pionierskich i naprawdę dobrych, więc warto z nich korzystać.
http://square.github.io/
Ponadto, spora część kodu zawartego w tutorialach w necie jest strasznie słaba, ponieważ opisują tylko, jak rozwiązać jakiś problem, a nie opisują, jak to zrobić zgodnie ze sztuką i odpowiednimi wzorcami, dlatego najlepiej poczytać sobie też trochę więcej o Domain Driven Design, wzorcach projektowych i programowaniu obiektowym, żeby nie pisać smutnego kodu i nie upychać wszystkiego do klas dziedziczących po Activity.
Pozdrawiam.