BTME: Mobil Peer-to-Peer Uygulamalar İçin Bluetooth Uygulama Çatısı



Benzer belgeler
BTME: Mobil Peer-to-Peer Uygulamalar İçin Bluetooth Uygulama Çatısı

Mobi l Peer-To-Pee (P2P) Ağlarda Servi s Tabanlı Yazılım Geli şti rme

Java 2 Micro Edition (J2ME)

Mobil Cihazlardan Web Servis Sunumu


Elbistan Meslek Yüksek Okulu Güz Yarıyılı

08225 AĞ TEMELLERĠ. Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 20 EKi Salı, Çarşamba

Doç. Dr. Cüneyt BAYILMIŞ

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

Bilgi Servisleri (IS)

Bilgisayar Mühendisliği. Bilgisayar Mühendisliğine Giriş 1

MOBİL TEKNOLOJİLERDE SERVİS TABANLI YAZILIM GELİŞTİRME

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

Logsign Hotspot. Güvenli, izlenebilir, hızlı ve. bağlantısı için ihtiyacınız olan herşey Logsign Hotspot da!

Görsel Programlama DERS 12. Görsel Programlama - Ders12/

Spring Ekosisteminde Kurumsal Yazılım Geliştirme. Kenan Sevindik Harezmi Bilişim Çözümleri A.Ş.

Asp.Net Veritabanı İşlemleri

Chapter 6 Mimari Tasarım. Lecture 1. Chapter 6 Architectural design

Web Uygulamaları Mimarileri ve Güvenliği

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

Bulut Bilişim. Ege Üniversitesi Bilgisayar Mühendisliği Web Servisleri

ÖZGÜR YAZILIMLAR İLE J2EE

Farklı Mobil Platformlar Üzerinde Servis Tabanlı Mimari(SOA) Yaklaşımı: Elektronik Uçuş Çantası Vaka Çalışması

BİLGİSAYAR AĞLARI VE İLETİŞİM

Doç. Dr. Cüneyt BAYILMIŞ

MaestroPanel Kurulum

MOBIL UYGULAMA GELIŞTIRME

Veritabanı Dersi. Teoriden Pratiğe. Çağıltay N.E., Tokdemir G. Veritabanı Sistemleri Dersi -Bölüm XXV: Web'den Erişim Çağıltay, N., Tokdemir, G.

Nagios XI Günümüzün talep gören kurumsal gereksinimleri için en güçlü BT altyapısı gözetim ve uyarı çözümüdür.

WiFi RS232 Converter Sayfa 1 / 12. WiFi RS232 Converter. Teknik Döküman

Modüler Yangın Paneli 5000 Serisi Planlarınız kadar esnek

State Yönetimi. Bir web sayfası ile sunucu arasındaki etkileşim ;

Yeni Nesil Ağ Güvenliği

Model Güdümlü Geliştirme ile Gömülü Kaynakların Yönetimi

İleri Düzey Bilgisayar Ağları

VPN NEDIR? NASıL KULLANıLıR?

Protocol Mimari, TCP/IP ve Internet Tabanlı Uygulamalar

Gezgin Etmen Sistemlerinin Başarım Ölçümü: Benzetim Tekniği

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Bilgisayar Ağları - 1 (BİL 403)

OSPF PROTOKOLÜNÜ KULLANAN ROUTER LARIN MALİYET BİLGİSİNİN BULANIK MANTIKLA BELİRLENMESİ

Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi

WiFi Relay Sayfa 1 / 11. WiFi Relay. Teknik Döküman

DOKUZ EYLÜL ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ MÜDÜRLÜĞÜ DERS/MODÜL/BLOK TANITIM FORMU. Dersin Kodu: CSE 5045

COĞRAFİ BİLGİ SİSTEMLERİ SERVER MİMARİSİ SERVER UYGULAMA GELİŞTİRME EĞİTİMİ

Elbistan Meslek Yüksek Okulu Güz Yarıyılı

MÜHENDİSLİK FAKÜLTESİ / ENSTİTÜSÜ / YÜKSEKOKULU BİLİŞİM SİSTEMLERİ MÜHENDİSLİĞİ BÖLÜMÜ /ABD LİSANS PROGRAMI - 2 ( yılı öncesinde birinci

JavaServerFaces. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4

BÖLÜM 7. Telekomünikasyon, İnternet ve, Kablosuz Teknoloji. Doç. Dr. Serkan ADA

Bölüm 9. İletişim ve Ağlar. Bilgisayarların. Discovering. Keşfi Computers Living in a Digital World Dijital Dünyada Yaşamak

OPC Data Access (DA) Temelleri

ÖNDER BİLGİSAYAR KURSU. Sistem ve Ağ Uzmanlığı Eğitimi İçeriği

Elbistan Meslek Yüksek Okulu Güz Yarıyılı EKi Salı, Perşembe Öğr. Gör. Murat KEÇECĠOĞLU

Dokunmatik Panel Ürün Ailesi. Eğitim Sunumu: Proje Uyarlama Kılavuzu

Java. Hakkımızda. Java Eğitimi

MCR02-AE Ethernet Temassız Kart Okuyucu

Bilgi Sistemleri Tasarımı (SE 503) Ders Detayları

Kurumsal Yönetim Sistemleri Sistemleri

BSM 532 KABLOSUZ AĞLARIN MODELLEMESİ VE ANALİZİ OPNET MODELER

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

Mobil Cihazlarda RTMFP Protokolü ile P2P Görüntü İletimi

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

Ben Sine CANBOLAT Türk Hava Kurumu Üniverstesi nde araştırma görevlisi olarak çalışmaktayım. Sizlere «E-Devlet Yazılım Çerçevesi: Sektörel Kazanımlar

Yazılım Mühendisliği 1

Bilişim Teknolojileri Temelleri 2011

Swing ve JDBC ile Database Erişimi

ED Model Yapıtaşı Haberleşme Altyapısı

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Üst Düzey Programlama

Client Server Database

Mobil Cihazlardan Web Servis Sunumu Özlem Özgöbek 1, R. Cenk Erdur 2 1,2

Öğr. Gör. Serkan AKSU 1

BİLGİSAYAR AĞLARI Bilgisayar İletişimi Nedir? Veri İşleme Modelleri ve Ağ Gelişimi Merkezi İşleme

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

Java Programlama Giriş

Bilişim Sistemleri. Modelleme, Analiz ve Tasarım. Yrd. Doç. Dr. Alper GÖKSU

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

OG VE AG GENİŞBANT POWER LINE HABERLEŞME

BLM 6196 Bilgisayar Ağları ve Haberleşme Protokolleri

OpenScape 4000 V7. Kurumsal Çözümler Her Zaman Fark Yaratır Ocak 2014

OG VE AG GENİŞBANT POWER LINE HABERLEŞME

Yrd. Doç. Dr. Büşra ÖZDENİZCİ IŞIK Üniversitesi Enformasyon Teknolojileri Bölümü

BİLİŞİM SİSTEMLERİNİN PRENSİPLERİ

Ağ Yönetiminin Fonksiyonel Mimarisi

O P C S T A N D A R D I

DM-501 Tak-Çalıştır GPRS-UART Köprüsü

T.C. ERCİYES ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ EĞİTİM ÖĞRETİM YILI DERS KATALOĞU

Yazılım Örüntüleri (SE 461) Ders Detayları

Örgü Ağlar (Mesh Networks)


NETWORK BÖLÜM-5 OSI KATMANLARI. Öğr. Gör. MEHMET CAN HANAYLI CELAL BAYAR ÜNİVERSİTESİ AKHİSAR MESLEK YÜKSEKOKULU 1/27

Mobil Uygulama Geliştirmeye Giriş (ISE 407) Ders Detayları

Öğr.Gör. Gökhan TURAN Gölhisar Meslek Yüksekokulu

Bir yazılım geliştirme metodolojisi aşağıdaki adımlardan meydana gelir; Yazılım geliştirme sürecine destek verecek araçlar, modeller ve yöntemler.

BioAffix Ones Technology nin tescilli markasıdır.

Computer Networks 5. Öğr. Gör. Yeşim AKTAŞ Bilgisayar Mühendisliği A.B.D.

Sensör Kullanarak Servis Araçlarının Koltuk Doluluk Durumlarının Uzaktan İzlenmesi

Örnek bir kullanım ve bilgisayar ağlarını oluşturan bileşenlerin özeti

Küme Bilgisayarlar. Enabling Grids for E-sciencE. Onur Temizsoylu. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi ODTÜ, Ankara

Mobil Uygulama Geliştirmeye Giriş (ISE 407) Ders Detayları

Bölüm 9. İletişim ve Ağlar. Bilgisayarların. Discovering. Keşfi Computers Living in a Digital World Dijital Dünyada Yaşamak

Transkript:

BTME: Mobil Peer-to-Peer Uygulamalar İçin Bluetooth Uygulama Çatısı Oğuz Dönmez 1, Ata Önal 2, Tuğkan Tuğlular 3, Rıza Cenk Erdur 2 1 Ege Üniversitesi, Tire Kutsan Meslek Yüksekokulu, Tire, İzmir 2 Ege Üniversitesi, Bilgisayar Mühendisliği Bölümü, İzmir 3 İzmir Yüksek Teknoloji Enstitüsü, Urla, İzmir oguz.donmez@ege.edu.tr, ata.onal@ege.edu.tr, tugkantuglular@iyte.edu.tr, cenk.erdur@ege.edu.tr Özet: Bu bildiride; Java 2 Micro Edition(J2ME) platformu üzerinde çalışan mobil cihazlara yakınlığa dayalı peer-to-peer uygulamaları hızlı bir şekilde geliştirmeye imkan veren BTME(Bluetooth for J2ME) çatısı sunulmuştur. BTME çatısı; uygulama geliştiricilere, haberleşme için Bluetooth'u kullanan MANET uygulamaları geliştirmeye imkan verir. Çatı, taşınabilir ve kullanımı kolay olarak gerçekleştirilmiştir. Çok az bir programlama çabasıyla yeniden kullanılabilirliğini ve yeni paradigmalara adapte olabilirliğini arttırmak için tasarım desenleri kullanılmıştır. Geçerliliğini kontrol etme amacıyla BTME çatısı kullanılarak bir uygulama gerçekleştirilmiştir. Geliştirilen uygulama en az üç cep telefonuna ihtiyaç duyar. Geliştirilen uygulamadaki cep telefonlarının görevleri şu şekildedir: bir tane servis kayıtçısı, bir tane servis sağlayıcısı ve bir veya daha fazla servis istemcisi. Anahtar Sözcükler: Bluetooth, Çatı, J2ME, Mobil Peer-to-Peer Abstract: In this paper we present BTME(Bluetooth for J2ME), a framework which enables rapid development of proximity-based peer-to-peer applications for mobile devices on the Java 2 Micro Edition (J2ME) platform. BTME framework enables application developers to develop MANET applications which use Bluetooth for communication. The framework was implemented so as to be portable and easy to use. We have applied design patterns to maximize its reusability and adaptability to new paradigms with minimum programming effort. For validation purpose, we have developed an application using BTME framework. The developed application requires at least three smart phones. Roles of the smart phones of the developed application are as follows: one service provider, one service registry and one or more service requestor(s). 1. Giriş Geleneksel olarak, dağıtık hesaplamada ana görüş istemci-sunucu yaklaşımıdır. Bununla birlikte; istemci-sunucu yaklaşımında servislerin ve bilginin merkezileştirilmesi performans darboğazı ve tek nokta hatası yüzünden azalmış uygunluk problemlerini doğurur. Peer-to-peer mimarisinde; ağdaki bütün bilgisayarlar eşit olarak davrandığı için bu problem ortadan kalkar [1]. Eşit düğümlü bir P2P sistemi, sabit bir altyapı gerektirmez. Gelecekte, her cihaz hesaplama ve haberleşme yeteneklerine sahip olacak ve ortama kendi özel servislerini sunacaktır. Aynı mantıkla; bu cihazlar etkin bir şekilde çalışabilmek için diğer cihazların servislerini kullanmak isteyecektir [2]. Halen, çoğu peer-to-peer uygulamaları ve mimarileri İnternet gibi sabit ve kablolu altyapıda çalışmak üzere tasarlanmıştır. Kablosuz ağ teknolojilerinin geliştirilmesiyle; mobil cihazlar ve mobil cihazlar için programlama ortamı, peer-topeer hesaplamayı kablosuz ortama taşımayı mümkün kılmıştır [3] [4]. Çoğu kablosuz cihazlar, irda ve Bluetooth gibi kişisel alan ağı teknolojilerinden bazılarını destekler [5]. Mobil cihazlar ve PCler ya da mobil cihazlar ve çevre birimleri (kulaklık ve klavye gibi) arasında veri transferi için genelde kişisel alan ağı kullanılır. Bir kişisel alan ağı; mobil cihazın etrafında yakın cihazlarla veri değişimine izin veren dijital bir küre olarak görülebilir. Bu dijital küre, mobil bilgisayar destekli birlikte çalışmayı (mobile CSCW) desteklemek için kullanılabilir [6]. Şekil 1; mobil bilgisayar destekli çalışmayı, iki kullanıcı cihazında çalışan uygulamanın veriyi değişmesinde dijital küreleri çakıştırarak nasıl sağladığını gösterir. Böyle bir ortamda, mobil peer-to-peer desteği ve mobil ad hoc ağların (MANETler) kurulum desteği gereklidir [7]. MANETler, sabit bir altyapı sağlamazlar. MANETler, kalıcı olarak ortama giren ve çıkan düğümlerle karakterize edilirler. Bu yüzden servisler güvenilir değildir [2].

Şekil 1. Kesişen Dijital Küreler Mobil telefon ve kişisel alan ad hoc ağlarını kullanan bluetooth mobil uygulamaları hızlı geliştirilmek zorundadır ve bu tarz uygulamaları geliştirmek çok çabaya ihtiyaç duyduğu için bir çatıya ihtiyaç vardır. BTME projesi, Java 2 Micro Edition (J2ME) üzerinde çalışan mobil cihazlar için yakınlığa dayalı peer-to-peer uygulamaları hızlı geliştirmeye imkan vermesi için başlatılmıştır. Ana amacımız, peer-to-peer MANET uygulamaları için bir çatı geliştirilmesiydi. Çatı terimi, belirli yazılım alanı için yeniden kullanılabilir tasarım yapabilmek için birlikte çalışan sınıflar kümesi olarak tanımlanabilir [8]. Çatı; bütün yapıyı, onun sınıflara ve nesnelere ayrılmasını, ana sorumluluklarını ve işbirliğini, ve kontrol threadini tanımlar. Diğer deyişle, hangi bölümlerin alanda genel olduğunu hangilerinin problem bağımlı olduğunu filtreler. Bir çatı, nerdeyse bitmek üzere olan bir yap-boz olarak düşünülebilir. Yap-bozu tamamlamak için hala koymanız gereken parçalar olmasına rağmen sonuç hangi parçaları kullanıldığına göre değişebilir [9]. Bildiri aşağıdaki şekilde organize edilmiştir: Bölüm 2, çatıyı benzer yaklaşımlarla karşılaştırır. Bölüm 3, BTME çatısını açıklar. Bölüm 4, BTME uygulamasını açıklar. Bölüm 5, BTME çatısını tartışır. Son olarak bölüm 6 bildiriyi sonlandırır. 2. Önceki Çalışmalar MANETlerde peer-to-peer uygulama geliştirmek için geliştirilen çatıların olduğu çeşitli projeler bulunmaktadır. Bu bölümde en yakın projeler sunulacaktır. Peer2Me [7] çatısı, çoğu açıdan BTME ile benzerdir. Geliştiricilerin, mobil peer-to-peer uygulamalar yaratmasına izin verir. Benimsenmesi kolay, gelişmiş peer-to-peer uygulama geliştirmeye imkan veren bir API sağlar. Çatı; bütün düğümlerin aynı sorumluluk ve servislere sahip olduğu saf peer-to-peer ağ sağlayan uygulamaları desteklemek için gerçekleştirilmiştir. Peer2Me, Java 2 Micro Edition'da (J2ME) gerçekleştirilmiştir ve standart mobil cep telefonlarında çalışır. Çatı, bluetooth gibi mobil ad hoc ağların (MANET) yönetimi ve haberleşmesini destekler. Mobile Chedar [10], mobil cihazların Chedar ağına erişmesine ve diğer mobil Chedar peerleri ile haberleşmesine izin veren Chedar peer-to-peer ağına bir ilavedir. Chedar (CHEap Distributed ARchitecture), peer-to-peer uygulamaları için tasarlanmış bir peer-to-peer ara katmanıdır. Bu projede; Chedar, mobil platform olan Mobile Chedar'a genişletilmiştir. Mobile Chedar; Java 2 Micro Edition kullanılarak gerçekleştirilmiştir, ve diğer peerlere bağlanmak için Bluetooth'u kullanır. BTME'ye zıt olarak; Mobile Chedar, Mobile Chedar ağ geçidi düğümünü master olarak kullanan melez peer-to-peer modeli temellidir. Orjinal olarak Sun tarafından tasarlanan JXTA [11, 12], açık kaynak toplumunda bir çok katılımcı tarafından sürdürülmektedir. Her cihaz ve yazılım bileşeninin peer olduğu ve diğer peerlerle kolay bir şekilde işbirliğinde bulunduğu dağıtık P2P servis ve uygulamaları geliştirmede geliştiricilere yardım eden genel bir platform yaratmaya çalışmaktadırlar. JXTA teknolojisi, düşük seviye detaylara takılmadan kendi uygulamalarının fonksiyonalitesine konsantre olabildikleri temel çatı olarak görülebilir. JXTA teknolojisinin şu anki gerçekleştirimi Java temellidir, ve geliştirici ve kullanıcıların yetenekleri sınayabildiği, prototip uygulamalar geliştirebildiği ve peer ortamını kontrol edebildiği temel "shell" uygulamayı sağlar. JXTA projesinin vizyonu; onu, herbiri farklı işletim sistemleri üzerinde çalışan ve farklı ağ teknolojileriyle bağlanan geleneksel kişisel bilgisayar ya da notebookdan, PDAlere ve hücresel telefonlara ve elektronik tüketici cihazlarına farklı cihazlar üzerinde çalışır yapabilmektir. Bu amaçla; JXTA toplumu, J2ME etkin cihazlar üzerinde kablosuz JXTA peerleri kurabilmek için gereksinimler kümesi tanımlamıştır. Bu çabanın sonucu, JXME olarak adlandırılan J2ME için JXTA projesidir. JXTA'nın J2ME üzerinde çalışan saf peer-to-peer versiyonu yoktur bu yüzden BTME ile karşılaştırılamaz. JMobiPeer [12] çatısı, birbiriyle ad hoc şekilde etkileşimde bulunan J2ME etkin mobil cihazlarda çalışmak üzere tasarlanmıştır. Anahtar özellikleri; JXTA protokolleriyle birlikte çalışabilmeyi, JXME'nin(proxyli) mimari kısıtlarıyla başa çıkabilmeyi ve sabit ağa bağlantının olmadığı ad hoc konfigürasyonlarda çalışabilme yeteneğini içerir. Keşif, grup yönetimi ve peer yönetimi desteği sağlar. JMobiPeer'in çalışması sadece emülatörler ve standart PClerde test edilmiştir. Bununla birlikte, BTME cep telefonları üzerinde test edilmiştir. Aynı zamanda; BTME, JXTA ile birlikte çalışmayı sunmaz. Proem [13], mobil ad hoc ağ ortamında P2P işbirlikçi uygulamalar geliştirmek için kullanılan bir çatıdır. Genel uygulama fonksiyonalitesine

erişebilmeyi ve giyilebilir toplum uygulamalarını hızlı bir şekilde geliştirebilmeyi sağlayan bir API sunar. Proem, Java programlama dilinde geliştirilmiştir ve çeşitli mobil ve giyilebilir bilgisayar üzerinde çalıştırılabilir. Proem, ağ taşıma protokollerinden bağımsızdır ve TCP/IP, HTTP, Bluetooth ve bir çok diğer protokolün üzerine gerçekleştirilebilir. Orjinal Proem, Java Standard Edition temellidir. Bu da, sadece güçlü PDAlerin Proem'i çalıştırabilmesini sağlar. BTME ile karşılaştırılamaz. MOBY [14], servisler ve verinin mobil peer-to-peer değişimi için bir ağ sağlar. MOBY, uyarlanabilir ağ performansı ve güvenilirliği başarabilmek için dinamik servis konumu ve istemci eşleştirmeyi sunar. MOBY, JINI fonksiyonalitesini kullanır ve bu yüzden J2ME ortamında çalıştırılamaz. BTME ile karşılaştırılamaz. PnPAP [15], Finlandiya'da Oulu Üniversitesi'nde geliştirilen bir ara katmandır. PnPAP; farklı peerto-peer ağları arasında dinamik seçime, oturum yönetim protokollerine izin verirken, en iyi ağ bağlantısını korur. PnPAP'ın mimarisi, bir API katmanı, bir PnPAP engine katmanı ve aktif bağlantıyı işlemek için bir katman içerir. PnPAP platformu, Symbian S60 platformu için geliştirilmiştir ve UMTS, Bluetooth, GPRS ve WLAN ağlarını destekler. Bedd [16], Symbian S60 akıllı telefonları üzerinde çalışan ticari bir uygulamadır. Bedd, GPRS ve Bluetooth kablosuz teknolojisini kullanır. Bedd, cep telefonları arasında ad hoc mobil iletişime izin veren bir son kullanıcı uygulamasıdır. Bununla birlikte, BTME GPRS'i desteklemez. RockyRoad [17], J2ME ve J2SE için bir P2P protokolüdür. RockyRoad'un web sitesine göre iki platfor üzerinde de çalışan tek P2P protokolüdür. RockyRoad gerçekleştirimi, kablosuz ağ teknolojilerine yöneliktir ve IP üzerinden TCP ya da UDP, SMS/USSD ve GSM ya da TDMA üzerinden GPRS'i destekler. Bununla birlikte, BTME sadece J2ME platformu üzerinde çalışır ve Bluetooth ağını destekler. iclouds [18], Darmstadt Üniversitesi'nde geliştirilmiş bir ad hoc peer-to-peer mimaridir. Bu mimarinin arkasındaki motivasyon; bir grup olarak toplanan insanların aynı amaca sahip olabilmeleridir. iclouds, bu bilgiyi gruba peer-topeer olarak sağlar. iclouds, IEEE 802.11b desteği olan PDAler üzerinde çalışır. Haberleşme için ad hoc Wi-Fi protokolünü kullandığı için, maksimum haberleşme mesafesi 100 m'dir. İki icloud düğümü arasında haberleşme, bir hop şeklinde gerçekleşir çünkü yönlendirme protokolleri desteği çıkarılmıştır. Bununla birlikte, BTME bluetooth ağını destekler ve cep telefonları üzerinde çalışır. Spectre çatısı [19], Sveen ve Kirkhus tarafından 2004 yılında NTNU'da master tezi olarak tasarlanmıştır. Spectre çatısı için gerçekleştirim yoktur ve büyük olasılıkla hiçbir zaman olmayacaktır. Sveen ve Kirkhus; çatı tasarımını bütün mobil işbirlikçi uygulamaları temel alarak tasarlamışlardır. Bizim çatımız, bir kişisel alan ağında haberleşmeyle sınırlıdır. 3. BTME Çatısı Bu bölüm BTME çatısının gereksinim, mimari ve gerçekleştirim konularını açıklar. BTME ve J2ME Sun Microsytems Java 2 Micro Edition'ı (J2ME) kaynak kısıtlamalı cihazlar için genel çalıştırma ortamı sağlamak için geliştirmiştir. J2ME; çeşitli türden cihazları desteklemek için çeşitli konfigürasyon, profil ve seçimlik paketleri içerir. Cep telefonları ve PDAler gibi mobil cihazlar için, kablosuz ağ yeteneklerine sahip cihazlar için uygun hale getirilmiş Connected Limited Device Configuration (CLDC) en genel konfigürasyondur. Mobile Information Device Profile (MIDP), bu türden cihazlar için en yaygın kullanılan profildir. MIDP, MIDlet adı verilen uygulamaları geliştirme ve yönetme için bir ortam sağlar [18]. Bugün satılan çoğu cep telefonu J2ME ve MIDP 2.0'ı destekler. Bununla birlikte; bazı cep telefonu modelleri, konum, 3B grafik, çokluortam desteği, güvenlik, konuşma gibi çeşitli amaçlar için API sağlayan seçimlik paketleri destekler [8]. Şekil 2, BTME çatısının J2ME ortamında nasıl konumlandığını göstermektedir. MIDlet uygulaması BTME Çatısı MIDP 2.0 CLDC Şekil 2. BTME Çatısı ve J2ME BTME çatısı, MIDP 2.0'ın üzerine inşa edilmiştir çünkü MIDP bizim mobil cihazlara uygulama yazmamıza izin verir. Bununla birlikte, BTME çatısı bir seçimlik paket kullanır: JSR 82. JSR 82, destekleyen cihazlarda Bluetooth'u kullanmak için kullanılan J2ME API'sidir.

BTME Gereksinimleri BTME çatısı greksinimleri şu şekilde özetlenebilir: Sistem cep telefonlarını desteklemelidir. Sistem ad hoc ağların yaratılmasını desteklemelidir. Sistem mevcut bir ad hoc ağa bağlanabilmelidir. Ağdaki düğümler mesaj alışverişi yapabilmelidir. BTME Mimarisi BTME çatısı MVC(Model/View/Controller) tasarım desenini kullanır (Şekil 3). Bu, farklı sınıf ve paketler kullanılarak model ve view'in ayrıldığı, controller'ın da ikisinin arasındaki boşluğu dolduran alt sistem olduğu anlamına gelir. Server: Server sınıfının constructor'ı üç argüman alır: servisi tekil olarak belirlemek için kullanılan UUID string, servise isim atamak için kullanılan servis ismi stringi, bağlanan cihaz tarafından erişime onay verilip verilmediğini doğrulayan boolean izin verme değişkeni. Constructor bu üç argümanı alır ve sunucu bağlantısı oluşturur. getthreadedhandler adında bir tane hook metoda sahiptir. getthreadedhandler metodu, uygulamaya özgü ThreadedHandler'ı döndürür. run metodu istemci bağlantılarını kabul eder ve her istemci için getthreadedhandler metodunu çağırır. closedown metodu sunucuyu kapatır. Bu sınıf Thread sınıfından miras alır. Bu da ana thread başka bir iş yaparken uzak istemci bağlantılarını dinleyen bağımsız thread yaratma esnekliği sağlar. Grafiksel Kullanıcı Arayüzü- View Form Controller MVCMidlet Şekil 3. BTME Genel Mimarisi Client Model Server Threaded Handler BTME: mobil peer-to-peer alanıyla ilgili sınıfları takdim ederek, modeli tam olarak gerçekleştirir. Form sınıfından miras alan View sınıfını takdim ederek View'i gerçekleştirir. View, programın verilerini görüntüleyebilecek ekrandır. MIDlet'ten miras alan MVCMIDlet sınıfını takdim ederek controller'ı gerçekleştirir. BTME çatısının bileşenleri Server, Client ve User Interface'dir. Server bileşeni, Server ve ThreadedHandler sınıflarından oluşur. Client bileşeni, Client sınıfından oluşur. User Interface bileşeni, View vw MVCMidlet sınıflarından oluşur. Çatının sınıflar açısından fonksiyonalitesi: View: View sınıfı veri görüntüler. MVCMidlet: MVCMidlet sınıfı view'i etkileyen olayları işler. Server: Server sınıfı, istemcilerden gelen Bluetooth bağlantılarını bekler. ThreadedHandler: Threadedhandler sınıfı, her bağlantıya servis verir. Her bağlantı için bir tane yaratılır. Client: Client sınıfı, sunucuya bağlanmaya izin verir. BTME Gerçekleştirimi Model: Model katmanında üç soyut sınıf vardır: Server, ThreadedHandler ve Client. ThreadedHandler: ThreadedHandler'ın constructor'ı, Server sınıfı tarafından yaratılan StreamConnection nesnesini argüman olarak alır. Input ve output streamleri açar. processclient isminde bir adet hook metoduna sahiptir. processclient metodu, istemciyle haberleşmeyi kolaylaştırır. run metodu processclient metodunu çağırır. closedown metodu işleyiciyi kapatır. Bu sınıf Thread sınıfından miras alır ve thread olarak başlatılır. Bu da Server sınfına her uzak istemci bağlantısı için ayrı bir thread yaratma esnekliği sağlar. Client: Client sınıfının constructor'ı sunucuyu tekil olarak tanımlamak için kullanılan url stringini argüman olarak alır. communicate isminde bir adet hook metoduna sahiptir. communicate metodu sunucuyla haberleşmeyi kolaylaştırır. run metodu sunucuya bir bağlantı açar ve input ve output streamleri açar. Aynı zamanda communicate metodunu çağırır. closedown metodu Client'ı kapatır. Bu sınıf Thread sınıfından miras alır. Bu da ana thread başka bir iş yaparken sunucuya bağlantı açan bağımsız thread yaratma esnekliği sağlar. Controller: Controller katmanında, MVCMidlet adında bir tane soyut sınıf vardır. Bu sınıf MIDlet sınıfından miras alır ve CommandListener ve Runnable arayüzlerini gerçekleştirir. MVCMidlet'in constructor'ı View sınıfından bir nesne yaratır, Display örneğini alır, View'in örneğine komut ekler, komut olaylarını işlemek için şu anki nesneyi kaydeder, View'in örneğini display olarak kullanır, yeni thread nesnesi yaratır ve bu thread nesnesini çalıştırır. commandaction metodu, komut olaylarını işler. MVCMidlet sınıfı initcode adında bir tane hook metoda sahiptir. initcode metodu, View'in örneğini argüman olarak alır. initcode metodu, uygulamaya özgü denetimleri View örneğine ekler. run metodu, initcode metodunu çağırır.

View: View katmanında, bir sınıf vardır: View. View sınıfı Form sınıfından miras alır. View sınıfının constructor'ı formun başlığını set eder. Özel bir uygulama nasıl geliştirilir: BTME'den özel bir uygulama geliştirmek için takip eden adımlar gereklidir: Bluetooth sunucusunu gerçekleştirmek için Server soyut sınıfından miras alınmalıdır Her bağlantıya servis vermek için ThreadedHandler sınıfından miras alınmalıdır. Bluetooth istemcisini gerçekleştirebilmek için Client soyut sınfından miras alınmalıdır. Midleti gerçekleştirebilmek için MVCMidlet soyut sınıfından miras alınmalıdır. 4. BTME Uygulaması Geliştirilen uygulama en az üç cep telefonuna sahip olmalıdır. Geliştirilen uygulamada cep telefonlarının görevleri: bir tane servis sağlayıcı, bir tane servis kayıtçı ve bir veya daha fazla servis istemcisi/istemcileri. Servis sağlayıcı, servisini servis kayıtçısına yayımlar ve servis istemcileri servisi servis kayıtçısından sorgular. Servis sağlayıcı tanışma servisini sağlar. Kayıtlı kullanıcıların bilgileri servis sağlayıcıda tutulur. kullanıcılar, kendi bilgilerini servis sağlayıcıya kaydederler ve diğerlerinin bilgilerini servis istemcileriyle listelerler. Aynı zamanda, servis istemcileri diğer servis istemcileriyle anlık mesajlaşabilmektedir. Belirli bir anda bir gruptaki anlık mesajlaşabilen servis istemcisi sayısı üç ile sınırlıdır. Bu, bir cep telefonuna bağlı cep telefonu sayısındaki kısıttan kaynaklanmaktadır. Dördüncü servis istemcisi, bir grupta konuşan üç servis istemcisinden biriyle anlık mesajlaşmak istediğinde yeni bir mesajlaşma grubu oluşturuluyor. Cep telefonları haberleşmek için Bluetooth'u kullanıyor. BTThreadedHandler: BTThreadedHandler her bağlantıya servis verir. Her bağlantı için bir tane yaratılır. MsgTestClient: Bu modül servis istemcisinin telefonunun, Bluetooth'unun ve programının açık olup olmadığını kontrol eder. UDDIClient: UDDIClient servis kayıtçısına bağlanmaya izin verir. Servis İstemcisi JSR 82 API'sine dayalı altı tane sınıf gerçekleştirilmiştir: BTClient: BTClient servis sağlayıcıya bağlanmaya izin verir. MsgServer: Anlık mesajlaşan servis istemcilerinden gelen bağlantıları bekler. MsgServerHandler: MsgServerHandler, her anlık mesajlaşma bağlantısına servis verir. Her bağlantı için bir tane yaratılır. MsgClient: MsgClient anlık mesajlaşma için diğer servis istemcilerinin bağlanmasına izin verir. MsgTestServer: Bu modül, servis istemcilerinin telefonunun, Bluetooth'unun ya da programının açık olup olmadığını kontrol etmek için yaratılmıştır. Aynı zamanda, servis sağlayıcılarından gelen bağlantıları bekler. UDDIClient: UDDIClient servis kayıtçısına bağlanmaya izin verir. Şekil 4, BTME uygulamasının mimarisini gösterir. Servis Kayıtçısı JSR 82 API'sine dayalı iki tane sınıf gerçekleştirilmiştir: BTServer: Bu modül servis sağlayıcı ya da servis istemcilerinden gelen bağlantıları bekler. BTThreadedHandler: BTThreadedHandler her bağlantıya servis verir. Her bağlantı için bir tane yaratılır. Servis Sağlayıcı JSR 82 API'sine dayalı dört tane sınıf gerçekleştirilmiştir: BTServer: Bu modül servis istemcilerinden gelen bağlantıları bekler. Şekil 4. BTME Uygulamasının Mimarisi Şekil 5, şekil 6 ve şekil 7 BTME uygulamasının state diyagramlarını gösterir. Şekil 5, servis kayıtçısının state diyagramını gösterir.

Şekil 5. Servis Kayıtçısının State Diyagramı Başlangıçta bekleme durumuna geçilir. Bekleme durumundayken servis kaydetme mesajı alındığında servis kaydetme durumuna geçilir. Servis kaydedildiğinde tekrardan bekleme durumuna geçilir. Bekleme durumundayken servis sorgulama mesajı alındığında servis sorgulama durumuna geçilir. Servis sorgulandığında tekrardan bekleme durumuna geçilir. Herhangi bir durumda çıkış düğmesine basıldığında servis kayıtçısı programı sona erer. Şekil 6, servis sağlayıcının state diyagramını gösterir. Şekil 6. Servis Sağlayıcının State Diyagramı Başlangıçta bekleme durumuna geçilir. Bekleme durumundayken kullanıcı kaydetme mesajı alındığında kullanıcı kaydetme durumuna geçilir. Kullanıcı kaydedildiğinde tekrardan bekleme durumuna geçilir. Bekleme durumundayken kullanıcı sorgulama mesajı alındığında kullanıcı sorgulama durumuna geçilir. Kullanıcı sorgulandığında tekrardan bekleme durumuna geçilir. Bekleme durumundayken kontrol mesajı alındığında kontrol durumuna geçilir. Kontrol yapıldığında tekrardan bekleme durumuna geçilir. Herhangi bir durumda çıkış düğmesine basıldığında servis sağlayıcısı programı sona erer. Şekil 7, servis istemcisinin state diyagramını gösterir. Şekil 7. Servis İstemcisinin State Diyagramı Başlangıçta Bağlantı bekleme durumuna geçilir. Bağlantı parametreleri alındığında (Url ve Btadı) bağlantı kurma durumuna geçilir. Bağlantı kurulduktan sonra mesajlaşma bekleme durumuna geçilir. Mesajlaşma bekleme durumundayken gönder düğmesine basıldığında anlık mesaj gönderme durumuna geçilir. Anlık mesaj gönderme durumundayken gönder düğmesine basıldığında tekrardan anlık mesaj gönderme durumuna geçilir. Anlık mesaj gönderme durumundayken anlık mesaj gönderildiğinde tekrardan mesajlaşma bekleme durumuna geçilir. Mesajlaşma bekleme durumundayken anlık mesaj alındığında anlık mesaj alma durumuna geçilir. Anlık mesaj alma durumundayken anlık mesaj alındıkça tekrardan anlık mesaj alma durumuna geçilir. Anlık mesaj alma durumundayken anlık mesaj görüntülendiğinde tekrardan mesajlaşma bekleme durumuna geçilir. Herhangi bir durumda çıkış düğmesine basıldığında servis istemcisi programı sona erer. 5. Tartışma BTME çatısı ile, cep telefonları ve kişisel alan ağlarını kullanan bluetooth mobil uygulamalar daha hızlı ve kolay bir şekilde geliştirilebilir. BTME çatısının kullanımı geliştirme süresini oldukça kısaltır. Bu, uygulama uzantılarının bazı genel yönlerinin çatıda zaten bulunmasından kaynaklanmaktadır. BTME çatısının kullanılması hataları da azaltır. BTME çatısı, bakım için gerekli çabayı da azaltır. BTME çatısının anlaşılması kolaydır ve uygulama geliştirmeyi kolaylaştırır. Uygulama uzantısı ve çatı arasındaki etkileşim basit ve tutarlıdır. Hooklar; küçük, basit ve yerleştirmesi ve erişimi kolaydır. Aynı zamanda çatının nasıl kullanılacağını gösteren örnek bir uygulama vardır. Bunlar çatıyı kullanımı kolay yapar. Çatı, kolay bir şekilde genişletilebilir. Genişletme, var olan sınıflardan türetme şeklinde başarılır. BTME çatısı, hook metodları sağlayarak genişleyebilirliği arttırır. Yeni uygulama servis ve özelliklerinin özelleştirilmesini sağlayabilme için çatı genişleyebilirliği gereklidir [20]. Aynı zamanda BTME çatısı, birden fazla bağlamda kullanılabilir.

BTME sınıflarının ihtiyaçlarını karşılamadığını düşünen programcılar; BTME sınıflarının davranışlarını, metodları override ederek veya yeni sınıflar yaratarak değiştirebilir. BTME çatısı, çoklu problemleri çözmek için kullanılabilir. BTME çatısıyla; analiz, tasarım ve kod yeniden kullanılabilir. Çatıları kullanma ve yeniden kullanma verimliliği arttırır çünkü genel problemler için, uygulamalar zaten mevcut çözümlerin üzerine inşa edilebilir [21]. Çatı yeniden kullanılabilirliği, alan bilgisini arttırır ve çözümleri yeniden yaratma ve yeniden geçerlileme çabasını engeller. Çatılar; çoğunlukla birçok tekrarlanan düzeltme ve sınama aşamalarından geçirilir onun için bu çatıdan geliştirilen yazılımın güvenilirliği ve kalitesi artar [20, 22]. BTME çatısı; gerçekleştirim ayrıntılarını gizleyerek modülerliği arttırır. Çatı modülerliği, yazılım kalitesinin artmasına yardımcı olur [20]. BTME çatısının tasarımı, MVC tasarım deseni kullanılarak iyileştirilmiştir. Bir tasarım deseni, belirli bir bağlamdaki bir genel tasarım problemini çözebilmek için özelleştirilmiş haberleşen nesne ve sınıfların tanımlamasıdır. Her desen, farklı problem-özgü bağlamlara tekrar tekrar uygulanabilen genel ve yinelenen tasarım çözümüdür [9]. 6. Sonuçlar Bu bildiride, yakınlığa dayalı peer-to-peer uygulamaların hızlı geliştirimi için BTME çatısı sunulmuştur. BTME projesi, Bluetooth kullanan cep telefonlarının peer-to-peer haberleşmesi için API sağlar. BTME çatısının tasarımı, MVC (Model-View-Controller) tasarım deseni kullanılarak iyileştirilmiştir. Ayrıca bu çalışmada, BTME çatısı kullanılarak bir uygulama geliştirilmiştir. Mevcut BTME çatı gerçekleştirimi sadece Bluetooth ağlarını desteklemektedir, fakat J2ME ortamında diğer ağlar da desteklendiğinde bu çatıyı diğer ağları da destekleyecek şekilde genişletmek düşünülmektedir. Kaynaklar [1] M. P. Singh, 'Pering at peer-to-peer computing', IEEE Internet Computing, 05(1):4 5, 2001. [2] G. Gehlen, and L. Pham, 'Mobile Web Services for Peer-to-Peer Applications', Consumer Communications and Networking Conference, 2005. [3] G. Kortuem, J. Schneider, D. P. Thaddeus, G. C. Thompson, S. Fickas, and Z. Segall, 'When Peer-to- Peer comes Face-to-Face: Collaborative Peer-to- Peer Computing in Mobile Ad hoc Networks', In First International Conference on Peer-to-Peer Computing, Link oping, Sweeden, 27-29 August 2001. [4] N. Maibaum, and T. Mundt, 'JXTA: A Technology Facilitating Mobile Peer-To-Peer Networks', In International Mobility and Wireless Access Workshop (MobiWac 02), pages 7-13, Fort Worth, Texas, USA, 12 October 2002. [5] B. A. Miller, and C. Bisdikian, 'Bluetooth Revealed', Addison-Wesley, 2 edition, 2002. [6] M. Wiberg, and A. Grönlund, 'Exploring Mobile CSCW: Five areas of questions for further research', In Proceedings of IRIS23 (Information Research in Scandinavia), Trollhattan, Sweden, 2000. [7] A. I. Wang, T. Bjørnsgård, and K. Saxlund, 'Peer2Me - Rapid Application Framework for Mobile Peer-to-Peer Applications', In The 2007 International Symposium on Collaborative Technologies and Systems (CTS 2007), page 10, Orlando, Florida, USA, May 21-25, 2007. [8] E. Gamma, R. Helm, R. Johnson and J. Vlissides, 'Design patterns: elements of reusable object oriented software', Addison Wesley, Reading, 1994. [9] S. Ventura, C. Romerao, A. Zafra, J. A. Delgado and C. Hervas, 'JCLEC: A Java Framework For Evolutionary Computation', Soft Comput 12(4):381-392, 2008. [10] N. Kotilainen, M. Weber, M. Vapa, and J. Vuori, 'Mobile Chedar - a Peer-to-Peer middleware for mobile devices', in Pervasive Computing and Communications Workshops, 2005. PerCom 2005 Workshops. Third IEEE International Conference on, pp. 86 90, 8-12 March 2005. [11] JXTA Community Projects, https://jxta.dev.java.net/ [12] M. Bisignano, G. D. Modica, and O. Tomarchio, 'JMobiPeer: A Middleware for Mobile Peer-to-Peer Computing in MANETs', In First International Workshop on Mobility in Peer-to-Peer Systems (MPPS) (ICDCSW 05), pages 785 791, 2005. [13] G. Kortuem, 'A methodology and software platform for building wearable communities', PhD thesis, University of Oregon, December 2002.

[14] T. Horozov, A. Grama, V. Vasudevan, and S. Landis, 'MOBY-a mobile peer-to-peer service and data network', Parallel Processing, pp. 437-444, 2002. [15] E. Harjula, M. Ylianttila, J. Ala-Kurikka, J. Riekki, and J. Sauvola, 'Plug-and-play application platform: towards mobile peer-to-peer', In Proc. of the 3rd international conference on Mobile and ubiquitous multimedia: 63-69, 2004. [16] Bedd, http://www.bedd.com/index.html, 2006. [17] Rockyroad/jrra, http://www.jrra.org, 2004. [18] V. S. Shere, 'Design and analysis of application architecture for opportunistic networks using ad hoc wi-fi', Master thesis, University of Texas, December 2009. [19] L. Kirkhus and A. R. Sveen, 'Mowahs - mobile collaboration framework.', Technical report, Institutt for datateknikk og informasjonsvitenskap, 2004. [20] M. Fayad and D. C. Schmidt, 'Object-Oriented Application Frameworks', Communications of the ACM, Special Issue on Object-Oriented Application Frameworks, Vol. 40, No. 10, October 1997. [21] K. Koskimies, and H. Mossenback, 'Designing a Framework by Stepwise Generalization', Proceedings of the 5th European Software Engineering Conference, 1995. [22] R. Neumann (2008), 'Maintaining Objectoriented Component Frameworks', Available: http://www.densetsu.org/publications/ Maintaining%20OO%20Component%20Framewor ks.pdf.