Kitapla İlgili Haberler ve Sıkça Sorulan Sorular

Android Programlama Eğitimi Kitabının 5. Baskısı Çıktı ! (Ekim 2017)

Kitabın 1., 2., 3. ve 4. baskıları okurların yoğun ilgisi nedeniyle 2 yılı doldurmadan tükendi. Öncelikle okurlarımıza ilgilerinden ötürü teşekkür ederim. 5. baskı ise güncellenmiş ve yeni konularla genişletilmiş olarak tekrar yayınlandı. Kitabı D&R gibi mağazalardan veya kitapyurdu, d&r, idefix gibi sitelerden kitabı temin edebilirsiniz.

Android Eğitimi Kitabi 2. baskı


Kitapla İlgili  Sıkça Sorulan Sorular ve Cevapları

1. Kitabın hedeflediği okuyucu kitlesi ve seviyesi nedir ?

Kitap hem başlangıç hem de belirli bir seviyedeki kişileri hedeflemektedir.

2. Akademik kaynak ifadesinden kasıt nedir ? Teorik bir kitap mıdır yoksa örnekler, projeler var mıdır ?

Akademik kaynak ifadesiyle ilgili olarak bazı okurlar kitabın teorik (örneksiz, salt anlatımlı) bir kitap mı, yoksa örneklerin, projelerin de olduğu, pratiğe yönelik bir kitap mı olduğunu merak etmekteler. Herşeyden önce akademik derken kastımız; yazarın 2011’de Android üzerine Türkiyede bir üniversitenin Bilgisayar Mühendisliği bölümünde ilk açılan lisans derslerini okutan bir eğitimci olduğunu ve bu dersler nedeniyle elde ettiği eğitsel deneyimi kitaba yansıttığını vurgulamaktı. Ayrıca piyasadaki diğer bazı kitap ve kaynaklardaki ciddiyetsiz anlatım, öğretici ve pedagojik olmayan (eğitim bilimine aykırı) tarza bu kitapta asla yer olmadığını da vurgulamaktı. Şu bir gerçek ki; pratik uygulamalar yapılmadan yazılım alanında hiç birşey tam anlamıyla öğrenilemez. Bu gerçeğin profesyonel bir eğitimci olan yazar da şüphesiz farkındadır. Dolayısıyla tüm konular bolca kod örneği verilerek ele alınmakta ayrıca bu örnekler kitabın yanında verilen DVD içerisinde okuyucuya sunulmaktadır.  Öte yandan üniversitede ders ortamında kullanılabilecek, bir yüksek lisans tezi veya doktora tezi yazılacak olsa referans gösterilebilecek ciddiyette ama aynı zamanda öğretici bir kitaba olan ihtiyaç gözönünde bulundurulmuştur.

3. Sayfa Sayısı Nedir ?

Kitap 566 sayfa olup büyük format basılmıştır. Yani el kitabı gibi küçük formatlı değildir.

4. E-Book versiyonu var mıdır ?

Kitabın e-book versiyonu yoktur. Bu konu kitabın yayın haklarını tümüyle elinde bulunduran Pusula Yayıncılığın tasarrufundadır ve yayınevi e-book versiyonunu şimdilik yayınlamayı düşünmemektedir.

5. Kitaptan faydalanabilmek için Java bilmek gerekli midir ?

Hayır Java bilmek ön koşul değildir. Ancak orta seviyede nesne yönelimli programlamayı bilmek (C#, C++, Objective-C, PHP, VB gibi dillerden herhangi birisi ile) bilmek ön koşuldur.

6. Android Studio ile mi yoksa Eclipse ile mi anlatıyor ?

Kitap Android Studio üzerinden anlatmaktadır. Ancak yeri geldikçe Eclipse’teki farklılıklara da değinmektedir.

7. Neden Android Studio ? 

Google, 2014 sonbaharı itibari ile resmi IDE (geliştirme aracı) olarak Eclipse’i terketmiş ve Android Studio’yu desteklemeye başlamıştır. Bu nedenle kitap Android Studio üzerinden konuları ele almaktadır. Eclipse, Android için bolca sorun çıkartan bir araç olması nedeniyle daha gelişkin bir araç olan Android Studio Google tarafından tercih edilmiştir. Ancak daha önce de söylendiği gibi kitapta yeri geldikçe Eclipse’teki farklı durumlar da ele alınmaktadır.

8. C# ve C++ programcıları için kitap uygun mudur ?

5. madde de değinildiği gibi bu kitaptan faydalanmak için Java bilmek bir ön koşul değildir. C# hatta C++ programcıları da kitaptan faydalanabilirler. Çünkü kitabın ek bölümlerinden birisinde C# ve C++ programcıları için Java’ya hızlı bir geçiş kılavuzu oluşturulmuştur. Bu 30 sayfalık ek bölümde sıfırdan Java anlatmadan (yani döngü dizi değişken nedir vs gibi konulara girilmeden bu konuları zaten diğer dillerden bilen) C# ve C++ programcılarına Java’nın bu iki dilden farklı yönleri pratik bir biçimde ele alınmaktadır. Yazar Java dışında C#, C++, Swift gibi diller üzerine de yıllardır eğitimler veren bir kişi olarak, bazı ipuçları ve dikkat notları kitaba eklemiş ve Android’e bir C# ya da C++ programcısının gözünden bakmayı hedeflemiştir.

9. Yazarı kimdir ?

2011 yılında üniversitede Android üzerine ilk kez lisans derslerini açan ve okutan yazar, sektörde de 2002 yılından beridir eğitimcilik ve danışmanlık yapmaktadır. Halen Bahçeşehir Üniversitesi ile kurucu ortağı olduğu kodKamp isimli firmada eğitim kariyerine devam etmekte, 2011’den beridir Bahçeşehir Üniversitesinde “Temel ve İleri Android, WindowsPhone, ASP.NET MVC” derslerini vermektedir. 10 farklı kitap yazmış olan Taşdelen Microsoft’tan da 7 kez MVP ödülü almış ve Uluslararası .NET Birliğinde Türkiye ve MEA bölgesi yöneticiliği gibi görevler üstlenmiştir. Yazar hakkında daha detaylı bilgi için : aykut taşdelen hakkında

10. Kitabı benzerlerinden ayıran farklar nelerdir ?

Bana göre kitabın karakteristik özelliği sadece birşeyin nasıl yapıldığını anlatan bir kitap olmaması. Örneğin “Android’te ışık sensörü nasıl kullanılır?” sorusunu “şimdi filanca sınıfı kullanalım sonra şu fonksiyonu çağıralım …” şeklinde yüzeysel ve her yerde bulunabilecek bir anlatım ve örnekle cevaplayıp geçmek yerine, konunun arka planına inilmekte sözgelimi “SensorManager veya Sensor sınıfı” nasıl yazılmıştır, bu sınıfların kendi kaynak kodları nasıldır, tasarımlarında hatalar var mıdır, hangi dizayn paternleri kullanılmıştır, bu sınıfların aralarındaki ilişkiler nedir, bunlar UML ile nasıl modellenir şeklinde detaylı bir anlatım yapılmaktadır. Bu noktada bazı okuyucular bu gibi bilgileri Google ve Android’in resmi dokümanlarında da bulabileceklerini iddia etmektedir. Oysa o dokümanlarda bile bu detaylara değinilmemekte üstelik dokümantasyonda kaynak kodla bağdaşmayan durumlar veya hatalar da olmaktadır. Kitapta bu hatalar bile ele alınmaktadır.

Diğer taraftan kitap bu konuda yıllardır üniversitede dersler ve firmalara kurumsal eğitimler veren danışmanlık yapan bir eğitimci tarafından yazıldığı için adeta bir “ders” kitabıdır.

Kitap içeriği Android dünyasındaki son yenilik ve değişikliklere göre hazırlanmıştır. ART, Lollipop, AOT, yeni kontroller gibi güncel konular yine güncel ve modern bir IDE olan Android Studio’daki yeniliklere göre oluşturulmuştur.

Piyasadaki pek çok kitap maalesef ekran görüntüleri ile doldurulmuş ve çok yüzeysel içerikli buna rağmen de 200-300 sayfalık el kitabı gibi ince kitaplar. Bu kitapta ise neredeyse ekran görüntüsü (çok gerekli olmadıkça) yok, çizimler ise UML diyagramları şeklindedir. Buna rağmen 538 sayfalık üstelik büyük format bir kitaptır.

11. Oyun programlamaya yer verildi mi ?

Oyun programlamanın çok spesifik bir uzmanlık alanı olduğu inancında olan yazar, hakkında bilgi ve deneyimi olmadığı bu konuya kitapta özellikle yer vermemiştir.

12. Bu kitap dışında ek bir kaynak önerir misiniz ?

Herşeyden önce Android ya da farklı bir konuyu öğrenmek için ne bu kitap ne de başka bir kitap tek başına asla yeterli değildir. Çünkü bir konuyu derinlemesine öğrenmek farklı kaynaklardan elde edilen bilgilerin sentezlenmesini gerektirir. Dolayısıyla Android için de bolca farklı kitap okumanızı ilkesel olarak öneririm.

C++ Java ve C# ile UML ve Dizayn Paternleri

C++ Java ve C# ile UML ve Dizayn Paternleri

Öte yandan özellikle önereceğim yardımcı kaynak; C++ Java  C# ile UML ve Dizayn Paternleri isimli kitabımdır. Zaten Android kitabını okurken pek çok konuda eksik olduğunuzu büyük olasılıkla göreceksiniz. Örneğin Facade, SOLID, Single Responsibility, Command, Observer vs gibi terimler görecek, belki de bunları ilk kez duyacaksınız. Ayrıca kitapta UML kullanılarak yapılmış çizimler göreceksiniz. Tüm bunları anlamak, ayrıca konuya düz bir programcı değil de bir yazılım mimarının gözünden bakabilmek (ileride bir yazılım mimarı, proje yöneticisi olabilmek) için söz konusu kitap size çok ciddi fayda sağlayacaktır. UML ve Dizayn Paternleri kitabım Android ve Java haricinde kullandığınız veya kullanabileceğiniz diğer iki dil için de (C++ ve C#) faydalı olacak.

13. Kitabı Nasıl Kullanmalıyım ?

Yapılan en büyük hata; bu tür kitapları “soruna çözüm bulma odaklı” kullanmaktır.  Şüphesiz uygulama geliştirirken sorununuz olacak ve çözüm arayacaksınız ama bu kitabı alıp baştan sona sistematik bir şekilde çalışmadan, sadece sorun yaşadığınızda çözüm bulmak için kullanırsanız elde edeceğiniz fayda oranı çok çok düşük olacaktır. Bir konuyu yeterince öğrenmeden ne sorunu doğru teşhis edebilir ne de soruna çözüm bulabilirsiniz. Gördüğüm pek çok kişi ne yazık ki böyle yapıyor. Bu nedenle başları sorundan kurtulmadığı gibi yanlış bir teşhis ile yanlış çözümler peşinde koşup zaman ve emeklerini boşa harcıyorlar. Konuyu öğrenmeye zahmet etmedikleri için aslında sorun olmayan bir şeyi sorun zannediyor bulduğu çözümü de kendisine uyarlayamıyor. Sonuç; google aramaları forumlarda soru-cevap ile geçen onca zaman …

Lütfen kitabı baştan sona kadar okuyun öğrenin ve uygulama geliştirmeye ondan sonra başlayın. Sabırsız olmak hemen birşeyler yapmaya kalkışmak yukarıda tarif ettiğim durumu oluşturuyor. O an o soruna tesadüfen bir çözüm bulunsa bile öğrenmiş olmadığınız için ertesi gün aynı şeyi tekrar yaşıyor ve motivasyonunuzu yok ediyorsunuz.

Bu konuda yaşadığım bir örneği aktaracağım; kitabımı almış ve bu şekilde yanlış kullanan bir arkadaş facebook grubumuzdan bana bir soru sordu. NotificationManager ile ilgili bir sorun yaşadığını, kitaptaki kodun aynısını yazdığını ve bir sınıfın isminin ide tarafından bulunamayıp hata verdiğini söyledi. Günlerce takılmış farklı yerlerde çok arama yapmış bulamayınca bana yazmış. Kodun o kısmını göndermesini istedim screenshot alarak gönderdiğinde şunu gördüm; Context sınıfını parametre olarak kullanması gereken bir yerde hata olmuş. Kitaptakinin aynısı diyor ama koda bakınca aynısı olmadığını anonim inner type içinde this kullandığını gördüm. Halbuki anonim tipler içerisinde this o şekilde kullanılmaz. Arkadaşa önce şunu sordum; “kitabın Context sınıfını anlattığım kısımlarını çalışmadınız değil mi ?” dedim şaşırarak “evet nereden anladınız ?” dedi. Arkadaş baştan sona okuyup öğrenmeden sadece Notification kullanmak istemiş ve daha ilk anda sorun yaşamış. Halbuki başından itibaren okusa zaten o sorunu yaşamayacak ve iki durum arasındaki farkı bilecekti dahası o durumda farklı olarak ne yapması gerektiğini de bilecekti…

Üstelik çoğu insanın gözden kaçırdığı bir şey var. Siz bu yanlışa düşerken aklı başında rakipleriniz benim önerdiğim şekilde davranarak sizin önünüze geçiyor ve sizden daha iyi oluyorlar…  Unutmayın hiç bir başarı tesadüf değildir.

14. 2. ve 3. Baskılarda Eklenen Konular Nelerdir ?

Temmuz 2015’te çıkan ilk baskı okurların yoğun ilgisi nedeniyle ilk 3 ayda tükendi. Ekim 2015 ‘te yapılan eklenti ve düzeltiler ile Kasım 2015’te kitabın 2. baskısı, yine bazı eklentilerle de Haziran 2016’da 3. baskısı oldu.

  1. NFC (Near Field Communication) Haberleşmesi
  2. Gesture (el işaretleri) oluşturma ve anlamlandırma
  3. XAMARINE ve C# ile Android Programlama
  4. Runtime Sınıfı
  5. Parcelable interface’i ile serialization ve deserialization işlemleri.
  6. Tab ve ListView ile ileri seviye işlemler.
  7. Input Validation
  8. Swipe Down Refresh
  9. Library Module Oluşturma ve Kullanma
  10. JSOUP ile web sayfalarından alınan HTML’i parse etmek.
  11. Yeni eklenen ConstaintLayout kullanılarak ekran tasarımı.

15. Kitaptaki konu başlıklarını özetler misiniz ?

Detaylı içeriği içindekiler sayfasında görebilirsiniz ama özet halinde konu başlıkları şöyle :

  • Dalvik, ART, Sandbox, Zygote, Forking, AOT, vb
  • Fragment, Layout ve View Sınıfları
  • YAFSS2 Dosya Sistemi Ve Dosya İşlemleri
  • Shared Preferences, Process’ler
  • MVC Paterni ve Çok Katmanlı Mimari
  • SqLite Veritabanı İşlemleri
  • BLOB verilerle çalışma (kamera görüntülerinin veritabanına kaydedilmesi gösterilmesi)
  • ContentProvider, Servisler, MultiThreading, Asenkron Çalışma
  • JSON, SOAP ve RESTful Web Servisler
  • Çizim İşlemleri, SurfaceView, Animasyonlar
  • Kamera, Ses Tanıma, Seslendirme
  • GPS, Sensörler, Broadcasting
  • GoogleMap, Places API’leri
  • SMS, Mail, Arama
  • Bluetooth ve Arduino
  • Java’nın C++ ve C#’tan Farklılıkları
  • 2. Baskıda Eklenen Konular: NFC, Gesture, Runtime, ListView ve Tab özelleştirmeleri, Input Validation, Parcelable ile Serialization ve deserialization, XAMARINE ve C# kullanarak Android uygulaması geliştirmek.
  • 3. Baskıda Eklenen Konular: Swipe Down Refresh, Library ve Module Oluşturmak ve Kullanmak, ContraintLayout ile ekran tasarımı, JSOUP ile web sayfalarından alınan HTML’in parse edilmesi.
  • 4. Baskıda Eklenen Konular: WebAPI ile Rest servis geliştirme, Retrofit ile kullanma, Executor ile threading, Thread senkronizasyonu, Materyal Dizayn eklentileri (RecyclerView, CardView, SnackBar, …), Android 6 ve 7 versiyonu için gereken güncellemeler.
  • 5. Baskı İçeriği: 5. baskı sadece kitap piyasada tükendiği için yapılmış olup içeriği 4. baskı ile tümüyle aynıdır.
Reklamlar