SlideShare une entreprise Scribd logo
1  sur  87
Télécharger pour lire hors ligne
1
T.C.
KARADENİZ TEKNİK ÜNİVERSİTESİ
FEN EDEBİYAT FAKÜLTESİ
İSTATİSTİK VE BİLGİSAYAR BİLİMLERİ BÖLÜMÜ
BİTİRME ÇALIŞMASI
KEMAL OLÇA
TRABZON 2010
2
KARADENİZ TEKNİK ÜNİVERSİTESİ
FEN EDEBİYAT FAKÜLTESİ
İSTATİSTİK VE BİLGİSAYAR BİLİMLERİ BÖLÜMÜ
CEP TELEFONU İLE BİLGİSAYAR KONTROLÜ
180702 Kemal OLÇA
Danışman : Yrd. DOÇ.DR. Halil İbrahim ŞAHİN
Üye : Yrd.DOÇ.DR. Türkan E. DALKILIÇ
Üye : Yrd.DOÇ.DR. Zafer KÜÇÜK
Yedek Üye : Yrd.DOÇ.DR. Orhan KESEMEN
TRABZON 2010
3
ÖZET
Yapılan bu çalışmada mobil uygulama alanında en yaygın teklonoji olan J2ME (Java
2 Micro Edition) ve Bluetooth teklonojisi incelenmiştir. Ayrıca günümüzdeki mobil
cihazlar ve kablosuz ağ teknolojileri hakkında bilgi verilmiştir. Proje olarak bilgisayarın
fare ve klavyesinin cep telefonu üzerinden Bluetooth aracılığıyla kontrol edilmesi
sağlanmıştır.
4
ÖNSÖZ
Günümüzde kablosuz iletişim ve mobil uygulamaların popülaritesi her geçen gün
artmaktadır. Mobil cihazların taşınabilir olması ve kablosuz ağlara bağlanabilme
yeteneğinin de eklenmesi sonucu, günlük hayatımızda ve iş hayatımızda bizlere esneklik
ve güç sağlamaktadır. Bize sağlamış olduğu bu artılardan dolayı çok çeşitli mobil
cihazların üretimine de beraberinde getirmiştir.
J2ME (Java 2 Micro Edition), mobil cihazlara yazılım geliştirmede en çok kullanılan
programlama dillerinden biridir. Java da geliştirilen bir uygulamanın farklı platformlarda
çalışabilme özelliği sayesinde bir çok cep telefonunda çalışabilecek uygulamalar
yazılmasına olanak sağlamaktadır.
Kablosuz iletişimde ise en çok kullanılan teknoloji ise bluetooth teknolojisidir.
Bluetooth, kısa mesafede kablosuz iletişim ortamını bizlere sunmaktadır. Bilgisayar,
klavye, PDA, cep telefonu, yazıcı v.s sayısal giriş/çıkış birimlerinin ara bağlantı olmadan
ana sisteme bağlanmasını sağlayan bir teknolojidir.
Kablosuz teknolojilerin sağladığı avantajlar ve bu alanda yapılan çalışmalar
gelecekte her şeyin mobil teknolojiler üzerinde gerçekleştirileceğini göstermektedir.
Dolayısıyla mobil cihazlara yazılım geliştirme giderek popülerlik kazanmakta ve bu ihtiyaç
gün geçtikçe artmaktadır. Bu yüzden bitirme çalışmamı mobil uygulamalar ve kablosuz
iletişim teknolojisinin bir parçası olan bluetooth üzerinde yapma kararını aldım.
Çalışmalarımın sonucunda mobil uygulama geliştirme ve bluetooth cihazına erişim
kısmında birçok deneyim edindim. Bu nedenle projenin teoride ve uygulamada bir çok
katkısının olduğunu söyleyebilirim.
Çalışmalarım sırasında kaynak sağlayan Yrd. Doç Dr. Hüseyin PEHLİVAN’a,
üniversitedeki eğitim ve öğretim hayatımda destek olan Yrd. Doç Dr. Zafer KÜÇÜK, Yrd.
Doç. Dr. Halil İbrahim ŞAHİN ve diğer bölüm hocalarıma ve hayatım boyunca bana
destek olan aileme teşekkürlerimi sunarım.
5
SİMGELER VE KISALTMALAR
API: Application Programming Interface
AWT: Abstract Windowing/Windows Toolkit
CDC: Connected Device Configuration
CLDC: Connected, Limited Device Configuration
CVM: C Virtual Machine
DOM: Document Object Model
FP: Foundation Profile
HTML: Hypertext Markup Language
HTTP: Hypertext Transfer Protocol
IDL: Interface Definition Language
J2SE: Java 2 Standart Edition
J2EE : Java 2 Enterprice Edition
J2ME: Java 2 Micro Edition
JAD: Java Application Descriptor
JAR: Java Archieve
JAXP: Java API for XML Processing
JDBC: Java Database Connectivity
JDK: Java Development Kit
JFC: Java Foundation Classes
JIT: Just In Time
JMF: Java Media Framework
JRE: Java Runtime Environment
JRMP: Java Remote Method Protocol
JVM : Java Virtual Machine
JVMS: Java Virtual Machine Specification
KVM: Kilobyte Virtual Machine
MIDP: Mobile Information Device Profile
ODBC: Open Database Connectivity
OEM: Original Equipment Manufacturer
PBP: Personel Basis Profile
6
PDA: Personel Digital Assistant
PDAP: PDA Profile
PP: Personel Profile
RDBMS: Relational Database Management System
RMI: Remote Method Invocation
RMS: Kayıt Yönetim Sistemi
SAX: Simple API for XML
SGML: Standart Generalized Markup Language
SMS: Short Message Service
VM: Virtual Machine
WAP: Wireless Access Protocol
WML: Wireless Markup Language
XML: Extensible Markup Language
7
İçindekiler
ÖZET........................................................................................................................... 1
ÖNSÖZ........................................................................................................................ 4
SİMGELER VE KISALTMALAR .......................................................................... 5
1. GİRİŞ .................................................................................................................... 11
2. MOBIL TEKNOLOJILER................................................................................ 12
2.1. PDA (Personal Digital Assistant) ............................................................................................. 12
2.2.Tablet PC’ler............................................................................................................................. 13
2.3. Mobil Telefonlar...................................................................................................................... 13
2.4.Mobil İşletim Sistemleri ........................................................................................................... 15
2.4.1.Symbian OS........................................................................................................................... 15
2.3.2.Windows CE .......................................................................................................................... 16
2.3.3.PalmOS.................................................................................................................................. 17
3.KABLOSUZ AĞ TEKNOLOJİLERİ................................................................. 19
3.1. Kızılötesi(IrDA) Teknolojisi...................................................................................................... 19
3.2.Bluetooth Teknolojisi ............................................................................................................... 20
3.2.1.Bluetooth Protokol Katmanları.......................................................................................... 20
3.2.2.Bluetooth’un Temel Özellikleri .......................................................................................... 22
3.2.2.1.Birlikte Çalışabilirlik......................................................................................................... 22
3.2.2.2.Kısa Mesafe Kablosuz Haberleşme Yapısı ....................................................................... 22
3.2.2.3.Açık Standart Yapısı ........................................................................................................ 22
3.2.2.4.Ses ve Veri Haberleşmesi................................................................................................ 22
3.2.2.5.Güvenlik.......................................................................................................................... 22
3.2.3.Bluetooth Teknolojik Alt Yapısı.......................................................................................... 23
3.2.3.1.Bluetooth Radyo Güç Sınıfları......................................................................................... 23
3.2.3.2.Master – Slave Yapısı...................................................................................................... 23
3.2.3.3.Bluetooth Ağ Yapısı......................................................................................................... 24
3.2.3.3.1.Piconet......................................................................................................................... 24
3.2.3.3.1.Scatternet .................................................................................................................... 25
3.3.Wi-Fi (Wireless Fidelity)Teknolojisi /IEEE 802.11...................................................................... 26
3.4.GSM ......................................................................................................................................... 27
3.5.GPRS ........................................................................................................................................ 27
8
4. J2ME(JAVA 2 MICRO EDITION) PLATFORMU......................................... 28
4.1. Java Dilinin Kısa Bir Tanıtımı.................................................................................................... 28
4.1.1. Java Mimarisi ....................................................................................................................... 28
4.1.2.Java 2 .................................................................................................................................... 29
4.2.Java 2 Micro Edition (J2ME)...................................................................................................... 31
4.2.Neden J2ME’ye Gerek Duyuyoruz?........................................................................................... 34
4.3.Konfigürasyon ve Profiller........................................................................................................ 35
4.4.Konfigürasyonlar...................................................................................................................... 37
4.4.1.CLDC Konfigürasyonu......................................................................................................... 37
4.4.2.Kilobayt Sanal Makine (KVM) ............................................................................................ 38
4.4.3.Sınıf Dosyalarının Doğrulanması........................................................................................ 39
4.4.4.CDC Konfigürasyonu .......................................................................................................... 39
4.4.5.C- Sanal Makinesi (CVM).................................................................................................... 40
4.5.Profiller .................................................................................................................................... 41
4.5.1.MIDP Profili........................................................................................................................ 41
4.5.2.PDA Profili (PDAP).............................................................................................................. 42
4.5.3.Kuruluş Profili (Foundation Profile) ................................................................................... 42
4.5.4.Kişisel Profil (Personal Profile)........................................................................................... 43
4.5.5.RMI Profili.......................................................................................................................... 43
4.5.6.Kişisel Temel Profil (Personal Basis Profile) ....................................................................... 44
4.5.7.Multimedya Profili (Multimedia Profile)............................................................................ 44
4.5.8.Oyun Profili (Gaming Profile)............................................................................................. 44
5.MIDP PROGRAMLAMA.................................................................................... 45
5.1.MIDP Uygulaması Geliştirme.................................................................................................... 45
5.1.1.MIDlet Nedir? .................................................................................................................... 45
5.1.2.Uygulamanın Derlenmesi .................................................................................................. 47
5.1.3.“Preverifying” İşleminin Gerçekleştirilmesi ....................................................................... 48
5.1.4.Uygulamanın Çalıştırılması ................................................................................................ 49
5.1.5.Uygulamaların JAR Dosyası Haline Getirilmesi .................................................................. 50
5.1.6.MIDlet Takımı Geliştirilmesi............................................................................................... 51
5.1.7.MIDlet Takımı Tanımlayıcı Dosyası .................................................................................... 51
5.2.MIDP Kullanıcı Arayüz APIleri................................................................................................... 52
5.2.1.MIDP Ekran Kontrolü ......................................................................................................... 52
9
5.2.2.Yüksek Seviyeli Kullanıcı Arayüz API’si............................................................................... 53
5.2.2.1.Form ............................................................................................................................... 53
5.2.2.2.Alert................................................................................................................................ 53
5.2.2.3.List .................................................................................................................................. 53
5.2.2.4.Choice Interface.............................................................................................................. 56
5.2.2.5.TextBox........................................................................................................................... 56
5.2.2.6.Ticker ................................................................................................................................. 57
5.2.2.7.Items............................................................................................................................... 57
5.2.3.Düşük Seviyeli Kullanıcı Arayüz APIsi................................................................................. 57
5.2.3.1.Canvas............................................................................................................................. 57
5.2.3.2.Graphics.......................................................................................................................... 58
5.2.3.3.Images ............................................................................................................................ 58
5.2.3.4.Fonts............................................................................................................................... 58
5.2.4.Düşük Seviyeli Kullanıcı Arayüzü Örneği............................................................................ 58
5.3.MIDP’de Kullanıcı Etkileşimlerinin Yönetilmesi ........................................................................ 59
5.3.1.Yüksek Seviyeli Kullanıcı Etkileşimlerinin Yönetilmesi ....................................................... 59
5.3.1.1.ItemStateListener ........................................................................................................... 59
5.3.1.2.Komutlar (Commands).................................................................................................... 59
5.3.1.3.CommandListener .......................................................................................................... 60
5.3.2.Düşük Seviyeli Kullanıcı Etkileşimlerinin Yönetilmesi ........................................................ 60
5.3.3.Etkileşimlerin Yönetildiği Yüksek Seviyeli Kullanıcı Arayüzü Örneği .................................. 60
6.BLUETOOTH STACK VE YAPISI ................................................................... 66
6.1.Bluetooth Stack........................................................................................................................ 66
6.2.Bluetooth Stack’ın Katmanları.................................................................................................. 66
6.3.Bluetooth Stack Profilleri ......................................................................................................... 67
6.3.1.Generic Access Profili (GAP) .............................................................................................. 68
6.3.2.Service Discovery Application Profile (SDAP) .................................................................... 68
6.3.3. Serial Port Profile.............................................................................................................. 68
7.JAVA VE OBEX ................................................................................................... 69
7.1.OBEX ........................................................................................................................................ 69
7.2.OBEX Object Model.................................................................................................................. 70
7.3.OBEX Oturum Protokolü .......................................................................................................... 70
10
7.4.JSR82’deki OBEX API’leri .......................................................................................................... 72
7.4.1.Javax.obex.ClientSession ................................................................................................... 72
7.4.2.Javax.obex.HeaderSet........................................................................................................ 72
7.4.3.Javax.obex.Operation ........................................................................................................ 73
7.4.4.Javax.obex.ResponseCodes ............................................................................................... 73
7.4.5.javax.obex.ServerRequestHandler..................................................................................... 74
7.4.6.javax.obex.SessionNotifier ................................................................................................ 74
8.PROJE TASARIMI VE GERÇEKLEŞTIRILMESI ........................................ 76
8.1. Proje Hakkında........................................................................................................................ 76
8.2. Proje Mimarisi......................................................................................................................... 76
8.3. Uygulamada Kullanılan Classlar ve İşlevleri ............................................................................. 78
8.3.1. Cep Telefonunda Oluşturulan J2ME Uygulaması.............................................................. 78
8.3.1.1.İstemci J2ME Uygulamasının Cep Telefonuna Yüklenmesi............................................ 80
8.3.2. PC Tarafında Oluşturulan J2SE Uygulaması ...................................................................... 81
8.4. İstemci ve Server Uygulamalarının Çalıştırılması Kullanımı...................................................... 82
8.4.1.İstemci Cep Telefonu Uygulamasının Çalıştırılması ve Kullanımı....................................... 82
8.4.2.PC Taraflı Server Uygulamasının Çalıştırılması ve Kullanımı .............................................. 84
9. SONUÇ.................................................................................................................. 86
10. KAYNAKLAR ................................................................................................... 87
11
1. GİRİŞ
Bilgisayar veya diğer elektronik cihazlarda veri iletiminde en önemli noktalardan
birisi verinin iletimini gerçekleştirirken kullandığımız elektriksel işaretlerin taşındığı iletim
ortamıdır. Bu iletim ortamı kablo üzerinden sağlanabildiği gibi kablosuz olarak da
gerçekleştirilebilmektedir. Kabloya dayalı uygulamalarda uç sistemler arasında birebir
kablo bağlantısı mevcuttur. Kullanılan kablo tipi mesafeye ve diğer başka şartlara göre
değişebilir. Örneğin, UTP/STP veya fiber optik kablo günümüzde çok kullanılan kablo
türleridir.
Diğer taraftan kablosuz ağ bağlantısı kullanıldığında sistemler arasında herhangi bir
fiziksel kablo bağlantısı olmadan veri alışverişi gerçekleşmektedir. Günümüzde çok
değişik amaçlı kablosuz ağ erişimlerine ihtiyaç duyulmaktadır. Örneğin hiçbir kablo
bağlantısı yapılmadan bir LAN kurulabilir veya bir bilgisayar sistemiyle fare, yazıcı, PDA,
cep telefonu gibi cihazlar kablosuz şekilde birbirine haberleşebilir. Araya kablo
çekilmesinin zor olduğu, maliyetin yüksek olduğu veya izin verilmediği durumlarda iki
sistem arasına noktadan noktaya kablosuz bağlantı yapılabilir.
Kablosuz ağ teknolojilerinin band genişlikleri aynı olmasa da iki yönlü iletişim akla
gelir. Kabloya dayalı sistemlerde olduğu gibi kablosuz sistemler sistemler arasındada veri
aktarımına ek olarak kontrol işaretleri ve onaylama gibi bilgileride aktarmamız gerekir.
Günümüzde kablosuz ağ denildiğinde ilk akla gelen sözcükler WLAN, HiperLAN,
Bluetooth, GSM, WAP, Irda gelmektedir.
Bu iletişim teknikleri ile birlikte bir sıra farklı iletişim teknolojileride geliştirilmiş
durumdadır. Bunların da kendilerine göre avantaj ve dezavantajları vardır. Kullanım
alanına ve amacına göre bu teknolojiler birbirinden farklı özelliklere sahiptir.
Kablosuz teknolojilerin taşınabilir cihazlarda kullanılması da günümüzde çok yaygın
hale gelmiştir. Kullandığımız bu mobil teknojilerden en yaygın olanları ise cep telefonları
ve PDA lardır.
12
2. MOBIL TEKNOLOJILER
Mobil teknolojiler denildiği zaman ilk olarak kullanım yaygınlığı nedeniyle temel
fonksiyonlara sahip cep telefonları gelmektedir. Bunun yanında dizüstü bilgisayarlar,
PDA’lar, tablet pc lerde bu kapsama girmektedir.
Gelişen teknolojiyle birlikte taşınabilir cihazlar hızla yetenek kazanıp piyasada talep
görmektedir. Dizüstü bilgisayarlar ile masaüstü bilgisayarlar arasında hız ve işlevsellik
açısından artık pek bir fark kalmamıştır. Cep telefonları ile avuç içi bilgisayarlarda kendi
aralarında yarışır duruma gelmişlerdir. Mobil cihazların işlevsellikleri gün geçtikçe
artmakta ve boyut olarak da küçülmektedirler.
Mobil cihazların kullandıkları enerji miktarına baktığımızda her geçen gün azalmakta
ve yeni pil teknolojileri ile mobil cihazlarımızı, haftalarca belki aylarca kullanabilmemiz
mümkün olabilecektir. Günümüzde mobil cihazların sayesinde her yerden insanlarla
iletişim kurabilir, bilgi alış-verişi yapabilir ve internetin bizlere sunduğu kaynaklardan
sınırsız şekilde faydalanabilmekteyiz.
2.1. PDA (Personal Digital Assistant)
PDA kelimesi ile kez Apple şirketi tarafından üretilen Newton MessagePad cihazı
için kullanılmıştır. PDA'ların yaygınlaşması Palm tarafından 1996'da üretilen PalmPilot'la
birlikte başladı. Palm'in ilk modeli, kısa sürede PDA pazarının en popüler ürünü haline
geldi. Cep bilgisayarlarının ilk örneklerinde; renksiz ekran, sınırlı işlem gücü ve düşük
enerji tüketimleri sayesinde uzun pil ömrü özellikleri öne çıkar. Bu tür cihaz üretiminin
öncülerinden Japon şirketi Casio'yu daha sonra birçok üretici takip etmiştir.
Cep bilgisayarları, masaüstü bilgisayarlar veya diğer birimler ile USB üzerinden
kablolu iletişim yapabilirler. Yeni nesil cihazlar Bluetooth veya wi-fi üzerinden ya da
dahili GSM birimleri sayesinde bu protokol üzerinden kablosuz olarak da iletişim
kurabilmektedir. Bu sayede elektronik posta alma gönderme, web sayfalarını görüntüleme,
fax gönderme gibi işlemleri kolaylıkla gerçeklemektedir.
PDA'ların yaygın olarak kullandıkları işletim sistemlerine bakacak olursak PalmOS,
Windows CE veya Windows Mobile işletim sistemlerini görmekteyiz. Cep
bilgisayarlarında, uygun yazılım kullanarak neredeyse bir masa üstü bilgisayarında
yapılabilen her işi yapabilmek olasıdır. Sıradan bir cep bilgisayarında standart olan
13
özellikler; not defteri, kelime işlemci (Pocket Word vb.), hesaplama tablosu (Pocket Excel
vb.), hesap makinesi, çoklu ortam oynatıcı (Windows Media Player vs.), resim gösterici
olarak sıralanabilir.
Şekil 2.1: PDA
2.2.Tablet PC’ler
Tablet PC’ler üzerlerinde LCD ekran barındıran ve PDA’lerdeki kalemlere benzer
kalemlerle giriş yapılabilen taşınabilir bilgisayarlardır. PDA’ler ile dizüstü bilgisayarların
arasında bir konumda bulunmaktadırlar. Hatta bazı dizüstü bilgisayarlar, sahip oldukları
dönebilen ekranları sayesinde hem dizüstü hem de tablet pc olarak kullanılabilmektedir.
Intel’in çabaları sonucunda geçtiğimiz yıl içinde tablet pc’lerin yerini alabileceği planlanan
UMPC’ler (Ultra Mobile Personal Computer) de piyasada yerini almıştır. Microsoft da
paralel olarak Origami Projesi adı altında bu tür cihazlara destek vermektedir.
2.3. Mobil Telefonlar
Mobil telefonlar, kolayca taşınabilen ve geniş kapsama alanına sahip kablosuz
telefon sistemini kullanan bir cihazdır. Mobil telefonlar GSM (Global System for Mobile
Communications) standartını kullanır. Mobil İletişim için Küresel Sistem anlamına
gelmektedir. GSM standartları, hücresel ağ kullanır ve dolaşım sırasında bile hücreler arası
geçiş yapma kabiliyetine sahiptir. Teoride, eğer kapsama alanından çıkmazsanız, cep
telefonu ile tüm dünyayı telefon konuşmasını kesmeden dolaşmak mümkündür.
Mobil Telefon Sistemlerinin aşağıdaki nesilleri vardır:
0G olarak adlandırılan ilk nesil sistemlerde, analog veri akışı kullanılır.
1G olarak adlandırılan ilk nesil sistemlerde, analog veri akışı kullanılır.
14
2G olarak adlandırılan ikinci nesil sistemlerde sayısal veri akışı kullanılır. GSM 2G
kategorisine giren ikinci nesil bir sistemdir.
3G olarak adlandırılan üçüncü nesil sistem ile daha hızlı veri transferi ve bant
genişliğinin daha verimli kullanımı mümkün olmuştur.
4G olarak adlandırılan dördüncü nesil sistem ile kapsama alanı başta olmak üzere 3G
ile çözülememiş olan sorunların çözülmesi beklenmektedir.
Türkiye'de, 1G ve 2G teknolojileri yaygın olarak kullanılmakta olup 3G teklonojisi
son 2 yıl içerisinde kullanılmaya başlanmış olup hızla yaygınlaşmaktadır.
Şekil 2.2: Mobil telefonlar
Mobil telefonlar java uygulamalarını koşabilmek için en az 128 KB kalıcı ve 32 KB
kalıcı olmayan hafızaya sahip olmalıdır. Her iki tür bellekte RMS (Record Management
System) adı verilen bir sisteme göre düzenlenmiştir. MIDP 1.0 dan itibaren ve kalıcı
hafızanın içinde kalıcı hafızadan sorumlu bir mekanizma sunulur (RMS). Kayıtlar (kayıtlar
hafızadaki verilerin en küçük birimine verilen addır.) kayıt deposu adı verilen alanlarda
saklanır. Her kayda kendini tanımlayıcı bir kayıt kimliği atanır. Kayıtların tutarlılığından
sistemin yeniden başlatılması, şarj bitmesi ve pil değiştirme durumları da dahil olmak
üzere bu platform sorumludur.
Aynı MIDlet takımındaki uygulamalar birkaç kayıt oluşturabilirler fakat bu
kayıtlara bu takımda bulunan diger MIDletler erişemezler bir uygulamanın çalışması sona
erdiğinde o uygulama ile ilişkili olan kayıtlar da silinir.
javax.microedition.rms paketi kayıt oluşturma, açma, kapama, bir MIDlet takımına
ait tüm kayıtları listeleme, bir kayıt deposu içinde kayıt oluşturma açma kapama silme ve
depo içindeki erişilebilir alan bilgisini alma işlemlerine izin verir.
CLDC (Connected Limited Device Configurations) grubuna giren cihazlarda kalıcı
olmayan bellekten KVM (Kilobyte Virtual Machine) sorumludur. KVM başladığı zaman
sınıf dosyalarını yüklemek ve veri boyutunu tutmak iç yığın alanından bir blok ayırır.
15
KVM çok kolay bir algoritma kullanır kendine ayrılmış alanı kullanmayan bir nesnenin
bellek alanını diğer nesnelere ayırabilme yeteneğine sahiptir. Bu algoritma ile ilgili
problem ise parçalanmadır. (fragmentation) Bellekte iki ayrı silme işleminin ardından
açılan 2 blok varsa bunlar bağımsız blok gibi işlem görür buda parçalanmaya yol açar.
Yani boyutu bu iki bloğun her birinden daha büyük yalnız her ikisinin toplamından daha
küçük bir nesne varsa hafızada yeterli yer olmasına rağmen bu nesneye alan tahsisi
yapılamayacaktır.
Son zamanlarda piyasaya çıkan mobil telefonlar, kullanımı son derece yaygınlaşan
hafıza kartlarını desteklemesiyle büyük miktarlarda veri depolayabilme yeteneğine sahip
oldular.
2.4.Mobil İşletim Sistemleri
İşletim sistemi, bilindiği gibi bilgisayar donanımının denetimi ve yönetiminden,
temel sistem işlemlerinden ve uygulama programlarını çalıştırmaktan sorumlu olan bir
sistem yazılımıdır. Mobil teknolojiler de geliştikçe mobil işletim sistemlerine duyulan
ihtiyaç da arttı. Günümüzde en popular olan mobil işletim sistemleri ise Symbian OS,
Windows CE ve PalmOS dur.
2.4.1.Symbian OS
Symbian gelişmiş mobil cihazlar için işletim sistemi geliştirmeye odaklanmış bir
şirkettir. Günümüzde Symbian, mobil cihaz endüstrisinin lider oyuncuları tarafından
yönetilmektedir.
Symbian OS 32-bit, çoklu işlemli bir işletim sistemidir. Çok sık karşılaşılan asenkron
işlemlerin ve uygulamaların birbiri ile etkileşimli olarak çalışması için dizayn edilmiştir.
Örneğin bir telefon görüşmesi kullanıcının e-mail yazma işlemini kesebilir. İstenirse
kullanıcı telefon görüşmesi sırasında randevularına bakabilir veya not alabilir.
İlk zamanlardan bu yana Symbian OS kablosuz iletişim için düşük güç harcayacak
şekilde tasarlanmıştır. Diğer önemli özelliklerini şöyle sıralayabiliriz.
 Performans açısından Symbian OS minimum pil kullanımı ve düşük kapasiteli
hafızayı etkin bir şekilde kullanacak şekilde tasarlanmıştır.
 Çoklu işlem açısından Telefon ve mesajlaşma en genel bileşenlerdir. Tüm
uygulamalar birbiri ile fark edilmeksizin paralel çalışacak şekilde dizayn edilmiştir.
16
 Symbian OS, benimsenmiş olan açık standartlar üzerine kurulmuştur.Böylelikle
uygulamaların platformlar arası taşınması kolaylaşır.
 Nesne tabanlı yazılım mimarisi
 Gömülü yazılımlar için hafıza yönetimi
 Çalışma esnasında hafıza ihtiyaçlarının düşüklüğü ve çok küçük çalıştırılabilir
uygulama boyutları
 Güvenli haberleşme ve veri depolama için güvenlik mekanizmaları
 Unicode karakter seti ile uluslar arası uygulama desteği
2.3.2.Windows CE
Windows CE (Compact Edition), Microsoft tarafından taşınabilir cihazlar için
yazılmış bir işletim sistemidir. Windows CE, küçültülmüş bir Windows değil PDA türü
cihazlar için yazılmış, ayrı bir işletim sistemidir.
Bu yüzden Windows programları Windows CE altında kullanılamazlar. Bunun diğer
bir sebebi de, Windows CE işletim sisteminin çok farklı işlemci mimarilerinde çalışabilir
olmasıdır. Öte yandan, Windows CE için program yazması Windows için program
yazmaya fazlasıyla benzediğinden, bazı yazılımların Windows CE sürümü de mevcuttur.
Windows CE, birçok alanda kullanılabilir:
 Pocket PC'ler
 Cep telefonları
 TV setleri
 Benzer elektronik araçlar
Bir programcı için Windows CE'nin en büyük avantajı, önceden tanıdığı Win32
arayüzüne çok benzer bir arayüz sunmasıdır: diyalog pencereleri, registry ve DirectX
Windows CE'de aynı ya da oldukça ufak değişikliklerle kullanılabilir. Windows CE, Word,
Excel, Outlook ve PowerPoint uygulamalarını destekler. Internet Explorer Mobile başta
olmak üzere bazı web tarayıcılarını kullanılabilir, MSN Messenger'ın Windows CE sürümü
de mevcuttur.
Windows CE, aygıt sürücüsü bulunduğu takdirde Wi-fi, Bluetooth, GSM, GPRS,
EDGE, 3G veya VPN gibi sayısız bağlantı desteğine sahiptir . Bir çok çevre birim (USB
diskler gibi) desteklenir .
17
2.3.3.PalmOS
PalmOS, PalmSource firması tarafından cep bilgisayarları için tasarlanan bir işletim
sistemidir. PalmOS orijinal olarak US Robotics firmasının çıkardığı Pilot isimli PDA için
tasarlanmıştır. Günümüzde ise Palm adıyla satılan cep bilgisayarların da bu işletim sistemi
kullanılmaktadır.
18
19
3.KABLOSUZ AĞ TEKNOLOJİLERİ
Bir kablosuz WLAN (Wireless Local Area Network) teknolojisi, radyo teknolojisini
kullanarak, havadan radyo işaretlerinin belirli bir frekans kanalında iletildiği, bir
haberleşme yöntemidir. Kablosuz haberleşme sistemleri çok çeşitlidir. Günümüzde populer
olarak kullanılanlar arasında kızılötesi, bluetooth ve Wi-Fi gelir.
3.1. Kızılötesi(IrDA) Teknolojisi
Irda (Infared Data Associtation), 1993 yılında, aralarında Hewlett Packard ve IBM’in
de bulunduğu yaklaşık 30 firma, kızılötesi ışınlarla veri aktarımını standartlaştırmak için
bir araya geldi. İlk standart kızılötesi ara birimi (SIR), 115,2 Kbps’lik aktarım hızına
sahipti. Daha sonra Fast Infrared Standard (FIR) geliştirildi. FIR ile 4 Mbit/sn’lik aktarım
hızına ulaşıldı. Yeni duyurulan "Very Fast Infrared standardı" (VFIR) ile 16 Mbit/sn’lik
hızlarla veri aktarımı mümkün hale gelmiştir.
IrDA sisteminde verici olarak, dalga boyu 850-900 nm olan ve ışını 30 derecelik
açıyla yayan bir diyot kullanılıyor. Alıcının menzili, teorik olarak 1 metredir. Ancak
kızılötesi ışınlar, normal ışık ve yansıtıcı cisimler gibi etkenlerden kolayca etkilenirler. Bu
nedenle pratikte durum farklıdır. Parlak güneş ışığı altında menzilleri çok kısa, evlerde
kullanılan ışık altında ise menzilleri daha uzundur.
Bağlantı herhangi bir cihaz üzerinden kurulabilir. Aktif halde olduklarını belirtmek
için IrDA arabirimleri, her iki saniyede bir, bir ışık demeti yayınlarlar. Eğer civarda başka
bir IrDA cihazı bulunuyorsa, bu sinyalleri, algılar ve böylece bağlantı kurulur, ilk aşamada
cihazlar birbirlerine kendi özelliklerini bildiren verileri gönderirler.
Daha sonra Tiny Transport protokolü üzerinden asıl veri alışverişi gerçekleşir. Bu
protokolün üzerine farklı üç protokol daha kurulur: Yerel ağ girişi için IrLAN, veri
alışverişi için Infrared Object Exchange Protocol (IrOBEX) seri ve paralel arabirimlerin
oluşturulması için Ir-COMM protokolü kullanılır. Sonuncu protokole mobil internet
erişimi için ihtiyaç duyulur. IrDA özellikle cep telefonu ve PDA pazarında yaşanan
patlamadan sonra popüler oldu. Kızılötesi hem mobil internet erişimi için hem de masaüstü
bilgisayarı ile dizüstü bilgisayarı arasında veri alışverişi için kullanılan bir teknolojidir.
Bunun yanında uzaktan kumandalarda da kullanılmaktadır.
20
Bu teknolojinin en büyük avantajı yaygın olarak kullanılmasıdır. Dezavantajlarına
bakacak olursak düşük menzil, arıza riskinin yüksek olması ve konuşma desteğinin
olmaması bu teknolojinin eksiklerindendir.
3.2.Bluetooth Teknolojisi
Bluetooth, bir kablosuz iletişim teknolojisi ve telekomünikasyon standardıdır.
Türkçe’ye “mavi diş” olarak çevrilebilecek Bluetooth adı, 10. yüzyılda yaşamış olan
Viking Kralı Harald Blatand’dan gelmektedir. İngilizler tarafından Blatand’ın İngilizce
karşılığı olan Bluetooth olarak adlandırılan kral, şu anda Norveç, İsveç ve Danimarka
olarak bilinen toplumları o zamanlarda tek bir krallık altında toplamıştı. Bu hareketiyle
ardından gelenlere örnek olmayı başaran Blatand veya Bluetooth, denilmiştir. Günümüzde
ise değişik teknolojik cihazları tek bir çatı altında toplamaya çalışan bir teknoloji standardı
olarak karşımıza çıkmaktadır.
Bluetooth, yaklaşık 10 metrelik bir alan içerisinde faaliyet gösteren bir kısa dalga
radyo teknolojisi olma özelliği taşıyor ve bilgisayar, cep telefonu, avuç içi gibi cihazlara ek
olarak kulaklık veya yazıcı gibi çevre birim aygıtlarının birbirleriyle iletişim kurmasını
sağlıyor. Veri transfer hızı ise 721 kBit/s'yedir. Bu cihazlar arasında herhangi bir kablo
bağlantısına ihtiyaç duyulmaksızın anında iletişim kurulup, veri transferi
gerçekleştirilebilmektedir.
Şekil 3.1: Bluetooth usb dongle
Frekans bandı bakıldığında 2.4 GHz ile 2.48 GHz arasındadır. Bu bandın kullanımı
lisanssız olup endüstriyel, bilimsel ve medikal (ISM) bant olarak adlandırılmaktadır. Kanal
sayısı 1 MHz’lik aralıklarla toplam 79 adet olmakla birlikte bazı ülkelerde 23 adedi
kullanılmaktadır. Çevre gürültülerinden fazla etkilenmeyen bir teknolojidir.
3.2.1.Bluetooth Protokol Katmanları
Bluetooth sistemi, radyo birimi (Radio), link kontrol birimi (Link Controller), link
yönetimi (Link Manager) ve kullanıcı uç cihazı arayüz fonksiyonlarına destek veren bir
birimden oluşmaktadır. Ana bilgisayar kontrol arayüzü (HCI - Host Controller Interface)
ana birimin bluetooth donanımına erişmesi için bir araç vazifesi görmektedir.
21
Şekil 3.2: Bluetooth protokolünün katmanları
Radio Frequency (RF) : Dijital veriyi 2.4 GHz’lik analog sinyale çeviren
katmandır.
Baseband : Bluetooth’un dijital kısmıdır. Paketleri oluşturup şifreler, hata düzeltme
işini yönetir. Güvenli bağlantılar için veriyi şifreler ve şifreyi çözer, radyo frekansını
hesaplar ve senkronizasyonu sağlamaktadır.
Link Manager : Bluetooth bağlantılarında fiziksel detayı ele alır. Bağlantı oluşturur,
ne kadar sağlıklı olduğunu görüntüler, komut veya hataya bağlı olarak bağlantıları yok
eder.
Host Controller Interface ( HCI ) : Ana birim ile Bluetooth donanımı arasında bir
arayüzdür. Data komutları bu arayüz üzerinden iletilir. HCI, Baseband ve Link manager
arasında bir komut arayüzü oluştururarak donanım ve kontrol registerlarına erişimi sağlar.
Logical Link Control and Adaptation Protocol (L2CAP) : Üst düzey protokoller
ile baseband servisleri arasında arabirim oluşturur. Büyük paketlerin iletiminde ayırma
(segmentation) ve yeniden birleştirme (reassembly) işlemleri gerçekleştirir
Service Discovery Protocol (SDP) : Uygulamaların, varolan servisler ve
karakteristikleri hakkında bilgi edinmesini sağlar.
RFCOMM : İletim protokolü olup L2CAP protokolünden RS232 seri port ile iletim
sağlar. Eş zamanlı olarak cihazlar arasında 60 adet bağlantı kurabilir.
22
3.2.2.Bluetooth’un Temel Özellikleri
3.2.2.1.Birlikte Çalışabilirlik
Bluetooth spesifikasyonlarında farklı üretici firmaların farklı cihazlarının aynı profili
kullandıkları sürece birlikte çalışabilirliği garanti altına alınmıştır. Profiller, Bluetooth
protokol yığınının birlikte çalışabilirlik çözümleri sunmak için nasıl kullanılabileceğini
ortaya koymaktadır. Örneğin, bir farenin bir cep telefonu kulaklığı ile haberleşmesi gerekli
olmadığı için, fare ve kulaklık farklı profilleri esas alarak tasarlanabilir.
3.2.2.2.Kısa Mesafe Kablosuz Haberleşme Yapısı
Günümüzde, bilgi işlem ve haberleşme cihazları arasında sayısal haberleşme
genellikle kablolar vasıtasıyla gerçekleştirilmektedir. Bu kablolar da çeşitli şekillerde,
çeşitli boyutlarda ve çeşitli sayıda pinleri olan konnektörlere bağlanmaktadır. Bu da
kullanıcı için oldukça maliyetli olmaktadır.
Bluetooth teknolojisi ile haberleşecek olan cihazlar, kablosuz olarak bir hava- ara
yüzü vasıtasıyla radyo dalgalarını kullanarak bağlantı kurabilmektedirler. Bu teknoloji
özellikle kısa mesafe (yaklaşık 10 metre) haberleşmesi için tasarlanmıştır. Bunun nedeni,
teknolojiyi küçük, taşınabilir, batarya ile beslenen cihazlar için, çok az güç tüketimi
sayesinde, cazip hale getirmektir.
3.2.2.3.Açık Standart Yapısı
Bluetooth kablosuz haberleşme teknolojisini herkese açık, telif hakkı olmayan bir
teknoloji olarak tanımlamıştır. Bu açık standart yapısını benimsenmesinin nedeni
teknolojinin daha geniş kitleler tarafından kabulünü sağlamaktır.
3.2.2.4.Ses ve Veri Haberleşmesi
Bluetooth kablosuz haberleşme teknolojisi, hem ses hem de veri trafiğini taşıyacak
yapıya sahip, bütün cihazlara bu her iki içeriği de kullanma olanağı veren ideal
teknolojidir.
3.2.2.5.Güvenlik
Bluetooth cihazlarının gizlice dinlenmesi ya da mesajların çıkış noktasının
değiştirilmesi gibi tehlikelerin önüne geçmek amacıyla Bluetooth cihazları bazı güvenlik
özellikleri içermektedir.
23
3.2.3.Bluetooth Teknolojik Alt Yapısı
3.2.3.1.Bluetooth Radyo Güç Sınıfları
Bluetooth standartları, üç farklı tipte güç sınıfına müsade etmektedir. Bu güç sınıfları
Bluetooth cihazlarının farklı mesafelerde bağlantı kurmalarına imkan vermektedir. Bu güç
sınıflarının maksimum çıkış güçleri ve mesafeleri aşağıdaki tabloda gösterildiği gibidir.
Güç Sınıfı Maksimum Çıkış
Gücü
Mesafe
Class
1
100 mW (20 dBm) 100m
Class
2
2. 5 mW (4 dBm) 35m
Class
3
1 mW ( 0 dBm) 10m
Tablo 3.1: Bluetooth Radyo Güç Sınıfları
Bluetooth bağlantısı için ayrıca minimum mesafe de söz konusudur. Eğer radyolar
birbirine çok yakın konulurlarsa, bazı alıcılar doyma noktasına gelebilir ve birkaç
bluetooth radyosu kısa mesafadeki hatlarda güvenilir olmayabilir. Bu minimum mesafe
yaklaşık olarak 10 cm’dir.
3.2.3.2.Master – Slave Yapısı
Bluetooth şebekesinde neredeyse tüm birimler özdeştir ve 48 bitlik adres bilgisi
dışında donanım ve yazılımları aynıdır. Bağlantı ilk kurulduğu zaman geçici bir başlangıç
ünitesi tahsis edilmektedir. Bağlantıyı kurmaya başlayan ve trafiği en fazla 7 üniteye kadar
kontrol edebilen bu sistem master adını almaktadır. Her bağlantı yolu şebekesi ise slave
olarak adlandırılmaktadır.
Bluetooth cihazları, her bir paketten sonra yeni bir frekansa atladıkları zaman
mutlaka kullanacakları frekans sırası ile uyuşmak zorundadırlar. Bluetooth cihazları maste
ve slave olmak üzere iki farklı modda çalışabilmektedir. Frekans atlama sırasını belirleyen
taraf ise master’dır. Slave’ler master ile eş zamanlı olarak onun frekans atlama sırasını
takip ederler.
24
Her bir Bluetooth cihazının kendine özgü bir bluetooth cihaz adresinin yanında bir de
bluetooth saati bulunmaktadır. Bluetooth spesifikasyonunun temel bant katmanı, bluetooth
cihaz adresi ve bluetooth saatinden frekans atlama sırasını hesaplayan bir algoritma
tanımlamaktadır. Slave’ler master’a bağlandıkları zaman onlara bluetooth cihaz adresi ve
master’ın saati bildirilir. Onlar da bu bilgileri frekans atlama sırasını hesaplamak amacıyla
kullanırlar. Çünkü, bütün slave’ler master’ın saatini ve adresini kullanmaktadırlar ve
master’ın frekans atlama sırasıyla eş zamanlı olarak çalışmaktadırlar.
Aynı zamanda master cihazların ne zaman gönderme yapabileceğini de kontrol
etmektedir. Master, slotları ses veya veri trafiği için tahsis ederek, slave’lere iletim için izin
verir. Data trafik dilimlerinde, slave’ler yalnızca master tarafından yapılan bir gönderime
cevap verme yetkisine sahiptir, onun dışında iletim yapamazlar. Ses trafik dilimlerinde ise,
slave’ler master’a cevap versin veya vermesin düzenli olarak, ayrılmış dilimlerde
gönderim yapmak durumundadırlar.
Master, toplam elde edilebilir bant genişliğinin slave’ler arasında nasıl bölündüğüne,
her bir slave ile ne kadar sıklıkla haberleştiğine bağlı olarak karar verir. Her bir cihazın
alacağı zaman dilimi sayısı, o cihazın veri transfer gereksinimine bağlı olmaktadır.
3.2.3.3.Bluetooth Ağ Yapısı
3.2.3.3.1.Piconet
Bluetooth teknolojisini kullanan cihazlar, ad-hoc biçimiyle bağlantı kurmaktadırlar.
Birbirlerinin kapsama alanı içerisinde bulunan Bluetooth birimleri noktadan noktaya ya da
noktadan çok noktaya bağlantı kurabilirler. İki veya daha fazla bluetooh birimi birbiriyle
bağlantı kurduğunda bunlar bir ağ oluştururlar ve bu ağa piconet adı verilmektedir. Piconet
birbirine bağlı iki birimle (dizüstü bilgisayar ve hücresel telefon gibi) başlar, birbirine
bağlanmış sekiz birime kadar genişleyebilir. Bütün bluetooth cihazları eşdeğer olmalarına
rağmen, piconet oluştururken piconet bağlantısı süresince bluetooth cihazlarından birisi
master, diğer bluetooth cihazları ise slave olarak ağda rol almaktadır.
25
Şekil 3.2: Piconet Yapısı
Piconet içerisinde bir slave sadece kendi master’ı ile haberleşebilir. Piconet
içerisindeki tüm birimler master’ın saatini ve Bluetooth adresini kullanarak hesaplanan
aynı frekans atlama sırasını paylaşırlar.
3.2.3.3.1.Scatternet
Birden fazla piconet aynı alanda kesişiyor olabilir. Her bir piconet farklı master’a
sahip olacağı için piconet’lerin frekans atlamaları birbirinden bağımsız olacaktır. Birden
fazla piconet’in birbirine bağlanmasıyla oluşan şebeke yapısına scatternet adı verilir.
Standartlara baktığımızda piconet içerisindeki slave sayısını 7 ile sınırlandırmış olmasına
rağmen, scatternet yapısı kullanılarak ağ içerisindeki cihaz sayısı attırılabilir ve daha geniş
bir kapsama alanı elde edilebilir. Eğer bir bluetooth cihazı birden fazla piconet’e ait ise,
mutlaka zaman-paylaşımlı (time sharing) olmalıdır. Bunun anlamı, bluetooth cihazı birkaç
dilim bir piconet’te birkaç dilim diğer piconet’te harcayacak demektir.
Bluetooth v1.1 standartlarına göre, bir bluetooth cihazı, iki farklı piconet’te slave
olarak rol alabilmektedir fakat, master olarak düşünüldüğünde ise sadece bir piconet’te
görev alma yetkisi verilmiştir.
Şekil 3.3: Scatternet Yapısı
Bir master ya da slave başka bir piconet’in master’ı tarafından çağırılarak (paging) o
piconet’te slave olarak rol alabilir. Aşağıda örnek olarak master M1, master M2’ yi
çağırmakta ve böylece master M2 iki role sahip olmaktadır; birinci piconet’te slave, ikinci
piconet’te master.
26
Şekil 3.4: Bir bluetooth master biriminin slave olarak rol alması.
3.3.Wi-Fi (Wireless Fidelity)Teknolojisi /IEEE 802.11
Kablosuz yerel ağ yapıları (Wireless Local Area Networks-WLAN) için geliştirilen
uluslararası bir standart bulunmaktadır. IEEE (Institute of Electrical and Electronic
Engineers) tarafından kablosuz yerel ağlar için geliştirilmiş bir radyo transmisyon
standardıdır. Wi-Fi, Bluetooth teknolojisi gibi 2.4GHz’lik spektrumda çalışır. 100 metre
yarı çap menzilindeki tüm Wi-Fi uyumlu cihazlarla 11Mbps – 54Mbps gibi yüksek
hızlarda veri alışverişi gerçekleştirmektedir. Böylece Wi-Fi kullanılan evlerde, ofislerde ve
mekanlarda kablo karmaşasından kurtulup, kullanıcılara özgürce hareket imkanı
verilmektedir. Wi-Fi uyumlu PDA’ler, kablosuz yerel ağlar üzerinde veri aktarımı için
kullanılan bu teknoloji sayesinde yerel mobil uygulamalarda önemli avantajlar
sağlamaktadır.
Şekil 3.5 Kablosuz Modem Bağlantısı
27
3.4.GSM
Gsm (Global System for MObile Communication) 2. nesil teknolojisidir. Ses ve veri
aktarımı için kullanılabilir. Bu sistem Avrupa’da 900Mhz ve 1.8Ghz frekanslarında
kullanılırken Amerika’da 1.9 Ghz frekanslarında kullanılır. Veri aktarım hızı 9.6kbps’a
kadar çıkabilir. Dünya çapında yaygındır. 160 karaktere kadar mesaj yollayıp mesaj alımı
yapılabilir.
3.5.GPRS
GPRS (General Packet Radio Service) bir çok şebekenin kullanıcılarının veri
uygulamalarına erişim sağlayabilmek için kullanmak durumunda olduğu bir teknolojidir.
GPRS, son kullanıcının mobil veri iletişimini, 'devamlı sanal bağlantı' durumunu ekonomik
hale getirerek ve veri alımını ve gönderimini bugünkünden çok daha yüksek hızda
mümkün kılarak önemli ölçüde geliştirir. Veri transferi 115kbps'a kadar çıkabilir. Aynı
zaman da mesaj 160 karakterle sınırlı değildir.
28
4. J2ME(JAVA 2 MICRO EDITION) PLATFORMU
4.1. Java Dilinin Kısa Bir Tanıtımı
Java programlama dili bilgisayar dünyasında önemli bir yer teşkil etmektedir. Nesne
tabanlı programlama özelliği, yazılan programın değişikliğe uğraması ya da yeniden
derlenmesi gerekmeden farklı yapıdaki bilgisayar sistemlerinde kullanılması gibi özellikler
Java dilinin popülerliğini sağlayan önemli özelliklerin sadece birkaçıdır. İlk geliştirilme
amacı SUN Microsystem şirketinin içinde ortak bir dil kullanılması olan ve o zamanki adı
OAK olan Java dili, kısa zamanda dünya çapında yoğun olarak kullanıma girmiştir.
Javanın kullanıldığı yerler, basit bir ev bilgisayarlarından, en karmaşık sistem sunuculara
kadar değişen bir yelpazede yer almıştır.
4.1.1. Java Mimarisi
Java mimarisi ilk yayımlandığı günden bu yana pek değişmemiştir. Java derleyicisi
Java programlama dilini “bytecode” kümelerine çevirmektedir. Bytecodelar, “sanal
makina” olarak bilinen soyut hesap makinası komutlarıdır. Java Sanal Makinası (JVM),
Java programını çalıştırabilmek için java kodlarını yorumlar. Java bytecode uygulamaları,
Sun Microsystems tarafından verilmiş belirtimleri (Java Virtual Machine Specification
(JVMS)) izlemek zorundadır.
Java dilinin doğasından gelen en güçlü yönlerinden biri taşınabilirliğidir. Java
programı alınır ve tekrar derlenmesine gerek kalmadan değişik işletim sistemleri üzerinde
çalıştırılabilir. Bu taşınabilirliği pek çok yolla sağlayabilir. Java belirtimleri, tiplerin ve
bytecode’ların altta çalışan işletim sisteminden bağımsız olduğunu garanti ederler.
Java, güvenlik altyapısıyla da bilinmektedir. Java çalışma-zamanı ortamı Java
programlarını “sandbox” içinde çalıştırır. Bu “sandbox”lar programın çalışacağı
bilgisayarın kaynaklarının kısıtlı bir kümesine ulaşırlar. Java programları “sandbox”lar
içine hapsedilirler, böylece kötü programlar programa ulaşamazlar veya programın
çalışacağı bilgisayara zarar veremezler. Bu özellik dağıtık veya web-tabanlı uygulamaların
hem sunucu hem de istemci taraflarında gereklidir.
Java dilini bir diğer önemli özelliği nesneye dayalı olmasıdır. Java’daki nesne
modelinin genişletilmesi oldukça kolaydır. Çoğu nesneye dayalı diller sert, yönetilmesi zor
nesne hiyerarşileri seçerler veya performansı ve çok yönlülüğü arttırmak için tamamen
29
dinamik nesne modelleri kullanırlar. Java ise dengeyi sağlamıştır, gerektiği yerde
kullanılan dinamik arayüz modeli ile basit bir sınıf mekanizması sağlar.
Java dili basittir. Java dili eğer başka bir nesneye dayalı programlama diline
aşinaysanız basittir. Java’nın sözdizimi öğrenilmesi kolaydır. Java dilinin sözdizimi C++
ile benzerdir ve diğer programlama dillerinde bulunan yararlı özellikleri içerir.
4.1.2.Java 2
Tüm programlama dilleri ve geliştirme ortamları gibi Java da ilk çıktığı günden bu
yana gelişmiştir. Java’nın ilk çıkışından itibaren pek çok özellik ve yetenek Java’ya
eklenmiştir. Java 1.2 deki ilerlemeler üzerine Sun Microsystems Java’yı yeniden tanımladı
ve Java’da temel değişikler yapmak üzere Java’yı lisansladı. Java 1.2 Java 2 oldu ve JDK
ve JRE versiyonları 1.2 de kaldı. Daha önemlisi Java platformu 3 sürüme ayrıldı.
1. Java 2 Standart Edition (J2SE)
2. Java 2 Enterprise Edition (J2EE)
3. Java 2 Micro Edition (J2ME)
Her sürüm Java tabanlı uygulamaları geliştirmek için Java sanal makinasını ve
çalışma zamanı sınıflarını içeren eksiksiz bir ortam sunar. Üç sürüm de değişik cihazlar
üzerinde çalışabilen uygulamaları hedeflerler. Masaüstü uygulamaları için gerekli kullanıcı
arayüz sınıflarını sunan J2SE kullanılır. Bileşen tabanlı programlamayı vurgulayan J2EE
ise sunucu tabanlı uygulamalarda tercih edilir. Gömülü ve el cihazları içinse hedef
J2ME’dir.
Bir sürümü diğerinden ayıran, her sürümün tanımladığı sınıf kütüphaneleridir.
J2ME’yi J2SE’nin alt kümesi olarak ve J2SE’yi de J2EE’nin alt kümesi olarak
düşünebiliriz. Bytecode’ların gerektirdiği, üç sürümde de bulunan sınıfları sağlayarak Java
bytecode’unu her sürümde çalıştırmak mümkündür. J2ME tabanlı cihazlar J2SE ve
J2EE’nin sağladığı sınıflardan çok daha az sınıfa sahiptir.
Şekil 4.1 de, soldaki yüksek seviyeli kullanıcı platformlarından başlayarak sağdaki
düşük seviyeli kullanıcı platformlarına doğru ilerleyen Java 2 Platform’unun sürümlerini
ve hedef pazarları gösterilmektedir. Temel olarak, beş hedef pazar veya geniş cihaz
kategorileri tanımlanmıştır. Sunucu bilgisayarlar Java 2 Eneterprise Edition,ve kişisel
bilgisayarlar Java 2 Standart Edition ile desteklenmektedir. Java 2 Micro Edition ise
yüksek seviyeli ve düşük seviyeli kullanıcı cihazlarına odaklanan iki kategoriye ayrılmıştır.
Son olarak, Java Kart standartları ise smart kart pazarına odaklanmıştır.
30
1. Java 2 Standart Edition
Java 2 Standart Edition, temel Java ortamıdır. Bu ortam, çekirdek Java sınıflarını ve
API’lerini web browserlar üzerinde çalışabilecek uygulamalar da dahil standart istemci-
sunucu uygulamalarını geliştirme ve çalıştırma olanağı sağlar.
• Java 2 SDK (J2SE)
• Java 2 Runtime Environment
• Java Plug-in
• Java Web Start
• Java HotSpot Server Virtual Machine
• Collections Framework
• Java Foundation Classes (JFC)
• Swing Components
• Pluggable Look & Feel
• Accessibility
• Drag and Drop
• Security
• Java IDL
• JDBC
• JavaBeans
• Remote Method Invocation (RMI)
• Java 2D
2. Java 2 Enterprise Edition
Java 2 Enterprise Edition farklı Java API’lerini ve Java olmayan teknolojileri
birleştirir. Genellikle çok katlı ve dağıtık uygulamaları geliştirmek için kullanılır. J2EE
teknolojileri, günümüzün büyük çok katlı, heterojen uygulamalarını birarada sunar. J2EE
sıklıkla orta-katman veya sunucu taraflı teknolojileri tanımlamak için kullanılır. Gerçekte,
J2EE bilgi sistemlerinin tüm katmanlarında kullanılan teknolojileri içerir. JDBC’yi örnek
olarak alalım. JDBC istemci Java appletlerinden, orta katmanlı Java servleti veya
Enterprise Java Bean tarafından verilere ulaşmak için kullanılır.
• Java 2 SDK (J2SE)
• Java 2 Runtime Environment
31
• Java Plug-in
• Java Web Start
• Java HotSpot Server Virtual Machine
• Collections Framework
• Java Foundation Classes (JFC)
• Swing Components
• Pluggable Look & Feel
• Accessibility
• Drag and Drop
• Security
• Java IDL
• JDBC
• JavaBeans
• Remote Method Invocation (RMI)
• Java 2D
4.2.Java 2 Micro Edition (J2ME)
Java 2 Micro Edition veya J2ME, Java yazılımlarını elektronik ve gömülü cihazlara
yerleştirebilmek için dizayn edilmiş geliştirme ve çalıştırma ortamıdır. Diğer daha büyük
Java sürümleri gibi, Java 2 Micro Edition’ın amacı ürünler arasındaki uyumluluk, kodun
taşınabilirliği, güvenli ağ yapısı ve ölçeklenebilirliğin arttırılması gibi Java teknolojisinin
özelliklerinin sürdürebilmektir. Hayatta pekçok şeyde olduğu gibi bir boyut herşeye
uymaz. Doğal olarak mainframelerden cep telefonlarına kadar herşeye uyan bir Java
platformu pek pratik olmaz. J2ME Java dilini kişisel bilgi, iletişim ve hesap makinalarına
yerleştirmiştir. Genellikle bu cihazlar geleneksel bilgisayarlardan daha küçük ve daha az
güçlüdürler.
J2ME’nin geliştirilmesine Sun tarafından başlanılmıştır, fakat günümüzde dünyanın
en büyük elektronik ve gömülü cihaz üreticileri tarafından desteklenmektedir. Dünyanın
mobil ve kablosuz teknoloji satıcıları J2ME teknolojisini inceliyorlar veya aktif olarak
katılıyorlar veya yarışan ürünler üzerinde çalışıyorlar. Bu destekleyiciler Sun tarafından
geliştirilen J2ME’yi standartlaştırmak için bir topluluk oluşumu başlattılar. Bu oluşum
Java Community Process olarak adlandırıldı ve J2ME’nin ilerlemesinde önemli rol oynadı.
32
J2ME veya diğer Java uygulamalarının çalıştığı platformlara genel olarak “cihaz”
denilir. J2ME için bu cihazlar “küçük cihazlar ” başlığı altında toplanır. Bu cihazları başka
sözcüklerle de ifade edebiliriz: bilgi cihazları, tüketici elektronikleri, gömülü cihazlar gibi.
Bu “küçük cihazların” geniş çeşitlerini tanımlamak önemlidir ve asıl önemli olan bu küçük
cihazların J2ME’nin hedef cihazları olduğudur.
Java’nın J2ME ile küçük cihazlar için programlama dili ve yazılım platformu olarak
yeniden doğumu, yakın gelecekte bilgisayar sistemlerinin sayısını aşacaktır. Genç bir
teknoloji olarak J2ME hala gelişmektedir ve J2ME için temel destek hala büyümektedir.
J2ME kablosuz ve mobil cihazlar için Java olarak bilinir. J2ME teknolojisi pek çok
kablosuz ve mobil cihaz için kullanılsa da J2ME sadece bu ortamlarda kullanılmaz. J2ME
mobil platformlar için önemli bir Java platformu olmasına rağmen mobil platformlar için
tek Java platformu değildir. Ve sadece Java da bir çözüm değildir.
“Mobil” bir cihazın kapasite veya durumunu tanımlar. Mobil cihazlar daha küçüktür
ve bunların kaynakları kısıtlıdır. J2ME mobil cihazlar için önemli bir rol oynasa da
“mobil” deyimi tüm J2ME uygulamalarını kapsamaz. Ayrıca J2ME kablosuz cihazlar
üzerinde de çalışabilir, fakat “kablosuz” deyimi de “mobil” deyimi gibi tüm J2ME
uygulamalarını kapsamaz.
J2ME’nin arkasında yatan yüksek seviyeli düşünce elektronik ve gömülü cihazlar
pazarı için dinamik olarak genişletilebilen, ağ özellikleri fazla cihazlar ve uygulamalar
yaratmak için etraflı bir uygulama geliştirme platformu sağlamaktır.
J2ME’in sınırlı özelliklerin bulunmasının temel sebebi cep telefonları ve mesaj
cihazı gibi bilgisayar sistemlerin kapasitelerin kısıtlı olmasıdır. İlk olarak bu sistemlerin
kısıtlı hafızaları bulunmaktadır. Ayrıca bu sistemlerin işlemcileri basit bir bilgisayarlarla
bile kıyaslanmayacak kadar azdır. Kablosuz cihazların diğer bir farkı basit klavye
özellikleridir. Birçoğunun kullandığı klavye keypad olarak bilinen ve birkaç tuştan oluşan
bir teknolojidir. Bunlara ilaveten, kablosuz cihazların ekranları küçük ve birçoğu ekranı
yalnızca siyah beyazdır.
Kablosuz cihazların bahsi geçen sınırlamaları göz önüne alındığında J2ME’nin neden
diğer sürümlere oranla kısıtlı özellikler taşıdığı daha iyi anlaşılmaktadır. Java’nın kablosuz
cihazlar için ürettiği J2ME sürümü üretilmeden önce Wireless Access Protocol (WAP) ve
i-mode adında iki programlama platformu geliştirilmiştir. Bu teknolojilerde hali hazırda
var olan programlama platformları tamamen yeniden düzenlenmiştir. Örneğin WAP,
33
HTML adındaki normal bilgisayarlarda kullanılan dil yerine, Wireless Markup Language
(WML) adında kendi uygulama dilini hazırlamıştır. Benzer çalışmalar “i-mode"
teknolojisinde de yapılmıştır. Tamamen yeniden düzenlenen programlama yapısı, farklı
makinelerde uyum problemine yol açmaktadır. Farklı yapıdaki programlama yapısı ile aynı
programın değişik makinelerde kullanılması mümkün olmamaktadır. Örneğin, WAP
destekli cihazlar normal bilgisayarlar için hazırlanan web sayfalarını ziyaret
edememektedirler. Bu yüzden WAP kullanıcılarının bu sayfaları görebilmeleri için
tamamen yeniden bir sayfanın hazırlanması gerekmektedir. Benzer bir şekilde, i-mode
kullanıcıları sitelere basit socket bağlantıları yapamamakta ve ancak bağlantı kurucu ek
protokoller ile bağlantı işlemlerini yerine getirebilmektedirler. WAP ve i-mode sistemleri
hakkında bahsi geçen farklı programlama yapıları J2ME için geçerli değildir. Java dilinde
yazılan bir program ile socket bağlantısında, Internet sitelerine giriş direkt olarak
sağlanabilmektedir.
Değişik mimarisinin sonucu olarak J2ME, J2SE ve J2EE’ye kıyasla değişik amaçlara
sahiptir. Aşağıda J2ME mimarisinin ana hedefleri özetlenmeye çalışılmıştır:
1. Değişik yetenekteki cihazlara destek sağlar. Bu cihazlar kullanıcı arayüzü, veri depolama,
ağ bağlantısı ve bant genişliği, bellek büyüklüğü, güç tüketimi, güvenlik gereksinimleri
duyarlar.
2. Çok fazla kişiselleştirilmiş hatta sadece tek bir kişi tarfından kullanılan cihazlara
odaklanmıştır.
3. Değişen aralıklardaki ağ kapasitelerinde ve servislerinde ağ bağlantısı sağlar. Ağ bağlantısı
J2ME uzayında yer alan cihazlar için çoğunlukla hayati önem taşır ve yetenekleri, düşük
bant genişliği, kablosuz ve aralıklı bağlantıdan daha sık ve daha yüksek bant genişliğindeki
bağlantılar aralığında değişir.
4. Ağ bağlantısı üzerinden uygulamaların ve verinin alınmasını sağlar. Ağ bağlantısı J2ME
uygulamalarının cihazlara taşınmasında tercih edilen bir yoldur. Uygulamaların cihaz
üzerinde hazırlanabilmesi veya belleğe doğrudan yüklenebilmesi ve çalıştıktan sonra
bellekten atılabilmesi gerekir.
5. Java dilinin çapraz-platform özelliklerini her cihazın eşsiz özelliklerini ve kısıtlarını alarak
genişletir.
6. Hızlıca değişen pazara esneklik ve var olan ve henüz çıkmamış uygulamalara uyum sağlar.
34
7. Değişik yetenekteki, özellikteki ve işlem gücündeki cihazlarda uygulamaların
ölçeklenmesini sağlar.
8. Original Equipment Manufacturer (OEM)’dan bağımsız olarak J2ME destekli cihazlarda
uygulama geliştirmeyi sağlar.
Şekil 4.1: JAVA Kavram Haritası
4.2.Neden J2ME’ye Gerek Duyuyoruz?
Java ilk olarak elektronik cihazlar için tasarlandığından doğal olarak aklımıza neden
yeni bir sürüme gerek duyulduğu sorusu geliyor. Neden standart Java’yı küçük cihazlar
için kullanamıyoruz? Daha iyi bir organizasyon için API’leri üç ayrı sürüme ayırma
fikrinin arkasında Sun firmasının gelirlerini arttırma isteği olabilir. Ayrıca Java’yı değişik
sürüme ayırmanın bir gerekliliği de J2ME’nin hedef cihazlarının özel gerekliliklerinin
olduğudur. Bu cihazların geniş uygulama yazılım ortamından farklı yazılım gereksinimleri
var. Genelde yazılımın küçük bir ayak izi olması gerekir. Bazı durumlarda Java
uygulamaları, Java sınıfları ve sanal makine için gereken toplam bellek yüzlerce kilobaytı
bulabiliyor. Ayrıca, elektronik ve gömülü cihazlar için geliştirilmiş yazılım uygulamaları
genellikle tekil yayılma mekanizmasına sahiptirler. Örneğin, PDA cihazlarının masaüstü
35
bilgisayarlarından uygulamaları ve veriyi indirmek için “cradle” adı verilen cihazları
vardır. Sonuç olarak, bu cihazların kullanıcı arayüzü, ağ bağlantıları var ve diğer pek çok
gereklilikleri Java API’leriyle karşılanamaz. Cep telefonlarının küçük ekranları için grafik
kullanıcı arayüzü geliştirirken Java’nın kullanıcı arayüzü geliştirmek için kullanılan Swing
paketinin içerdiği bileşenler genişletilmelidir. Fakat bu paket cep telefonunun belleğine
sığmaz. Bir Java ortamının tüm cihazlara uymayacağı gerçeğini J2ME göstermiştir.
Platform bağımsızlığının gerektirdiği aynı prensipler, dil sözdizimi, güvenlik ve
güvenilirlik J2ME de dahil tüm Java sürümlerinde bulunmaktadır.
4.3.Konfigürasyon ve Profiller
J2ME mimarisinin çözmeye çalıştığı en önemli problem farklı kısıtlara, özelliklere,
becerilere sahip çeşitli cihazları nasıl destekleyeceği sorunudur. Birinci çözüm yolu; her
cihaz için gerekli olacak tüm mimari elemanları katarak Java’yı genişletmekti. Fakat bu
bellek sıkıntısı çeken küçük cihazların kullanılamamasına yol açtı. Başka bir çözüm yolu,
bu cihazların ortak özelliklerini içerecek şekilde J2ME’yi kısıtlamaktı. Bu çözüm yoluyla
da güçlü cihazların becerilerini özellikleri, becerileri daha az olan araçlarmış gibi
sınırlandırmak zorunda kalınmıştır.
İki çözümde ihtiyaçları karşılamadığı için J2ME çeşitli konfigürasyon ve profillere
bölünmüştür. Konfigürasyon ve profiller J2ME’nin modüler yapısını oluşturan temel
elemanlardır. Bu iki eleman J2ME destekli pek çok cihaz için uygundurlar.
J2ME konfigürasyonu küçük cihazlar ailesi için minimum Java platformunu
tanımlar. Bu ailenin üyelerinin hepsi aynı bellek ve işlemci gücü gereksinimlerine sahiptir.
Konfigürasyon, uygun sistem seviyesindeki özellikleri, Java dili özelliklerini, mevcut sanal
makine karakteristik ve özelliklerini ve minimum Java kütüphanelerini tanımlar. Yazılım
geliştiriciler belirli bir konfigürasyonu kullanan cihaz ailesi için belirli bir düzeyde sistem
desteğinin olabileceğini umarlar. Ayrıca bir konfigürasyon belirli bir cihaz kategorosi için
minimum özellikler kümesini belirler. Cihaz üreticileri, gerçek bir platform sağlamak
amacıyla belirtilen konfigürasyondaki yetenekleri mevcut, belirli bir cihaz ailesi için
profiller gerçekleştirirler.
Diğer bir J2ME yapı taşı olan profil, belirli sınıftaki cihazlar için uygulama
seviyesinde arayüz tanımlarlar. Profil gerçekleştirimi, bu uygulama seviyesindeki
arayüzleri sağlayan Java sınıf kütüphanelerini içerir. Böylece profil, teorik olarak tüm
işlevsellik ve servisleri belirler. Aslında yaratıcıların niyeti tam olarak bu değildi. J2ME
36
yaratıcıları profilin belirli bir cihaz kategorisinin ihtiyaçlarını göstermesi niyetindeydiler.
Düşünce, profilin içinde çok sayıdaki alakasız uygulamayı toplamak değildi.
Asıl amaç, aynı kategorideki tüm cihazlar arasında Java uygulaması geliştirmek için
standart bir platform tanımlayarak “interoperability”i değişik üreticilerin gerçekleştirimleri
arasında uyumluluk garanti etmektir. Örneğin, bir profil mobil telefonlarca kullanılan Kısa
Mesaj Servis (SMS) standardı için ağ iletişimini destekleyebilir. Çünkü SMS standardı
mobil telefonların her yerde olan bir özelliğidir, bu yüzden mobil telefonları hedef alan bu
özelliği konfigürasyonun içine yerleştirmek yerine profilin içinde tanımlamak gerekir.
Profil konfigürasyonun üzerinde gerçekleşir, yani gerçek-dünya uygulamalarına bir
adım daha yakındır. Tipik olarak, profiller konfigürasyonların oluştuğu kütüphanelerden
daha cihaz karakteristiklerine özel kütüphaneler içerirler. Uygulamalar, konfigürasyon ve
profilin üzerine yerleşirler; bu uygulamalar sadece bu iki düşük seviyeli spesifikasyonların
desteklediği sınıf kütüphanelerini kullanırlar. Profillerden biri bir diğerinin üzerine
yerleşebilir. J2ME platformu sadece bir konfigürasyon içerebilir.
J2ME platformu, temel Java kütüphaneleri ve Sanal Makineyle (VM) temel
çalıştırma ortamından, konfigürasyondaki sistem seviyesinde uygulama programlama
arayüzleri kümesinden, ve profillerdeki uygulama seviyesi API’lerden oluşur.
Konfigürasyon üç temel elemanı tanımlar:
1. Java programlama dili özellikleri kümesi
2. Java sanal makine özellikleri kümesi
3. Java kütüphanelerinin ve uygulama programlama arayüzlerinin (APIs)
kümesini
J2ME yaratıcıları uyumsuz platformlar arasındaki parçalanmışlığı önlemek için
sadece iki konfigürasyon tanımlamışlardır.
Konfigürasyonlar arasında içiçe bir ilişki vardır. J2ME mimarisindeki tüm
konfigürasyonlar süper küme altküme sıralanışı içindedirler. Bu kısıtlanmış bir
konfigürasyondan daha zengin özellikli bir konfigürasyona doğru ilerlerken taşınabilirliği
arttırır.
Teorik olarak, bir konfigürasyon J2SE platformu kütüphanelerinin benzeri bir
destek sağlar. Fakat gerçek dünyada bu mümkün olmaz çünkü J2ME masaüstü
bilgisayarlarından daha az güçlü cihazları hedefler. Konfigürasyon spesifikasyonları, J2SE
den uyarlanmış tüm Java sınıflarının aynı veya altkümesi şeklinde orijinal J2SE sınıflarını
37
gerektirir. Yani bir sınıf J2SE versiyonunda bulunmayan bir methodu ekleyemez.
Konfigürasyonlar, kendi spesifikasyonlarına sınıflar ekleyebilirler, yine de
konfigürasyonlar mutlaka J2SE’nin bir altkümesi değildirler. Örneğin, her iki
konfigürasyon da cihaz özelliklerine ve kısıtlarına bağlı olarak J2SE’de bulunmayan tarih
sınıflarını tanımlamışlardır.
Konfigürasyonlar JVM(Java Virtual Machine) detaylarını ve belli sınıftaki cihazlarla
kullanılabilecek temel kütüphaneleri tanımlayan belirtimlerdir. Mesela 512KB bellekten az
hafıza alanı ve sınırlı bir ağ bağlantısı olan cihazların konfigürasyonu CLDC olarak
adlandırılır. CLDC’lere örnek olarak bazı cep telefonları ve avuç içi bilgisayarlar (PDA’s)
verilebilir. Daha fazla belleğe ve işlemci gücüne sahip, sürekli ağ bağlantısı olan diğer
konfigürasyon ise CDC olarak adlandırılır (Connected Device Configuration). Bunlara
örnek olarak ise Sharp Zaurus avuç içi bilgisayarları verilebilir.
Profiller uygulama geliştirmeye daha yetkin bir ortam sunabilmek için
konfigürasyonun üzerine tanımlanan kütüphanelerdir. Konfigürasyon java sanal makinesi
(JVM) ve temel kütüphaneleri tanımlarken, bir uygulama geliştirilirken ihtiyaç
duyulabilecek yetkinlikte kütüphaneleri tanımlamaz. Profiller bu alanda uygulamanın
yaşam döngüsü, kullanıcı arabirimi ve kalıcı bellek kütüphanelerini içerirler.
J2ME ortamı sanal makineden, bir konfigürasyondan ve bir veya daha fazla profilden
oluşur. Sanal makine işletim sistemiyle konfigürasyon arasındaki bağlantıyı kurar. Profiller
ise uygulama ile J2ME ortamı arasındaki bağlantıyı sağlar.
4.4.Konfigürasyonlar
4.4.1.CLDC Konfigürasyonu
CLCD (Connected, Limited Device Configuration) daha kısıtlı kaynaklara sahip
cihazlara yönelik bir J2ME konfigürasyonudur. Bu profilin çekirdeğinde bir Java sanal
makinesi olan KVM yatmaktadır. KVM, JVM’nin bazı kısımlarının çıkartılarak JVM’nin
daha önemli ve gerekli parçalarını içerecek şekilde tasarlanmış halidir. Bu konfigürasyona
ait Java paketleri:
1. java.io
2. java.lang
3. java.lang.ref
4. java.util
38
5. javax.microedition.io
CLDC spesifikasyonları java.sun.com/products/cldc adresinde bulunabilir.
Kaynakları kısıtlı cihazların aşağıdaki karakteristikleri olmalıdır:
1. Java ortamı için 160Kb tan 512Kb’a kadar toplam bellek.
2. 16-bit veya 32-bit işlemci.
3. Düşük güç tüketimi. Genellikle bu cihazlar pil gücüyle çalışırlar.
4. Belirli bir çeşit ağ bağlantısını desteklemelidirler. Kesikli ve düşük bant
genişliğindeki bağlantılar.
CLDC J2SE’yi baz alır fakat bazı özellikleri dahil etmez. CLDC bir temel üzerine
aşağıdaki özelliklerden gerekli olanları eklenerek oluşturulur:
1. Bu tip cihazlar için fonksiyonellik uygun mudur?
2. Bu fonksiyonellik büyük miktarda binary koda gerek duyar mı veya bellek ve
CPU zamanından çok fazla tüketir mi?
3. Gerektiğinde fonksiyonellik kolaylıkla sağlanabiliyor mu?
4. Bu cihazlar genellikle fonksiyonelliği destekliyorlar mı?
5. Bu kaynakları kısıtlı cihazlarda fonksiyonelliğe bağlı bir güvenlik riskleri var
mı?
CLDC küçük cihazların ihtiyaçlarını karşılamak için J2SE ortamında bulunan bazı
özellikleri çıkarmıştır.
4.4.2.Kilobayt Sanal Makine (KVM)
KVM olabildiğince Java Sanal Makine Spesifikasyonlarına benzerdir. KVM’nin
yetenekleri CLDC spesifikasyonlarıyla tanımlanmıştır. KVM, Java Sanal Makine
Spesifikasyonlarından iyileştirme veya API desteği nedenleriyle CLDC gerektirdiğinde
veya izin verdiğinde farklılaşır. Örneğin, kayan noktalı veya double veri tipileri CLDC
uzayındaki cihazlar tarafından desteklenmez. Sonuç olarak, bu cihazlar üzerinde bu veri
tiplerini gerçekleştirmek çok pahalı olacağından üreticiler tarafından desteklenmemektedir.
Kayan noktalı ve double tipi CLDC tarafından desteklenmediğinden KVM tarafından da
tanınmamaktadır.
KVM cihazlar üzerinde küçük bir yer gerektirir, derleme tercihine ve hedef
platforma bağlı olarak 40Kb ve 80Kb arasında. Bu da KVM nin 128Kb toplam belleğe
sahip cihazlar üzerinde bile çalışabilmesini sağlar.
39
KVM, C tabanlı geliştirilmiştir ve %30 dan %80 arasındaki bir hızda çalışan JIT
(just-in-time-compiler) olmayan standart Java Sanal Makinesi kadar tam ve hızlı dizayn
edilmiştir.
KVM’nin hedef cihazlardaki rolü çok önemlidir. Bazı gerçekleştirimlerde, KVM
cihaza dinamik, interaktif, güvenli Java içeriklerini yükleyebilmek ve çalıştırabilmek için
mevcut yazılım yığının üstünde kullanılır. Bazı uygulamalarda ise, KVM Java
programlama dili içindeki, cihazın düşük seviyeli sistem yazılımlarını ve uygulamalarını
da gerçekleştirebilmek için düşük seviyede kullanılabilir.
4.4.3.Sınıf Dosyalarının Doğrulanması
Standart Java sanal makinesi sınıf dosyalarının gerçeklenmesi (class file verification)
çalışma zamanında gerçekleştirilen bir süreçtir.
Bu işlem, sınıfın geçerli bir Java sınıf dosyası olduğundan ve “iyi davranışlı” yani
tanımlanandan farklı bir yere ulaşmayan veya java.* paketini javax.* paketiyle
değiştirmeye çalışmadığından emin olmak için yapılır. Sınıf dosyalarının gerçeklenmesi
Java güvenlik modelinde önemli bir rol oynar.
CLDC cihazları için sınıf dosyalarının doğrulanması yoğun bir kaynak operasyonları
ve önemli miktarda güç, bellek ve binary kod uzayı kullanır. Sonuç olarak KVM sınıf
dosyalarını doğrulanmasını standart Java Sanal Makinesinden farklı tanımlar.
KVM’yi küçültmek için, çoğu sınıf dosyalarının gerçekleştirimi işlemi KVM’nin
hatta cihazın dışında yapılır. Bir sınıf bir cihazın içine yerleştirilmeden önce sınıf
“preverify” tarafından değerlendirilir. “preverify” sınıf dosyasını javac derleyicisi
tarafından oluşur, sınıfın geçerli bir sınıf olduğunu gösteren bytecode’ları ekler. Çalışma
zamanında KVM bu sahaları kontrol eder. Eğer bu sahalar bulunmuyorsa veya doğru bilgi
içermiyorlarsa, sınıfın yüklenmesi durdurulur ve aykırı durum fırlatılır.
4.4.4.CDC Konfigürasyonu
CDC (Connected Device Configuration) daha az kısıtlı kaynaklara sahip cihazlara
yönelik bir J2ME konfigürasyonudur. Bu profilin çekirdeğinde de CVM (Compact Virtual
Machine) sanal makinesi bulunmaktadır. Genellikle CLDC den daha fazla hafıza ve
işlemci gücüne sahip cihazlarda kullanılır. Ayrıca bu cihazlar sürekli ağ bağlantısına
sahiptirler.
Bu konfigürasyona ait Java paketleri:
40
1 java.io
2 java.lang
3 java.lang.ref
4 java.lang.reflect
5 java.math, java.net
6 java.security
7 java.security.cert
8 java.text, java.util
9 java.util.jar, java.util.zip
10 javax.microedition.io
4.4.5.C- Sanal Makinesi (CVM)
CVM, Java Sanal Makinesi Spesifikasyonlarına tamamen uysa da, cihazlar ve ağ
uygulamaları için iyileştirildiğinden gerçekleştirimi J2SE sanal makişnesinden tamamen
farklıdır. Garbage collection algoritmaları CVM’nin içine değişik garbage collection
algoritmaları yerleştirilebilsin diye sanal makineden tamamen ayılmıştır. Referans
gerçekleştirimi, sanal makinenin uzun garbage collection periyotlarına oranla daha kısa
garbage collection periyotları kullanır. Garbage collection daha sık ve kısa zaman
aralıklarında çalışır. Garbage collector daha dikkatlidir, garbage collection zamanında tüm
pointerları bilir böylece cpu devirlerinden fazla harcamamış olur. Platformlar arası
taşınabilirliği arttırmak için referans gerçekleştirimi multithreading’i sanal makinenin
içinde tanımlar. Sanal makinenin içinde gerçekleşen threadlere “green threads” denir.
“green thread”lerin kullanımı, multithreading için işletim sistemi bağımlılığı olmadığından
beri sanal makinenin taşınabilir olmasını sağlamıştır. Sınıf dosyası gerçeklenmesi cihazda
gerçekleşir. CDC kullanırken preverification adımı yoktur.
41
4.5.Profiller
4.5.1.MIDP Profili
MIDP(Mobile Information Device Profile) mevcut profiller arasında ilk ve en yaygın
olanıdır ve uygulamanın yaşam döngüsü, kullanıcı grafik arabirimleri, iletişim ağı ve kalıcı
depolama ile ilgili kütüphanelerini içerir. MIDP CLDC konfigürasyonunun üzerine oturur
ve günümüzde Motorola, Nokia, Ericsson ve RIM (Blackburry) gibi sector devleri
tarafından desteklenmektedir.
MIDP 1.0 ın desteklediği paketler:
1 java.io
2 java.lang,java.util
3 javax.microedition.io
4 javax.microedition.lcdui
5 javax.microedition.midlet
6 javax.microedition.rms
MIDP 2.0 ın desteklediği paketler:
1 java.io
2 java.lang
3 java.util
4 javax.microedition.io
5 javax.microedition.lcdui
6 javax.microedition.lcdui.game
7 javax.microedition.media
8 javax.microedition.media.control
9 javax.microedition.midlet, javax.microedition.pki
10 javax.microedition.rms
42
Bu profil Palm işletim sistemi(Palm OS) üzerinde de çalışabilir. Bu profili kullanan
cihazlar çok fazla kişiselleşmiş cihazlardır. Çoğu zaman bu cihazların kullanıcısı sadece
kullanıcıdır. Bu cihazların kullanıcı arayüzü için küçük ekranları, veri girişi için küçük
klavyeleri ve limitli veri depolama yetenekleri gibi kısıtlı kaynakları vardır.
Şekil 4.2: MIDP Kapasiteli Cihaz Mimarisi:
4.5.2.PDA Profili (PDAP)
Bu profil PDA-stilinde grafiksel kullanıcı arayüzüne ve dokunmatik ekrana sahip
kullanıcı arayüzü ve veri depolama yeteneklerine sahip kişisel dijital ajandaların
gerekliliklerini karşılamak içindir.
4.5.3.Kuruluş Profili (Foundation Profile)
Kuruluş profili grafiksel kullanıcı arayüzü, veri depolama, dağıtık Java ağ bağlantısı
gibi özellikler sağlayan CDC profiline bir taban gibi hizmet eder. Taban profili olarak
işlevlerinin yanında yüksek bant genişliği ve fazla bağlantı kuran cihazlar için zengin bir
ağ desteği sağlar. Bu profil, kişisel bilgisayarlardan daha küçük cihazlar için diğer
profillerle kullanılarak daha zengin bir uygulama ortamı sağlar.
43
4.5.4.Kişisel Profil (Personal Profile)
Kişisel profil pek çok kişisel Java API’leri için yeni bir yurttur. Cep bilgisayarlarını
hedef alan kişisel-Java API’leri J2ME mimarisine uyacak şekilde yeniden oluşturuldu.
Kişisel java CDC’nin içinde Kuruluş Profili ve Kişisel Profile ayrıldı. Kişisel profile ek
olarak JavaPhone ve JavaTV API’leri eklendi.
CDC tabanlı bazı profiller ve ilişkileri:
Şekil 4.3: CDC tabanlı bazı profiller ve ilişkileri:
4.5.5.RMI Profili
RMI profili CDC uzayındaki uygulamalar için dağıtık bir destek sağlar. Bu profil
uzak metod çağırımlarının parametrelerine ve dönüş değerlerine bir altyapı sağlar. Kablo
protokolü olan JPMP (Java Remote Method Protocol) desteklenmelidir. Aşağıdaki paketler
RMI profilinin içinde yer almaz:
• java.rmi.server.disableHttp
• java.rmi.activation.port
• java.rmi.loader.packagePrefix
• java.rmi.registry.packagePrefix
• java.rmi.server.packagePrefix
44
4.5.6.Kişisel Temel Profil (Personal Basis Profile)
Bu profil CDC konfigürasyonunda ve kuruluş profilinde çalışan cihazların grafiksel
yetenekleri için temel bir seviye sağlar. Ayrıca kişisel profiling grafiksel yetenekleri için
temel oluşturur.
4.5.7.Multimedya Profili (Multimedia Profile)
Bu profil ses ve diğer medya için CLDC ve CDC konfigürasyonları için temel
multimedia desteği sağlar. Java Media Framework’ün fikirleri benimsenmiştir fakat bu
profil JMF ile uyumlu değildir. Multimedya profili diğer J2ME profilleriyle kullanılmak
üzere seçimlik geliştirilmiştir.
4.5.8.Oyun Profili (Gaming Profile)
Bu profil J2ME cihazları için oyun desteği sağlar. CDC konfigürasyonu bu profiling
hedef ortamıdır. Diğer J2ME profilleriyle kullanılabilecek seçimlik bir profildir.
Şekil 4.3: J2ME Konfigürasyon ve Profil Haritası:
45
5.MIDP PROGRAMLAMA
Cep telefonları, kişisel dijital ajandalar gibi küçük kapasiteli araçlarda uygulamalar
“MIDP” profili kullanılarak, “javax.microedition.midlet.MIDLET” sınıfı genişletilerek
oluşturulur. Bu sınıf, araçta bulunan Uygulama Yönetim Yazılımı ile MIDP uygulamaları
arasında bir arayüz gibi davranır.
MIDP uygulamaları oluşturulurken, başlangıç noktası bir MIDlet’tir.
5.1.MIDP Uygulaması Geliştirme
5.1.1.MIDlet Nedir?
MIDlet, MIDP uygulamalarının temel noktasını oluşturmak için yaratılan soyut bir sınıftır.
MIDlet sınıfı, “javax.microedition.MIDlet” paketi içinde yer alır. Bu nedenle gerçekleştirilmek
istenen bir MIDlet’te aşağıda verilen kod parçaları mutlaka yer almalıdır.
import javax.microedition.midlet.MIDlet;
public class MerhabaDunya extends MIDlet {
}
Eğer bir metin kutusu görüntülenmek istenirse sınıf içinde bir “constructor” tanımlanmalı
ve metin kutusunun tanımlanma kodu da “constructor”ın içinde yer almalıdır.
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
public class MerhabaDunya extends MIDlet {
private TextBox textbox;
public MerhabaDunya() {
textbox = new TextBox("", "Hi Small World!", 20, 0);
}
}
MIDlet’ler “startApp()”, “pauseApp()” ve “destroyApp(boolean b)” olmak üzere üç tane
önemli metot içerirler. MIDlet başlatıldığı zaman, cihazdaki uygulama yönetim servisi ilk olarak
“startApp()” metodunu çağırır.
46
1. startApp() : MIDlet’in yaşam döngüsü boyunca defalarca kez çağırılabilir.
İlkleme işlemlerinin gerçekleştirildiği bir metot değildir. Uygulamanın çalıştırılacağı
cihazda, bir MIDlet’in başlatılacağı mesajı alınınca Uygulama Yönetim Servisi bu metodu
çağırır. Metot içinde metin kutusunun aktif duruma getirildiği bir örnek kod parçası
aşağıda verilmiştir:
public void startApp() {
Display.getDisplay(this).setCurrent(textbox);
}
2. pauseApp() : Kullanıcı veya cihaz, çalışan uygulamayı kesip başka bir görev
gerçekleştirmek istediğinde cihaz tarafından çağırılan bir metottur. Bu metod
çağırıldığında MIDlet “duraklatılmış” duruma geçer.
Eğer ekranda sadece bir metin kutusu gösterilecekse “pauseApp()” metodu boş olarak
gerçekleştirilebilir.
public void pauseApp() {
}
3. destroyApp(boolean b) : Kullanıcı uygulamayı kapatmak istediğinde veya
sistem (bir nedenden dolayı) uygulamanın kapatılmasını isterse bu metod çağırılır. Bu
metod, çalışmakta olan uygulamaya kullandığı kaynak varsa, bunları düzenlemesi için
olanak tanır. Parametre olarak “TRUE” değerini alırsa, uygulamanın kaynakları
temizlemekten başka çaresi yoktur. Parametre olarak “FALSE” değerini alırsa, uygulama
çalışmaya devam etmek için “MIDletStateChangeException” fırlatabilir. Eğer metoda
parametre geçirilmezse uygulamanın temizlemesi gereken kaynağı yok demektir.
Ekranda sadece bir metin kutusu gösterileceğinden ve herhangi bir kaynak temizlemesine
gerek duyulmayacağından “destroyApp(boolean b)” metodu da boş olarak gerçekleştirilebilir.
public void destroyApp(boolean unconditional) { }
Basit bir MIDlet için temel olarak yukarıda bahsedilen üç metod yeterlidir. Bu üç metodun
kullanıldığı “MerhabaDunya” MIDlet’inin kodu aşağıda verilmiştir:
MerhabaDunya.java
import javax.microedition.midlet.MIDlet;
47
import javax.microedition.lcdui.*;
public class MerhabaDunya extends MIDlet {
private TextBox textbox;
public MerhabaDunya() {
textbox = new TextBox("", "Hi Small World!", 20, 0);
}
public void startApp() {
Display.getDisplay(this).setCurrent(textbox);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
Bir MIDlet yaratıldığı veya başlatıldığı zaman “Duraklatılmış” durumdadır. Eğer herhangi
bir aykırı durum oluşursa MIDlet “Sonlandırılmış” duruma geçer. MIDletler “Aktif” durumdan
“Duraklatılmış” duruma, “pauseApp()” metodunun işletilmesi tamamlandıktan sonra geçerler.
“Sonlandırılmış” duruma ise “destroyApp()” metodu tamamlanınca geçilir.
Şekil 5.1: MIDlet yaşam döngüsü:
5.1.2.Uygulamanın Derlenmesi
Derleme işleminin gerçekleştirilebilmesi için “MIDP Geliştirme Ortamı”na ihtiyaç vardır.
Sun’ın MIDP ürünü “http://java.sun.com” internet adresinden indirilebilir. MIDP, “midp-fcs”
diznine kaydedilir. MIDP kaydedildikten sonra bazı ortam değişkenlerine değer verilmesi
gerekmektedir:
MIDP=midp-fcs
MIDPClasses=midp-fcsclasses
48
MIDPTools=midp-fcsbin
Ortam değişkenlerine değerleri verildikten sonra derleme işlemine geçilebilir.
Standart “javac” derleme komutu kullanılarak, derleme işlemi yapılmaktadır. “javac”,
J2SE uygulamalarını derlemek için kullanılmaktadır; ancak, J2ME uygulamalarının da “javac”
komutu ile derlenmesi için “-bootclasspath” opsiyonu ile kullanılmalıdır. “-bootclasspath”
opsiyonu kullanılarak, derleyicinin J2ME kütüphanesini kullanması sağlanır.
J2ME uygulamalarının derlenmesi için;
>javac -g:none -bootclasspath %MIDPClasses% HiSmallWorld.java
komut satırı kullanılmalıdır.
“-g:none” opsiyonu kullanılarak, “*.class” dosyalarının hata ayıklama bilgilerini içermesi
önlenir. Bu opsiyon kullanılarak, “*.class” dosyalarının boyutları küçük tutulmaktadır.
“%MIDPClasses%” değişkeni, bir ortam değişkenidir. Bu değişken J2ME sınıflarının
bulunduğu dizini göstermektedir.
5.1.3.“Preverifying” İşleminin Gerçekleştirilmesi
Güvenlik nedenleri ile standart “Java Runtime Environment”, “class” dosyalarını belleğe
yüklemeden önce doğrulama işleminden geçirir. Bu doğrulama işlemi, “class” dosyasının
geçerli olup olmadığının anlaşılması için gerçekleştirilir.
J2ME cihazları, masaüstü bilgisayarlarına göre daha kısıtlı özelliklere sahip olduklarından
bazı J2ME sanal makineleri; “class” dosyalarının doğrulanma işlemini, standart Java sanal
makineden farklı şekilde yapmaktadır. J2ME cihazlarında, doğrulama işleminin tamamı cihaz
üzerinde yapılmaz. Her “class” dosyası, J2ME geliştirme ortamının sahip olduğu “preverify”
özelliği ile önceden doğrulanmalıdır. “Preverify” işlemi, tüm sınıfları doğrulama işleminden
geçirir ve sonrasında dosyalara doğrulandıklarını belirten özel bir değer ekler. Çalışma
zamanında ise J2ME sanal makinesi bu özel değerleri kontrol eder. Eğer bu özel değer geçerli
ise, sanal makine sınıfı çalıştırabilir. Ancak; “class” dosyası özel değere sahip değilse sanal
makine aykırı bir durum olduğunu tespit eder ve sınıfın yükleme sürecini durdurur.
Önceden doğrulama işlemi “preverify.exe” dosyası çalıştırılarak yapılmaktadır. Bir
uygulamanın önceden doğrulanması için ;
>%MIDPTools%preverify -classpath %MIDPClasses%;. HiSmallWorld
49
komut satırı kullanılmaktadır. Önceden doğrulama işlemi sonucunda, “class” dosyaları
oluşturulur.
5.1.4.Uygulamanın Çalıştırılması
Sınıfları Derlenen ve doğrulama işlemi gerçekleştirilen uygulama çalıştırılmaya hazırdır.
Uygulamanın çalıştırılabilmesi için bir emülatöre ihtiyaç vardır. “MIDP Referans
Gerçekleştirimi” de bir emülatördür. Emülatörün çalıştırılabilir ismi, “midp” dir ve “midp-
fcsbin” dizini altında yer almaktadır. Uygulamanın çalıştırılabilmesi için aşağıdaki komut satırı
kullanılmaktadır:
>%MIDPTools%midp -classpath %MIDPClasses%;.output MerhabaDunya
Bu komut “-classpath” parametresi ile uygulamada bulunan sınıf dosyalarını çalıştırılan
“midp” ye geçirir. “.output” parametresi ise, önceden doğrulama işlemi sonucunda oluşmuş
olan “class” dosyalarının nerede kayıtlı olduklarını göstermek için kullanılır.
Şekil 5.2: Eğer 2.1.1 konusunda Verilen “MerhabaDunya.java” Uygulaması
Sorunsuz Bir Şekilde Çalışırsa Ekran Görüntüsü
Emülatör kapatıldıktan sonra komut ekranına aşağıdaki gibi çıktılar yazılmaktadır:
D:javaMerhabaDunya>midp-fcsbinmidp -classpath midp-fcsclasses;.output
50
MerhabaDunya
Execution completed successfully
8205 bytecodes executed
7 thread switches
204 classes loaded (149 bytes)
220 objects allocated (9572 bytes)
0 garbage collections
0 bytes collected
0 objects deferred in GC
0 (maximum) objects deferred at any one time
0 rescans of heap because of deferral overflow
0 pointer validations requiring heap scans
Current memory usage 9572 bytes
Heap size 300000 bytes
5.1.5.Uygulamaların JAR Dosyası Haline Getirilmesi
Birçok durumda, MIDP uygulamaları “JAR” dosyaları haline getirilir. Kullanılan ağ
protokolü ve onun içerdiği istemci-sunucu yazılımına bağlı olarak, belirli bir protokol üzerinden
birçok uygulama yüklemesi yapılırken JAR dosyaları daha verimlidir. Örneğin; HTTP protokolü
ile uygulama yüklenirken her sınıf dosyası için bir bağlantıya ihtiyaç duyulurken, JAR dosyası
için tek bağlantı yeterli olmaktadır.
Mevcut olan “class” dosyalarını kullanarak jar dosyası oluşturulurken;
>jar cf merhaba.jar -C .output MerhabaDunya.class
komut satırı işletilir.
“cf” parametresi, “jar” çalışabilir dosyasına “merhaba.jar” isimli bir yeni bir JAR dosyası
oluşturması gerektiğini belirtir. “-C” opsiyonu ise, “.output” dizini altındaki
“MerhabaDunya.class” dosyasına erişebilmeyi sağlar.
Uygulamayı, oluşturulan “merhaba.jar” dosyasından çalıştırabilmek için JAR dosyasına
yol tanımlamak gerekmektedir.
>%MIDPTools%midp -classpath %MIDPClasses%;.merhaba.jar
MerhabaDunya
51
Komut satırı işletilerek uygulamanın ilgili jar dosyasından çalışması sağlanmaktadır.
5.1.6.MIDlet Takımı Geliştirilmesi
Birçok MIDlet, bir MIDlet takımı kullanılarak gruplanabilir. Bir MIDlet takımı; tüm
MIDlet’leri içeren bir JAR dosyası, desteleyici sınıflar ve Uygulama Tanımlayıcı Dosyası’ndan
oluşur. Uygulama Tanımlayıcı Dosyası, MIDlet takımı hakkındaki bilgileri içeren metinsel bir
dosyadır. Bu dosyanın uzantısı “.jad” dır.
MIDlet’lerin takımların bir parçası olarak kullanılması, bazı yönlerden avantaj sağlar.
Örneğin, bir takımın içindeki MIDlet’ler cihazdaki kaynakları paylaşabilir.
Bir MIDlet takımı oluşturmak için birden fazla sayıda MIDlet sınıfına gerek vardır.
(Örneklerde basit olması açısından “MerhabaDunya1” ve “MerhabaDunya2” MIDlet’leri
kullanılmaktadır.) Öncelikle, MIDlet’ler ayrı ayrı derlenmeli ve doğrulama işleminden
geçirilmelidir.
>javac -g:none -bootclasspath %MIDPClasses% MerhabaDunya1.java
>%MIDPTools%preverify -classpath %MIDPClasses%;. MerhabaDunya1
>javac -g:none -bootclasspath %MIDPClasses% MerhabaDunya2.java
>%MIDPTools%preverify -classpath %MIDPClasses%;. MerhabaDunya2
Komut satırları işletildikten sonra MIDlet takımı oluşturmak için hazır duruma
gelinmektedir.
5.1.7.MIDlet Takımı Tanımlayıcı Dosyası
İlk adım, MIDlet takımı için tanımlayıcı bir dosya oluşturmaktır. Cihazdaki Java
Uygulama Yöneticisi, uygulamanın yaşam döngüsünü yönetirken bu tanımlayıcı dosyayı
kullanır. Java Uygulama Yöneticisi, uygulamaların indirilmesi, yüklenmesi, çalıştırılması ve
silinmesinden sorumludur veya bu işlemlerin yapılmasına katkıda bulunur.
Tanımlayıcı dosya da Java kaynak dosyaları ile aynı dizine kaydedilmelidir. Aşağıda
örnek bir tanımlayıcı dosyanın içeriği verilmiştir:
MIDlet-Name: MerhabaDunyaTakimi
MIDlet-Version: 1.0.0
MIDlet-Vendor: KTU, Istatistik ve Bilgisayar Bilimleri
MIDlet-Description: Ornek bir MIDlet takimi
MIDlet-Info-URL: http://www.ktu.edu.tr/
MIDlet-Jar-URL: http://localhost/merhaba.jar
52
MIDlet-Jar-Size: 3000
MicroEdition-Profile: MIDP-1.0
MicroEdition-Configuration: CLDC-1.0
MIDlet-1: Merhaba1, , MerhabaDunya1
MIDlet-2: Merhaba 2, , MerhabaDunya2
5.2.MIDP Kullanıcı Arayüz APIleri
Kaynakları kısıtlı olan cihazların, bellekleri ve ekran boyutları kısıtlı olduğundan
görüntüleme kapasiteleri de kısıtlıdır. Bu nedenden, MIDP uygulamalarında kullanıcı arayüzü
oluşturulurken J2SE’deki AWT sınıfı kullanılamaz. MIDP kendi kullanıcı arayüzü API’sine
sahiptir.
MIDP düşük seviyeli ve yüksek seviyeli olmak üzere iki tane kullanıcı arayüz API’si
içerir. Düşük seviyeli API “Canvas” soyut sınıfına dayanırken; yüksek seviyeli API’nin
kullandığı “Alert, Form, List, TextBox” sınıfları “Screen” soyut sınıfına dayanır. (Şekil 2.4:
MIDP kullanıcı arayüz tiplerinin sınıf diyagramı)
5.2.1.MIDP Ekran Kontrolü
MIDP’de cihazın ekran ve görüntüsünü yöneten “Display” nesnesi vardır. “Display”
nesnesi, düşük veya yüksek seviyeli API’ler için kullanıcı arayüzü elemanlarını ekrana çizmek
ve bunları ekranda görüntülemek için gereken metotları içerir
Şekil 5.4: MIDP Kullanıcı Arayüz Tiplerinin Sınıf Diyagramı
53
Cihazın ekranında kullanıcı arayüz nesnelerinin gösterilebilmesi için, bir “Displayable”
nesnesi diğer gösterilmek istenen kullanıcı arayüz nesnelerini içermelidir. Belirli bir zamanda,
sadece bir tane “Displayable” nesnesi gösterilebilir. Belirli bir zamanda gösterilen
“Displayable” nesnesinin hangisi olduğu “getCurrent()” metodu ile öğrenilebilir. Ekranda
gösterilen nesne ise “setCurrent(Displayable birSonrakiEkran)” metodu kullanılarak
değiştirilebilir.
5.2.2.Yüksek Seviyeli Kullanıcı Arayüz API’si
“Screen” sınıfı, tüm yüksek seviyeli “Displayable” nesnelerinin süper sınıfıdır. Alt
sınıfları iki farklı türde olabilir. Birinci türde, kullanıcı arayüz elemanı önceden tanımlanmış bir
tiptedir ve kullanıcıya bilgi görüntülemek için kullanılır. İkinci türde ise, uygulamalar ekrandan
grafiksel eleman eklenmesine veya çıkarılmasına izin verirler(bir “Form” nesnesindeki metin
kutusuna ad_soyad girilmesi gibi).
5.2.2.1.Form
Bir “Form”, “items” adı verilen onay kutusu, seçenek kutusu, yazı alanı gibi grafiksel
elemanları içerebilir. Uygulamalar, “Displayable” nesnesinin içeriğini ancak görünür
olmadıkları zaman değiştirebilir.
5.2.2.2.Alert
“Alert”, bir mesaj çeşididir. Kullanıcıya bilgi vermek için kullanılır. Cihaz tarafından
belirlenmiş süre kadar bu mesaj ekranda görüntülenir. Cihaz tarafından belirlenen süreyi
kullanmak yerine, uygulama içerisinde mesajın görüntüleneceği süre milisaniye cinsinden
belirtilebilir.
Alert (String title);
Alert (String title, String messageString, Image alertImage,AlertType alertType);
5.2.2.3.List
Kullanıcı girişlerinde sadece karakter girişleri yeterli olmayabilir. Bazı durumlarda
kullanıcıya belirli değerleri seçtirmek isteyebiliriz iste böyle durumlarda List sınıfını
kullanıyoruz. List bir dizi değer içerisinden bir ve bir kaçını seçmemize yarayan UI (User
Interface) bileşenidir
List yapısı aşağıdaki gibidir.
List (String title, int listType);
54
List sınıfının iki adet kurucu metodu vardır. Bunlar title ve listType tır.
“title List” üzerinde görünecek baslık listType List in biçimi belirtir.
Örnek bir List tanımlayacak olursak
List liste= new List("Ürünler",1);
Yukarıdaki örnekte liste adında ve List sınıfı tipinde bir nesne yarattık bu nesneye iki adet
kurucu metot parametresi gönderdik “Ürünler” ve 1 bu parametrelere göre liste nesnemizin
baslığı Ürünler tipide 1 olacaktır.
List içerisine veri eklemek için List.append() metodu kullanılır. Kullanım sekli aşağıdaki
gibidir.
List.append(String stringPart, Image imagePart);
append() metodu sırasıyla iki adet parametre alır. Bunlar yazı (String) içeriği ve resim
(Image) içeriği. Image yaratmak zorunlu değildir eğer elimizde bir resim yok ise Image nesnesi
olarak null atayabiliriz. Bu durumda ekranda herhangi bir resim görünmeyecektir.
Kodumuzu örneklendirecek olursak.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class OrnekMIDlet extends MIDlet {
public void startApp() { List liste= new List("Ürünler",List.EXCLUSIVE);
liste.append("Bilgisayar", null);
liste.append("Telefon", null);
liste.append("DVD", null);
Display ekran=Display.getDisplay(this);
ekran.setCurrent(liste);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
55
Göründüğü gibi üç adet ürün listelenmiş ve bunlardan birini seçme hakkı sağlanmıştır. Üst
bölümde ise Ürünler baslığı bulunmaktadır. Image olarak null verdiğimiz için listemizde
herhangi bir resim görünmüyor. Bunu resimli olarak göstermek istersek kodumuz aşağıdaki gibi
olmalıdır.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class OrnekMIDlet extends MIDlet {
public void startApp() {
Image resim= null;
try{
resim=Image.createImage("/resim.jpg");
}
catch(Exception e){
System.out.println("Resim olusturulamadı");
}
List liste= new List("Ürünler",List.EXCLUSIVE);
liste.append("Bilgisayar", resim);
liste.append("Telefon", resim);
liste.append("DVD", resim);
Display ekran=Display.getDisplay(this);
ekran.setCurrent(liste);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü
Cep telefonu ile bilgisayar kontrolü

Contenu connexe

Similaire à Cep telefonu ile bilgisayar kontrolü

DDoS Benzetimi Projesi Raporu
DDoS Benzetimi Projesi RaporuDDoS Benzetimi Projesi Raporu
DDoS Benzetimi Projesi RaporuOğuzcan Pamuk
 
Haberleşme teknikleri
Haberleşme teknikleriHaberleşme teknikleri
Haberleşme teknikleriErol Dizdar
 
Network101 murat arslan
Network101 murat arslanNetwork101 murat arslan
Network101 murat arslanMURAT ARSLAN
 
Prof.dr. halit hami oz 12-sağlık kurumlarında bilgi sistemi-tele radyoloji-pa...
Prof.dr. halit hami oz 12-sağlık kurumlarında bilgi sistemi-tele radyoloji-pa...Prof.dr. halit hami oz 12-sağlık kurumlarında bilgi sistemi-tele radyoloji-pa...
Prof.dr. halit hami oz 12-sağlık kurumlarında bilgi sistemi-tele radyoloji-pa...Prof. Dr. Halit Hami Öz
 
Mobil i̇letisimteknolojileri 2hafta
Mobil i̇letisimteknolojileri 2haftaMobil i̇letisimteknolojileri 2hafta
Mobil i̇letisimteknolojileri 2haftaNilgun Ozdamar
 
Mobil i̇şletim sistemlerinde güvenlik
Mobil i̇şletim sistemlerinde güvenlikMobil i̇şletim sistemlerinde güvenlik
Mobil i̇şletim sistemlerinde güvenlikFuat Savaş
 
Delphi7(kitap)
Delphi7(kitap)Delphi7(kitap)
Delphi7(kitap)kilicorhan
 
Mobil Uygulama Güvenliği (Mobile Security)
Mobil Uygulama Güvenliği (Mobile Security)Mobil Uygulama Güvenliği (Mobile Security)
Mobil Uygulama Güvenliği (Mobile Security)Cihan Özhan
 
Internet programcılığı 4
Internet programcılığı 4Internet programcılığı 4
Internet programcılığı 4Erol Dizdar
 
Prof.dr. halit hami oz 02-hastane otomasyonu-genel koşullar
Prof.dr. halit hami oz 02-hastane otomasyonu-genel koşullarProf.dr. halit hami oz 02-hastane otomasyonu-genel koşullar
Prof.dr. halit hami oz 02-hastane otomasyonu-genel koşullarProf. Dr. Halit Hami Öz
 
BT Günlüğü Nisan 2021 Dergisi
BT Günlüğü Nisan 2021 Dergisi BT Günlüğü Nisan 2021 Dergisi
BT Günlüğü Nisan 2021 Dergisi Eylül Medya
 
Tcp ip iletim katmanı
Tcp ip iletim katmanıTcp ip iletim katmanı
Tcp ip iletim katmanıOnur Şaner
 
Bulut Bilişim 2015
Bulut Bilişim 2015Bulut Bilişim 2015
Bulut Bilişim 2015Yasemin Eray
 
Yerel Alan Ağları - Bilgi Sistemleri Alım Yöntemleri
Yerel Alan Ağları - Bilgi Sistemleri Alım YöntemleriYerel Alan Ağları - Bilgi Sistemleri Alım Yöntemleri
Yerel Alan Ağları - Bilgi Sistemleri Alım YöntemleriAnka Bilişim Teknolojileri
 
2020 21204 unv_muhendislik_fakultesi_brosur-5952701f-68f3-442a-83fc-54e5ef868627
2020 21204 unv_muhendislik_fakultesi_brosur-5952701f-68f3-442a-83fc-54e5ef8686272020 21204 unv_muhendislik_fakultesi_brosur-5952701f-68f3-442a-83fc-54e5ef868627
2020 21204 unv_muhendislik_fakultesi_brosur-5952701f-68f3-442a-83fc-54e5ef868627Mehmet Ayaz
 

Similaire à Cep telefonu ile bilgisayar kontrolü (20)

DDoS Benzetimi Projesi Raporu
DDoS Benzetimi Projesi RaporuDDoS Benzetimi Projesi Raporu
DDoS Benzetimi Projesi Raporu
 
Haberleşme teknikleri
Haberleşme teknikleriHaberleşme teknikleri
Haberleşme teknikleri
 
Network101 murat arslan
Network101 murat arslanNetwork101 murat arslan
Network101 murat arslan
 
Prof.dr. halit hami oz 12-sağlık kurumlarında bilgi sistemi-tele radyoloji-pa...
Prof.dr. halit hami oz 12-sağlık kurumlarında bilgi sistemi-tele radyoloji-pa...Prof.dr. halit hami oz 12-sağlık kurumlarında bilgi sistemi-tele radyoloji-pa...
Prof.dr. halit hami oz 12-sağlık kurumlarında bilgi sistemi-tele radyoloji-pa...
 
Mobil Platformlar ve Uygulamalar
Mobil Platformlar ve UygulamalarMobil Platformlar ve Uygulamalar
Mobil Platformlar ve Uygulamalar
 
Kablosuz ortam
Kablosuz ortamKablosuz ortam
Kablosuz ortam
 
Mobil i̇letisimteknolojileri 2hafta
Mobil i̇letisimteknolojileri 2haftaMobil i̇letisimteknolojileri 2hafta
Mobil i̇letisimteknolojileri 2hafta
 
Mobil i̇şletim sistemlerinde güvenlik
Mobil i̇şletim sistemlerinde güvenlikMobil i̇şletim sistemlerinde güvenlik
Mobil i̇şletim sistemlerinde güvenlik
 
Delphi7(kitap)
Delphi7(kitap)Delphi7(kitap)
Delphi7(kitap)
 
Mobil Uygulama Güvenliği (Mobile Security)
Mobil Uygulama Güvenliği (Mobile Security)Mobil Uygulama Güvenliği (Mobile Security)
Mobil Uygulama Güvenliği (Mobile Security)
 
ZAFER M.SEN CV
ZAFER M.SEN CVZAFER M.SEN CV
ZAFER M.SEN CV
 
DCS Interview-ST
DCS Interview-STDCS Interview-ST
DCS Interview-ST
 
Internet programcılığı 4
Internet programcılığı 4Internet programcılığı 4
Internet programcılığı 4
 
Prof.dr. halit hami oz 02-hastane otomasyonu-genel koşullar
Prof.dr. halit hami oz 02-hastane otomasyonu-genel koşullarProf.dr. halit hami oz 02-hastane otomasyonu-genel koşullar
Prof.dr. halit hami oz 02-hastane otomasyonu-genel koşullar
 
BT Günlüğü Nisan 2021 Dergisi
BT Günlüğü Nisan 2021 Dergisi BT Günlüğü Nisan 2021 Dergisi
BT Günlüğü Nisan 2021 Dergisi
 
Kablosuz ağlar
Kablosuz ağlarKablosuz ağlar
Kablosuz ağlar
 
Tcp ip iletim katmanı
Tcp ip iletim katmanıTcp ip iletim katmanı
Tcp ip iletim katmanı
 
Bulut Bilişim 2015
Bulut Bilişim 2015Bulut Bilişim 2015
Bulut Bilişim 2015
 
Yerel Alan Ağları - Bilgi Sistemleri Alım Yöntemleri
Yerel Alan Ağları - Bilgi Sistemleri Alım YöntemleriYerel Alan Ağları - Bilgi Sistemleri Alım Yöntemleri
Yerel Alan Ağları - Bilgi Sistemleri Alım Yöntemleri
 
2020 21204 unv_muhendislik_fakultesi_brosur-5952701f-68f3-442a-83fc-54e5ef868627
2020 21204 unv_muhendislik_fakultesi_brosur-5952701f-68f3-442a-83fc-54e5ef8686272020 21204 unv_muhendislik_fakultesi_brosur-5952701f-68f3-442a-83fc-54e5ef868627
2020 21204 unv_muhendislik_fakultesi_brosur-5952701f-68f3-442a-83fc-54e5ef868627
 

Cep telefonu ile bilgisayar kontrolü

  • 1. 1 T.C. KARADENİZ TEKNİK ÜNİVERSİTESİ FEN EDEBİYAT FAKÜLTESİ İSTATİSTİK VE BİLGİSAYAR BİLİMLERİ BÖLÜMÜ BİTİRME ÇALIŞMASI KEMAL OLÇA TRABZON 2010
  • 2. 2 KARADENİZ TEKNİK ÜNİVERSİTESİ FEN EDEBİYAT FAKÜLTESİ İSTATİSTİK VE BİLGİSAYAR BİLİMLERİ BÖLÜMÜ CEP TELEFONU İLE BİLGİSAYAR KONTROLÜ 180702 Kemal OLÇA Danışman : Yrd. DOÇ.DR. Halil İbrahim ŞAHİN Üye : Yrd.DOÇ.DR. Türkan E. DALKILIÇ Üye : Yrd.DOÇ.DR. Zafer KÜÇÜK Yedek Üye : Yrd.DOÇ.DR. Orhan KESEMEN TRABZON 2010
  • 3. 3 ÖZET Yapılan bu çalışmada mobil uygulama alanında en yaygın teklonoji olan J2ME (Java 2 Micro Edition) ve Bluetooth teklonojisi incelenmiştir. Ayrıca günümüzdeki mobil cihazlar ve kablosuz ağ teknolojileri hakkında bilgi verilmiştir. Proje olarak bilgisayarın fare ve klavyesinin cep telefonu üzerinden Bluetooth aracılığıyla kontrol edilmesi sağlanmıştır.
  • 4. 4 ÖNSÖZ Günümüzde kablosuz iletişim ve mobil uygulamaların popülaritesi her geçen gün artmaktadır. Mobil cihazların taşınabilir olması ve kablosuz ağlara bağlanabilme yeteneğinin de eklenmesi sonucu, günlük hayatımızda ve iş hayatımızda bizlere esneklik ve güç sağlamaktadır. Bize sağlamış olduğu bu artılardan dolayı çok çeşitli mobil cihazların üretimine de beraberinde getirmiştir. J2ME (Java 2 Micro Edition), mobil cihazlara yazılım geliştirmede en çok kullanılan programlama dillerinden biridir. Java da geliştirilen bir uygulamanın farklı platformlarda çalışabilme özelliği sayesinde bir çok cep telefonunda çalışabilecek uygulamalar yazılmasına olanak sağlamaktadır. Kablosuz iletişimde ise en çok kullanılan teknoloji ise bluetooth teknolojisidir. Bluetooth, kısa mesafede kablosuz iletişim ortamını bizlere sunmaktadır. Bilgisayar, klavye, PDA, cep telefonu, yazıcı v.s sayısal giriş/çıkış birimlerinin ara bağlantı olmadan ana sisteme bağlanmasını sağlayan bir teknolojidir. Kablosuz teknolojilerin sağladığı avantajlar ve bu alanda yapılan çalışmalar gelecekte her şeyin mobil teknolojiler üzerinde gerçekleştirileceğini göstermektedir. Dolayısıyla mobil cihazlara yazılım geliştirme giderek popülerlik kazanmakta ve bu ihtiyaç gün geçtikçe artmaktadır. Bu yüzden bitirme çalışmamı mobil uygulamalar ve kablosuz iletişim teknolojisinin bir parçası olan bluetooth üzerinde yapma kararını aldım. Çalışmalarımın sonucunda mobil uygulama geliştirme ve bluetooth cihazına erişim kısmında birçok deneyim edindim. Bu nedenle projenin teoride ve uygulamada bir çok katkısının olduğunu söyleyebilirim. Çalışmalarım sırasında kaynak sağlayan Yrd. Doç Dr. Hüseyin PEHLİVAN’a, üniversitedeki eğitim ve öğretim hayatımda destek olan Yrd. Doç Dr. Zafer KÜÇÜK, Yrd. Doç. Dr. Halil İbrahim ŞAHİN ve diğer bölüm hocalarıma ve hayatım boyunca bana destek olan aileme teşekkürlerimi sunarım.
  • 5. 5 SİMGELER VE KISALTMALAR API: Application Programming Interface AWT: Abstract Windowing/Windows Toolkit CDC: Connected Device Configuration CLDC: Connected, Limited Device Configuration CVM: C Virtual Machine DOM: Document Object Model FP: Foundation Profile HTML: Hypertext Markup Language HTTP: Hypertext Transfer Protocol IDL: Interface Definition Language J2SE: Java 2 Standart Edition J2EE : Java 2 Enterprice Edition J2ME: Java 2 Micro Edition JAD: Java Application Descriptor JAR: Java Archieve JAXP: Java API for XML Processing JDBC: Java Database Connectivity JDK: Java Development Kit JFC: Java Foundation Classes JIT: Just In Time JMF: Java Media Framework JRE: Java Runtime Environment JRMP: Java Remote Method Protocol JVM : Java Virtual Machine JVMS: Java Virtual Machine Specification KVM: Kilobyte Virtual Machine MIDP: Mobile Information Device Profile ODBC: Open Database Connectivity OEM: Original Equipment Manufacturer PBP: Personel Basis Profile
  • 6. 6 PDA: Personel Digital Assistant PDAP: PDA Profile PP: Personel Profile RDBMS: Relational Database Management System RMI: Remote Method Invocation RMS: Kayıt Yönetim Sistemi SAX: Simple API for XML SGML: Standart Generalized Markup Language SMS: Short Message Service VM: Virtual Machine WAP: Wireless Access Protocol WML: Wireless Markup Language XML: Extensible Markup Language
  • 7. 7 İçindekiler ÖZET........................................................................................................................... 1 ÖNSÖZ........................................................................................................................ 4 SİMGELER VE KISALTMALAR .......................................................................... 5 1. GİRİŞ .................................................................................................................... 11 2. MOBIL TEKNOLOJILER................................................................................ 12 2.1. PDA (Personal Digital Assistant) ............................................................................................. 12 2.2.Tablet PC’ler............................................................................................................................. 13 2.3. Mobil Telefonlar...................................................................................................................... 13 2.4.Mobil İşletim Sistemleri ........................................................................................................... 15 2.4.1.Symbian OS........................................................................................................................... 15 2.3.2.Windows CE .......................................................................................................................... 16 2.3.3.PalmOS.................................................................................................................................. 17 3.KABLOSUZ AĞ TEKNOLOJİLERİ................................................................. 19 3.1. Kızılötesi(IrDA) Teknolojisi...................................................................................................... 19 3.2.Bluetooth Teknolojisi ............................................................................................................... 20 3.2.1.Bluetooth Protokol Katmanları.......................................................................................... 20 3.2.2.Bluetooth’un Temel Özellikleri .......................................................................................... 22 3.2.2.1.Birlikte Çalışabilirlik......................................................................................................... 22 3.2.2.2.Kısa Mesafe Kablosuz Haberleşme Yapısı ....................................................................... 22 3.2.2.3.Açık Standart Yapısı ........................................................................................................ 22 3.2.2.4.Ses ve Veri Haberleşmesi................................................................................................ 22 3.2.2.5.Güvenlik.......................................................................................................................... 22 3.2.3.Bluetooth Teknolojik Alt Yapısı.......................................................................................... 23 3.2.3.1.Bluetooth Radyo Güç Sınıfları......................................................................................... 23 3.2.3.2.Master – Slave Yapısı...................................................................................................... 23 3.2.3.3.Bluetooth Ağ Yapısı......................................................................................................... 24 3.2.3.3.1.Piconet......................................................................................................................... 24 3.2.3.3.1.Scatternet .................................................................................................................... 25 3.3.Wi-Fi (Wireless Fidelity)Teknolojisi /IEEE 802.11...................................................................... 26 3.4.GSM ......................................................................................................................................... 27 3.5.GPRS ........................................................................................................................................ 27
  • 8. 8 4. J2ME(JAVA 2 MICRO EDITION) PLATFORMU......................................... 28 4.1. Java Dilinin Kısa Bir Tanıtımı.................................................................................................... 28 4.1.1. Java Mimarisi ....................................................................................................................... 28 4.1.2.Java 2 .................................................................................................................................... 29 4.2.Java 2 Micro Edition (J2ME)...................................................................................................... 31 4.2.Neden J2ME’ye Gerek Duyuyoruz?........................................................................................... 34 4.3.Konfigürasyon ve Profiller........................................................................................................ 35 4.4.Konfigürasyonlar...................................................................................................................... 37 4.4.1.CLDC Konfigürasyonu......................................................................................................... 37 4.4.2.Kilobayt Sanal Makine (KVM) ............................................................................................ 38 4.4.3.Sınıf Dosyalarının Doğrulanması........................................................................................ 39 4.4.4.CDC Konfigürasyonu .......................................................................................................... 39 4.4.5.C- Sanal Makinesi (CVM).................................................................................................... 40 4.5.Profiller .................................................................................................................................... 41 4.5.1.MIDP Profili........................................................................................................................ 41 4.5.2.PDA Profili (PDAP).............................................................................................................. 42 4.5.3.Kuruluş Profili (Foundation Profile) ................................................................................... 42 4.5.4.Kişisel Profil (Personal Profile)........................................................................................... 43 4.5.5.RMI Profili.......................................................................................................................... 43 4.5.6.Kişisel Temel Profil (Personal Basis Profile) ....................................................................... 44 4.5.7.Multimedya Profili (Multimedia Profile)............................................................................ 44 4.5.8.Oyun Profili (Gaming Profile)............................................................................................. 44 5.MIDP PROGRAMLAMA.................................................................................... 45 5.1.MIDP Uygulaması Geliştirme.................................................................................................... 45 5.1.1.MIDlet Nedir? .................................................................................................................... 45 5.1.2.Uygulamanın Derlenmesi .................................................................................................. 47 5.1.3.“Preverifying” İşleminin Gerçekleştirilmesi ....................................................................... 48 5.1.4.Uygulamanın Çalıştırılması ................................................................................................ 49 5.1.5.Uygulamaların JAR Dosyası Haline Getirilmesi .................................................................. 50 5.1.6.MIDlet Takımı Geliştirilmesi............................................................................................... 51 5.1.7.MIDlet Takımı Tanımlayıcı Dosyası .................................................................................... 51 5.2.MIDP Kullanıcı Arayüz APIleri................................................................................................... 52 5.2.1.MIDP Ekran Kontrolü ......................................................................................................... 52
  • 9. 9 5.2.2.Yüksek Seviyeli Kullanıcı Arayüz API’si............................................................................... 53 5.2.2.1.Form ............................................................................................................................... 53 5.2.2.2.Alert................................................................................................................................ 53 5.2.2.3.List .................................................................................................................................. 53 5.2.2.4.Choice Interface.............................................................................................................. 56 5.2.2.5.TextBox........................................................................................................................... 56 5.2.2.6.Ticker ................................................................................................................................. 57 5.2.2.7.Items............................................................................................................................... 57 5.2.3.Düşük Seviyeli Kullanıcı Arayüz APIsi................................................................................. 57 5.2.3.1.Canvas............................................................................................................................. 57 5.2.3.2.Graphics.......................................................................................................................... 58 5.2.3.3.Images ............................................................................................................................ 58 5.2.3.4.Fonts............................................................................................................................... 58 5.2.4.Düşük Seviyeli Kullanıcı Arayüzü Örneği............................................................................ 58 5.3.MIDP’de Kullanıcı Etkileşimlerinin Yönetilmesi ........................................................................ 59 5.3.1.Yüksek Seviyeli Kullanıcı Etkileşimlerinin Yönetilmesi ....................................................... 59 5.3.1.1.ItemStateListener ........................................................................................................... 59 5.3.1.2.Komutlar (Commands).................................................................................................... 59 5.3.1.3.CommandListener .......................................................................................................... 60 5.3.2.Düşük Seviyeli Kullanıcı Etkileşimlerinin Yönetilmesi ........................................................ 60 5.3.3.Etkileşimlerin Yönetildiği Yüksek Seviyeli Kullanıcı Arayüzü Örneği .................................. 60 6.BLUETOOTH STACK VE YAPISI ................................................................... 66 6.1.Bluetooth Stack........................................................................................................................ 66 6.2.Bluetooth Stack’ın Katmanları.................................................................................................. 66 6.3.Bluetooth Stack Profilleri ......................................................................................................... 67 6.3.1.Generic Access Profili (GAP) .............................................................................................. 68 6.3.2.Service Discovery Application Profile (SDAP) .................................................................... 68 6.3.3. Serial Port Profile.............................................................................................................. 68 7.JAVA VE OBEX ................................................................................................... 69 7.1.OBEX ........................................................................................................................................ 69 7.2.OBEX Object Model.................................................................................................................. 70 7.3.OBEX Oturum Protokolü .......................................................................................................... 70
  • 10. 10 7.4.JSR82’deki OBEX API’leri .......................................................................................................... 72 7.4.1.Javax.obex.ClientSession ................................................................................................... 72 7.4.2.Javax.obex.HeaderSet........................................................................................................ 72 7.4.3.Javax.obex.Operation ........................................................................................................ 73 7.4.4.Javax.obex.ResponseCodes ............................................................................................... 73 7.4.5.javax.obex.ServerRequestHandler..................................................................................... 74 7.4.6.javax.obex.SessionNotifier ................................................................................................ 74 8.PROJE TASARIMI VE GERÇEKLEŞTIRILMESI ........................................ 76 8.1. Proje Hakkında........................................................................................................................ 76 8.2. Proje Mimarisi......................................................................................................................... 76 8.3. Uygulamada Kullanılan Classlar ve İşlevleri ............................................................................. 78 8.3.1. Cep Telefonunda Oluşturulan J2ME Uygulaması.............................................................. 78 8.3.1.1.İstemci J2ME Uygulamasının Cep Telefonuna Yüklenmesi............................................ 80 8.3.2. PC Tarafında Oluşturulan J2SE Uygulaması ...................................................................... 81 8.4. İstemci ve Server Uygulamalarının Çalıştırılması Kullanımı...................................................... 82 8.4.1.İstemci Cep Telefonu Uygulamasının Çalıştırılması ve Kullanımı....................................... 82 8.4.2.PC Taraflı Server Uygulamasının Çalıştırılması ve Kullanımı .............................................. 84 9. SONUÇ.................................................................................................................. 86 10. KAYNAKLAR ................................................................................................... 87
  • 11. 11 1. GİRİŞ Bilgisayar veya diğer elektronik cihazlarda veri iletiminde en önemli noktalardan birisi verinin iletimini gerçekleştirirken kullandığımız elektriksel işaretlerin taşındığı iletim ortamıdır. Bu iletim ortamı kablo üzerinden sağlanabildiği gibi kablosuz olarak da gerçekleştirilebilmektedir. Kabloya dayalı uygulamalarda uç sistemler arasında birebir kablo bağlantısı mevcuttur. Kullanılan kablo tipi mesafeye ve diğer başka şartlara göre değişebilir. Örneğin, UTP/STP veya fiber optik kablo günümüzde çok kullanılan kablo türleridir. Diğer taraftan kablosuz ağ bağlantısı kullanıldığında sistemler arasında herhangi bir fiziksel kablo bağlantısı olmadan veri alışverişi gerçekleşmektedir. Günümüzde çok değişik amaçlı kablosuz ağ erişimlerine ihtiyaç duyulmaktadır. Örneğin hiçbir kablo bağlantısı yapılmadan bir LAN kurulabilir veya bir bilgisayar sistemiyle fare, yazıcı, PDA, cep telefonu gibi cihazlar kablosuz şekilde birbirine haberleşebilir. Araya kablo çekilmesinin zor olduğu, maliyetin yüksek olduğu veya izin verilmediği durumlarda iki sistem arasına noktadan noktaya kablosuz bağlantı yapılabilir. Kablosuz ağ teknolojilerinin band genişlikleri aynı olmasa da iki yönlü iletişim akla gelir. Kabloya dayalı sistemlerde olduğu gibi kablosuz sistemler sistemler arasındada veri aktarımına ek olarak kontrol işaretleri ve onaylama gibi bilgileride aktarmamız gerekir. Günümüzde kablosuz ağ denildiğinde ilk akla gelen sözcükler WLAN, HiperLAN, Bluetooth, GSM, WAP, Irda gelmektedir. Bu iletişim teknikleri ile birlikte bir sıra farklı iletişim teknolojileride geliştirilmiş durumdadır. Bunların da kendilerine göre avantaj ve dezavantajları vardır. Kullanım alanına ve amacına göre bu teknolojiler birbirinden farklı özelliklere sahiptir. Kablosuz teknolojilerin taşınabilir cihazlarda kullanılması da günümüzde çok yaygın hale gelmiştir. Kullandığımız bu mobil teknojilerden en yaygın olanları ise cep telefonları ve PDA lardır.
  • 12. 12 2. MOBIL TEKNOLOJILER Mobil teknolojiler denildiği zaman ilk olarak kullanım yaygınlığı nedeniyle temel fonksiyonlara sahip cep telefonları gelmektedir. Bunun yanında dizüstü bilgisayarlar, PDA’lar, tablet pc lerde bu kapsama girmektedir. Gelişen teknolojiyle birlikte taşınabilir cihazlar hızla yetenek kazanıp piyasada talep görmektedir. Dizüstü bilgisayarlar ile masaüstü bilgisayarlar arasında hız ve işlevsellik açısından artık pek bir fark kalmamıştır. Cep telefonları ile avuç içi bilgisayarlarda kendi aralarında yarışır duruma gelmişlerdir. Mobil cihazların işlevsellikleri gün geçtikçe artmakta ve boyut olarak da küçülmektedirler. Mobil cihazların kullandıkları enerji miktarına baktığımızda her geçen gün azalmakta ve yeni pil teknolojileri ile mobil cihazlarımızı, haftalarca belki aylarca kullanabilmemiz mümkün olabilecektir. Günümüzde mobil cihazların sayesinde her yerden insanlarla iletişim kurabilir, bilgi alış-verişi yapabilir ve internetin bizlere sunduğu kaynaklardan sınırsız şekilde faydalanabilmekteyiz. 2.1. PDA (Personal Digital Assistant) PDA kelimesi ile kez Apple şirketi tarafından üretilen Newton MessagePad cihazı için kullanılmıştır. PDA'ların yaygınlaşması Palm tarafından 1996'da üretilen PalmPilot'la birlikte başladı. Palm'in ilk modeli, kısa sürede PDA pazarının en popüler ürünü haline geldi. Cep bilgisayarlarının ilk örneklerinde; renksiz ekran, sınırlı işlem gücü ve düşük enerji tüketimleri sayesinde uzun pil ömrü özellikleri öne çıkar. Bu tür cihaz üretiminin öncülerinden Japon şirketi Casio'yu daha sonra birçok üretici takip etmiştir. Cep bilgisayarları, masaüstü bilgisayarlar veya diğer birimler ile USB üzerinden kablolu iletişim yapabilirler. Yeni nesil cihazlar Bluetooth veya wi-fi üzerinden ya da dahili GSM birimleri sayesinde bu protokol üzerinden kablosuz olarak da iletişim kurabilmektedir. Bu sayede elektronik posta alma gönderme, web sayfalarını görüntüleme, fax gönderme gibi işlemleri kolaylıkla gerçeklemektedir. PDA'ların yaygın olarak kullandıkları işletim sistemlerine bakacak olursak PalmOS, Windows CE veya Windows Mobile işletim sistemlerini görmekteyiz. Cep bilgisayarlarında, uygun yazılım kullanarak neredeyse bir masa üstü bilgisayarında yapılabilen her işi yapabilmek olasıdır. Sıradan bir cep bilgisayarında standart olan
  • 13. 13 özellikler; not defteri, kelime işlemci (Pocket Word vb.), hesaplama tablosu (Pocket Excel vb.), hesap makinesi, çoklu ortam oynatıcı (Windows Media Player vs.), resim gösterici olarak sıralanabilir. Şekil 2.1: PDA 2.2.Tablet PC’ler Tablet PC’ler üzerlerinde LCD ekran barındıran ve PDA’lerdeki kalemlere benzer kalemlerle giriş yapılabilen taşınabilir bilgisayarlardır. PDA’ler ile dizüstü bilgisayarların arasında bir konumda bulunmaktadırlar. Hatta bazı dizüstü bilgisayarlar, sahip oldukları dönebilen ekranları sayesinde hem dizüstü hem de tablet pc olarak kullanılabilmektedir. Intel’in çabaları sonucunda geçtiğimiz yıl içinde tablet pc’lerin yerini alabileceği planlanan UMPC’ler (Ultra Mobile Personal Computer) de piyasada yerini almıştır. Microsoft da paralel olarak Origami Projesi adı altında bu tür cihazlara destek vermektedir. 2.3. Mobil Telefonlar Mobil telefonlar, kolayca taşınabilen ve geniş kapsama alanına sahip kablosuz telefon sistemini kullanan bir cihazdır. Mobil telefonlar GSM (Global System for Mobile Communications) standartını kullanır. Mobil İletişim için Küresel Sistem anlamına gelmektedir. GSM standartları, hücresel ağ kullanır ve dolaşım sırasında bile hücreler arası geçiş yapma kabiliyetine sahiptir. Teoride, eğer kapsama alanından çıkmazsanız, cep telefonu ile tüm dünyayı telefon konuşmasını kesmeden dolaşmak mümkündür. Mobil Telefon Sistemlerinin aşağıdaki nesilleri vardır: 0G olarak adlandırılan ilk nesil sistemlerde, analog veri akışı kullanılır. 1G olarak adlandırılan ilk nesil sistemlerde, analog veri akışı kullanılır.
  • 14. 14 2G olarak adlandırılan ikinci nesil sistemlerde sayısal veri akışı kullanılır. GSM 2G kategorisine giren ikinci nesil bir sistemdir. 3G olarak adlandırılan üçüncü nesil sistem ile daha hızlı veri transferi ve bant genişliğinin daha verimli kullanımı mümkün olmuştur. 4G olarak adlandırılan dördüncü nesil sistem ile kapsama alanı başta olmak üzere 3G ile çözülememiş olan sorunların çözülmesi beklenmektedir. Türkiye'de, 1G ve 2G teknolojileri yaygın olarak kullanılmakta olup 3G teklonojisi son 2 yıl içerisinde kullanılmaya başlanmış olup hızla yaygınlaşmaktadır. Şekil 2.2: Mobil telefonlar Mobil telefonlar java uygulamalarını koşabilmek için en az 128 KB kalıcı ve 32 KB kalıcı olmayan hafızaya sahip olmalıdır. Her iki tür bellekte RMS (Record Management System) adı verilen bir sisteme göre düzenlenmiştir. MIDP 1.0 dan itibaren ve kalıcı hafızanın içinde kalıcı hafızadan sorumlu bir mekanizma sunulur (RMS). Kayıtlar (kayıtlar hafızadaki verilerin en küçük birimine verilen addır.) kayıt deposu adı verilen alanlarda saklanır. Her kayda kendini tanımlayıcı bir kayıt kimliği atanır. Kayıtların tutarlılığından sistemin yeniden başlatılması, şarj bitmesi ve pil değiştirme durumları da dahil olmak üzere bu platform sorumludur. Aynı MIDlet takımındaki uygulamalar birkaç kayıt oluşturabilirler fakat bu kayıtlara bu takımda bulunan diger MIDletler erişemezler bir uygulamanın çalışması sona erdiğinde o uygulama ile ilişkili olan kayıtlar da silinir. javax.microedition.rms paketi kayıt oluşturma, açma, kapama, bir MIDlet takımına ait tüm kayıtları listeleme, bir kayıt deposu içinde kayıt oluşturma açma kapama silme ve depo içindeki erişilebilir alan bilgisini alma işlemlerine izin verir. CLDC (Connected Limited Device Configurations) grubuna giren cihazlarda kalıcı olmayan bellekten KVM (Kilobyte Virtual Machine) sorumludur. KVM başladığı zaman sınıf dosyalarını yüklemek ve veri boyutunu tutmak iç yığın alanından bir blok ayırır.
  • 15. 15 KVM çok kolay bir algoritma kullanır kendine ayrılmış alanı kullanmayan bir nesnenin bellek alanını diğer nesnelere ayırabilme yeteneğine sahiptir. Bu algoritma ile ilgili problem ise parçalanmadır. (fragmentation) Bellekte iki ayrı silme işleminin ardından açılan 2 blok varsa bunlar bağımsız blok gibi işlem görür buda parçalanmaya yol açar. Yani boyutu bu iki bloğun her birinden daha büyük yalnız her ikisinin toplamından daha küçük bir nesne varsa hafızada yeterli yer olmasına rağmen bu nesneye alan tahsisi yapılamayacaktır. Son zamanlarda piyasaya çıkan mobil telefonlar, kullanımı son derece yaygınlaşan hafıza kartlarını desteklemesiyle büyük miktarlarda veri depolayabilme yeteneğine sahip oldular. 2.4.Mobil İşletim Sistemleri İşletim sistemi, bilindiği gibi bilgisayar donanımının denetimi ve yönetiminden, temel sistem işlemlerinden ve uygulama programlarını çalıştırmaktan sorumlu olan bir sistem yazılımıdır. Mobil teknolojiler de geliştikçe mobil işletim sistemlerine duyulan ihtiyaç da arttı. Günümüzde en popular olan mobil işletim sistemleri ise Symbian OS, Windows CE ve PalmOS dur. 2.4.1.Symbian OS Symbian gelişmiş mobil cihazlar için işletim sistemi geliştirmeye odaklanmış bir şirkettir. Günümüzde Symbian, mobil cihaz endüstrisinin lider oyuncuları tarafından yönetilmektedir. Symbian OS 32-bit, çoklu işlemli bir işletim sistemidir. Çok sık karşılaşılan asenkron işlemlerin ve uygulamaların birbiri ile etkileşimli olarak çalışması için dizayn edilmiştir. Örneğin bir telefon görüşmesi kullanıcının e-mail yazma işlemini kesebilir. İstenirse kullanıcı telefon görüşmesi sırasında randevularına bakabilir veya not alabilir. İlk zamanlardan bu yana Symbian OS kablosuz iletişim için düşük güç harcayacak şekilde tasarlanmıştır. Diğer önemli özelliklerini şöyle sıralayabiliriz.  Performans açısından Symbian OS minimum pil kullanımı ve düşük kapasiteli hafızayı etkin bir şekilde kullanacak şekilde tasarlanmıştır.  Çoklu işlem açısından Telefon ve mesajlaşma en genel bileşenlerdir. Tüm uygulamalar birbiri ile fark edilmeksizin paralel çalışacak şekilde dizayn edilmiştir.
  • 16. 16  Symbian OS, benimsenmiş olan açık standartlar üzerine kurulmuştur.Böylelikle uygulamaların platformlar arası taşınması kolaylaşır.  Nesne tabanlı yazılım mimarisi  Gömülü yazılımlar için hafıza yönetimi  Çalışma esnasında hafıza ihtiyaçlarının düşüklüğü ve çok küçük çalıştırılabilir uygulama boyutları  Güvenli haberleşme ve veri depolama için güvenlik mekanizmaları  Unicode karakter seti ile uluslar arası uygulama desteği 2.3.2.Windows CE Windows CE (Compact Edition), Microsoft tarafından taşınabilir cihazlar için yazılmış bir işletim sistemidir. Windows CE, küçültülmüş bir Windows değil PDA türü cihazlar için yazılmış, ayrı bir işletim sistemidir. Bu yüzden Windows programları Windows CE altında kullanılamazlar. Bunun diğer bir sebebi de, Windows CE işletim sisteminin çok farklı işlemci mimarilerinde çalışabilir olmasıdır. Öte yandan, Windows CE için program yazması Windows için program yazmaya fazlasıyla benzediğinden, bazı yazılımların Windows CE sürümü de mevcuttur. Windows CE, birçok alanda kullanılabilir:  Pocket PC'ler  Cep telefonları  TV setleri  Benzer elektronik araçlar Bir programcı için Windows CE'nin en büyük avantajı, önceden tanıdığı Win32 arayüzüne çok benzer bir arayüz sunmasıdır: diyalog pencereleri, registry ve DirectX Windows CE'de aynı ya da oldukça ufak değişikliklerle kullanılabilir. Windows CE, Word, Excel, Outlook ve PowerPoint uygulamalarını destekler. Internet Explorer Mobile başta olmak üzere bazı web tarayıcılarını kullanılabilir, MSN Messenger'ın Windows CE sürümü de mevcuttur. Windows CE, aygıt sürücüsü bulunduğu takdirde Wi-fi, Bluetooth, GSM, GPRS, EDGE, 3G veya VPN gibi sayısız bağlantı desteğine sahiptir . Bir çok çevre birim (USB diskler gibi) desteklenir .
  • 17. 17 2.3.3.PalmOS PalmOS, PalmSource firması tarafından cep bilgisayarları için tasarlanan bir işletim sistemidir. PalmOS orijinal olarak US Robotics firmasının çıkardığı Pilot isimli PDA için tasarlanmıştır. Günümüzde ise Palm adıyla satılan cep bilgisayarların da bu işletim sistemi kullanılmaktadır.
  • 18. 18
  • 19. 19 3.KABLOSUZ AĞ TEKNOLOJİLERİ Bir kablosuz WLAN (Wireless Local Area Network) teknolojisi, radyo teknolojisini kullanarak, havadan radyo işaretlerinin belirli bir frekans kanalında iletildiği, bir haberleşme yöntemidir. Kablosuz haberleşme sistemleri çok çeşitlidir. Günümüzde populer olarak kullanılanlar arasında kızılötesi, bluetooth ve Wi-Fi gelir. 3.1. Kızılötesi(IrDA) Teknolojisi Irda (Infared Data Associtation), 1993 yılında, aralarında Hewlett Packard ve IBM’in de bulunduğu yaklaşık 30 firma, kızılötesi ışınlarla veri aktarımını standartlaştırmak için bir araya geldi. İlk standart kızılötesi ara birimi (SIR), 115,2 Kbps’lik aktarım hızına sahipti. Daha sonra Fast Infrared Standard (FIR) geliştirildi. FIR ile 4 Mbit/sn’lik aktarım hızına ulaşıldı. Yeni duyurulan "Very Fast Infrared standardı" (VFIR) ile 16 Mbit/sn’lik hızlarla veri aktarımı mümkün hale gelmiştir. IrDA sisteminde verici olarak, dalga boyu 850-900 nm olan ve ışını 30 derecelik açıyla yayan bir diyot kullanılıyor. Alıcının menzili, teorik olarak 1 metredir. Ancak kızılötesi ışınlar, normal ışık ve yansıtıcı cisimler gibi etkenlerden kolayca etkilenirler. Bu nedenle pratikte durum farklıdır. Parlak güneş ışığı altında menzilleri çok kısa, evlerde kullanılan ışık altında ise menzilleri daha uzundur. Bağlantı herhangi bir cihaz üzerinden kurulabilir. Aktif halde olduklarını belirtmek için IrDA arabirimleri, her iki saniyede bir, bir ışık demeti yayınlarlar. Eğer civarda başka bir IrDA cihazı bulunuyorsa, bu sinyalleri, algılar ve böylece bağlantı kurulur, ilk aşamada cihazlar birbirlerine kendi özelliklerini bildiren verileri gönderirler. Daha sonra Tiny Transport protokolü üzerinden asıl veri alışverişi gerçekleşir. Bu protokolün üzerine farklı üç protokol daha kurulur: Yerel ağ girişi için IrLAN, veri alışverişi için Infrared Object Exchange Protocol (IrOBEX) seri ve paralel arabirimlerin oluşturulması için Ir-COMM protokolü kullanılır. Sonuncu protokole mobil internet erişimi için ihtiyaç duyulur. IrDA özellikle cep telefonu ve PDA pazarında yaşanan patlamadan sonra popüler oldu. Kızılötesi hem mobil internet erişimi için hem de masaüstü bilgisayarı ile dizüstü bilgisayarı arasında veri alışverişi için kullanılan bir teknolojidir. Bunun yanında uzaktan kumandalarda da kullanılmaktadır.
  • 20. 20 Bu teknolojinin en büyük avantajı yaygın olarak kullanılmasıdır. Dezavantajlarına bakacak olursak düşük menzil, arıza riskinin yüksek olması ve konuşma desteğinin olmaması bu teknolojinin eksiklerindendir. 3.2.Bluetooth Teknolojisi Bluetooth, bir kablosuz iletişim teknolojisi ve telekomünikasyon standardıdır. Türkçe’ye “mavi diş” olarak çevrilebilecek Bluetooth adı, 10. yüzyılda yaşamış olan Viking Kralı Harald Blatand’dan gelmektedir. İngilizler tarafından Blatand’ın İngilizce karşılığı olan Bluetooth olarak adlandırılan kral, şu anda Norveç, İsveç ve Danimarka olarak bilinen toplumları o zamanlarda tek bir krallık altında toplamıştı. Bu hareketiyle ardından gelenlere örnek olmayı başaran Blatand veya Bluetooth, denilmiştir. Günümüzde ise değişik teknolojik cihazları tek bir çatı altında toplamaya çalışan bir teknoloji standardı olarak karşımıza çıkmaktadır. Bluetooth, yaklaşık 10 metrelik bir alan içerisinde faaliyet gösteren bir kısa dalga radyo teknolojisi olma özelliği taşıyor ve bilgisayar, cep telefonu, avuç içi gibi cihazlara ek olarak kulaklık veya yazıcı gibi çevre birim aygıtlarının birbirleriyle iletişim kurmasını sağlıyor. Veri transfer hızı ise 721 kBit/s'yedir. Bu cihazlar arasında herhangi bir kablo bağlantısına ihtiyaç duyulmaksızın anında iletişim kurulup, veri transferi gerçekleştirilebilmektedir. Şekil 3.1: Bluetooth usb dongle Frekans bandı bakıldığında 2.4 GHz ile 2.48 GHz arasındadır. Bu bandın kullanımı lisanssız olup endüstriyel, bilimsel ve medikal (ISM) bant olarak adlandırılmaktadır. Kanal sayısı 1 MHz’lik aralıklarla toplam 79 adet olmakla birlikte bazı ülkelerde 23 adedi kullanılmaktadır. Çevre gürültülerinden fazla etkilenmeyen bir teknolojidir. 3.2.1.Bluetooth Protokol Katmanları Bluetooth sistemi, radyo birimi (Radio), link kontrol birimi (Link Controller), link yönetimi (Link Manager) ve kullanıcı uç cihazı arayüz fonksiyonlarına destek veren bir birimden oluşmaktadır. Ana bilgisayar kontrol arayüzü (HCI - Host Controller Interface) ana birimin bluetooth donanımına erişmesi için bir araç vazifesi görmektedir.
  • 21. 21 Şekil 3.2: Bluetooth protokolünün katmanları Radio Frequency (RF) : Dijital veriyi 2.4 GHz’lik analog sinyale çeviren katmandır. Baseband : Bluetooth’un dijital kısmıdır. Paketleri oluşturup şifreler, hata düzeltme işini yönetir. Güvenli bağlantılar için veriyi şifreler ve şifreyi çözer, radyo frekansını hesaplar ve senkronizasyonu sağlamaktadır. Link Manager : Bluetooth bağlantılarında fiziksel detayı ele alır. Bağlantı oluşturur, ne kadar sağlıklı olduğunu görüntüler, komut veya hataya bağlı olarak bağlantıları yok eder. Host Controller Interface ( HCI ) : Ana birim ile Bluetooth donanımı arasında bir arayüzdür. Data komutları bu arayüz üzerinden iletilir. HCI, Baseband ve Link manager arasında bir komut arayüzü oluştururarak donanım ve kontrol registerlarına erişimi sağlar. Logical Link Control and Adaptation Protocol (L2CAP) : Üst düzey protokoller ile baseband servisleri arasında arabirim oluşturur. Büyük paketlerin iletiminde ayırma (segmentation) ve yeniden birleştirme (reassembly) işlemleri gerçekleştirir Service Discovery Protocol (SDP) : Uygulamaların, varolan servisler ve karakteristikleri hakkında bilgi edinmesini sağlar. RFCOMM : İletim protokolü olup L2CAP protokolünden RS232 seri port ile iletim sağlar. Eş zamanlı olarak cihazlar arasında 60 adet bağlantı kurabilir.
  • 22. 22 3.2.2.Bluetooth’un Temel Özellikleri 3.2.2.1.Birlikte Çalışabilirlik Bluetooth spesifikasyonlarında farklı üretici firmaların farklı cihazlarının aynı profili kullandıkları sürece birlikte çalışabilirliği garanti altına alınmıştır. Profiller, Bluetooth protokol yığınının birlikte çalışabilirlik çözümleri sunmak için nasıl kullanılabileceğini ortaya koymaktadır. Örneğin, bir farenin bir cep telefonu kulaklığı ile haberleşmesi gerekli olmadığı için, fare ve kulaklık farklı profilleri esas alarak tasarlanabilir. 3.2.2.2.Kısa Mesafe Kablosuz Haberleşme Yapısı Günümüzde, bilgi işlem ve haberleşme cihazları arasında sayısal haberleşme genellikle kablolar vasıtasıyla gerçekleştirilmektedir. Bu kablolar da çeşitli şekillerde, çeşitli boyutlarda ve çeşitli sayıda pinleri olan konnektörlere bağlanmaktadır. Bu da kullanıcı için oldukça maliyetli olmaktadır. Bluetooth teknolojisi ile haberleşecek olan cihazlar, kablosuz olarak bir hava- ara yüzü vasıtasıyla radyo dalgalarını kullanarak bağlantı kurabilmektedirler. Bu teknoloji özellikle kısa mesafe (yaklaşık 10 metre) haberleşmesi için tasarlanmıştır. Bunun nedeni, teknolojiyi küçük, taşınabilir, batarya ile beslenen cihazlar için, çok az güç tüketimi sayesinde, cazip hale getirmektir. 3.2.2.3.Açık Standart Yapısı Bluetooth kablosuz haberleşme teknolojisini herkese açık, telif hakkı olmayan bir teknoloji olarak tanımlamıştır. Bu açık standart yapısını benimsenmesinin nedeni teknolojinin daha geniş kitleler tarafından kabulünü sağlamaktır. 3.2.2.4.Ses ve Veri Haberleşmesi Bluetooth kablosuz haberleşme teknolojisi, hem ses hem de veri trafiğini taşıyacak yapıya sahip, bütün cihazlara bu her iki içeriği de kullanma olanağı veren ideal teknolojidir. 3.2.2.5.Güvenlik Bluetooth cihazlarının gizlice dinlenmesi ya da mesajların çıkış noktasının değiştirilmesi gibi tehlikelerin önüne geçmek amacıyla Bluetooth cihazları bazı güvenlik özellikleri içermektedir.
  • 23. 23 3.2.3.Bluetooth Teknolojik Alt Yapısı 3.2.3.1.Bluetooth Radyo Güç Sınıfları Bluetooth standartları, üç farklı tipte güç sınıfına müsade etmektedir. Bu güç sınıfları Bluetooth cihazlarının farklı mesafelerde bağlantı kurmalarına imkan vermektedir. Bu güç sınıflarının maksimum çıkış güçleri ve mesafeleri aşağıdaki tabloda gösterildiği gibidir. Güç Sınıfı Maksimum Çıkış Gücü Mesafe Class 1 100 mW (20 dBm) 100m Class 2 2. 5 mW (4 dBm) 35m Class 3 1 mW ( 0 dBm) 10m Tablo 3.1: Bluetooth Radyo Güç Sınıfları Bluetooth bağlantısı için ayrıca minimum mesafe de söz konusudur. Eğer radyolar birbirine çok yakın konulurlarsa, bazı alıcılar doyma noktasına gelebilir ve birkaç bluetooth radyosu kısa mesafadeki hatlarda güvenilir olmayabilir. Bu minimum mesafe yaklaşık olarak 10 cm’dir. 3.2.3.2.Master – Slave Yapısı Bluetooth şebekesinde neredeyse tüm birimler özdeştir ve 48 bitlik adres bilgisi dışında donanım ve yazılımları aynıdır. Bağlantı ilk kurulduğu zaman geçici bir başlangıç ünitesi tahsis edilmektedir. Bağlantıyı kurmaya başlayan ve trafiği en fazla 7 üniteye kadar kontrol edebilen bu sistem master adını almaktadır. Her bağlantı yolu şebekesi ise slave olarak adlandırılmaktadır. Bluetooth cihazları, her bir paketten sonra yeni bir frekansa atladıkları zaman mutlaka kullanacakları frekans sırası ile uyuşmak zorundadırlar. Bluetooth cihazları maste ve slave olmak üzere iki farklı modda çalışabilmektedir. Frekans atlama sırasını belirleyen taraf ise master’dır. Slave’ler master ile eş zamanlı olarak onun frekans atlama sırasını takip ederler.
  • 24. 24 Her bir Bluetooth cihazının kendine özgü bir bluetooth cihaz adresinin yanında bir de bluetooth saati bulunmaktadır. Bluetooth spesifikasyonunun temel bant katmanı, bluetooth cihaz adresi ve bluetooth saatinden frekans atlama sırasını hesaplayan bir algoritma tanımlamaktadır. Slave’ler master’a bağlandıkları zaman onlara bluetooth cihaz adresi ve master’ın saati bildirilir. Onlar da bu bilgileri frekans atlama sırasını hesaplamak amacıyla kullanırlar. Çünkü, bütün slave’ler master’ın saatini ve adresini kullanmaktadırlar ve master’ın frekans atlama sırasıyla eş zamanlı olarak çalışmaktadırlar. Aynı zamanda master cihazların ne zaman gönderme yapabileceğini de kontrol etmektedir. Master, slotları ses veya veri trafiği için tahsis ederek, slave’lere iletim için izin verir. Data trafik dilimlerinde, slave’ler yalnızca master tarafından yapılan bir gönderime cevap verme yetkisine sahiptir, onun dışında iletim yapamazlar. Ses trafik dilimlerinde ise, slave’ler master’a cevap versin veya vermesin düzenli olarak, ayrılmış dilimlerde gönderim yapmak durumundadırlar. Master, toplam elde edilebilir bant genişliğinin slave’ler arasında nasıl bölündüğüne, her bir slave ile ne kadar sıklıkla haberleştiğine bağlı olarak karar verir. Her bir cihazın alacağı zaman dilimi sayısı, o cihazın veri transfer gereksinimine bağlı olmaktadır. 3.2.3.3.Bluetooth Ağ Yapısı 3.2.3.3.1.Piconet Bluetooth teknolojisini kullanan cihazlar, ad-hoc biçimiyle bağlantı kurmaktadırlar. Birbirlerinin kapsama alanı içerisinde bulunan Bluetooth birimleri noktadan noktaya ya da noktadan çok noktaya bağlantı kurabilirler. İki veya daha fazla bluetooh birimi birbiriyle bağlantı kurduğunda bunlar bir ağ oluştururlar ve bu ağa piconet adı verilmektedir. Piconet birbirine bağlı iki birimle (dizüstü bilgisayar ve hücresel telefon gibi) başlar, birbirine bağlanmış sekiz birime kadar genişleyebilir. Bütün bluetooth cihazları eşdeğer olmalarına rağmen, piconet oluştururken piconet bağlantısı süresince bluetooth cihazlarından birisi master, diğer bluetooth cihazları ise slave olarak ağda rol almaktadır.
  • 25. 25 Şekil 3.2: Piconet Yapısı Piconet içerisinde bir slave sadece kendi master’ı ile haberleşebilir. Piconet içerisindeki tüm birimler master’ın saatini ve Bluetooth adresini kullanarak hesaplanan aynı frekans atlama sırasını paylaşırlar. 3.2.3.3.1.Scatternet Birden fazla piconet aynı alanda kesişiyor olabilir. Her bir piconet farklı master’a sahip olacağı için piconet’lerin frekans atlamaları birbirinden bağımsız olacaktır. Birden fazla piconet’in birbirine bağlanmasıyla oluşan şebeke yapısına scatternet adı verilir. Standartlara baktığımızda piconet içerisindeki slave sayısını 7 ile sınırlandırmış olmasına rağmen, scatternet yapısı kullanılarak ağ içerisindeki cihaz sayısı attırılabilir ve daha geniş bir kapsama alanı elde edilebilir. Eğer bir bluetooth cihazı birden fazla piconet’e ait ise, mutlaka zaman-paylaşımlı (time sharing) olmalıdır. Bunun anlamı, bluetooth cihazı birkaç dilim bir piconet’te birkaç dilim diğer piconet’te harcayacak demektir. Bluetooth v1.1 standartlarına göre, bir bluetooth cihazı, iki farklı piconet’te slave olarak rol alabilmektedir fakat, master olarak düşünüldüğünde ise sadece bir piconet’te görev alma yetkisi verilmiştir. Şekil 3.3: Scatternet Yapısı Bir master ya da slave başka bir piconet’in master’ı tarafından çağırılarak (paging) o piconet’te slave olarak rol alabilir. Aşağıda örnek olarak master M1, master M2’ yi çağırmakta ve böylece master M2 iki role sahip olmaktadır; birinci piconet’te slave, ikinci piconet’te master.
  • 26. 26 Şekil 3.4: Bir bluetooth master biriminin slave olarak rol alması. 3.3.Wi-Fi (Wireless Fidelity)Teknolojisi /IEEE 802.11 Kablosuz yerel ağ yapıları (Wireless Local Area Networks-WLAN) için geliştirilen uluslararası bir standart bulunmaktadır. IEEE (Institute of Electrical and Electronic Engineers) tarafından kablosuz yerel ağlar için geliştirilmiş bir radyo transmisyon standardıdır. Wi-Fi, Bluetooth teknolojisi gibi 2.4GHz’lik spektrumda çalışır. 100 metre yarı çap menzilindeki tüm Wi-Fi uyumlu cihazlarla 11Mbps – 54Mbps gibi yüksek hızlarda veri alışverişi gerçekleştirmektedir. Böylece Wi-Fi kullanılan evlerde, ofislerde ve mekanlarda kablo karmaşasından kurtulup, kullanıcılara özgürce hareket imkanı verilmektedir. Wi-Fi uyumlu PDA’ler, kablosuz yerel ağlar üzerinde veri aktarımı için kullanılan bu teknoloji sayesinde yerel mobil uygulamalarda önemli avantajlar sağlamaktadır. Şekil 3.5 Kablosuz Modem Bağlantısı
  • 27. 27 3.4.GSM Gsm (Global System for MObile Communication) 2. nesil teknolojisidir. Ses ve veri aktarımı için kullanılabilir. Bu sistem Avrupa’da 900Mhz ve 1.8Ghz frekanslarında kullanılırken Amerika’da 1.9 Ghz frekanslarında kullanılır. Veri aktarım hızı 9.6kbps’a kadar çıkabilir. Dünya çapında yaygındır. 160 karaktere kadar mesaj yollayıp mesaj alımı yapılabilir. 3.5.GPRS GPRS (General Packet Radio Service) bir çok şebekenin kullanıcılarının veri uygulamalarına erişim sağlayabilmek için kullanmak durumunda olduğu bir teknolojidir. GPRS, son kullanıcının mobil veri iletişimini, 'devamlı sanal bağlantı' durumunu ekonomik hale getirerek ve veri alımını ve gönderimini bugünkünden çok daha yüksek hızda mümkün kılarak önemli ölçüde geliştirir. Veri transferi 115kbps'a kadar çıkabilir. Aynı zaman da mesaj 160 karakterle sınırlı değildir.
  • 28. 28 4. J2ME(JAVA 2 MICRO EDITION) PLATFORMU 4.1. Java Dilinin Kısa Bir Tanıtımı Java programlama dili bilgisayar dünyasında önemli bir yer teşkil etmektedir. Nesne tabanlı programlama özelliği, yazılan programın değişikliğe uğraması ya da yeniden derlenmesi gerekmeden farklı yapıdaki bilgisayar sistemlerinde kullanılması gibi özellikler Java dilinin popülerliğini sağlayan önemli özelliklerin sadece birkaçıdır. İlk geliştirilme amacı SUN Microsystem şirketinin içinde ortak bir dil kullanılması olan ve o zamanki adı OAK olan Java dili, kısa zamanda dünya çapında yoğun olarak kullanıma girmiştir. Javanın kullanıldığı yerler, basit bir ev bilgisayarlarından, en karmaşık sistem sunuculara kadar değişen bir yelpazede yer almıştır. 4.1.1. Java Mimarisi Java mimarisi ilk yayımlandığı günden bu yana pek değişmemiştir. Java derleyicisi Java programlama dilini “bytecode” kümelerine çevirmektedir. Bytecodelar, “sanal makina” olarak bilinen soyut hesap makinası komutlarıdır. Java Sanal Makinası (JVM), Java programını çalıştırabilmek için java kodlarını yorumlar. Java bytecode uygulamaları, Sun Microsystems tarafından verilmiş belirtimleri (Java Virtual Machine Specification (JVMS)) izlemek zorundadır. Java dilinin doğasından gelen en güçlü yönlerinden biri taşınabilirliğidir. Java programı alınır ve tekrar derlenmesine gerek kalmadan değişik işletim sistemleri üzerinde çalıştırılabilir. Bu taşınabilirliği pek çok yolla sağlayabilir. Java belirtimleri, tiplerin ve bytecode’ların altta çalışan işletim sisteminden bağımsız olduğunu garanti ederler. Java, güvenlik altyapısıyla da bilinmektedir. Java çalışma-zamanı ortamı Java programlarını “sandbox” içinde çalıştırır. Bu “sandbox”lar programın çalışacağı bilgisayarın kaynaklarının kısıtlı bir kümesine ulaşırlar. Java programları “sandbox”lar içine hapsedilirler, böylece kötü programlar programa ulaşamazlar veya programın çalışacağı bilgisayara zarar veremezler. Bu özellik dağıtık veya web-tabanlı uygulamaların hem sunucu hem de istemci taraflarında gereklidir. Java dilini bir diğer önemli özelliği nesneye dayalı olmasıdır. Java’daki nesne modelinin genişletilmesi oldukça kolaydır. Çoğu nesneye dayalı diller sert, yönetilmesi zor nesne hiyerarşileri seçerler veya performansı ve çok yönlülüğü arttırmak için tamamen
  • 29. 29 dinamik nesne modelleri kullanırlar. Java ise dengeyi sağlamıştır, gerektiği yerde kullanılan dinamik arayüz modeli ile basit bir sınıf mekanizması sağlar. Java dili basittir. Java dili eğer başka bir nesneye dayalı programlama diline aşinaysanız basittir. Java’nın sözdizimi öğrenilmesi kolaydır. Java dilinin sözdizimi C++ ile benzerdir ve diğer programlama dillerinde bulunan yararlı özellikleri içerir. 4.1.2.Java 2 Tüm programlama dilleri ve geliştirme ortamları gibi Java da ilk çıktığı günden bu yana gelişmiştir. Java’nın ilk çıkışından itibaren pek çok özellik ve yetenek Java’ya eklenmiştir. Java 1.2 deki ilerlemeler üzerine Sun Microsystems Java’yı yeniden tanımladı ve Java’da temel değişikler yapmak üzere Java’yı lisansladı. Java 1.2 Java 2 oldu ve JDK ve JRE versiyonları 1.2 de kaldı. Daha önemlisi Java platformu 3 sürüme ayrıldı. 1. Java 2 Standart Edition (J2SE) 2. Java 2 Enterprise Edition (J2EE) 3. Java 2 Micro Edition (J2ME) Her sürüm Java tabanlı uygulamaları geliştirmek için Java sanal makinasını ve çalışma zamanı sınıflarını içeren eksiksiz bir ortam sunar. Üç sürüm de değişik cihazlar üzerinde çalışabilen uygulamaları hedeflerler. Masaüstü uygulamaları için gerekli kullanıcı arayüz sınıflarını sunan J2SE kullanılır. Bileşen tabanlı programlamayı vurgulayan J2EE ise sunucu tabanlı uygulamalarda tercih edilir. Gömülü ve el cihazları içinse hedef J2ME’dir. Bir sürümü diğerinden ayıran, her sürümün tanımladığı sınıf kütüphaneleridir. J2ME’yi J2SE’nin alt kümesi olarak ve J2SE’yi de J2EE’nin alt kümesi olarak düşünebiliriz. Bytecode’ların gerektirdiği, üç sürümde de bulunan sınıfları sağlayarak Java bytecode’unu her sürümde çalıştırmak mümkündür. J2ME tabanlı cihazlar J2SE ve J2EE’nin sağladığı sınıflardan çok daha az sınıfa sahiptir. Şekil 4.1 de, soldaki yüksek seviyeli kullanıcı platformlarından başlayarak sağdaki düşük seviyeli kullanıcı platformlarına doğru ilerleyen Java 2 Platform’unun sürümlerini ve hedef pazarları gösterilmektedir. Temel olarak, beş hedef pazar veya geniş cihaz kategorileri tanımlanmıştır. Sunucu bilgisayarlar Java 2 Eneterprise Edition,ve kişisel bilgisayarlar Java 2 Standart Edition ile desteklenmektedir. Java 2 Micro Edition ise yüksek seviyeli ve düşük seviyeli kullanıcı cihazlarına odaklanan iki kategoriye ayrılmıştır. Son olarak, Java Kart standartları ise smart kart pazarına odaklanmıştır.
  • 30. 30 1. Java 2 Standart Edition Java 2 Standart Edition, temel Java ortamıdır. Bu ortam, çekirdek Java sınıflarını ve API’lerini web browserlar üzerinde çalışabilecek uygulamalar da dahil standart istemci- sunucu uygulamalarını geliştirme ve çalıştırma olanağı sağlar. • Java 2 SDK (J2SE) • Java 2 Runtime Environment • Java Plug-in • Java Web Start • Java HotSpot Server Virtual Machine • Collections Framework • Java Foundation Classes (JFC) • Swing Components • Pluggable Look & Feel • Accessibility • Drag and Drop • Security • Java IDL • JDBC • JavaBeans • Remote Method Invocation (RMI) • Java 2D 2. Java 2 Enterprise Edition Java 2 Enterprise Edition farklı Java API’lerini ve Java olmayan teknolojileri birleştirir. Genellikle çok katlı ve dağıtık uygulamaları geliştirmek için kullanılır. J2EE teknolojileri, günümüzün büyük çok katlı, heterojen uygulamalarını birarada sunar. J2EE sıklıkla orta-katman veya sunucu taraflı teknolojileri tanımlamak için kullanılır. Gerçekte, J2EE bilgi sistemlerinin tüm katmanlarında kullanılan teknolojileri içerir. JDBC’yi örnek olarak alalım. JDBC istemci Java appletlerinden, orta katmanlı Java servleti veya Enterprise Java Bean tarafından verilere ulaşmak için kullanılır. • Java 2 SDK (J2SE) • Java 2 Runtime Environment
  • 31. 31 • Java Plug-in • Java Web Start • Java HotSpot Server Virtual Machine • Collections Framework • Java Foundation Classes (JFC) • Swing Components • Pluggable Look & Feel • Accessibility • Drag and Drop • Security • Java IDL • JDBC • JavaBeans • Remote Method Invocation (RMI) • Java 2D 4.2.Java 2 Micro Edition (J2ME) Java 2 Micro Edition veya J2ME, Java yazılımlarını elektronik ve gömülü cihazlara yerleştirebilmek için dizayn edilmiş geliştirme ve çalıştırma ortamıdır. Diğer daha büyük Java sürümleri gibi, Java 2 Micro Edition’ın amacı ürünler arasındaki uyumluluk, kodun taşınabilirliği, güvenli ağ yapısı ve ölçeklenebilirliğin arttırılması gibi Java teknolojisinin özelliklerinin sürdürebilmektir. Hayatta pekçok şeyde olduğu gibi bir boyut herşeye uymaz. Doğal olarak mainframelerden cep telefonlarına kadar herşeye uyan bir Java platformu pek pratik olmaz. J2ME Java dilini kişisel bilgi, iletişim ve hesap makinalarına yerleştirmiştir. Genellikle bu cihazlar geleneksel bilgisayarlardan daha küçük ve daha az güçlüdürler. J2ME’nin geliştirilmesine Sun tarafından başlanılmıştır, fakat günümüzde dünyanın en büyük elektronik ve gömülü cihaz üreticileri tarafından desteklenmektedir. Dünyanın mobil ve kablosuz teknoloji satıcıları J2ME teknolojisini inceliyorlar veya aktif olarak katılıyorlar veya yarışan ürünler üzerinde çalışıyorlar. Bu destekleyiciler Sun tarafından geliştirilen J2ME’yi standartlaştırmak için bir topluluk oluşumu başlattılar. Bu oluşum Java Community Process olarak adlandırıldı ve J2ME’nin ilerlemesinde önemli rol oynadı.
  • 32. 32 J2ME veya diğer Java uygulamalarının çalıştığı platformlara genel olarak “cihaz” denilir. J2ME için bu cihazlar “küçük cihazlar ” başlığı altında toplanır. Bu cihazları başka sözcüklerle de ifade edebiliriz: bilgi cihazları, tüketici elektronikleri, gömülü cihazlar gibi. Bu “küçük cihazların” geniş çeşitlerini tanımlamak önemlidir ve asıl önemli olan bu küçük cihazların J2ME’nin hedef cihazları olduğudur. Java’nın J2ME ile küçük cihazlar için programlama dili ve yazılım platformu olarak yeniden doğumu, yakın gelecekte bilgisayar sistemlerinin sayısını aşacaktır. Genç bir teknoloji olarak J2ME hala gelişmektedir ve J2ME için temel destek hala büyümektedir. J2ME kablosuz ve mobil cihazlar için Java olarak bilinir. J2ME teknolojisi pek çok kablosuz ve mobil cihaz için kullanılsa da J2ME sadece bu ortamlarda kullanılmaz. J2ME mobil platformlar için önemli bir Java platformu olmasına rağmen mobil platformlar için tek Java platformu değildir. Ve sadece Java da bir çözüm değildir. “Mobil” bir cihazın kapasite veya durumunu tanımlar. Mobil cihazlar daha küçüktür ve bunların kaynakları kısıtlıdır. J2ME mobil cihazlar için önemli bir rol oynasa da “mobil” deyimi tüm J2ME uygulamalarını kapsamaz. Ayrıca J2ME kablosuz cihazlar üzerinde de çalışabilir, fakat “kablosuz” deyimi de “mobil” deyimi gibi tüm J2ME uygulamalarını kapsamaz. J2ME’nin arkasında yatan yüksek seviyeli düşünce elektronik ve gömülü cihazlar pazarı için dinamik olarak genişletilebilen, ağ özellikleri fazla cihazlar ve uygulamalar yaratmak için etraflı bir uygulama geliştirme platformu sağlamaktır. J2ME’in sınırlı özelliklerin bulunmasının temel sebebi cep telefonları ve mesaj cihazı gibi bilgisayar sistemlerin kapasitelerin kısıtlı olmasıdır. İlk olarak bu sistemlerin kısıtlı hafızaları bulunmaktadır. Ayrıca bu sistemlerin işlemcileri basit bir bilgisayarlarla bile kıyaslanmayacak kadar azdır. Kablosuz cihazların diğer bir farkı basit klavye özellikleridir. Birçoğunun kullandığı klavye keypad olarak bilinen ve birkaç tuştan oluşan bir teknolojidir. Bunlara ilaveten, kablosuz cihazların ekranları küçük ve birçoğu ekranı yalnızca siyah beyazdır. Kablosuz cihazların bahsi geçen sınırlamaları göz önüne alındığında J2ME’nin neden diğer sürümlere oranla kısıtlı özellikler taşıdığı daha iyi anlaşılmaktadır. Java’nın kablosuz cihazlar için ürettiği J2ME sürümü üretilmeden önce Wireless Access Protocol (WAP) ve i-mode adında iki programlama platformu geliştirilmiştir. Bu teknolojilerde hali hazırda var olan programlama platformları tamamen yeniden düzenlenmiştir. Örneğin WAP,
  • 33. 33 HTML adındaki normal bilgisayarlarda kullanılan dil yerine, Wireless Markup Language (WML) adında kendi uygulama dilini hazırlamıştır. Benzer çalışmalar “i-mode" teknolojisinde de yapılmıştır. Tamamen yeniden düzenlenen programlama yapısı, farklı makinelerde uyum problemine yol açmaktadır. Farklı yapıdaki programlama yapısı ile aynı programın değişik makinelerde kullanılması mümkün olmamaktadır. Örneğin, WAP destekli cihazlar normal bilgisayarlar için hazırlanan web sayfalarını ziyaret edememektedirler. Bu yüzden WAP kullanıcılarının bu sayfaları görebilmeleri için tamamen yeniden bir sayfanın hazırlanması gerekmektedir. Benzer bir şekilde, i-mode kullanıcıları sitelere basit socket bağlantıları yapamamakta ve ancak bağlantı kurucu ek protokoller ile bağlantı işlemlerini yerine getirebilmektedirler. WAP ve i-mode sistemleri hakkında bahsi geçen farklı programlama yapıları J2ME için geçerli değildir. Java dilinde yazılan bir program ile socket bağlantısında, Internet sitelerine giriş direkt olarak sağlanabilmektedir. Değişik mimarisinin sonucu olarak J2ME, J2SE ve J2EE’ye kıyasla değişik amaçlara sahiptir. Aşağıda J2ME mimarisinin ana hedefleri özetlenmeye çalışılmıştır: 1. Değişik yetenekteki cihazlara destek sağlar. Bu cihazlar kullanıcı arayüzü, veri depolama, ağ bağlantısı ve bant genişliği, bellek büyüklüğü, güç tüketimi, güvenlik gereksinimleri duyarlar. 2. Çok fazla kişiselleştirilmiş hatta sadece tek bir kişi tarfından kullanılan cihazlara odaklanmıştır. 3. Değişen aralıklardaki ağ kapasitelerinde ve servislerinde ağ bağlantısı sağlar. Ağ bağlantısı J2ME uzayında yer alan cihazlar için çoğunlukla hayati önem taşır ve yetenekleri, düşük bant genişliği, kablosuz ve aralıklı bağlantıdan daha sık ve daha yüksek bant genişliğindeki bağlantılar aralığında değişir. 4. Ağ bağlantısı üzerinden uygulamaların ve verinin alınmasını sağlar. Ağ bağlantısı J2ME uygulamalarının cihazlara taşınmasında tercih edilen bir yoldur. Uygulamaların cihaz üzerinde hazırlanabilmesi veya belleğe doğrudan yüklenebilmesi ve çalıştıktan sonra bellekten atılabilmesi gerekir. 5. Java dilinin çapraz-platform özelliklerini her cihazın eşsiz özelliklerini ve kısıtlarını alarak genişletir. 6. Hızlıca değişen pazara esneklik ve var olan ve henüz çıkmamış uygulamalara uyum sağlar.
  • 34. 34 7. Değişik yetenekteki, özellikteki ve işlem gücündeki cihazlarda uygulamaların ölçeklenmesini sağlar. 8. Original Equipment Manufacturer (OEM)’dan bağımsız olarak J2ME destekli cihazlarda uygulama geliştirmeyi sağlar. Şekil 4.1: JAVA Kavram Haritası 4.2.Neden J2ME’ye Gerek Duyuyoruz? Java ilk olarak elektronik cihazlar için tasarlandığından doğal olarak aklımıza neden yeni bir sürüme gerek duyulduğu sorusu geliyor. Neden standart Java’yı küçük cihazlar için kullanamıyoruz? Daha iyi bir organizasyon için API’leri üç ayrı sürüme ayırma fikrinin arkasında Sun firmasının gelirlerini arttırma isteği olabilir. Ayrıca Java’yı değişik sürüme ayırmanın bir gerekliliği de J2ME’nin hedef cihazlarının özel gerekliliklerinin olduğudur. Bu cihazların geniş uygulama yazılım ortamından farklı yazılım gereksinimleri var. Genelde yazılımın küçük bir ayak izi olması gerekir. Bazı durumlarda Java uygulamaları, Java sınıfları ve sanal makine için gereken toplam bellek yüzlerce kilobaytı bulabiliyor. Ayrıca, elektronik ve gömülü cihazlar için geliştirilmiş yazılım uygulamaları genellikle tekil yayılma mekanizmasına sahiptirler. Örneğin, PDA cihazlarının masaüstü
  • 35. 35 bilgisayarlarından uygulamaları ve veriyi indirmek için “cradle” adı verilen cihazları vardır. Sonuç olarak, bu cihazların kullanıcı arayüzü, ağ bağlantıları var ve diğer pek çok gereklilikleri Java API’leriyle karşılanamaz. Cep telefonlarının küçük ekranları için grafik kullanıcı arayüzü geliştirirken Java’nın kullanıcı arayüzü geliştirmek için kullanılan Swing paketinin içerdiği bileşenler genişletilmelidir. Fakat bu paket cep telefonunun belleğine sığmaz. Bir Java ortamının tüm cihazlara uymayacağı gerçeğini J2ME göstermiştir. Platform bağımsızlığının gerektirdiği aynı prensipler, dil sözdizimi, güvenlik ve güvenilirlik J2ME de dahil tüm Java sürümlerinde bulunmaktadır. 4.3.Konfigürasyon ve Profiller J2ME mimarisinin çözmeye çalıştığı en önemli problem farklı kısıtlara, özelliklere, becerilere sahip çeşitli cihazları nasıl destekleyeceği sorunudur. Birinci çözüm yolu; her cihaz için gerekli olacak tüm mimari elemanları katarak Java’yı genişletmekti. Fakat bu bellek sıkıntısı çeken küçük cihazların kullanılamamasına yol açtı. Başka bir çözüm yolu, bu cihazların ortak özelliklerini içerecek şekilde J2ME’yi kısıtlamaktı. Bu çözüm yoluyla da güçlü cihazların becerilerini özellikleri, becerileri daha az olan araçlarmış gibi sınırlandırmak zorunda kalınmıştır. İki çözümde ihtiyaçları karşılamadığı için J2ME çeşitli konfigürasyon ve profillere bölünmüştür. Konfigürasyon ve profiller J2ME’nin modüler yapısını oluşturan temel elemanlardır. Bu iki eleman J2ME destekli pek çok cihaz için uygundurlar. J2ME konfigürasyonu küçük cihazlar ailesi için minimum Java platformunu tanımlar. Bu ailenin üyelerinin hepsi aynı bellek ve işlemci gücü gereksinimlerine sahiptir. Konfigürasyon, uygun sistem seviyesindeki özellikleri, Java dili özelliklerini, mevcut sanal makine karakteristik ve özelliklerini ve minimum Java kütüphanelerini tanımlar. Yazılım geliştiriciler belirli bir konfigürasyonu kullanan cihaz ailesi için belirli bir düzeyde sistem desteğinin olabileceğini umarlar. Ayrıca bir konfigürasyon belirli bir cihaz kategorosi için minimum özellikler kümesini belirler. Cihaz üreticileri, gerçek bir platform sağlamak amacıyla belirtilen konfigürasyondaki yetenekleri mevcut, belirli bir cihaz ailesi için profiller gerçekleştirirler. Diğer bir J2ME yapı taşı olan profil, belirli sınıftaki cihazlar için uygulama seviyesinde arayüz tanımlarlar. Profil gerçekleştirimi, bu uygulama seviyesindeki arayüzleri sağlayan Java sınıf kütüphanelerini içerir. Böylece profil, teorik olarak tüm işlevsellik ve servisleri belirler. Aslında yaratıcıların niyeti tam olarak bu değildi. J2ME
  • 36. 36 yaratıcıları profilin belirli bir cihaz kategorisinin ihtiyaçlarını göstermesi niyetindeydiler. Düşünce, profilin içinde çok sayıdaki alakasız uygulamayı toplamak değildi. Asıl amaç, aynı kategorideki tüm cihazlar arasında Java uygulaması geliştirmek için standart bir platform tanımlayarak “interoperability”i değişik üreticilerin gerçekleştirimleri arasında uyumluluk garanti etmektir. Örneğin, bir profil mobil telefonlarca kullanılan Kısa Mesaj Servis (SMS) standardı için ağ iletişimini destekleyebilir. Çünkü SMS standardı mobil telefonların her yerde olan bir özelliğidir, bu yüzden mobil telefonları hedef alan bu özelliği konfigürasyonun içine yerleştirmek yerine profilin içinde tanımlamak gerekir. Profil konfigürasyonun üzerinde gerçekleşir, yani gerçek-dünya uygulamalarına bir adım daha yakındır. Tipik olarak, profiller konfigürasyonların oluştuğu kütüphanelerden daha cihaz karakteristiklerine özel kütüphaneler içerirler. Uygulamalar, konfigürasyon ve profilin üzerine yerleşirler; bu uygulamalar sadece bu iki düşük seviyeli spesifikasyonların desteklediği sınıf kütüphanelerini kullanırlar. Profillerden biri bir diğerinin üzerine yerleşebilir. J2ME platformu sadece bir konfigürasyon içerebilir. J2ME platformu, temel Java kütüphaneleri ve Sanal Makineyle (VM) temel çalıştırma ortamından, konfigürasyondaki sistem seviyesinde uygulama programlama arayüzleri kümesinden, ve profillerdeki uygulama seviyesi API’lerden oluşur. Konfigürasyon üç temel elemanı tanımlar: 1. Java programlama dili özellikleri kümesi 2. Java sanal makine özellikleri kümesi 3. Java kütüphanelerinin ve uygulama programlama arayüzlerinin (APIs) kümesini J2ME yaratıcıları uyumsuz platformlar arasındaki parçalanmışlığı önlemek için sadece iki konfigürasyon tanımlamışlardır. Konfigürasyonlar arasında içiçe bir ilişki vardır. J2ME mimarisindeki tüm konfigürasyonlar süper küme altküme sıralanışı içindedirler. Bu kısıtlanmış bir konfigürasyondan daha zengin özellikli bir konfigürasyona doğru ilerlerken taşınabilirliği arttırır. Teorik olarak, bir konfigürasyon J2SE platformu kütüphanelerinin benzeri bir destek sağlar. Fakat gerçek dünyada bu mümkün olmaz çünkü J2ME masaüstü bilgisayarlarından daha az güçlü cihazları hedefler. Konfigürasyon spesifikasyonları, J2SE den uyarlanmış tüm Java sınıflarının aynı veya altkümesi şeklinde orijinal J2SE sınıflarını
  • 37. 37 gerektirir. Yani bir sınıf J2SE versiyonunda bulunmayan bir methodu ekleyemez. Konfigürasyonlar, kendi spesifikasyonlarına sınıflar ekleyebilirler, yine de konfigürasyonlar mutlaka J2SE’nin bir altkümesi değildirler. Örneğin, her iki konfigürasyon da cihaz özelliklerine ve kısıtlarına bağlı olarak J2SE’de bulunmayan tarih sınıflarını tanımlamışlardır. Konfigürasyonlar JVM(Java Virtual Machine) detaylarını ve belli sınıftaki cihazlarla kullanılabilecek temel kütüphaneleri tanımlayan belirtimlerdir. Mesela 512KB bellekten az hafıza alanı ve sınırlı bir ağ bağlantısı olan cihazların konfigürasyonu CLDC olarak adlandırılır. CLDC’lere örnek olarak bazı cep telefonları ve avuç içi bilgisayarlar (PDA’s) verilebilir. Daha fazla belleğe ve işlemci gücüne sahip, sürekli ağ bağlantısı olan diğer konfigürasyon ise CDC olarak adlandırılır (Connected Device Configuration). Bunlara örnek olarak ise Sharp Zaurus avuç içi bilgisayarları verilebilir. Profiller uygulama geliştirmeye daha yetkin bir ortam sunabilmek için konfigürasyonun üzerine tanımlanan kütüphanelerdir. Konfigürasyon java sanal makinesi (JVM) ve temel kütüphaneleri tanımlarken, bir uygulama geliştirilirken ihtiyaç duyulabilecek yetkinlikte kütüphaneleri tanımlamaz. Profiller bu alanda uygulamanın yaşam döngüsü, kullanıcı arabirimi ve kalıcı bellek kütüphanelerini içerirler. J2ME ortamı sanal makineden, bir konfigürasyondan ve bir veya daha fazla profilden oluşur. Sanal makine işletim sistemiyle konfigürasyon arasındaki bağlantıyı kurar. Profiller ise uygulama ile J2ME ortamı arasındaki bağlantıyı sağlar. 4.4.Konfigürasyonlar 4.4.1.CLDC Konfigürasyonu CLCD (Connected, Limited Device Configuration) daha kısıtlı kaynaklara sahip cihazlara yönelik bir J2ME konfigürasyonudur. Bu profilin çekirdeğinde bir Java sanal makinesi olan KVM yatmaktadır. KVM, JVM’nin bazı kısımlarının çıkartılarak JVM’nin daha önemli ve gerekli parçalarını içerecek şekilde tasarlanmış halidir. Bu konfigürasyona ait Java paketleri: 1. java.io 2. java.lang 3. java.lang.ref 4. java.util
  • 38. 38 5. javax.microedition.io CLDC spesifikasyonları java.sun.com/products/cldc adresinde bulunabilir. Kaynakları kısıtlı cihazların aşağıdaki karakteristikleri olmalıdır: 1. Java ortamı için 160Kb tan 512Kb’a kadar toplam bellek. 2. 16-bit veya 32-bit işlemci. 3. Düşük güç tüketimi. Genellikle bu cihazlar pil gücüyle çalışırlar. 4. Belirli bir çeşit ağ bağlantısını desteklemelidirler. Kesikli ve düşük bant genişliğindeki bağlantılar. CLDC J2SE’yi baz alır fakat bazı özellikleri dahil etmez. CLDC bir temel üzerine aşağıdaki özelliklerden gerekli olanları eklenerek oluşturulur: 1. Bu tip cihazlar için fonksiyonellik uygun mudur? 2. Bu fonksiyonellik büyük miktarda binary koda gerek duyar mı veya bellek ve CPU zamanından çok fazla tüketir mi? 3. Gerektiğinde fonksiyonellik kolaylıkla sağlanabiliyor mu? 4. Bu cihazlar genellikle fonksiyonelliği destekliyorlar mı? 5. Bu kaynakları kısıtlı cihazlarda fonksiyonelliğe bağlı bir güvenlik riskleri var mı? CLDC küçük cihazların ihtiyaçlarını karşılamak için J2SE ortamında bulunan bazı özellikleri çıkarmıştır. 4.4.2.Kilobayt Sanal Makine (KVM) KVM olabildiğince Java Sanal Makine Spesifikasyonlarına benzerdir. KVM’nin yetenekleri CLDC spesifikasyonlarıyla tanımlanmıştır. KVM, Java Sanal Makine Spesifikasyonlarından iyileştirme veya API desteği nedenleriyle CLDC gerektirdiğinde veya izin verdiğinde farklılaşır. Örneğin, kayan noktalı veya double veri tipileri CLDC uzayındaki cihazlar tarafından desteklenmez. Sonuç olarak, bu cihazlar üzerinde bu veri tiplerini gerçekleştirmek çok pahalı olacağından üreticiler tarafından desteklenmemektedir. Kayan noktalı ve double tipi CLDC tarafından desteklenmediğinden KVM tarafından da tanınmamaktadır. KVM cihazlar üzerinde küçük bir yer gerektirir, derleme tercihine ve hedef platforma bağlı olarak 40Kb ve 80Kb arasında. Bu da KVM nin 128Kb toplam belleğe sahip cihazlar üzerinde bile çalışabilmesini sağlar.
  • 39. 39 KVM, C tabanlı geliştirilmiştir ve %30 dan %80 arasındaki bir hızda çalışan JIT (just-in-time-compiler) olmayan standart Java Sanal Makinesi kadar tam ve hızlı dizayn edilmiştir. KVM’nin hedef cihazlardaki rolü çok önemlidir. Bazı gerçekleştirimlerde, KVM cihaza dinamik, interaktif, güvenli Java içeriklerini yükleyebilmek ve çalıştırabilmek için mevcut yazılım yığının üstünde kullanılır. Bazı uygulamalarda ise, KVM Java programlama dili içindeki, cihazın düşük seviyeli sistem yazılımlarını ve uygulamalarını da gerçekleştirebilmek için düşük seviyede kullanılabilir. 4.4.3.Sınıf Dosyalarının Doğrulanması Standart Java sanal makinesi sınıf dosyalarının gerçeklenmesi (class file verification) çalışma zamanında gerçekleştirilen bir süreçtir. Bu işlem, sınıfın geçerli bir Java sınıf dosyası olduğundan ve “iyi davranışlı” yani tanımlanandan farklı bir yere ulaşmayan veya java.* paketini javax.* paketiyle değiştirmeye çalışmadığından emin olmak için yapılır. Sınıf dosyalarının gerçeklenmesi Java güvenlik modelinde önemli bir rol oynar. CLDC cihazları için sınıf dosyalarının doğrulanması yoğun bir kaynak operasyonları ve önemli miktarda güç, bellek ve binary kod uzayı kullanır. Sonuç olarak KVM sınıf dosyalarını doğrulanmasını standart Java Sanal Makinesinden farklı tanımlar. KVM’yi küçültmek için, çoğu sınıf dosyalarının gerçekleştirimi işlemi KVM’nin hatta cihazın dışında yapılır. Bir sınıf bir cihazın içine yerleştirilmeden önce sınıf “preverify” tarafından değerlendirilir. “preverify” sınıf dosyasını javac derleyicisi tarafından oluşur, sınıfın geçerli bir sınıf olduğunu gösteren bytecode’ları ekler. Çalışma zamanında KVM bu sahaları kontrol eder. Eğer bu sahalar bulunmuyorsa veya doğru bilgi içermiyorlarsa, sınıfın yüklenmesi durdurulur ve aykırı durum fırlatılır. 4.4.4.CDC Konfigürasyonu CDC (Connected Device Configuration) daha az kısıtlı kaynaklara sahip cihazlara yönelik bir J2ME konfigürasyonudur. Bu profilin çekirdeğinde de CVM (Compact Virtual Machine) sanal makinesi bulunmaktadır. Genellikle CLDC den daha fazla hafıza ve işlemci gücüne sahip cihazlarda kullanılır. Ayrıca bu cihazlar sürekli ağ bağlantısına sahiptirler. Bu konfigürasyona ait Java paketleri:
  • 40. 40 1 java.io 2 java.lang 3 java.lang.ref 4 java.lang.reflect 5 java.math, java.net 6 java.security 7 java.security.cert 8 java.text, java.util 9 java.util.jar, java.util.zip 10 javax.microedition.io 4.4.5.C- Sanal Makinesi (CVM) CVM, Java Sanal Makinesi Spesifikasyonlarına tamamen uysa da, cihazlar ve ağ uygulamaları için iyileştirildiğinden gerçekleştirimi J2SE sanal makişnesinden tamamen farklıdır. Garbage collection algoritmaları CVM’nin içine değişik garbage collection algoritmaları yerleştirilebilsin diye sanal makineden tamamen ayılmıştır. Referans gerçekleştirimi, sanal makinenin uzun garbage collection periyotlarına oranla daha kısa garbage collection periyotları kullanır. Garbage collection daha sık ve kısa zaman aralıklarında çalışır. Garbage collector daha dikkatlidir, garbage collection zamanında tüm pointerları bilir böylece cpu devirlerinden fazla harcamamış olur. Platformlar arası taşınabilirliği arttırmak için referans gerçekleştirimi multithreading’i sanal makinenin içinde tanımlar. Sanal makinenin içinde gerçekleşen threadlere “green threads” denir. “green thread”lerin kullanımı, multithreading için işletim sistemi bağımlılığı olmadığından beri sanal makinenin taşınabilir olmasını sağlamıştır. Sınıf dosyası gerçeklenmesi cihazda gerçekleşir. CDC kullanırken preverification adımı yoktur.
  • 41. 41 4.5.Profiller 4.5.1.MIDP Profili MIDP(Mobile Information Device Profile) mevcut profiller arasında ilk ve en yaygın olanıdır ve uygulamanın yaşam döngüsü, kullanıcı grafik arabirimleri, iletişim ağı ve kalıcı depolama ile ilgili kütüphanelerini içerir. MIDP CLDC konfigürasyonunun üzerine oturur ve günümüzde Motorola, Nokia, Ericsson ve RIM (Blackburry) gibi sector devleri tarafından desteklenmektedir. MIDP 1.0 ın desteklediği paketler: 1 java.io 2 java.lang,java.util 3 javax.microedition.io 4 javax.microedition.lcdui 5 javax.microedition.midlet 6 javax.microedition.rms MIDP 2.0 ın desteklediği paketler: 1 java.io 2 java.lang 3 java.util 4 javax.microedition.io 5 javax.microedition.lcdui 6 javax.microedition.lcdui.game 7 javax.microedition.media 8 javax.microedition.media.control 9 javax.microedition.midlet, javax.microedition.pki 10 javax.microedition.rms
  • 42. 42 Bu profil Palm işletim sistemi(Palm OS) üzerinde de çalışabilir. Bu profili kullanan cihazlar çok fazla kişiselleşmiş cihazlardır. Çoğu zaman bu cihazların kullanıcısı sadece kullanıcıdır. Bu cihazların kullanıcı arayüzü için küçük ekranları, veri girişi için küçük klavyeleri ve limitli veri depolama yetenekleri gibi kısıtlı kaynakları vardır. Şekil 4.2: MIDP Kapasiteli Cihaz Mimarisi: 4.5.2.PDA Profili (PDAP) Bu profil PDA-stilinde grafiksel kullanıcı arayüzüne ve dokunmatik ekrana sahip kullanıcı arayüzü ve veri depolama yeteneklerine sahip kişisel dijital ajandaların gerekliliklerini karşılamak içindir. 4.5.3.Kuruluş Profili (Foundation Profile) Kuruluş profili grafiksel kullanıcı arayüzü, veri depolama, dağıtık Java ağ bağlantısı gibi özellikler sağlayan CDC profiline bir taban gibi hizmet eder. Taban profili olarak işlevlerinin yanında yüksek bant genişliği ve fazla bağlantı kuran cihazlar için zengin bir ağ desteği sağlar. Bu profil, kişisel bilgisayarlardan daha küçük cihazlar için diğer profillerle kullanılarak daha zengin bir uygulama ortamı sağlar.
  • 43. 43 4.5.4.Kişisel Profil (Personal Profile) Kişisel profil pek çok kişisel Java API’leri için yeni bir yurttur. Cep bilgisayarlarını hedef alan kişisel-Java API’leri J2ME mimarisine uyacak şekilde yeniden oluşturuldu. Kişisel java CDC’nin içinde Kuruluş Profili ve Kişisel Profile ayrıldı. Kişisel profile ek olarak JavaPhone ve JavaTV API’leri eklendi. CDC tabanlı bazı profiller ve ilişkileri: Şekil 4.3: CDC tabanlı bazı profiller ve ilişkileri: 4.5.5.RMI Profili RMI profili CDC uzayındaki uygulamalar için dağıtık bir destek sağlar. Bu profil uzak metod çağırımlarının parametrelerine ve dönüş değerlerine bir altyapı sağlar. Kablo protokolü olan JPMP (Java Remote Method Protocol) desteklenmelidir. Aşağıdaki paketler RMI profilinin içinde yer almaz: • java.rmi.server.disableHttp • java.rmi.activation.port • java.rmi.loader.packagePrefix • java.rmi.registry.packagePrefix • java.rmi.server.packagePrefix
  • 44. 44 4.5.6.Kişisel Temel Profil (Personal Basis Profile) Bu profil CDC konfigürasyonunda ve kuruluş profilinde çalışan cihazların grafiksel yetenekleri için temel bir seviye sağlar. Ayrıca kişisel profiling grafiksel yetenekleri için temel oluşturur. 4.5.7.Multimedya Profili (Multimedia Profile) Bu profil ses ve diğer medya için CLDC ve CDC konfigürasyonları için temel multimedia desteği sağlar. Java Media Framework’ün fikirleri benimsenmiştir fakat bu profil JMF ile uyumlu değildir. Multimedya profili diğer J2ME profilleriyle kullanılmak üzere seçimlik geliştirilmiştir. 4.5.8.Oyun Profili (Gaming Profile) Bu profil J2ME cihazları için oyun desteği sağlar. CDC konfigürasyonu bu profiling hedef ortamıdır. Diğer J2ME profilleriyle kullanılabilecek seçimlik bir profildir. Şekil 4.3: J2ME Konfigürasyon ve Profil Haritası:
  • 45. 45 5.MIDP PROGRAMLAMA Cep telefonları, kişisel dijital ajandalar gibi küçük kapasiteli araçlarda uygulamalar “MIDP” profili kullanılarak, “javax.microedition.midlet.MIDLET” sınıfı genişletilerek oluşturulur. Bu sınıf, araçta bulunan Uygulama Yönetim Yazılımı ile MIDP uygulamaları arasında bir arayüz gibi davranır. MIDP uygulamaları oluşturulurken, başlangıç noktası bir MIDlet’tir. 5.1.MIDP Uygulaması Geliştirme 5.1.1.MIDlet Nedir? MIDlet, MIDP uygulamalarının temel noktasını oluşturmak için yaratılan soyut bir sınıftır. MIDlet sınıfı, “javax.microedition.MIDlet” paketi içinde yer alır. Bu nedenle gerçekleştirilmek istenen bir MIDlet’te aşağıda verilen kod parçaları mutlaka yer almalıdır. import javax.microedition.midlet.MIDlet; public class MerhabaDunya extends MIDlet { } Eğer bir metin kutusu görüntülenmek istenirse sınıf içinde bir “constructor” tanımlanmalı ve metin kutusunun tanımlanma kodu da “constructor”ın içinde yer almalıdır. import javax.microedition.midlet.MIDlet; import javax.microedition.lcdui.*; public class MerhabaDunya extends MIDlet { private TextBox textbox; public MerhabaDunya() { textbox = new TextBox("", "Hi Small World!", 20, 0); } } MIDlet’ler “startApp()”, “pauseApp()” ve “destroyApp(boolean b)” olmak üzere üç tane önemli metot içerirler. MIDlet başlatıldığı zaman, cihazdaki uygulama yönetim servisi ilk olarak “startApp()” metodunu çağırır.
  • 46. 46 1. startApp() : MIDlet’in yaşam döngüsü boyunca defalarca kez çağırılabilir. İlkleme işlemlerinin gerçekleştirildiği bir metot değildir. Uygulamanın çalıştırılacağı cihazda, bir MIDlet’in başlatılacağı mesajı alınınca Uygulama Yönetim Servisi bu metodu çağırır. Metot içinde metin kutusunun aktif duruma getirildiği bir örnek kod parçası aşağıda verilmiştir: public void startApp() { Display.getDisplay(this).setCurrent(textbox); } 2. pauseApp() : Kullanıcı veya cihaz, çalışan uygulamayı kesip başka bir görev gerçekleştirmek istediğinde cihaz tarafından çağırılan bir metottur. Bu metod çağırıldığında MIDlet “duraklatılmış” duruma geçer. Eğer ekranda sadece bir metin kutusu gösterilecekse “pauseApp()” metodu boş olarak gerçekleştirilebilir. public void pauseApp() { } 3. destroyApp(boolean b) : Kullanıcı uygulamayı kapatmak istediğinde veya sistem (bir nedenden dolayı) uygulamanın kapatılmasını isterse bu metod çağırılır. Bu metod, çalışmakta olan uygulamaya kullandığı kaynak varsa, bunları düzenlemesi için olanak tanır. Parametre olarak “TRUE” değerini alırsa, uygulamanın kaynakları temizlemekten başka çaresi yoktur. Parametre olarak “FALSE” değerini alırsa, uygulama çalışmaya devam etmek için “MIDletStateChangeException” fırlatabilir. Eğer metoda parametre geçirilmezse uygulamanın temizlemesi gereken kaynağı yok demektir. Ekranda sadece bir metin kutusu gösterileceğinden ve herhangi bir kaynak temizlemesine gerek duyulmayacağından “destroyApp(boolean b)” metodu da boş olarak gerçekleştirilebilir. public void destroyApp(boolean unconditional) { } Basit bir MIDlet için temel olarak yukarıda bahsedilen üç metod yeterlidir. Bu üç metodun kullanıldığı “MerhabaDunya” MIDlet’inin kodu aşağıda verilmiştir: MerhabaDunya.java import javax.microedition.midlet.MIDlet;
  • 47. 47 import javax.microedition.lcdui.*; public class MerhabaDunya extends MIDlet { private TextBox textbox; public MerhabaDunya() { textbox = new TextBox("", "Hi Small World!", 20, 0); } public void startApp() { Display.getDisplay(this).setCurrent(textbox); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } } Bir MIDlet yaratıldığı veya başlatıldığı zaman “Duraklatılmış” durumdadır. Eğer herhangi bir aykırı durum oluşursa MIDlet “Sonlandırılmış” duruma geçer. MIDletler “Aktif” durumdan “Duraklatılmış” duruma, “pauseApp()” metodunun işletilmesi tamamlandıktan sonra geçerler. “Sonlandırılmış” duruma ise “destroyApp()” metodu tamamlanınca geçilir. Şekil 5.1: MIDlet yaşam döngüsü: 5.1.2.Uygulamanın Derlenmesi Derleme işleminin gerçekleştirilebilmesi için “MIDP Geliştirme Ortamı”na ihtiyaç vardır. Sun’ın MIDP ürünü “http://java.sun.com” internet adresinden indirilebilir. MIDP, “midp-fcs” diznine kaydedilir. MIDP kaydedildikten sonra bazı ortam değişkenlerine değer verilmesi gerekmektedir: MIDP=midp-fcs MIDPClasses=midp-fcsclasses
  • 48. 48 MIDPTools=midp-fcsbin Ortam değişkenlerine değerleri verildikten sonra derleme işlemine geçilebilir. Standart “javac” derleme komutu kullanılarak, derleme işlemi yapılmaktadır. “javac”, J2SE uygulamalarını derlemek için kullanılmaktadır; ancak, J2ME uygulamalarının da “javac” komutu ile derlenmesi için “-bootclasspath” opsiyonu ile kullanılmalıdır. “-bootclasspath” opsiyonu kullanılarak, derleyicinin J2ME kütüphanesini kullanması sağlanır. J2ME uygulamalarının derlenmesi için; >javac -g:none -bootclasspath %MIDPClasses% HiSmallWorld.java komut satırı kullanılmalıdır. “-g:none” opsiyonu kullanılarak, “*.class” dosyalarının hata ayıklama bilgilerini içermesi önlenir. Bu opsiyon kullanılarak, “*.class” dosyalarının boyutları küçük tutulmaktadır. “%MIDPClasses%” değişkeni, bir ortam değişkenidir. Bu değişken J2ME sınıflarının bulunduğu dizini göstermektedir. 5.1.3.“Preverifying” İşleminin Gerçekleştirilmesi Güvenlik nedenleri ile standart “Java Runtime Environment”, “class” dosyalarını belleğe yüklemeden önce doğrulama işleminden geçirir. Bu doğrulama işlemi, “class” dosyasının geçerli olup olmadığının anlaşılması için gerçekleştirilir. J2ME cihazları, masaüstü bilgisayarlarına göre daha kısıtlı özelliklere sahip olduklarından bazı J2ME sanal makineleri; “class” dosyalarının doğrulanma işlemini, standart Java sanal makineden farklı şekilde yapmaktadır. J2ME cihazlarında, doğrulama işleminin tamamı cihaz üzerinde yapılmaz. Her “class” dosyası, J2ME geliştirme ortamının sahip olduğu “preverify” özelliği ile önceden doğrulanmalıdır. “Preverify” işlemi, tüm sınıfları doğrulama işleminden geçirir ve sonrasında dosyalara doğrulandıklarını belirten özel bir değer ekler. Çalışma zamanında ise J2ME sanal makinesi bu özel değerleri kontrol eder. Eğer bu özel değer geçerli ise, sanal makine sınıfı çalıştırabilir. Ancak; “class” dosyası özel değere sahip değilse sanal makine aykırı bir durum olduğunu tespit eder ve sınıfın yükleme sürecini durdurur. Önceden doğrulama işlemi “preverify.exe” dosyası çalıştırılarak yapılmaktadır. Bir uygulamanın önceden doğrulanması için ; >%MIDPTools%preverify -classpath %MIDPClasses%;. HiSmallWorld
  • 49. 49 komut satırı kullanılmaktadır. Önceden doğrulama işlemi sonucunda, “class” dosyaları oluşturulur. 5.1.4.Uygulamanın Çalıştırılması Sınıfları Derlenen ve doğrulama işlemi gerçekleştirilen uygulama çalıştırılmaya hazırdır. Uygulamanın çalıştırılabilmesi için bir emülatöre ihtiyaç vardır. “MIDP Referans Gerçekleştirimi” de bir emülatördür. Emülatörün çalıştırılabilir ismi, “midp” dir ve “midp- fcsbin” dizini altında yer almaktadır. Uygulamanın çalıştırılabilmesi için aşağıdaki komut satırı kullanılmaktadır: >%MIDPTools%midp -classpath %MIDPClasses%;.output MerhabaDunya Bu komut “-classpath” parametresi ile uygulamada bulunan sınıf dosyalarını çalıştırılan “midp” ye geçirir. “.output” parametresi ise, önceden doğrulama işlemi sonucunda oluşmuş olan “class” dosyalarının nerede kayıtlı olduklarını göstermek için kullanılır. Şekil 5.2: Eğer 2.1.1 konusunda Verilen “MerhabaDunya.java” Uygulaması Sorunsuz Bir Şekilde Çalışırsa Ekran Görüntüsü Emülatör kapatıldıktan sonra komut ekranına aşağıdaki gibi çıktılar yazılmaktadır: D:javaMerhabaDunya>midp-fcsbinmidp -classpath midp-fcsclasses;.output
  • 50. 50 MerhabaDunya Execution completed successfully 8205 bytecodes executed 7 thread switches 204 classes loaded (149 bytes) 220 objects allocated (9572 bytes) 0 garbage collections 0 bytes collected 0 objects deferred in GC 0 (maximum) objects deferred at any one time 0 rescans of heap because of deferral overflow 0 pointer validations requiring heap scans Current memory usage 9572 bytes Heap size 300000 bytes 5.1.5.Uygulamaların JAR Dosyası Haline Getirilmesi Birçok durumda, MIDP uygulamaları “JAR” dosyaları haline getirilir. Kullanılan ağ protokolü ve onun içerdiği istemci-sunucu yazılımına bağlı olarak, belirli bir protokol üzerinden birçok uygulama yüklemesi yapılırken JAR dosyaları daha verimlidir. Örneğin; HTTP protokolü ile uygulama yüklenirken her sınıf dosyası için bir bağlantıya ihtiyaç duyulurken, JAR dosyası için tek bağlantı yeterli olmaktadır. Mevcut olan “class” dosyalarını kullanarak jar dosyası oluşturulurken; >jar cf merhaba.jar -C .output MerhabaDunya.class komut satırı işletilir. “cf” parametresi, “jar” çalışabilir dosyasına “merhaba.jar” isimli bir yeni bir JAR dosyası oluşturması gerektiğini belirtir. “-C” opsiyonu ise, “.output” dizini altındaki “MerhabaDunya.class” dosyasına erişebilmeyi sağlar. Uygulamayı, oluşturulan “merhaba.jar” dosyasından çalıştırabilmek için JAR dosyasına yol tanımlamak gerekmektedir. >%MIDPTools%midp -classpath %MIDPClasses%;.merhaba.jar MerhabaDunya
  • 51. 51 Komut satırı işletilerek uygulamanın ilgili jar dosyasından çalışması sağlanmaktadır. 5.1.6.MIDlet Takımı Geliştirilmesi Birçok MIDlet, bir MIDlet takımı kullanılarak gruplanabilir. Bir MIDlet takımı; tüm MIDlet’leri içeren bir JAR dosyası, desteleyici sınıflar ve Uygulama Tanımlayıcı Dosyası’ndan oluşur. Uygulama Tanımlayıcı Dosyası, MIDlet takımı hakkındaki bilgileri içeren metinsel bir dosyadır. Bu dosyanın uzantısı “.jad” dır. MIDlet’lerin takımların bir parçası olarak kullanılması, bazı yönlerden avantaj sağlar. Örneğin, bir takımın içindeki MIDlet’ler cihazdaki kaynakları paylaşabilir. Bir MIDlet takımı oluşturmak için birden fazla sayıda MIDlet sınıfına gerek vardır. (Örneklerde basit olması açısından “MerhabaDunya1” ve “MerhabaDunya2” MIDlet’leri kullanılmaktadır.) Öncelikle, MIDlet’ler ayrı ayrı derlenmeli ve doğrulama işleminden geçirilmelidir. >javac -g:none -bootclasspath %MIDPClasses% MerhabaDunya1.java >%MIDPTools%preverify -classpath %MIDPClasses%;. MerhabaDunya1 >javac -g:none -bootclasspath %MIDPClasses% MerhabaDunya2.java >%MIDPTools%preverify -classpath %MIDPClasses%;. MerhabaDunya2 Komut satırları işletildikten sonra MIDlet takımı oluşturmak için hazır duruma gelinmektedir. 5.1.7.MIDlet Takımı Tanımlayıcı Dosyası İlk adım, MIDlet takımı için tanımlayıcı bir dosya oluşturmaktır. Cihazdaki Java Uygulama Yöneticisi, uygulamanın yaşam döngüsünü yönetirken bu tanımlayıcı dosyayı kullanır. Java Uygulama Yöneticisi, uygulamaların indirilmesi, yüklenmesi, çalıştırılması ve silinmesinden sorumludur veya bu işlemlerin yapılmasına katkıda bulunur. Tanımlayıcı dosya da Java kaynak dosyaları ile aynı dizine kaydedilmelidir. Aşağıda örnek bir tanımlayıcı dosyanın içeriği verilmiştir: MIDlet-Name: MerhabaDunyaTakimi MIDlet-Version: 1.0.0 MIDlet-Vendor: KTU, Istatistik ve Bilgisayar Bilimleri MIDlet-Description: Ornek bir MIDlet takimi MIDlet-Info-URL: http://www.ktu.edu.tr/ MIDlet-Jar-URL: http://localhost/merhaba.jar
  • 52. 52 MIDlet-Jar-Size: 3000 MicroEdition-Profile: MIDP-1.0 MicroEdition-Configuration: CLDC-1.0 MIDlet-1: Merhaba1, , MerhabaDunya1 MIDlet-2: Merhaba 2, , MerhabaDunya2 5.2.MIDP Kullanıcı Arayüz APIleri Kaynakları kısıtlı olan cihazların, bellekleri ve ekran boyutları kısıtlı olduğundan görüntüleme kapasiteleri de kısıtlıdır. Bu nedenden, MIDP uygulamalarında kullanıcı arayüzü oluşturulurken J2SE’deki AWT sınıfı kullanılamaz. MIDP kendi kullanıcı arayüzü API’sine sahiptir. MIDP düşük seviyeli ve yüksek seviyeli olmak üzere iki tane kullanıcı arayüz API’si içerir. Düşük seviyeli API “Canvas” soyut sınıfına dayanırken; yüksek seviyeli API’nin kullandığı “Alert, Form, List, TextBox” sınıfları “Screen” soyut sınıfına dayanır. (Şekil 2.4: MIDP kullanıcı arayüz tiplerinin sınıf diyagramı) 5.2.1.MIDP Ekran Kontrolü MIDP’de cihazın ekran ve görüntüsünü yöneten “Display” nesnesi vardır. “Display” nesnesi, düşük veya yüksek seviyeli API’ler için kullanıcı arayüzü elemanlarını ekrana çizmek ve bunları ekranda görüntülemek için gereken metotları içerir Şekil 5.4: MIDP Kullanıcı Arayüz Tiplerinin Sınıf Diyagramı
  • 53. 53 Cihazın ekranında kullanıcı arayüz nesnelerinin gösterilebilmesi için, bir “Displayable” nesnesi diğer gösterilmek istenen kullanıcı arayüz nesnelerini içermelidir. Belirli bir zamanda, sadece bir tane “Displayable” nesnesi gösterilebilir. Belirli bir zamanda gösterilen “Displayable” nesnesinin hangisi olduğu “getCurrent()” metodu ile öğrenilebilir. Ekranda gösterilen nesne ise “setCurrent(Displayable birSonrakiEkran)” metodu kullanılarak değiştirilebilir. 5.2.2.Yüksek Seviyeli Kullanıcı Arayüz API’si “Screen” sınıfı, tüm yüksek seviyeli “Displayable” nesnelerinin süper sınıfıdır. Alt sınıfları iki farklı türde olabilir. Birinci türde, kullanıcı arayüz elemanı önceden tanımlanmış bir tiptedir ve kullanıcıya bilgi görüntülemek için kullanılır. İkinci türde ise, uygulamalar ekrandan grafiksel eleman eklenmesine veya çıkarılmasına izin verirler(bir “Form” nesnesindeki metin kutusuna ad_soyad girilmesi gibi). 5.2.2.1.Form Bir “Form”, “items” adı verilen onay kutusu, seçenek kutusu, yazı alanı gibi grafiksel elemanları içerebilir. Uygulamalar, “Displayable” nesnesinin içeriğini ancak görünür olmadıkları zaman değiştirebilir. 5.2.2.2.Alert “Alert”, bir mesaj çeşididir. Kullanıcıya bilgi vermek için kullanılır. Cihaz tarafından belirlenmiş süre kadar bu mesaj ekranda görüntülenir. Cihaz tarafından belirlenen süreyi kullanmak yerine, uygulama içerisinde mesajın görüntüleneceği süre milisaniye cinsinden belirtilebilir. Alert (String title); Alert (String title, String messageString, Image alertImage,AlertType alertType); 5.2.2.3.List Kullanıcı girişlerinde sadece karakter girişleri yeterli olmayabilir. Bazı durumlarda kullanıcıya belirli değerleri seçtirmek isteyebiliriz iste böyle durumlarda List sınıfını kullanıyoruz. List bir dizi değer içerisinden bir ve bir kaçını seçmemize yarayan UI (User Interface) bileşenidir List yapısı aşağıdaki gibidir. List (String title, int listType);
  • 54. 54 List sınıfının iki adet kurucu metodu vardır. Bunlar title ve listType tır. “title List” üzerinde görünecek baslık listType List in biçimi belirtir. Örnek bir List tanımlayacak olursak List liste= new List("Ürünler",1); Yukarıdaki örnekte liste adında ve List sınıfı tipinde bir nesne yarattık bu nesneye iki adet kurucu metot parametresi gönderdik “Ürünler” ve 1 bu parametrelere göre liste nesnemizin baslığı Ürünler tipide 1 olacaktır. List içerisine veri eklemek için List.append() metodu kullanılır. Kullanım sekli aşağıdaki gibidir. List.append(String stringPart, Image imagePart); append() metodu sırasıyla iki adet parametre alır. Bunlar yazı (String) içeriği ve resim (Image) içeriği. Image yaratmak zorunlu değildir eğer elimizde bir resim yok ise Image nesnesi olarak null atayabiliriz. Bu durumda ekranda herhangi bir resim görünmeyecektir. Kodumuzu örneklendirecek olursak. import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class OrnekMIDlet extends MIDlet { public void startApp() { List liste= new List("Ürünler",List.EXCLUSIVE); liste.append("Bilgisayar", null); liste.append("Telefon", null); liste.append("DVD", null); Display ekran=Display.getDisplay(this); ekran.setCurrent(liste); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } }
  • 55. 55 Göründüğü gibi üç adet ürün listelenmiş ve bunlardan birini seçme hakkı sağlanmıştır. Üst bölümde ise Ürünler baslığı bulunmaktadır. Image olarak null verdiğimiz için listemizde herhangi bir resim görünmüyor. Bunu resimli olarak göstermek istersek kodumuz aşağıdaki gibi olmalıdır. import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class OrnekMIDlet extends MIDlet { public void startApp() { Image resim= null; try{ resim=Image.createImage("/resim.jpg"); } catch(Exception e){ System.out.println("Resim olusturulamadı"); } List liste= new List("Ürünler",List.EXCLUSIVE); liste.append("Bilgisayar", resim); liste.append("Telefon", resim); liste.append("DVD", resim); Display ekran=Display.getDisplay(this); ekran.setCurrent(liste); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } }