Phonegap, Nitobi şirketi tarafından duyurulmuş açık kodlu bir mobil uygulama geliştirme platformudur. Nitobi Adobe tarafından satın alınmıştır. Phonegap’de yazılım geliştirme HTML, CSS ve JavaScript ile yapılmaktadır ve bu özelliği pek çok avantajı beraberinde getirmektedir:
Bu avantajları şöyle sıralayabiliriz:
HTML - CSS - JavaScript bilgisi ile yazılım geliştirme ve dolayısıyla daha çabuk öğrenme imkanı, Aynı kodlama ile farklı platformlarda uygulama geliştirme, Gelecek nesil web deneyimini uygulama, Geniş topluluk (community), Başarılı dokümantasyon, Adobe desteği.
HTML5’in gücünü kullanarak sistem kaynaklarına / sensörlere erişmek teorik olarak bir dereceye kadar mümkündür ancak burada dikkat edilmesi gereken nokta Phonegap’in bu işlemi yaparken native uygulama içerisinden erişim yetkilerini alarak HTML5’e aktarmasıdır.
"Android cihazlardan SQL Server'a nasıl erişirim" şeklinde bana ulaşan bir soruya yanıt olması açısından bu blogu yazıyorum umarım yararlı olur.
Öncelikle bilinmesi gereken önemli bir nokta var: veritabanlarına mobil cihazlardan doğrudan veritabanı protokolü üzerinden iletişim kurmak doğru değildir. Bunun bir kaç nedeni var:
1) Veritabanlarının portları farklı olabilir ve bu portlar güvenlik duvarları ile kapatılmış olabilir. Bu portlar üzerinden bağlantı kurmak da güvenlik duvarları neneniyle engellenmiş olabilir.
2) Veritabanları dış erişimlere tamamen kapalı olabilir.
3) Mobil uygulamalara veritabanı sürücüsü (database driver) eklemek harici bir kütüphane olduğundan uygulamanın boyutunu artırır.
Uygun olan yöntem API veya Web Servisi kullanmaktır.
Fakat gerçek hayat bazen bazı uygun olmayan koşulları zorunlu kılıyor ve bir mobil ugyulamanın bir veritabanına erişmesi ihtiyacı ortaya çıkabiliyor. Bu durumda da Android'in framework altyapısı olan Java'nın veritabanı bağlanırlığı (JDBC) yardıma yetişiyor.
Yani Android cihazlardan JDBC ile veritabanlarına bağlanmak mümkün.
Android cihazlardan SQL Server'a bağlanmak için dikkat edilecek hususlar şöyle:
1) Android uygulamasına AndroidManifest.xml dosyasından internet izni vermek gerekiyor.
<uses-permission android:name="android.permission.INTERNET" />
3) net.sourceforge.jtds.jdbc.Driver sürücüsünün bağlantı şekline dikkat etmek gerekiyor. Örnek : jdbc:jtds:sqlserver://IP_ADRESI:1433;databaseName=VERITABANI_ADI
Bunların dışında normal JDBC bağlantısını aynen yapabilirsiniz. Örnek:
Uzunca bir süredir işten arta kalan zamanlarda Gelecekonline’ın geliştirilmesine zaman ayırıyorum.
Gelecekonline 2005 yılında kod ve server altyapısı olarak ASP/Windows ile başladığı internet yolculuğuna şu an Java/Linux ile devam ediyor. Aslında Wordpress kurmak ve buna bir de vBulletin Forum entegre etmek başlarda alternatiflerden biriydi ama sonradan Java ile kendi yazdığım bir blog altyapısını Gelecekonline için geliştirmek yönünde karar aldık.
Bilindiği gibi Java diline hakim olmak büyük bir projede tek başına yeterli değil bunun yanında öğrenilmesi gereken bir sürü framework, kütüphane, teknik, SDK’lar, API’ler de işin içine giriyor.
Bu gibi yan konularda hem bir AR-GE laboratuvarı hem de çalışan canlı bir sistem olması açısından Gelecekonline bu zaman zarfında bana çok şey kazandırdı.
Gelecekonine Android Uygulaması
Başlangıçta bir RSS okuyucusu olan Gelecekonline Android uygulaması için bir JSON API yaptım ve verileri bu API’den çekmeye başladık. Bu API’yi geliştirerek Android Uygulamasına ilave özellikler kazandırmaya çalıştım. Gelecekonline Android Uygulaması çok büyük bir ilgiyle karşılanmadı açıkçası. Halen 800’ü rakamlarda aktif kullanım ve 4000’lerde gezen bir indirme oranına sahip. Oysa yeni haber eklendiğinde uyarı veren ve widget içeren ilk Android bilişim haber uygulamalarından biridir.
Layar aslında en başarılı Augmented Reality (Zenginleştirilmiş Gerçeklik) uygulamasıdır. Layarı’ı diğer çalışmalardan ayıran en büyük özellik uygulama yapıp Layar sunucularına yüklenebilmesidir. Geliştirilen uygulama da aslında bir JSON API oluşturmaktan ibaret. Bu JSON API’yi oluştururken Google’ın gson kütüphanesini kullandım.
Layar için bizim sunduğumuz çok kapsamlı bir servis henüz yok. Yaptığımız çalışma kişilerin etrafında bulunan elektronik mağaza, teknik servis gibi bilişim ile ilgili yerleri listelemek ve harita/kamera üzerinden göstermek. Layar uygulamamız şu anda bölgesel olarak en popüler Layar uygulamalarından biri.
Google’ın başarılı internet tarayıcısı Chrome’a yüklenebilen uygulamamız şu an için sadece Gelecekonine videolarını çekiyor fakat ilerleyen günlerde iyileştirmeler yapacağım ve hatta yeni Chrome uygulamaları yapacağım.
Ve geldik canımı yakan ve “nerede hata yaptım” dedirten projeye.
1999 senesinde meydana gelen büyük depremde Bursa’da yaşıyordum ve depremi çok şiddetli hissettik. Günlerce sokaklarda, parklarda yattık. Çok şükür ki hiçbirimizin başına kötü bir olay gelmedi ama depremin ne derece büyük bir yıkım olduğunu her vatandaş gibi ben de çok ağır şekilde öğrendim. Hayatını, ailelerini kaybeden on binlerce vatandaşımıza günlerce gecelerce gözümüzden yaşlar döktük, yardımcı olmaya çalıştık.
Van’da meydana gelen deprem için de her Türk vatandaşı gibi ben de ne yapabilirim diye düşünmeye çalıştım. Bu düşünce ile ihtiyaçların bildirilmesi için bir projeyi hayata geçirdim.
Bu projede ihtiyaçlar Android ve Java ME uygulaması ile Gelecekonline Deprem sayfasına anlık olarak iletiliyor ve @vandpr Twitter kullanıcısı ile bölge bilgisi de dahil olmak üzere tweet gönderiyor.
Bu projeyi duyurabilmek için memleketin pekçok gazetecisine mail attım, Gelecekonline’da haber yaptım ama kullanılmasını / duyurulmasını sağlayamadım.
Proje halen açık durumda ve kullanılmaması için bir sebep de yok.
Evet benim için sadece bir içerik paylaşım sitesi değil büyük bir AR-GE laboratuvarı olan Gelecekonline’ın projeleri hakkında bilgi vermeye çalıştım. Okuduğunuz için teşekkürler.
Ocak 2011'de Android konusunda bir kitap yazma düşüncesi Burak Dede tarafından bana ulaştığında çok sevindim tabi.
Bilişim kitapları konusunda uzman bir kişi olan Dikeyeksen Yayınları Kurucusu ve Genel Yayın Yönetmeni Suat Özdemirci ile kitabı tamlayarak okurlara sunduk.
Android Programlama kitabının benim için önemli özellikleri var.
İlk defa bir kitap yazmış oldum,
Önsözü hocamız Dr. Hakkı Öcal yazdı,
Android gibi son derece sevdiğim ve çalışmaktan keyif aldığım bir konuda bir kitap yazmış oldum.
Kitapta bol miktarda örnek sunmaya çalıştım ve bir DVD ile kitaba dahil ettik.
Preferences, Thread, AsyncTask, Birim Testleri,Debugging gibi konulara değinmeye çalıştım, Android yönetimi ve Android Market hakkında da bilgi vermeye çalıştım.Adobe Flex ile ilgili küçük de olsa bir bölüm ekledim.
Kitapta bölümler şöyle:
Bölüm 1 :Android Nedir
Android İşletim Sistemi
Hakkında Temel Bilgiler
Open Handset Alliance
Android’in özellikleri ve mimarisi
Android versiyonları
Android Cihazları ve Cihaz Yetenekleri
Bölüm 2 :Uygulamalar ve Marketler Android Uygulamaları
Android Uygulama Mağazaları
Bölüm 3 :Android SDK
Android ile yazılım geliştirme
Android SDK
Bölüm 4 :Android Yazılım Geliştirme Aracı (Eclipse Plugin)
Bölüm 5 :Java ile Android Geliştirmede Bileşenler
Java ile Android Yazılımında Bileşenler
Activity
Layout, View, Theme
Service
Broadcast
Intent
Event
Widget’lar
Notification’lar
İletişim Kutuları (Dialoglar)
Menüler
Sqlite ile Veritabanı İşlemleri
Content Provıder – Content Resolver
Bölüm 6 :Java ile Örnek Android Projeleri (Bu kısımdaki projelerin tamamı kitap ile verilen DVD'de yer almaktadır)
Sekmeli Activity Örneği
Çeşitli View’lara Ait Örnek Proje
Service Örneği
Temalar İçin Örnek Proje
Intent Filter ve Broadcast Receiver İçin Örnek Proje
Intentler İçin Örnek Proje
Eventler İçin Örnek Proje
Widget İçin Örnek Proje
Notification için Örnek Proje
İletişim Kutuları İçin Örnek Proje
Menüler İçin Örnek Proje
Sqlite Veritabanı İçin Örnek Proje
Threadler için Örnek Proje
Asynctask için Örnek Proje
Gps Sensöründen Konum Bilgisi Almak İçin Proje
Tasarımlar Hakkında Örnek Proje
Preferences Örneği
Birim Testleri için Örnek Projeler
Yerelleştirme (Localization) için Örnek Proje
Loglama İçin Örnek Proje
Content Resolver için Örnek Proje
Bölüm 7 :Adobe Flex ve Android
Bölüm 8 :Android Yönetimi
Bölüm 9 :Ekler Ek 1: Android Market’e Uygulama Yüklemek Ek 2: Eclipse İle Yükleme Uygulaması Çıkarma (Export Etme) Ek 3: Dvd İçeriği Ek 4: Uses-Permıssıons Listesi Ek 5: Eclipse ile Debugging
Kitabımız ile birlikte vereceğimiz DVD içeriği şöyle:
JAVA Dizini
Windows ve Linux için 32 ve 64 bit Java Development Kit 6 update 24 versiyonları.
SDK Dizini
Windows ve Linux için Mart 2011 tarihi itibariyle güncel Android SDK.
ECLIPSE Dizini
Windows ve Linux için 32 ve 64 bit Eclipse Helios dağıtımları.
Bu dağıtımlara Android Plugin (ADT) yüklenmiştir.
FLASH_BUILDER Dizini
Adobe'nin halen beta aşamasında olan mobil AIR geliştirme platformu
Flash Builder "Burrito" yükleme dosyası ve Android üzerinde AIR çalıştırmak
için gereken apk dosyaları bulunmaktadır.
ARACLAR Dizini
Bu dizinde Android'den hareketli ekran görüntüsü almak için kullanılan
droidAtScreen uygulaması ve görsel arayüz düzenlemesinde kullanılan
droiddraw uygulaması bulunmaktadır.
PROJELER Dizini, bu dizinde iki adet dizin bulunmaktadır:
PROJELER_WORKSPACE dizini
Kitabımız için hazırlamış olduğumuz 18 adet örnek proje Eclipse workspace'i
olarak eklenmiştir. Bu dizini olduğu gibi alırsanız ve Eclipse workspace
olarak bu dizini gösterirseniz projelerin hepsi açılacaktır. DİKKAT: Eclipse
Android Plugin yüklü ve Android SDK ayarları yapılmış olmalıdır.
EXTRA dizini
Bu dizinde Gelecekonline Android uygulaması kaynak kodları ve demobank
adlı bir örnek proje yer almaktadır.
Soru : Android Market ne demektir? Android Market telefonumda neden yok?
Yanıt : Android Market, Android İşletim Sistemi kullanan cihazlarda yüklü olan bir yazılım indirme / satın alma ve yükleme yazılımıdır. Yani Android Market'in kendisi de bir yazılımdır.
Android Market, Google tarafından geliştirilmiştir ve Google'ın izin verdiği ülkelerde satılan Android cihazlarında yüklüdür. Türkiye'ye GSM operatörleri, elektronik mağazaları ve resmi büyük ithalatçılar tarafından getirilen cihazlarda Android Market yüklü değildir. Bu yazılım sonradan yüklenebilmekte ya da Android cihazda yüklü olan ROM tamamen yenilenerek yani yabancı ülkelerin ROM'ları yüklenerek Android Market'e erişilebilmektedir.
GÜNCELLEME : HTC Tarafından Türkiye'ye yapılan güncelleme ile pekçok Android'li cihaz modeline Android Market yüklemesi gerçekleştirilmiştir.
Soru : Android Market tam olarak ne işe yarar. Android Market olmadan telefonumu kullanamaz mıyım?
Yanıt : Android Market sayesinde Android'li cihazınıza çok sayda yazılım indirip kurabilirsiniz. Yazılımların en güncel sürümlerinden haberdar olabilirsiniz ve yeni versiyonları cihazınıza isterseniz otomatik olarak isterseniz kendi kontrolünüzde yüklenmesini sağlayabilirsiniz. Android Market olmadan da telefonunuzu kullanabilirsiniz ve yazılım yüklemesi yapabilirsiniz ama asla Android Market'in konforuna sahip olamazsınız. Android İşletim Sistemi üzerinde uygulama geliştiren yazılımcılar yazılımlarını ilk olarak Android Market'e eklerler ve yazlım saysı olarak en hareketli Android yazılım merkezi Android Market'tir.
Soru : Android Market yüklü değilse yani Türkiye'de yoksa neden Android'li telefonlar satılıyor? Android telefonlarının da engellenmesi gerekmez mi?
Yanıt : Android İşletim Sistemi'nin sahibi tümüyle Google değildir. Android açık kodludur fakat Google, Android için ürettiği yazılımları her ülkeye ait ROM'lara yüklememektedir. Bu yazılımların hepsi engellenmemiştir. Mesela Android üzerinde çalışan Gmail uygulaması, Maps uygulaması gibi uygulamalar Türkiye'ye gönderilen Android cihazlarında mevcutken Android Market uygulaması ve Youtube uygulaması bulunmamaktadır.
GÜNCELLEME : HTC Tarafından Türkiye'ye yapılan güncelleme ile pekçok Android'li cihaz modeline Android Market yüklemesi gerçekleştirilmiştir.
Google tarafından Android Market desteği verilen ülkelerin listesini şurada bulabilirsiniz:
Soru : ROM yüklemek ne demektir? ROM yüklemeden cihazımı kullanamaz mıyım? Neden ROM yüklemeliyim?
Yanıt : ROM yüklemek cihazınızın işletim sistemini yüklemek gibi düşünülebilir. Türkiye'ye Google tarafından uygulanan kısıtlamalar nedeniyle Android Market ve Yotube gibi uygulamalar Android cihazlarda bulunmuyor. Satın aldığınız Android'li cihaz eğer Türkiye için üretilen bir cihaz ise yani Türkiye'de satılacaksa bu cihazda Android Market ve Youtube gibi yazılımlar yüklü değildir. Bu cihazın yurt dışında üretilen versiyonunda kullanılan İşletim Sisteminin aynısını cihazınıza yükleyebilirsiniz. Bu konu biraz teknik bilgi gerektirdiğinden ROM yükleme konusunda İnternet üzerinde bulunan dökümanları dikkatli incelemenizi öneriyoruz. Eğer kendinize güvenmiyorsanız bu konuda uzmanlardan yardım alabilirsiniz. ROM yüklenmesi durumunda cihazınızın garanti kapsamı dışında kalacağı yönünde şehir efsanleri dolaşıyor ama henüz ROM yüklediği için ürünü teknik servis tarafından garanti kapsam dışına çıkmış kimse ile tanışmadık.
Soru : root olmak ne demektir? root olmadan cihazımı kullanamaz mıyım? root olmadan cihazıma yazılım yükleyemez miyim? ROM yüklemek ve root olmak aynı şeyler mi?
Yanıt : Bazı yararlı Android uygulamalarını çalıştırmak için root olma işlemini yapmanız gerekmektedir. root olma işlemi gerçekleştiğinde tüm yazılımlar root yetkisiyle çalışmaz. SuperUser adlı bir uygulama sayesinde uygulamalar root yetkileriyle çalıştırılmak üzere cihaz kullanıcısından izin ister. Yani siz izin vermediğiniz sürece uygulamalar root yetkisiyle çalışmaz.
Soru : ROM yükledim ve Android Market geldi ama ücretli uygulamalara erişemiyorum, sadece ücretsiz uygulamalara erişebiliyorum. Ne yapmalıyım?
Yanıt : ROM yüklediğinizde Android Market'in gelmesi ücretli uygulamalara erişmek için yeterli değildir. Android Market'te ücretli yazılımlara erişmek için cihazınızda root yetkileriyle çalışan Market Enabler veya Market Access yazılımlarını kurmanız gerekmektedir. http://goo.gl/7IBEz adresindeki yazımızda Market Enabler hakkında bilgi vermeye çalıştık.
Soru : Herhangi bir Android 1.6 veya 2.0 cihaz, On the Air Update vasırasıyla 2.3 ' e yükseltilebilir mi ?
Yanıt : Her cihaz yükseltilemiyor malesef. Cihazın işlemci hızı, RAM miktarı ve swap alanı gibi konularda sorunlar olabiliyor.
2011'in 2. gününde TBD Genç İstanbul ve Gelecekonline olarak bir Android eğitimi düzenledik. Günlerden pazar olmasına karşılık geleceğini bildiren tüm arkadaşlarımız eğitime gelmişti. Saat 10:30 gibi başlayan eğitimde tüm katılımcıların bilgisayarlarına SDK ve Eclipse plugini yüklemeyi başardık.
Google'a ait pekçok IP'nin kısıtlanmasından nasibini alan Android Developer Center'dan SDK indirmede sorun yaşayınca benim bilgisayarımdan SDK takviyesi gerçekleştirdik.
Android Eclipse Plugin'in yeni versiyonu önceki SDK ile uyumlu çıkmayınca bazı arkadaşlarımızın SDK'larını yeni versiyona çektik.
Genel Android projeleri görünümü, Android projelerinde Activity, Layout kavramları üzerinde çalışarak bir butona click eventi atayayıp iki Activity arasında geçiş yapan bir proje ile eğitimi noktaladık.
Umarım katılımcı arkadaşlarımıza yararlı olmuştur.
Java Teknolojileri ve Programcıları Derneği olarak Bahçeşehir Üniversitesi'nde düzenlediğimiz geleneksel Java Teknoloji Saatleri'nin (JTS) 10.sunda dilim döndüğünce Android anlatmaya çalıştım. Java Dergisi'nin sponsor olması ve gerçek bir Java duayeni olan Özcan Acar'ın katılımı benim için ayrı bir gurur kaynağı oldu.
Seminerde Android'i bir işletim sistemi ve Java yazılım geliştirme ortamı olarak kısaca tanıtmaya çalıştım.
Yağmur ihtimaline karşı ilginin yoğun olduğu seminerimize katılan katılmayan herkese teşekkür ederim.
Bu ay 10. düzenlenecek olan Java teknolojileri saatleri 24 Haziran 2010 Perşembe günü Bahçeşehir Üniversitesi Yazılım ve Bilişim Kulübü'nün katkılarıyla Bahçeşehir Üniversitesi Beşiktaş kampüsünde ( D konf salonu - zemin kat konferans salonu ) gerçekleştirilecektir. Katılım ücretsizdir.
Not : Etkinliğe gelirken aman bir şey yemeyin, pizza ve içecekler ücretsiz.