RoboGuice ve Android Annotations ile Verimli Android Uygulama Geliştirme Emrah Ayanoğlu, Onur Özcan, Alperen Eraslan. Inet-TR 12 9 Kasım 2012



Benzer belgeler
Sunucu Taraflı JavaScript ile Gerçek Zamanlı Web Uygulamaları Geliştirme

Türkiye Havacılık Sektöründe Uçuş Simülatörü Kullanımı ve Simülatör Sertifikasyonu Çalışmaları

Yerli İnsansız Hava Aracı Projelerinde Sertifikasyon ve Uluslararası Rekabete Katkısı

Bir Helikopterin Uçuşa Elverişlilik Çalışmaları Kapsamında Uçuş Performans Sertifikasyon Gereksinimleri

Uçuşa Elverişlilik Sertifikasyonunda Emniyet ile İnsan Faktörlerine Yeni Bir Bakış

SİBER GÜVENLİK VE BÜYÜK VERİNİN ENDÜSTRİ 4.0 DAKİ YERİ

Android Kaynakları (Resources)

Havacılık Sektöründe Kullanılan Mobil Teknolojiler Elektronik Uçuş Çantası. Akademik Bilişim 2014 Emrah Ayanoğlu Cem Gündüz Doruk Pancaroğlu

Android Ders Notları

MOBİL UYGULAMA GELİŞTİRME

Proje 1. Arayüz Tasarımı

1 - Button Kontrolu Nasıl Yapılır?

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

.com. Özcan Acar 2009 Kurumsal Java.com

Görsel Komponentler. TextView. Metin değerlerini ekranda göstermek için kullanılır.

MOBİL UYGULAMA GELİŞTİRME

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

MVP, Observer ve Mediator Örüntüleri ile Yeniden Kullanılabilir Uygulama Bileşenleri Geliştirme

Güvenlik Java ve Web Uygulama Güvenliği

Client Server Database

Lecture 11: Generics

Listview Kullanımı. Aşağıdaki örnekte bir ListView'ı birkaç ülke ismiyle dolduracağız.

Activity Context.startActivity Activity, AndroidManifest

Inovasyonu Hızlandırın

MOBİL UYGULAMA GELİŞTİRME

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Üst Düzey Programlama

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10. Yrd.Doç.Dr.Hacer Karacan

TASARIM VE ÜRETİM ORGANİZASYON ONAYLARI NA GENEL BAKIŞ VE TÜRKİYE FİLİZ TÖRE 18 EYLÜL 2013

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Kaynak Kod Güvenliği Bir Güvensiz API Örneği

Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi

Ürün Özeti WIBNB Modülü

Bilgisayarda Programlama. Temel Kavramlar

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi KULLANICI ARAYÜZ. BLM401 Dr.Refik SAMET

Spring Framework Eğitimi

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

Model-Tabanlı ve Rastgele Karma Yöntem

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi SERVİS BİLEŞENLERİ. BLM401 Dr.Refik SAMET

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Basit Mimari, Katmanlı Mimari ve doğrudan çalıştırma olarak üçe ayrılır.

Sunum İçeriği. Programlamaya Giriş

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Chapter 8 Yazılım Testi. Lecture 1. Chapter 8 Software testing

Java Programlamada Paket Yapısı Ve Import

Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

Burak Kıymaz JAVA FX

Bilişim Garaj Akademisi Nedir?

BLGM 354 DENEY 1 * GİRİŞ

Sınıf Diyagramları Amaç: Sınıf Diyagramları Nasıl Çizilir?

Android Studio TextView ve EditText Öğr.Gör. Utku SOBUTAY

Genel Programlama II

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

Solaris 7980g. Hızlı Başlangıç Kılavuzu. Sunum Alanı Görüntüleyici TRTR-QS Rev A 1/16

Doküman Yönetim Sistemi Kullanıcı Kılavuzu

Ders 8 Konu Özeti ve Problemler

Yazılım Mühendisliği 1

«BM364» Veritabanı Uygulamaları

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

MVP ve Mediator ile Loose Coupled, Modüler UI Geliştirme

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

Klavyeden Basit Giriş/Çıkış İşlemleri

BİL-141 Bilgisayar Programlama I (Java)

Hata Ayıklamanın Ötesi... (Assertion) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 1

EĞİTİM KURUMLARINDA SINIF İÇİ YOKLAMA, SINAV GİBİ UYGULAMALARIN TABLET BİLGİSAYAR KULLANARAK HIZLI VE VERİMLİ HALE GETİRİLMESİ

MVC. Görüldüğü üzere 2 adet cs. Dosyası oluşturdum. Birincisi çok satır kodu (20-25) içeren büyük işlerin yapılacağı class. İsmi buyuk_isler.

BİL BİLGİSAYAR PROGRAMLAMA (JAVA)

Spring Framework Eğitimi

OMNET Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir:

Java Temel Özellikleri

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

public static int Toplam int x, int y

UYGULA İÇİ SATIN ALMA. <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="com.android.vending.

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

YAZILIM ÜRÜN HATTI DEĞĐŞKENLĐĞĐNĐN DENETĐM ÇEVRĐMĐ ĐLE ELE ALINMASI

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

Doküman Yönetim Sistemi Kullanıcı Kılavuzu

Start : Bu method init methodundan hemen sonra çalışır ve applet dosyası yürütülmeye başladığında çalışmaya başlar.

Bu Kitap Kime Hitap Eder? 2 Kitapta Nelerden Bahsedilmiştir? 3 Kitabı Takip Edebilmek için Nelere İhtiyaç Duyacaksınız?

CENG 302 Yazılım Mühendisliği Yazılım Mimarisi - Devam. Alper UĞUR

Bulut Bilişim ve Bilgi Güvenliği

Film Arşiv Sistemi. Yazılım Tasarım Belgesi

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

Ders 8: Metotlar. barisgokce.com

Java Class Yapısında Finalize Metotunun Kullanımı

Erişim konusunda iki taraf vardır:

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

BİL132 Bilgisayar Programlama II

Android ile SQLLite Veri Tabanı

sonbahar / kış - rahat bebek kıyafetleri casual baby clothes - autumn / winter

Transkript:

RoboGuice ve Android Annotations ile Verimli Android Uygulama Geliştirme Emrah Ayanoğlu, Onur Özcan, Alperen Eraslan Inet-TR 12 9 Kasım 2012

İÇERİK 1

STM A.Ş. Savunma Teknolojileri Mühendislik ve Ticaret A.Ş 1991 yılında Savunma Sanayi İcra Komitesi kararı ile Ankara da kurulmuştur. Amacı TSK ve SSM ye sistem mühendisliği, teknik destek ve danışmanlık hizmetlerini sağlamaktır. Firma hissedarlarına bakıldığında TAI, HAVELSAN ve SAVRONİK in hisseleri görülmektedir. Bu nedenle TSK Güçlendirme Vakfı nın dolaylı olarak hissedar olduğu belirtilebilir. 2

Android de Uygulama Geliştirme - Sorunlar İş sınıfının dışında yazdığımız birçok satır kod bulunmaktadır. Bütün Android uygulamalarında ortaktır. Her projeye başlarken bu kodları yazmak vakit kaybına yol açmaktadır. Bir uygulama geliştirirken ne kadar fazla kod yazarsak, hatayla karşılaşma oranı o kadar artmaktadır. 3

RoboGuice nedir? Google ın Guice framework ünün Android geliştiricileri için geliştirilmiş RoboGuice framework ü Android uygulaması geliştirirken büyük kolaylıklar sağlamaktadır. Temel çalışma mantığı dependency injection üzerinedir. (Spring Framework) Uygulama geliştirirken kullanmak istediğimiz nesneleri daha kısa ve kontrollü kod parçarıyla RoboGuice in kendisi yaratmaktadır. 4

RoboGuice in Avantajları Projedeki nesnelerin yaratılmasında kullanılan karışık kod parçalarıyla uğraşmak zorunda bırakmaması, nesneler yaratılırken kullanılan kodun yarı yarıya azalması, Değişkenleri doğru zamanlarda yaratması, geliştiricinin kod yazma dışındaki sorumluluğunu azaltması, Geliştiriciye Null check gibi konularda yardımcı olması, basit hataları azaltması, 5

RoboGuice in Avantajları Bazı durumlarda uygulamayı çalıştırmadan ortaya çıkması imkansız olan hataları başlangıçta vermesi, yani TypeSafe olması, Performans bakımından normal Android geliştirmeyle bir farkı olmaması, Kod okunabilirliğini ve takip etmeyi kolaylaştırması, Tekrar kullanılabilirliği artırması Yazılımcının kendisiyle ilgili yerlere odaklanmasını kolaylaştırmaktadır. Zamandan tasarruf sağlamaya yardımcı olmaktadır. 6

RoboGuice - Örnek RoboGuice in sağladığı nesne kullanımı yapısı: textview isimli TextView nesnesini RoboGuice in enjekte etmesini sağlama: InjectView(R.id.text1) TextView textview; TextView nesnesini Roboguice olmadan oluşturmaya çalışsaydık yazacağımız kod şu şekilde olacaktı: TextView textview; textview = (TextView) findviewbyid(r.id.textview); casting de yapacağımız olası bir hatayı önlemekte ve yazdığımız kod miktarını azaltarak kodu daha anlaşılabilir hale getirmektedir. 7

AndroidAnnotations (AA) nedir? Android de kod geliştirmeyi hızlandıran açık kaynaklı bir frameworktür. Amacı, Android uygulamalarını geliştirirken kod yazmayı ve kodun sonradan değiştirilebilmesini kolaylaştırmaktır. Java Annotation ların kullanımıyla projede sık sık kullanılmış kod parçalarının sayısını azaltmaya yardımcı olmaktır. Annotation, Java programa dilinde kullanılan bir kavramdır, Java kaynak koduna eklenebilen sözdizimsel metadata nın özel bir şeklidir. 8

AndroidAnnotations - Özellikler Bağımlılık Enjeksiyonu: Görünümler, kaynaklar, sistem servisleri, vb. enjeksiyonu için benzer annotation lar sağlar. Basitleştirilmiş iş parçacığı modeli: Kullanıcı arayüzü ya da arka plan iş parçacığında çalıştırabilmek üzere kendi metodlarınızı annotate etmenize olanak sağlar. Olay Bağlama: Anonim dinleyici sınıflar olmadan, görünümler üzerinde olan olayları idare etmek için metodlarınızı annotate etmenize olanak sağlar. 9

AndroidAnnotations - Özellikler REST istemci: Bir istemci arabirimi oluşturabilirsiniz, AA uygulamayı oluşturur. Bütün bu ve diğer ekstra özelliklerini 50 kb dan daha az gereksinim duyar. AA ortak kodu derleme zamanında üretir ve yazılımın çalışmasında bir etkisi yoktur. Her aktivitenin birer alt sınıfını üreterek ve annotation ları standart ortak kod ile değiştirerek yapar bunu. 10

AndroidAnnotations Örnek Önceki: View updatebookmarksbutton1 = findviewbyid(r.id.updatebookmarksbutton1); updatebookmarksbutton1.setonclicklistener(new OnClickListener() { @Override public void onclick(view v) { updatebookmarksclicked(); } }); Sonraki: @Click({R.id.updateBookmarksButton1, R.id.updateBookmarksButton2}) void updatebookmarksclicked() { searchasync(search.gettext().tostring(), application.getuserid()); } 11

RoboGuice ile Android Annotations i Entegre Kullanmak Android Annotations projesi RoboGuice ile tamamen entegrasyonu sağlanabilecek durumdadır. Hem kod kalitesini en mükemmele dogru çevirmeye hem de en az satır kod yazarak istediklerimizi maliyet ve zaman etkin olarak yapabilmeyi elde edebiliriz. 12

Ortak Kullanımın Getireceği Avantajlar Android bileşenlerin derleme zamanı enjeksiyonu ile zaman etkin çözümü, Android Annotations sayesinde RoboGuice için kullanmamız gereken RoboActivity e artık ihtiyacımız kalmayacak, Bütün Android Annotations maddelerine destek vermektedir. (@Click, @Background, @UiThread, @UiThreadDelayed, @ItemSelected, v.b) 13

Ortak Kullanım - Örnek @EActivity(R.layout.main) @RoboGuice({AstroListener.class, AnotherListener.class}) public class AstroGirl extends Activity { @ViewById EditText edit; @Inject GreetingService greetingservice; @Click void button() { String name = edit.gettext().tostring(); greetingservice.greet(name); } } public class AstroListener { @Inject Context context; public void dosomethingonresume(@observes OnResumeEvent onresume) { Toast.makeText(context, "Activity has been resumed", Toast.LENGTH_LONG).show(); } } Toplam kod satırımız yaklaşık olarak %25 azalmıştır. 14

Sonuç Android yazılım geliştirme süreçlerinde de, diğer yazılım süreçlerinde kullandığımız mimarilerin ve yapıların kullanılması hem zaman etkin hem de kod etkin olarak geliştirme olanaklarına sahip olmaktadır. RoboGuice ve Android Annotations projeleri bize Android geliştirme süreçlerinde verimli olmamızı sağlayacaktır. 15

Kaynaklar [1] Michael Burton. (2011). RoboGuice. http://code.google.com/p/roboguice/. Son Erişim tarihi: 15 Eylül 2012.. [2] Excilys. (2011). Android Annotations. http://androidannotations.org/. Son Erişim tarihi: 15 Eylül 2012. [3] Java Annotation. http://en.wikipedia.org/wiki/java_annotation. Son Erişim tarihi: 15 Eylül 2012. [4] Excilys. (2012). RoboGuice Integration. https://github.com/excilys/androidannotations/wiki/robogui ceintegration. Son Erişim tarihi: 15 Eylül 2012. 16

ANKARA TEKNOLOJİ GELİŞTİRME BÖLGESİ, BİLKENT CYBERPARK, E BLOK 5.CADDE NO: 6/A 06800, ANKARA, TURKIYE TEL : 0 312 266 35 50 FAKS : 0 312 266 35 51 www.stm.com.tr STM 2011 All Rights Reserved Bu doküman ve içerdiği tüm bilgiler STM AŞ nin fikri mülkiyetidir. Bu dokümanın dağıtımı veya sunumu ile bu haklar ortadan kalkmış olmaz. STM AŞ nin yazılı izni olmadan bu dokümanın ve içerdiği bilgilerin üçüncü kişilere aktarımı, çoğaltımı ve dağıtımı yapılamaz. Bu doküman ve içeriği hazırlanma amacının dışında kullanılamaz. This document and all information contained herein is the sole property of STM AŞ. No intellectual property rights are granted by the delivery of this document or disclosure of its content. This document shall not be reproduced or disclosed to a third party without the express written consent of STM AŞ. This document and its content shall not be used for any other purpose other than for which it is supplied.