Kotlin Nedir?

Google’ın 2017’deki son etkinliğinde resmen duyurusunu yaptığı KOTLIN, yazılım dünyasında deprem etkisi yaptı. Özellikle hali hazırda Java ile Android uygulaması geliştirenlerin çoğu bu haberi heyecan ve endişeyle karşıladı. Aykut Taşdelen yol sohbetlerinde Kotlin’in aslında çok da yeni bir gelişme olmadığını yaklaşık 1 yıldır gündeminde olduğunu ve Kotlin’e dair görüşlerini anlatıyor. Java mı daha iyi, Kotlin mi? Kotlin’e geçmeli miyim? Java’nın sonu mu geldi? gibi çeşitli sorulara bu video’da cevaplar bulacaksınız.

Reklamlar

Android Library Module Oluşturmak ve Kullanmak

Kaynakça: “Android Programlama Eğitimi” Kitabı Aykut Taşdelen Pusula Yayıncılık

Geliştiriciler birden fazla projede kullanabilecekleri çeşitli kodlar yazma ve kodları paketleme ihtiyacı duymaktadırlar. Sözgelimi .NET ortamında uygulama geliştiren bir kişi bu amaca hizmeten “.dll” dosyaları oluşturur ve bu dosyaları farklı projelere referanse ederek kullanır. Benzer şekilde Java uygulaması yazan geliştiriciler de “.jar” uzantılı dosyalar oluştururlar.

Android ortamında ise aynı amaç için “.aar” dosyaları söz konusudur. Aslında bu dosyalar bir tür sıkıştırılmış dosyalardır ve uzantıları “.zip” şeklinde değiştirilecek olursa içeriği gözlemlenebilir.

Module0

aar” dosyalarının içeriği sadece kaynak kodlardan ibaret değildir. Söz konusu kütüphanenin kendisinin kullandığı başka kütüphaneler, resource’lar, manifest, asset’ler gibi farklı unsurlar da olabilmektedir.

Module Oluşturma ve Kullanma

Bir Android projesine yeni bir module eklemek için “File > New > New Module” menü seçenekleri kullanılmalıdır.

Module1

İlk ekrandan “Android Library” seçeneği seçildiğinde isimlerin ve SDK versiyonunun belirlenmesine yönelik ikinci bir ekran daha açılacaktır. Bu ekrandaki bilgiler geliştiricinin amaçlarına göre doldurulmalıdır.

Module2

Bu şekilde oluşturulacak olan yeni modülün (örnekteki samplelib) içeriği Android görünümünde izlenebilir ve yeni dosyalar eklenilebilir. Sözgelimi örnekte Gui isimli bir sınıf dosyası eklenmiş ve aşağıda görüldüğü gibi kodlanmıştır.

package android.dernegi.org.samplelib;

import android.content.Context;
import android.widget.Toast;

public class Gui 
{
    private Context context;
    
    public Gui(Context context) 
    {
        this.context = context;
    }
    
    public void ToastShow(String message)
    {
        Toast.makeText(context, message, Toast.LENGTH_LONG).show();
    }
}

Module3

 

Yukarıda anlatıldığı şekilde oluşturulan bir modün hedef projede kullanılabilmesi için söz konusu projeye referanse edilmesi gerekir. Bu işlem Android terminolojisinde dependency (bağımlılık) eklemek şeklinde anılmaktadır. Bu noktada “Open Module Settings” seçeneği ile “Project Structure” penceresi açılmalı ve “+” sembolü kullanılarak bir module tipi dependency eklenmelidir. Örnekte bu yöntemle hedef projeye “samplelib” isimli module eklenmiştir.

Module4

Bu aşamadan itibaren artık Gui isimli sınıf hedef projede kullanılabilir. Örneğin;

package android.dernegi.org.consumerapp;

import android.dernegi.org.samplelib.Gui;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Gui gui = new Gui(this);
        gui.ToastShow("Android Programcıları Derneği");
    }
}

Module’ün Farklı Bir Projede Kullanılması

Genellikle yapılmak istenilen şey; bir modülün oluşturulduğu projeden farklı bir projede kullanılmasıdır. Oysa yukarıdaki örnekte önce ConsumerApp isimli bir proje açılmış daha sonra bir modüle eklenmiş (SampleLib) ve son kertede de ConsumerApp projesine referanse edilerek kullanılmıştı. Bu başlıkta ise aynı modülün tümüyle farklı bir projede nasıl kullanılabileceği konu edilmektedir.

Sözgelimi OtherApp isimli farklı bir Android projesi başlatılmış olsun. Öncelikle eğer yoksa libs isimli bir dizin açılmalı ve içerisine SampleLib’e ait “aar” dosyası kopyalanmalıdır.

İpucu : SampleLib’e ait “aar” dosyasının path’i; “…/ConsumerApp/samplelib/build/outputs/aar/samplelib-release.aar”

Module5

Kopyalama sonrasında tercihen rename işlemi yapılabilir. (Örnekte samplelib.aar şeklinde isim kısaltılmıştır.) Daha sonra build.gradle dosyasında “libs” dizini bir “file system repository” olarak bildirilmelidir.

repositories {
    flatDir {
        dirs 'libs'
    }
}

Bu işlemin yapıldıktan sonra aşağıdaki gibi “aar” dosyası bir dependency olarak eklenebilir (referanse edilebilir).

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile(name:'samplelib', ext:'aar')
}

Gradle senkronizasyonu gerçekleştirildikten sonra artık SampleLib::Gui sınıfı kullanılabilir. Örneğin:

package android.dernegi.org.otherapp;

import android.dernegi.org.samplelib.Gui;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Gui gui = new Gui(this);
        gui.ToastShow("Android Programlama Eğitimi/Pusula Yayıncılık");
    }
}
 

Android Programlama Eğitimi Kitabımın Basın Bülteni

Bu kitap 2011 yılından beridir, üniversitede Android üzerine açılmış ilk lisans derslerini okutan deneyimli bir eğitimci tarafından yazılmıştır. Bu nedenle kitap, konuları pedagojik bir sistematiğe göre ayrıştırıp, akademik bir ciddiyet içerisinde ele almaktadır. Konunun arka planını anlatmayı hedefleyen yazar, ekran görüntüleri ile doldurulmuş yüzeysel içerikli bir kitap yerine, bazı noktalarda Android kütüphanesinin kendi kaynak kodlarından alıntılar yaparak -sadece birşeyin nasıl yapıldığını değil aynı zamanda o görevi yerine getiren sınıfların nasıl yazıldıklarını anlatmakta- ayrıca UML ile modellemeler yaparak, kütüphanenin tasarım detaylarını da incelemektedir. Teori ve pratiğin ayrılmaz bir bütün olduğu gerçeğinden yola çıkılarak, kitap Android üzerine uygulama geliştirme isteyen kişiler için bolca örnek kod içermekte ve kaliteli kodlama için çeşitli teknikler öğretmektedir.

Java, C# veya C++ dillerinden herhangi birisinde belirli bir seviyeye gelmiş programcılara, Android programlamayı başlangıcından ileri seviyeye kadar öğretmeyi hedefleyen kitap, Android dünyasındaki son yeniliklere göre hazırlanmıştır. Örneğin anlatımlar Eclipse yerine Google’ın resmi IDE olarak kabul ettiği Android Studio üzerinden yapılmakta ayrıca Lollipop gibi yeni versiyonlarla gündeme gelmiş olan ART gibi yeni olgular anlatılmakta ve API versiyonlarındaki son güncellemeler ele alınmaktadır. Kitap C# ve C++ programcıları için Java’nın bu iki dilden farklılıklarını (sıfırdan Java anlatmadan) ek bir bölümde  özetlemektedir.

  • 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
  • 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ı
  • ve diğerleri …

Aykut TAŞDELEN

 

2011 yılında üniversitede Android üzerine ilk kez lisans dersi 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 C ve Sistem Programcıları Derneğinde eğitim kariyerine devam etmekte, 2011’den beridir Bahçeşehir Üniversitesinde “Temel ve İleri Android, WindowsPhone, ASP.NET MVC” derslerini vermektedir. Geçmişte 8 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.