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

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "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"

Transkript

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

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Ü Kemal OLÇA Danışman Üye Üye Yedek Üye : Yrd. DOÇ.DR. Halil İbrahim ŞAHİN : Yrd.DOÇ.DR. Türkan E. DALKILIÇ : Yrd.DOÇ.DR. Zafer KÜÇÜK : Yrd.DOÇ.DR. Orhan KESEMEN TRABZON

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. 3

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. 4

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 5

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 6

7 İçindekiler ÖZET... 1 ÖNSÖZ... 4 SİMGELER VE KISALTMALAR GİRİŞ MOBIL TEKNOLOJILER PDA (Personal Digital Assistant) Tablet PC ler Mobil Telefonlar Mobil İşletim Sistemleri Symbian OS Windows CE PalmOS KABLOSUZ AĞ TEKNOLOJİLERİ Kızılötesi(IrDA) Teknolojisi Bluetooth Teknolojisi Bluetooth Protokol Katmanları Bluetooth un Temel Özellikleri Birlikte Çalışabilirlik Kısa Mesafe Kablosuz Haberleşme Yapısı Açık Standart Yapısı Ses ve Veri Haberleşmesi Güvenlik Bluetooth Teknolojik Alt Yapısı Bluetooth Radyo Güç Sınıfları Master Slave Yapısı Bluetooth Ağ Yapısı Piconet Scatternet Wi-Fi (Wireless Fidelity)Teknolojisi /IEEE GSM GPRS

8 4. J2ME(JAVA 2 MICRO EDITION) PLATFORMU Java Dilinin Kısa Bir Tanıtımı Java Mimarisi Java Java 2 Micro Edition (J2ME) Neden J2ME ye Gerek Duyuyoruz? Konfigürasyon ve Profiller Konfigürasyonlar CLDC Konfigürasyonu Kilobayt Sanal Makine (KVM) Sınıf Dosyalarının Doğrulanması CDC Konfigürasyonu C- Sanal Makinesi (CVM) Profiller MIDP Profili PDA Profili (PDAP) Kuruluş Profili (Foundation Profile) Kişisel Profil (Personal Profile) RMI Profili Kişisel Temel Profil (Personal Basis Profile) Multimedya Profili (Multimedia Profile) Oyun Profili (Gaming Profile) MIDP PROGRAMLAMA MIDP Uygulaması Geliştirme MIDlet Nedir? Uygulamanın Derlenmesi Preverifying İşleminin Gerçekleştirilmesi Uygulamanın Çalıştırılması Uygulamaların JAR Dosyası Haline Getirilmesi MIDlet Takımı Geliştirilmesi MIDlet Takımı Tanımlayıcı Dosyası MIDP Kullanıcı Arayüz APIleri MIDP Ekran Kontrolü

9 5.2.2.Yüksek Seviyeli Kullanıcı Arayüz API si Form Alert List Choice Interface TextBox Ticker Items Düşük Seviyeli Kullanıcı Arayüz APIsi Canvas Graphics Images Fonts Düşük Seviyeli Kullanıcı Arayüzü Örneği MIDP de Kullanıcı Etkileşimlerinin Yönetilmesi Yüksek Seviyeli Kullanıcı Etkileşimlerinin Yönetilmesi ItemStateListener Komutlar (Commands) CommandListener Düşük Seviyeli Kullanıcı Etkileşimlerinin Yönetilmesi Etkileşimlerin Yönetildiği Yüksek Seviyeli Kullanıcı Arayüzü Örneği BLUETOOTH STACK VE YAPISI Bluetooth Stack Bluetooth Stack ın Katmanları Bluetooth Stack Profilleri Generic Access Profili (GAP) Service Discovery Application Profile (SDAP) Serial Port Profile JAVA VE OBEX OBEX OBEX Object Model OBEX Oturum Protokolü

10 7.4.JSR82 deki OBEX API leri Javax.obex.ClientSession Javax.obex.HeaderSet Javax.obex.Operation Javax.obex.ResponseCodes javax.obex.ServerRequestHandler javax.obex.SessionNotifier PROJE TASARIMI VE GERÇEKLEŞTIRILMESI Proje Hakkında Proje Mimarisi Uygulamada Kullanılan Classlar ve İşlevleri Cep Telefonunda Oluşturulan J2ME Uygulaması İstemci J2ME Uygulamasının Cep Telefonuna Yüklenmesi PC Tarafında Oluşturulan J2SE Uygulaması İstemci ve Server Uygulamalarının Çalıştırılması Kullanımı İstemci Cep Telefonu Uygulamasının Çalıştırılması ve Kullanımı PC Taraflı Server Uygulamasının Çalıştırılması ve Kullanımı SONUÇ KAYNAKLAR

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. 11

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 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 12

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 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. 13

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. 14

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 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 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. 15

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 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. 16

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. 17

18 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 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 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. 19

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 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. 20

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. 21

22 3.2.2.Bluetooth un Temel Özellikleri 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 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 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 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 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. 22

23 3.2.3.Bluetooth Teknolojik Alt Yapısı 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 Class Class 100 mw (20 dbm) 100m 2. 5 mw (4 dbm) 35m 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 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. 23

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 Bluetooth Ağ Yapısı 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. 24

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 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. 25

26 Şekil 3.4: Bir bluetooth master biriminin slave olarak rol alması. 3.3.Wi-Fi (Wireless Fidelity)Teknolojisi /IEEE 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ı 26

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. 27

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 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 28

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 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. 29

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 istemcisunucu 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 30

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ı. 31

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, 32

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. 33

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ü 34

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 35

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ı 36

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 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 37

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 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 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. 38

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 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 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: 39

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 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. 40

41 4.5.Profiller 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 41

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: 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 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. 42

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: 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 43

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 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 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ı: 44

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 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. 45

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; 46

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ü: Uygulamanın Derlenmesi Derleme işleminin gerçekleştirilebilmesi için MIDP Geliştirme Ortamı na ihtiyaç vardır. Sun ın MIDP ürünü 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-fcs\classes 47

48 MIDPTools=\midp-fcs\bin 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 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 48

49 komut satırı kullanılmaktadır. Önceden doğrulama işlemi sonucunda, class dosyaları oluşturulur 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 midpfcs\bin 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 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:\java\MerhabaDunya>\midp-fcs\bin\midp -classpath \midp-fcs\classes;.\output 49

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 bytes 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 50

51 Komut satırı işletilerek uygulamanın ilgili jar dosyasından çalışması sağlanmaktadır 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 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: MIDlet-Vendor: KTU, Istatistik ve Bilgisayar Bilimleri MIDlet-Description: Ornek bir MIDlet takimi MIDlet-Info-URL: MIDlet-Jar-URL: 51

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ı) 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ı 52

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 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) 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 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); 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); 53

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) { 54

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) { 55

56 Choice Interface Çoktan seçmeli alanlardaki kısıtları belirler. Üç türde seçim yapılmasını sağlar. EXCLUSIVE seçimde sadece bir tane eleman seçilebilir. MULTIPLE seçim, birden fazla eleman seçileceğinde kullanılır. IMPLICIT seçim ise, bir Command nesnesi başlatıldığında ona odaklanan seçimdir TextBox J2ME ortamında yazı tipinde veri girişi yapmak için kullandığımız bileşenlerden biri TextBox dır. Bu nesne tüm ekranımızı kaplayarak bize tam sayfa görünümünde veri girişi yapma imkanı verir. Bu veri girişi harf, sayı veya klavyemizin desteklediği herhangi bir karakter olabilir. TextBox lar tüm yüksek seviye bileşenler gibi telefonlar arasında farklılıklar gösterebilir. TextBox yapısı aşağıdaki gibidir. TextBox (String title, String text, int maxsize, int constraints) Bu yapıda istenen dört parametre sırası ile title, text, maxsize ve constraints tir. title Yazı girişi alanının üstünde bulunacak baslıktır. text Veri girişi alanımızın içerisinde başlangıçta bulunacak yazı. maxsize Veri giriş alanımızın alabileceği karakter sayısı constraints Girilecek verinin kontrolü. Constraints bize belli bir veri girişi tipi sunar örnek olarak 0 gönderirsek istediğimiz herhangi bir karakteri girebiliriz. Ancak kod içerisine sayı girmek kafa karıştırılabilir ve çoğu zaman hangi sayının neye karşılık geldiğini unutabiliriz. Bu yüzden sayı girmek yerine bir form bileşeni olan TextField sınıfına ait veri giriş tiplerinin sayı karşılıklarını döndüren static değişkenleri kullanabiliriz. Bu değişkenler bize kullanmamız gereken sayıları daha anlamlı bir şekilde gösterir. Örnek olarak 0 kullanacağımız yerde TextField.ANY diyebiliriz burada dönecek değişken bize herhangi bir karakter girişi yapmamızı sağlayabilir. TextField nesnesine ait bu değişkenler final ve static tir bu yüzden değiştirilemez ve nesnesi oluşturulması gerekmez. TextField Nesnesine ait kullanabileceğimiz diğer tipler aşağıdaki gibidir. ANY Herhangi bir karakter ADDR adresi NUMERIC Sayı PHONENUMBER Telefon numarası 56

57 URL İnternet adresi DECIMAL Ondalıklı PASSWORD Şifre Ticker Ticker, ekranda bir yazının sürekli olarak kaymasını sağlar. Screen sınıfının bir metodu olan setticker(ticker ticker) metodu ile Ticker örneğinin ilgili Screen örneği ile ilişkilendirilmesi işlemini gerçekleştirir Items Bir Form nesnesine eklenebilecek interaktif grafiksel elemanlar için kullanılan bir süper sınıftır. ChoiceGroup nesnesi, bir grup seçenek veya elemandan oluşur. Tek elemanlık seçim yapılabileceği gibi birden çok elemanın seçildiği tipte bir seçime de izin verilir. Radyo düğmeleri tekli seçimi desteklerken, kontrol kutucukları da çoklu seçimi destekler. DateField nesnesi, Form nesnesinde tarih ve saat bilgilerinin görüntülenmesi için kullanır. Gauge nesnesi, ekranda belirli değerlere göre çubuk grafiği çizilmesini gerçekleştirir. StringItem nesnesi, kullanıcıya metinsel bilgileri görüntülemede kullanılır. TextField nesnesi, Form nesnesi içindeki metin editörüdür Düşük Seviyeli Kullanıcı Arayüz APIsi Düşük seviyeli kullanıcı arayüz APIsi kullanılarak arayüz oluştururken, çizim yapmak ve ekranı yenilemek için piksel koordinatları, yazı boyutu ve geometrik şekiller gibi birçok düşük seviyeli detayla ilgilenilmelidir Canvas Canvas sınıfı Displayable sınıfının, düşük seviyeli kullanıcı arayüzü oluşturmak için bulunan tek alt sınıfıdır. Canvas tüm ekranı çizmeyi sağlayan bir bileşendir, Canvas ile tüm ekran kontrol altına alınabilir. Bu nedenle, Canvas alt sınıfı genellikle oyun uygulamaları yazılırken kullanılır. Yüksek seviyeli API lerde ekranın yenilenme işlemi tüm Screen nesneleri için otomatik olarak yapılır; ancak, Canvas sınıfında ekran yenilenmesi paint(graphics g) metodu kullanılarak yapılır. Bu metod çağrıldığında bir Graphics nesnesi oluşturulur. 57

58 Graphics Graphics nesnesinden oluşturulan bir örnek ile ekrandaki tüm çizimler gerçekleştirilir. Çizim işlemleri, ekranın piksel piksel boyanması ile gerçekleştirilir Images Bir Image nesnesi, grafiksel resim verisini tutar. Ancak, uygulama tarafından çağrıldığında çizim yapabilir. Graphics nesnesinde bulunan, drawimage(image img, int x, int y, int anchor) metodu kullanılarak Canvas sınıfına gösterilir. Sabit ve Değişebilir olmak üzere iki tip Image vardır. Sabit Image lar, bir kaynaktan gelen resim verisinin yüklenmesi ile oluşturulur. Sabit Image lar, sadece yüksek seviyeli kullanıcı arayüzü bileşenleri ile kullanılabilir. Değişebilir Image lar ise genelde düşük seviyeli bileşenlerle kullanılır Fonts Fonts bileşeni; düşük seviyeli kullanıcı arayüzünde, ekrana çizilmiş herhangi bir yazının boyutunu belirler Düşük Seviyeli Kullanıcı Arayüzü Örneği CanvasDemo.java import javax.microedition.lcdui.*; class CanvasDemo extends Canvas { protected void paint(graphics g){ /***Ekranda (1,1) koordinatlarından başlayarak CanvasDemo yazısı yazdırılmaktadır.***/ g.drawstring("canvas Demo",1,1,Graphics.TOP Graphics.LEFT); /***Ekrana verilen parametrelere bağlı oalrak içi dolu bir dikdörtgen çizilmektedir.***/ g.fillrect (20,30,30,20); /***Aşağıdaki dört satırda, verilen koordinatlara göre dikdörtgen oluşturmak amacıyla dört çizgi ekrana çizilmektedir.***/ g.drawline(50,50,75,50); g.drawline(75,50,75,75); g.drawline(75,75,50,75); g.drawline(50,75,50,50); 58

59 5.3.MIDP de Kullanıcı Etkileşimlerinin Yönetilmesi Bir uygulama çalışırken, kullanıcının bu sırada cihazla olan etkileşimi olay olarak adlandırılmaktadır. Bir düğmeye basılması, seçenekler arasından bir tanesinin seçilmesi veya metin alanına bilgi girilmesi bir olayı temsil eder. Uygulamalar, olayları beklemek ve gerçekleşen olaylarda ilgili işlemi yapmak için oluşturulur. Uygulamalar, olabilecek olan olayları listener interface gerçekleştirerek dinlerler ve bu olaylara bağlı olarak ilgili işlemleri yapacak olan callback metotlarını gerçekleştirirler. Callback metotları; genelde uygulama tarafından çağrılmayan, sistem tarafından özel bir olay için uyandırılan metotlardır. Kullanıcı, uygulamanın dinlemekte olduğu belirli bir olayı tetiklediğinde cihaz otomatik olarak olayla ilişkilendirilmiş olan callback metodunu çağırır. MIDP profili, yüksek ve düşük seviyeli olarak iki türde olay yönetimine sahiptir. Yüksek seviyeli olay ve olay yönetim mekanizmaları daha soyuttur. Geleneksel iş uygulamalarının ihtiyaçlarını karşılarlar. Yüksek seviyeli olaylar, MID profilin çalıştığı farklı cihazlar için taşınabilirdir. Düşük seviyeli olaylar ve olay yönetim mekanizmaları ise, basit olayları yakalar ve yönetir. Basit olaylar; basılan belirli bir tuşun yakalanması veya imlecin sürüklenmesi gibi olaylar olabilir. Düşük seviyeli olaylar, cihazlara özgüdür veya yüksek seviyeli olaylara göre daha az taşınabilirdir. Olayların yönetimi aynı anda, paralel olarak yapılamaz. Ancak, MIDP deki Timer nesnesi, işlerin belirli bir sıra dahilinde, arka planda çalışan bir iş parçacığı tarafından yapılmasına olanak tanır. Timer callback metotları, callback metotları ile aynı zamanda çalışabilir Yüksek Seviyeli Kullanıcı Etkileşimlerinin Yönetilmesi Yüksek seviyeli API de, olaylar iki tip kullanıcı etkileşimi sırasında gerçekleşir. Olaylar, kullanıcı bir formdaki bir değeri değiştirdiğinde veya bir komutu tetiklediğinde oluşabilir. Yüksek seviyeli olaylar için iki tip listener bulunmaktadır ItemStateListener Bir item ın değeri değiştiğinde itemstatechanged(item i) metodu, callback metodu olarak çağırılır. ItemStateListener, bir formdan gelen olaylar için kullanılır Komutlar (Commands) MIDP de kullanıcıların, bir düğmeye basmaları veya menüden bir seçeneği seçmeleri Command nesnesini oluşturur. 59

60 Command, üç bölümden oluşur. Bu bölümler; etiket, tip ve önceliktir. Etiket, cihaz tarafından, komutu ekranda görüntülerken kullanılır. Bir komutun tipi, onun anlamını belirler. Komutun tipi; GERİ, İPTAL, YARDIM, TAMAM, EKRAN veya DUR olabilir. Komutlar, önem sırasına göre değerlendirilirler. Cihaz komutları değerlendirirken önem sıralarını, öncelik değerlerine bakarak belirler CommandListener Komut olaylarını yönetmek için kullanılır. Öncelikle CommandListener, komut nesnesini bulunduran Displayable nesnesi ile ilişkilendirilmelidir. İlişkilendirme işlemi, setcommandlistener(commandlistener cmdlistener) metodu ile yapılır Düşük Seviyeli Kullanıcı Etkileşimlerinin Yönetilmesi Düşük seviyeli API, kullanıcıya daha fazla kontrol verilmesi gerekirken oyun uygulamalarında kullanılır. Tuş Kodları ve Düşük Seviyeli API Olayları (Key Codes and Low-Level API Events) Düşük seviyeli API de bir tuşa basılması, uygulama tarafından bir tuş kodu ile bildirilir. Olay Dağıtım Metodları (Event Delivery Methods) Yüksek seviyeli API de olay yönetimi listener nesneleri aracığıyla gerçekleştirilir. Ancak; düşük seviyeli API de listener nesnesi yoktur. Canvas sınıfı, olay dağıtım metodlarına sahiptir. Bu metodlar; shownotify(), hidenotify() ve paint(graphics g) metodlarıdır. shownotify() metodu, Canvas görüntülenmeden önce çağrılır. hidenotfy() metodu, Canvas görüntüden kaldırıldığında çağrılır. Olay dağıtım metotları seri olarak çağrılabilir. Aynı anda birden fazla metot çağrılamaz Etkileşimlerin Yönetildiği Yüksek Seviyeli Kullanıcı Arayüzü Örneği AnketMIDlet sınıfında, EntryForm tipinde bir form oluşturulur. Bu form displaymngr.setcurrent(entryform) komut satırı kullanılarak cep telefonunun ekranında görünür hale getirilir. Kullanıcı Şekil 2.5 deki gibi ilgili alanlara adını, yaş grubunu ve hobilerini girer. Daha sonra ekranın sağ tuşunun yönettiği Get komutuna basıyor. Bu tuşa basınca kullanıcının seçtiği bilgilerin görüntülendiği bir Alert oluşturulur ve Şekil 2.5 (c) deki gibi ekranda görüntülenir. Kullanıcı bu mesajı ekranda gördükten sonra ekranın sağındaki Done tuşuna basınca, Şekil 2.5 (a) daki gibi boş bir form ekranda tekrar görüntülenir. Kullanıcı bu ekranın solunda Exit komutunu yöneten tuşa bastığında uygulamayı sonlandırır. 60

61 AnketMIDlet.java package AnketDemo; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class AnketMIDlet extends MIDlet { String sym = new String(); // textfielda girilen ismi tutan değişken String soru2 = new String(); // seçilen yaş grubunun tutulduğu değişken String soru3; // seçilen hobileri tutan değişken //uygulamanın hayat devresini tutması için bir lokal değişken tanımlanır. private Display displaymngr = null; //EntryForm sinifindan bir degisken tanimlaniyor. private EntryForm entryform = null; //Alert nesnesine bir referans degiskeni tanimlaniyor. private Alert resultsalert = null; public AnketMIDlet () { private void initlistener () { CommandListener commandlistener = new CommandListener() { public void commandaction(command c, Displayable d) { soru3 = new String(); if (c == entryform.getexitcommand()) { destroyapp(true); else if (c == entryform.getgetcommand()) { if (entryform.getcevap1field().getstring().length() > 0) { sym = entryform.getcevap1field().getstring(); if (entryform.getsoru2choice().getselectedindex() == 0) { soru2 = "Genc"; else { soru2 = "Orta Yasli"; if (entryform.getsoru3choice().isselected(0)){ soru3 = "\n *muzik"; if (entryform.getsoru3choice().isselected(1)){ soru3 = soru3+"\n *resim"; if (entryform.getsoru3choice().isselected(2)){ soru3 = soru3+"\n *sinema"; 61

62 if (entryform.getsoru3choice().isselected(3)){ soru3 = soru3+"\n *tenis"; if (entryform.getsoru3choice().isselected(4)){ soru3 = soru3+"\n *yuzme"; displayinformation("hosgeldin " + sym + "!\n"+ soru2 +"grubundasin.\n"+ "Hobilerin: "+ soru3); //END OF else if (c == entryform.getgetcommand()) //END OF public void commandaction ; entryform.setcommandlistener(commandlistener); //tanimlanan EntryFormun ekranda gosterilmesi icin bir metod private void displayentryform () { if (entryform == null) { entryform = new EntryForm("Anket"); initlistener(); //o an display managerin EntryFormu gostermesi icin //setcurrent kullaniliyor displaymngr.setcurrent(entryform); //sonsuza kadar ekranda kalabilecek olan alert icin bir metod olusturuluyor private void displayinformation(string quotestring) { if (resultsalert == null) { resultsalert = new Alert("Anket Sonuclari", null, null, AlertType.CONFIRMATION); resultsalert.settimeout(alert.forever); resultsalert.setstring(quotestring); //o an Alert in gosterilmesini, ancak bir sonraki ekran olarak //EntryForm'a donulmesi tanimlaniyor displaymngr.setcurrent(resultsalert, entryform); entryform.setcevap1field(); entryform.setsoru2choice(); entryform.setsoru3choice(); //Display instance alinir ve referansi displaymngr degiskeni içine koyulur 62

63 // entryform sinifi olusturuldugunda displayentryform metodu cagriliyor protected void startapp() { displaymngr = Display.getDisplay(this); displayentryform(); protected void pauseapp() { protected void destroyapp(boolean unconditional) { notifydestroyed(); public void commandaction(command c, Displayable s) { //END OF AnketMIDlet.java EntryForm.java package AnketDemo; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; //Form sinifi iki tane consructor a sahiptir. //bunlarin en azindan birinin yeni sinifta overridden edilmesi gerekir public class EntryForm extends Form { // exit ve get komutlari icin referans degiskenleri tanimlaniyor private Command exitcommand = null; private Command getcommand = null; // kullanıcı isminin tutulduğu bileşenler private StringItem soru1field = null; private TextField cevap1field = null; // yas grubunu belirleyen bileşenler private StringItem soru2field = null; private ChoiceGroup soru2choice = null; // hobilerin tutulduğu bileşenler private StringItem soru3field = null; private ChoiceGroup soru3choice = null; public EntryForm(String title) { super(title); soru1field = new StringItem(null, "1- ADINIZ:"); //textfield tanimlaniyor. //1. parametre -> textfield'in etiketini olusturuyor. //2. -> "" oldugundan baslangic degeri verilmiyor. //3. -> kullanici en fazla 10 karakter girebilir. //4. -> bu alana giris yaparken herhangi bir kisit olmadigi belirtiliyor. cevap1field = new TextField("", "", 10, TextField.ANY); 63

64 soru2field = new StringItem(null, "2- YASINIZ:"); String choices_yas[] = {"20-39", "40-59"; soru2choice = new ChoiceGroup("", Choice.EXCLUSIVE, choices_yas, null); soru3field = new StringItem(null, "3- HOBILERINIZ:"); String choices_hobi[] = {"Muzik", "Resim", "Sinema", "Tenis", "Yuzme"; soru3choice = new ChoiceGroup("", Choice.MULTIPLE, choices_hobi, null); // exit ve get komutlari olusturuluyor, // exit komutuna en yuksek oncelik veriliyor exitcommand = new Command("Exit", Command.EXIT, 1); getcommand = new Command("Get", Command.SCREEN, 2); // tanımlanan ekran bileşenleri forma ekleniyor append(soru1field); append(cevap1field); append(soru2field); append(soru2choice); append(soru3field); append(soru3choice); //commandler forma ekleniyor addcommand(exitcommand); addcommand(getcommand); // anket sorularının cevaplarının alınabilmesi ve gerektiğinde ilgili // alanların boşaltılması için getter ve setter metodlar tanımlanıyor public StringItem getsoru1field() { return soru1field; public StringItem getsoru2field() { return soru2field; public StringItem getsoru3field() { return soru3field; public TextField getcevap1field() { return cevap1field; public void setcevap1field() { cevap1field.setstring(""); 64

65 public ChoiceGroup getsoru2choice() { return soru2choice; public void setsoru2choice() { soru2choice.setselectedindex(0,true); public ChoiceGroup getsoru3choice() { return soru3choice; public void setsoru3choice() { soru3choice.setselectedindex(0,false); soru3choice.setselectedindex(1,false); soru3choice.setselectedindex(2,false); soru3choice.setselectedindex(3,false); soru3choice.setselectedindex(4,false); //commandlere erisebilmek icin getter metodlar tanimlaniyor public Command getexitcommand() { return exitcommand; public Command getgetcommand() { return getcommand; Uygulama Çalıştırıldığında Oluşan Ekran Görüntüleri (a) (b) (c) Şekil 5.5: AnketMIDlet Uygulaması Çalıştırıldığında Oluşan Ekran Görüntüleri 65

66 6.BLUETOOTH STACK VE YAPISI 6.1.Bluetooth Stack Bluetooth stack, PC de bluetooth cihazını kontrol etmek amacıyla kullanılan yazılımdır. Bluetooth stack bluetooth protokolünü gerçekler ve aynı zamanda bluetooth cihazının programlanabilirliğini kontrol etmeye izin verir. Bu izinler şunlardır. Diğer bluetooth cihazları ile haberleşmek Üzerinde bulunduğu Bluetooth cihazını kontrol etmek Bir bluetooth protokol stack bluetooth istemcileri ve sunucularının kablosuz ağ üzerinde veri alışverişine izin verir. Bluetooth cihazı ve bluetooth stack birlikte nasıl çalıştığını ve aralarındaki ilişkiyi şöyle özetleyebiliriz. Bluetooth cihazı, bluetooth stack olmadığında tıpkı işletim sistemi olmayan bir bilgisayar gibi düşünülebilir. Ya da sürücüsü olmayan bir cihaz gibidir. Şekil 6.1: Kablo veya Bluetooth Bağlantısı Durumunda Sürücü Gereksinimi Bluetooth protokolü ile haberleşme yapmak ve bir bluetooth cihazını kontrol etmek için bilgisayar bluetooth stack ını kullanır. Stack ın her bir bileşeni bir katman olarak adlandırılır. 6.2.Bluetooth Stack ın Katmanları Uygulama geliştiriciler, Bluetooth protokol, iki ana parçaya ayrılabilir. Bunlar, katmanlar ve profillerdir. Bluetooth protokolün tüm katmanları protokol stack ını oluşturur. Bluetooth protokol katmanları aşağıdaki gibidir. Host Controller Interface (HCI) Logical Link Control and Adaptation Protocol (L2CAP) Service Discovery Protocol (SDP) RFCOMM Telephony Control Protocol Specification (TCS-BIN) Wireless Access Protocol (WAP) 66

67 Object Exchange (OBEX) Bluetooth Network Encapsulation Protocol (BNEP) Human Interface Device Protocol (HID) 6.3.Bluetooth Stack Profilleri Bir bluetooth profili, bluetooth cihazları için tasarlanmış işlevsellik kümesidir. Örneğin, telefon ve PDA aralarında veri senkronizasyonu yapmak için senkronizasyon profilini desteklemelidir. PDA dan cep telefonuna bir dosyanın nesne olarak gönderilmesi için her iki cihazında Object Push Profilini gerçeklemiş olması gerekir. PDA nın cep telefonunu kullanarak interneti kablosuz kullanabilmesi için Dial-Up Networking Profilini her iki cihazda desteklemelidir. Bluetooth özelliğine sahip cihazlarının birbirleriyle haberleşebilmesi için bluetooth stack yeterli değildir. Ayrıca bu cihazların aynı profillere sahip olması da gerekmektedir. Bluetooth profilleri aşağıdaki gibidir. Generic Access Profili Basic Imaging Profili Service Discovery Application Hands Free Profili Profili Human Interface Device Serial Port Profili Profili Dial-up Networking Profili Fax profili Headset Profili LAN Access Profili Personal Area Networking Profili Cordless Telephony Profili Intercom Profili Generic Object Exchange Profili Object Push Profili File Transfer Profili Synchronization Profili Basic Printing Profili Hard Copy Cable Replacement Profili 67

68 6.3.1.Generic Access Profili (GAP) GAP, iki Bluetooth birimlerinin nasıl birbirlerini keşfedip bağlantı kuracağını tanımlar. Bağlanmamış birimler arasında keşif ve kurulumu yönetir. Bu profil genel olan ve GAP a değinilen ve çok profilli cihazlar tarafından kullanılan işlemleri tanımlar. GAP herhangi iki Bluetooth birimi, herhangi üretici veya uygulamanın Bluetooth üzerinden bilgi alışverişini sağlamak amacıyla birimlerin ne tür uygulama birimlerini desteklediğini bilgilerini verir. Başka herhangi bir bluetooth profilini desteklemeyen Bluetooth birimleri temel çalışabilirlik ve birlikteliği sağlamak için GAP ı kullanmalıdır. Ayrıca güvenliği yönetir Service Discovery Application Profile (SDAP) SDAP mevcut olan Bluetooth birimi servislerini araştırıp tanımlar. Bu profil bilinen ve hemen hemen genel olan belirli servislerin aranmasını yönetir. SDAP, kullanıcı uygulamaları araştırma servisi adında Bluetooth biriminde servis bulmak için gerekli olan uygulama içerir. Bu uygulamanın arayüzü olan the Service Discovery Protocol diğer Bluetooth birimlerinden servis soruşturması gönderip alır. Bu nedenle SDAP belirli Bluetooth protocolu ile son kullanıcı için avantajlı arayüzlü bir uygulama tanımlar. SDAP, GAP a bağlıdır Serial Port Profile Bu profil nasıl iki cihaz üzerinde sanal seri bağlantı noktaları kurulacağını tanımlar ve bu bağlantının Bluetooth ile kurulmasını sağlar. Bu profilin kullanımıyla Bluetooth birimleriyle RS232 kontrol sinyalizasyonu kullanan bir seri kablonun bir öykünümü sağlanır (RS232 veri haberleşme araçları için ortak arayüz standardı; bir sıradan PC'nin seri portunda kullanılan standart). Bu profil kullanılabilir 128kbit/sn. veri yolu sağlar. Serial Port Profile, GAP'a bağlıdır. SDAP gibi Serial Port Profile da GAP'ın bir paçasını kullanır. 68

69 7.JAVA VE OBEX Bluetooth, data göndermek ve almak için bize üç tane protokol sunmaktadır. Bunlar, RFCOMM (stream data göndermek için) L2CAP(paket data göndermek için) OBEX(obje data göndermek için) Bu bölümde OBEX protokol mekanizmasını ve bluetooth cihazları arasında nesnelerin nasıl gönderildiğinden bahsedilecektir. Bu java.obex paketindeki API leri kapsayacak ve iki cihaz arasında OBEX kullanarak dosya göndermenin nasıl gerçekleştileceği gösterilecektir. 7.1.OBEX OBEX(Object Exchange) iki cihaz arasında obje data transferine izin veren bir haberleşme protokolüdür. Burada cihazların kablosuz veya fiziksel bağlantı ile bağlı olmasının bir önemi yoktur. OBEX, aslında kızılötesi için geliştirilmişti. Fakat daha sonra bluetooth protokollerinden biri haline geldi. OBEX, bluetooth ve kızılötesi(irda) için uygun bir protokoldür. OBEX SDP RFCOMM L2CAP HCL Link Manager Link Controller IAS IrOBEX Tiny Transport Protocol Infrared Link Manager Infrared Link Protocol Şekil 7.1: OBEX, IrDA Protokol Yığınında IrOBEX Olarak Bilinir. Bluetooth tanımlamasında, OBEX protokolünün temelinde aşağıdaki bluetooth profilleri kullanılmaktadır. Generic Object Exchange Profili Dosya Transfer Profili Object Push Profili Basic Imaging Profili Senkronizasyon Profili Basic Printing Profili OBEX implement edilirken javax.bluetooh.obex değil javax.obex paketinin import edilmesi gerekmektedir. 69

70 OBEX protokolü basit bir istemci/sunucu mimarisine sahiptir. OBEX istemciler nesneleri OBEX sunuculara yerleştirme ve alma işlemlerini gerçekleştirir. OBEX sunucular, istemcilerden gelen istekleri bekler. OBEX tanımı iki kısımda özetlenebilir. Bunlar OBEX Object Model ve OBEX Session Protokoldür. Object Model OBEX nesnelerin tanımlanmasını ve nasıl transfer edileceği hakkında bilgi verir. Session Protokol, cihazlar arasında nesnelerin transferi esnasında istemci ve sunucu arasında olması gereken el sıkışmayı tanımlamaktadır. 7.2.OBEX Object Model OBEX Object Model, bir nesne hakkındaki tüm detayları temsil eder. Örneğin header olarak bilinen özellikleri tanımlar. Her header nesne yada nesnenin kendisi hakkında bir bilgi içerecektir. (Örnegin, nesnenin ismi gibi.) Object Model header lardaki header ID yi bir byte ile tanımlarken header in değeri bir veya daha fazla byte ile tanımlamaktadır. Bir Byte Bir veya daha fazla byte Şekil 7.2 OBEX header OBEX Object Model, bir OBEX nesne özellikleri için 17 header tanımlamıştır. Java OBEX tanımlamasında java.obex.headerset interface içerisinde sabitlerden yalnızca 12 tanesi tanımlanmıştır. 7.3.OBEX Oturum Protokolü OBEX Session Protokolü, OBEX sunucu ve istemci arasıdaki haberleşme için gerekli tüm kuralları ve süreçleri tanımlar. Haberleşme yapısı istek-cevap işlemi şeklinde olup basittir. İstemci bir istek gönderir ve sunucu bu isteğe bir cevap verir. İstek ve cevabın her ikiside paketler şeklinde gönderilirler. İstemciler, sunucuyla 8 basit işlem aracılığıyla haberleşir. Bunlar; CONNECT SETPATH DISCONNECT ABORT PUT CREATE-EMPTY GET PUT-DELETE OBEX sunucular, sırasıyla OBEX istemcilere cevap verirler. Bu cevap şekli aşağıdaki gibidir. SUCCESS FAILURE 70

71 CONTINUE Pek çok OBEX cevabı bulunmaktadır. Tüm cevap kodlarını javax.obex API paketi içerisindeki javax.obex.responsecodes classı içerisinde görebilirsiniz. OBEX oturumu boyunca meydana gelen mesaj akışı aşağıda gösterildiği gibidir. OBEX İstemci Uygulaması OBEX Sunucu Uygulaması Connect Request Success Put/Get Continue Put/Get Success Şekil 7.3: OBEX İstemci ve Sunucu Arasındaki Mesaj Akışı Disconnect İstemci CONNECT operasyonu ile bir istek paketi göndererek haberleşme sürecini başlatır. İstek paketi, operasyon, paket uzunluğu Success ve headerlar için kod içermektedir. Bu istek alındığında sunucu gönderdiği paketde cevap kodunu, cevabın uzunluğunu ve cevap verisini karşılık olarak gönderir. Normal durumda sunucu SUCCESS cevap kodu ile birlikte paketi gönderir. Eğer bazı problemler meydana geldi ise sunucu FAILURE kodunu gönderir. PUT operasyonu, istemciden sunucuya bir nesne gönderilmesine izin vermektedir. Boyutu küçük bir nesne, bir tek PUT istek paketi ile gönderilebilir. Eğer tek paket ile gönderilemiyorsa istemci bir den fazla paket gönderir ve sunucu CONTINUE cevap kodu ile yanıt verir. Sunucu istemcinin gönderdiği son PUT paketine SUCCESS kodu ile cevap verir. Benzer şekilde istemciler GET istek paketi göndererek sunucudan nesneleri alabilir. Eğer sunucu paketi kabul ederse, SUCCESS veya CONTINUE kodlarından herhangi birisiyle yanıt verir. Eğer sunucu CONTINUE ile yanıt verirse, istemcide GET isteğini göndermeye devam eder. Sunucu SUCCESS kodu ile yanıt verene kadar bu işlem devam eder. 71

72 İstemci, sunucudaki bir dizini değiştirmek istediğinde PUT ve GET işlemleri ile birlikte SETPATH işlemini kullanır. İstemci, zamanından önce sunucu ile olan oturumu sonlandırmak istiyorsa ABORT işlemini kullanabilir. Aynı zamanda CREATE-EMPTY işlemini kullanarak sunucu üzerinde boş bir dosya oluşturabilir. PUT-DELETE işlemini kullanarak sunucu üzerinde bulunan bir nesneyi kaldırabilir. 7.4.JSR82 deki OBEX API leri JSR deki APIsindeki java.obex paketinde bulunan classlar aşağıdaki gibidir. Authenticator ClientSession HeaderSet Operation PasswordAuthenticator ResponseCodes SessionNotifier ServerRequestHandler Javax.obex.ClientSession ClientSession interface Javax.obex.ClientSession ClientSession interface javax.microedition.io.connection classının bir alt classıdır ve istemci açısından bir OBEX bağlantısını temsil eder. Aşağıdaki kod satırında bu interface den bir nesne oluşturulmuştur. ClientSession session = (ClientSession) Connector.open(baglantiURL); Bu interface OBEX işlemleri için bir header tanımlanmasını sağlar. Örneğin, put() ve get() metodu sırasıyla PUT ve GET işlemlerini gerçekleştirmemize izin verir. Bu metodlar javax.obex.operation nesnesini geri döndürür ve böylece işlemi tamamlayabiliriz. Connect(), disconnect() ve setpath() metodları sırasıyla CONNECT, DISCONNECT ve SETPATH işlemlerini tanımlar. Javax.obex.HeaderSet nesnesi sonuç olarak geri döner Javax.obex.HeaderSet HeaderSet interface tüm OBEX headerlarını tanımlamak için kullanılır. ClientSession.createHeaderSet() çağrısı ile temsil edilir. Aşağıda bir OBEX istemci örneği görülmektedir. HeaderSet hdr = clientsession.createheaderset(); // Sunucudan resim.png dosyası istemek için bir header set oluşturulur. hdr.setheader(headerset.type," image/png"); hdr.setheader(headerset.name," masaustu.png"); 72

73 Bir OBEX sunucu, sırasıyla getheader() veya getheaderlist() metodlarının herhangi birisini çağırarak istenciden gönderilen header ları alabilir Javax.obex.Operation Bu interface GET ve PUT işlemleri için gerekli olan metodları sağlar. Aşağıdaki kod parçacığında ClientSession daki put() metodu kullanılarak bir işlem oluşturuldu. ClientSession session = (ClientSession)Connector.open(baglantiURL); Operation op = session.put(null); Ancak, gönderilmek istenen nesneyi yerleştirine kadar ve bazı headerlar eklenene kadar Operation işlemi tamamlanmayacaktır. PUT örneği aşağıdaki gibidir. ClientSession session = (ClientSession)Connector.open(baglantiURL); Operation op = session.put(null); OutputStream out=op.openoutputstream(); Out.write( Deneme.getBytes()); Out.close(); CREATE-EMPTY işlemini gerçekleştirmek için, herhangi bir data yazmaksızın OutputStream i açıp kapatarak bu işlemi gerçekleştirebiliriz. Bu işlem aşağıdaki gibidir. ClientSession session = (ClientSession)Connector.open(baglantiURL); Operation op = session.put(null); OutputStream out=op.openoutputstream(); Out.close(); Bu classdaki delete() metodunu çağırılarak PUT-DELETE işlemini yapmak daha basittir Javax.obex.ResponseCodes ResponseCodes classı, OBEX sunucunun, istemcilerine gönderebileceği tüm geçerli cevap kodlarını içerir. OBEX istek/cevap modeli HTTP den çok daha basit bir modeldir. Aşağıda verilen bazı cevaplar gösterilmektedir. OBEX_HTTP_ACCEPTED OBEX_HTTP_OK OBEX_HTTP_BAD_METHO OBEX_HTTP_RESET D OBEX_HTTP_BAD_REQUE ST OBEX_HTTP_CONFLICT 73

74 Eğer PUT işlemi başarılı olursa ResponseCodes classının nasıl kullanıldığına dair bir örnek verelim. ClientSession session = (ClientSession)Connector.open(baglantiURL); Operation op = session.put(null); OutputStream out = op.openoutputstream(); out.write("deneme".getbytes()); out.close(); if(op.getresponsecode() ==ResponseCodes.OBEX_HTTP_OK) System.out.println("PUT işlemi başarılı şekilde gerçekleşti."); javax.obex.ServerRequestHandler ServerRequestHandler, OBEX sunucu için çok kullanışlı bir classtır. OBEX isteklerini cevaplayan event listener içerir. Bu bir classtır, interface değildir. Implement etmeden miras yoluyla kullanabiliriz. Bu class uygun operasyonu içeren istemci istekleri geldiği zaman çağrılacak olan aşağıdaki metotlara sahiptir. OnConnect() onsetpath() ondelete() onget() onput() JVM tarafından çağrılan callback metodundan sonra Operation nesnesinden headerları elde edebiliriz. public int onget(operation op) { try{ HeaderSet hdr = op.getreceivedheaders(); javax.obex.SessionNotifier SessionNotifier interface J2ME deki tüm notifierlar gibi benzer bir yöntem kullanır. Bir OBEX sunucuya bağlanmak isteyen bir cihaz bu interface i implement etmeli, acceptandopen() metodunu çağırmalı ve istemcileri beklemelidir. Aşağıdaki kod bu işlemleri göstermektedir. 74

75 SessionNotifier sn = (SessionNotifier) Connector.open("btgoep://localhost:1106;name = FTP"); sn.acceptandopen(serverrequesthandler); Sunucu, istemciden gelen bağlantıları kabul eder. Daha sonra istemci için bir kanal açılır. serverrequesthandler dan oluşturulan alt class acceptandopen() metoduna geçirilerek istemciden gelen tüm istekler sunucu tarafından alınır. 75

76 8.PROJE TASARIMI VE GERÇEKLEŞTIRILMESI 8.1. Proje Hakkında Projede yapılmak istenen bluetooth teknolojisini kullanarak cep telefonu üzerinden bilgisayarın fare ve klavyesini kontrol edebilmektir. Cep telefonları için uygulama yazmada sağladığı esnekliklerden dolayı java programlama dili kullanıldı. Java nın dili ile yazılmış programların çalışması için gerekli olan java sanal makine nin birçok cihazda bulunması Java programlama dilinin tercih edilmesinde büyük bir etkendir. Bu sebeplerden dolayı cep telefonu üzerinde J2ME platformu, bilgisayar tarafında ise J2SE platformu kullanılmıştır. Bilgisayar tarafında yazılan program sunucu cep telefonu tarafındaki program ise istemci olarak düşünülmüştür. Sunucu tarafı, öncelikle yerel bluetooth aygıtına erişip istemcinin bağlanması için gerekli olan servisleri açmak zorundadır. İstemci ise öncelikle çevredeki bluetooth cihazlarını arar. Arama işlemi sona erdiğinde uygun bluetooth cihazı kullanıcı tarafından seçilir. Sonraki aşamada seçilen bluetooth cihazının servisleri taranır. Eğer uygun bir servis bulunursa bağlantı sağlanmış olur. Aksi takdirde servis bulunamadığı için bağlantı sağlanamaz Proje Mimarisi Projede öncelikli olarak PC tarafında kullanılan bluetooth cihazı usb dongle olmak zorundadır ve bu cihazın kendi yazılımı yüklenmeyip Microsoft bluetooth sürücüleri yüklenmelidir. Microsoft bluetooth sürücüleri yüklendiğinde Microsoft bluetooth stack da yüklenmiş olacaktır. Microsoft bluetooth stack bize cihazı programlama esnekliğini sunmaktadır. Usb bluetooth dongle haricinde bir bluetooth cihazı kullandığımızda örnegin dizüstü bilgisayarın bluetooth cihazına erişmek istediğimizde cihazın sürücüleri yazılım geliştirme esnekliğini sağlamıyorsa cihaza erişip programlama mümkün olamamaktadır. Bu nedenden dolayı usb bluetooth cihazı ve Microsoft Bluetooth Stack kullanılmıştır. Microsoft Bluetooth Stack a java ile doğrudan erişmek mümkün değildir. Bunun için java geliştiricileri tarafından yazılmış bluecove paketinin yüklenmesi gerekir. Bu paket içerisinde JNI(Java Native Interface) formunda yazılmış intelbth.dll dosyası bulunmaktadır. Bu dosya Microsoft Bluetooth Stack daki Bluetooth API lerine erişmeyi sağlar. JNI formunda yazıldığı için java tarafından, intelbth.dll dosyasındaki fonksiyonları çağırmak mümkün olabilmektedir. Şekil 8.1 bu yapıyı bize açık olarak göstermektedir. 76

77 Bluetooth Cihazı Stack API Microsoft Bluetooth Bluecove (intelbth.dll-jni) JAVA Şekil 8.1 PC tarafında bluetooth cihazına erişim Şekilde de görüldüğü PC üzerindeki bluetooth cihazına erişim ancak JNI üzerinden gerçekleştirilmektedir. Javanın Bluetooth Stack eksikliği ancak bu şekilde giderilebilmektedir. Cep telefonunda ise JSR-82 API leri kullanılarak bluetooth cihazına erişimi işletim sisteminin kendi sağlamaktadır. Gerçekleştirlen projede bluetooth cihazları arasındaki haberleşmenin şeklini çizelim. Şekil 8.2 PC ile Cep telefonu arasındaki haberleşme Şekil 8.2 de görüldüğü gibi Microsoft Bluetooth Stack API(Application programming Interface) ve Bluecove paketi cihaza erişim sorununu çözmektedir. 77

78 Microsoft Bluetooth Stack API si C API sidir. BlueCove ve Microsoft API arasındaki entegrasyonun sağlanması ise JNI aracılığıyla sağlanmıştır. Bluecove API si JSR-82 tabanlıdır. BlueCove aşağıdaki profilleri desteklemektedir. Genel Erişim Profili Servis Araştırma Profili Seri Port Profili 8.3. Uygulamada Kullanılan Classlar ve İşlevleri Uygulamayı oluşturan classların temel görevleri ve yazılış amacına göz atalım Cep Telefonunda Oluşturulan J2ME Uygulaması Cep telefonu istemci yazılımında arayüzlerin oluşturulması ve arayüzler arasında geçişi sağlamak amacıyla ilkmidlet isimli MIDlet oluşturuldu. ilkmidlet MIDlet i ile programın başlangıcında bir tanıtıcı açılış ekranı (splash form) oluşturuldu. Açılış ekranın ardından ana menü olarak bir List oluşturdu. Bu List ekranına bağlantı oluşturma işlemi için hazırlanan List olan Cihaz Listesi ne bağlı olan Bağlantı Oluşturma elementi, programı tanıtan forma bağlı olan Program Hakkında elementi, çıkış için ise Çıkış elementleri eklendi. Cihaz Listesi List inde cihaz ara butonuyla yakındaki cihazlar aranmaya başlanır. Bu süreçte aşağıda belirtilen cihaz sorgulama fonksiyonu kullanılır ve ardından bulunan cihazlar Cihaz Listesi ne eklenir. // CİHAZ SORGULAMASI Vector cihazsorgulamasiyap(){ try { // onceki cihaz bilgileri siliniyor cihazlar.removeallelements(); cihazsiniflari.removeallelements(); yerelcihazadresi = LocalDevice.getLocalDevice(); yerelcihazadresi.setdiscoverable(discoveryagent.giac);. kasif = yerelcihazadresi.getdiscoveryagent(); kasif.startinquiry( DiscoveryAgent.GIAC, new BlueDinleyici() ); CihazListesi.deleteAll(); CihazListesi.append( "--ARANIYOR--", null ); while(!cihazaramatamamlandi) { 78

79 cihazaramatamamlandi = false; catch (BluetoothStateException ex) { ex.printstacktrace(); return cihazlar; // CİHAZ SORGULAMASI yerelcihazadresi= LocalDevice.getLocalDevice(); yerelcihazadresi.setdiscoverable(discoveryagent.giac);. Kodları ile mevcut cihaz bulunur ve yerel cihaz arama için hazırlanır. kasif = yerelcihazadresi.getdiscoveryagent(); kasif.startinquiry( DiscoveryAgent.GIAC, new BlueDinleyici() ); Kodlarıyla kasif adında ajan belirtilir ve bu ajanla civardaki bluetooth cihazları aranır. Bulunan cihazlar BlueDinleyici isimli dinleyici sınıfı tarafından tututulur. BlueDinleyici sınıfında bulunan ; public void devicediscovered(remotedevice uzakcihaz, DeviceClass cihazsinif) { if(cihazsinif.getmajordeviceclass() == 0x0100 ) {cihazlar.addelement( uzakcihaz ); cihazsiniflari.addelement( cihazsinif ); prosedür ile keşfedilen cihazlardan sadece PC veya Laptop olanlar (cihaz sınıfı 0x0100 olanlar ) Cihaz Listesi ne aktarılır. Cihaz Listesi nden sunucu programın bulunduğu cihaz seçildikten sonra aşağıdaki fonksiyon ile servis araması yapılır. // SERVİS SORGULAMASI public void servissorgulamasiyap(remotedevice secilencihaz, UUID[] uuids){ try { kasif.searchservices(null,uuids, secilencihaz, new BlueDinleyici()); while(!servisaramatamamlandi) { servisaramatamamlandi = false; catch(bluetoothstateexception e) { // SERVİS SORGULAMASI 79

80 Uygun bir servis bulunmasıyla sunucuyla istemci telefon arasındaki haberleşme başlatılır. Cihazlar arası iletisim için aşağıdaki sınıf kullanılır. // Cihaza bağlanma class cihazabaglanma { public void setservicerecord(servicerecord sr){ secilenservis = sr; getstreams(); private void getstreams(){ baglantiurl = secilenservis.getconnectionurl(servicerecord.noauthenticate_noencrypt, false ); try {streamconnection = (StreamConnection) Connector.open( baglantiurl ); dataoutputstream = streamconnection.opendataoutputstream(); datainputstream = streamconnection.opendatainputstream(); catch (IOException ex) {ex.printstacktrace(); public void mesajyaz(string mesaj){ try {dataoutputstream.writeutf(mesaj); dataoutputstream.flush(); catch (Exception ex) {ex.printstacktrace(); İstemci J2ME Uygulamasının Cep Telefonuna Yüklenmesi Uygulama derlendikten sonra jad(java Description) ve jar (Java Archive) uzantılı iki dosya oluşur. Derleme sonucu oluşan dosyalar ve uygulamamızda kullandığımız ses yada resim dosyaları jar uzantılı dosya içerisinde bulunur. Jad dosyası uygulamanın profil, konfigürasyon jar dosyasının yeri ve boyu gibi bilgileri vermektedir. Uygulama kurulmadan önce bu dosyaya bakılır eğer cihazımız bu uygulamayı kurmaya uygunsa jar dosyası jad dosyasının işaret ettiği yerden indirilir ve kurulur. Uygulamanın cep telefonuna aktarılması için hem bilgisayarın, hem de telefonun desteklediği veri aktarım teknojilerinden birisi kullanılabilir. Bu aktarım Bluetooth, kızılötesi veya veri kablosu kullanarak yapılabilir. 80

81 PC Tarafında Oluşturulan J2SE Uygulaması AnaForm class ı programın arayüzünü oluşturmaktadır. Bu class üzerinde sunucunun başlatılmasını ve bağlı olan istemcilerin liste kutusunda görülmesini ve bluetooth cihazı hakkındaki bilgilerin ekranda görüntülenmesini sağlar. PCServer class ı sunucu üzerindeki yerel bluetooth cihazının bulunması, sunucunun oluşturulması, bağlanacak istemciler için gerekli servislerin sağlanması ve bağlanan istemciden gelen mesajları alıp bu mesajları yorumlayan classtır. PCServer class ında, cep telefonu üzerindeki istemcide de belirtiğimiz aynı 32 karakterlik UUID numarası bağlantı adresi belirtilirken kullanılır. UUID, haberleşme sırasında Bluetooth sinyallerinde kullanılan bir servis için verilmiş tekil kimlik numarasıdır. Haberleşmenin kolay ve özel olması için bu kimlik özel belirtilmiştir. İstemci cep telefonu bu kimlik numarası ile PC deki server a bağlanır. İstemci cep telefonu için serverı başlatmak amaçlı Bluetooth cihazı menüsü içinde Sunucuyu Başlat komutu yer almaktadır. Bu komut çalıştırılmasıyla PCServer class ının run() prosedürü çalışmaya başlar. Bu prosedürde istemci programında olduğu gibi yerel bluetooth cihazı aktif edilmektedir ve ekranda PC server da tanımlanan UUID numarasıyla sunucunun adresi tanımlanır. Sunucunun adresi btspp://localhost: a0b0c0d0e0f010; name=pcsunucu olarak belirlenmiştir. Buradaki btspp ifadesi Bluetooth Serial Port Profile nin kullanıldığını belirtir. localhost ise sunucu olduğunu belirtir a0b0c0d0e0f010 şeklinde belirtilen ise UUID dir. Tanımlanan adreste en son belirtilen PCSunucu ise servis ismini belirmektedir. String url = "btspp://localhost:" + uuid.tostring() +";name="+ uygulamaadi; form.mesajgoster("url: " + url ); Adres belirtildikten sonra bağlantı için istemci cep telefonundan adrese bağlanması beklenir ve tanımlanan servis istemci için tanımlı kılınır. server = (StreamConnectionNotifier)Connector.open( url ); ServiceRecord rec = cihaz.getrecord( server ); Bağlantı kabul etme ve sağlama metodu ile istemci bağlanana kadar servis aşağıdaki kod bölümüyle sağlanır. form.mesajgoster("sunucu istemci baglantisi icin bekliyor..."); 81

82 while(!done) { try { // istemci bağlantısı kabul edilmeye baåÿlanä±yor. // Ä stemci baäÿlanana kadar bloklanacaktä±r. StreamConnection istemci = server.acceptandopen(); new BAGLANTI(istemci).start(); catch (Exception e) { e.printstacktrace(); İstemci cep telefonu bağlandıktan sonra istemciden gelen mesajlar okunmaya başlanır. Okunan mesajlar PCServer class ında belirtilen mesajlar ile aynı olduğunda belirtilen kodlar çalıştırılır. Robot sınıfında bulunan mause ve klavye metodları ile gelem mesajlar icra edilir. Örneğin aşağıda belirtilen kodlar ile farenin sağa ve sola hareket etmesi sağlanır. if (s.equals("masaustu")){ Dosya dosya = new Dosya(); FareHareketDinleyici f = new FareHareketDinleyici(dosya); dosya.start(); f.start(); //JOptionPane.showMessageDialog(form, "masaustu istegi geldi..."); else if (s.equals("hsag")){ mousekoordinat=mouseinfo.getpointerinfo().getlocation(); robot.mousemove(mousekoordinat.x+40, mousekoordinat.y); else if (s.equals("hsol")){ mousekoordinat=mouseinfo.getpointerinfo().getlocation(); robot.mousemove(mousekoordinat.x-40, mousekoordinat.y); 8.4. İstemci ve Server Uygulamalarının Çalıştırılması Kullanımı Hazırlanan istemci ve sunucu uygulamalarının çalıştılması ve kullanımıngöz atalım İstemci Cep Telefonu Uygulamasının Çalıştırılması ve Kullanımı İstemci program çalıştırıldığında öncelikle bir açılış formu görünür. Daha sonra Şekil 8.3 (a) da belirtilen menü isimli List ekrana gelir. Menüden Bağlantı Oluşturma elementini seçerek Cihaz Listesi List i görünür duruma gelir (Şekil 8.3 b). Cihaz Ara tuşuna basarak civardaki PC veya Laptop sınıfı görünür cihazların Bluetooth isimleri listeye yazılır. 82

83 Arama tamamlandıktan sonra, Sunucu programınının bulunduğu bilgisayarın Bluetooth ismi seçilir ve cihaza bağlanım sağlanır. Bağlantı kurulduktan sonra Bağlantılar menüsü görünür hale gelir ve Fare Kontrolü ile klavye fonksiyonları kullanılabilir hale getirilir(şekil 8.3 c ). Klavye fonksiyonu için de oluşturulan arayüz Şekil 8.3 (d) de gösterilmiştir. (a) (b) (c) (d) Şekil 8.3: Cep istemci programının Arayüzleri 83

84 8.4.2.PC Taraflı Server Uygulamasının Çalıştırılması ve Kullanımı PC tarafında çalışan programın çalıştırılmadan önce bluetooth cihazının takılmış olması gerekir. Daha sonra sunucu tarafı aşağıda görüldüğü gibi çalıştırılır. Şekil 8.4: PC tarafındaki bluetooth sunucunun başlatılması Sunucu başlatıldıktan sonra bilgisayar, bağlanacak istemciler için bir servis açar. Bağlantı istekleri için beklemeye başlar. 84

85 Şekil 8.4: Bluetooth sunucu istemcilerin bağlanmasını bekliyor. Sunucunun adresi btspp://localhost: a0b0c0d0e0f010;name=pcsunucu olarak belirlenmiştir. Buradaki btspp ifadesi Bluetooth Serial Port Profile nin kullanıldığını belirtir. localhost ise sunucu olduğunu belirtir a0b0c0d0e0f010 şeklinde belirtilen ise UUID dir. Yani haberleşmenin özel olarak gerçekleşmesini sağlayan unique ID dir. İstemci tarafı olan cep telefonun bu UUID yi bilmesi gerekir. PC Sunucu ise servis ismini belirtmektedir. 85

Java 2 Micro Edition (J2ME)

Java 2 Micro Edition (J2ME) Java 2 Micro Edition (J2ME) Arş.Gör. Cenk ATLIĞ Bahar 2005-2006 Trakya Üniversitesi Bilgisayar Mühendisliği İçerik Giriş MIDP nedir? MIDP in Java 2 Platformundaki yeri Java 2 Platformunda cihazların kullanım

Detaylı

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

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 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 bilgilerini saklamalarına, program yüklemelerine izin

Detaylı

Mobil Cihazlardan Web Servis Sunumu

Mobil Cihazlardan Web Servis Sunumu Mobil Cihazlardan Web Servis Sunumu Özlem Özgöbek Ege Üniversitesi Bilgisayar Mühendisliği Bölümü 2010 İnternet erişiminin yaygınlaşması ve artık mobil cihazlar üzerinden bile yüksek hızlı veri iletişimine

Detaylı

Öğr.Gör. Gökhan TURAN www.gokhanturan.com.tr. Gölhisar Meslek Yüksekokulu

Öğr.Gör. Gökhan TURAN www.gokhanturan.com.tr. Gölhisar Meslek Yüksekokulu Öğr.Gör. Gökhan TURAN www.gokhanturan.com.tr Gölhisar Meslek Yüksekokulu Bilgisayarın Yapısı Donanım (Hardware): Bir bilgisayara genel olarak bakıldığında; Kasa, Ekran, Klavye, Fare, Yazıcı, Hoparlör,

Detaylı

BİLGİ TEKNOLOJİSİNİN TEMEL KAVRAMLARI. 1-Bilgisayar, donanım ve yazılım kavramları 2-Bilgisayar çeşitleri 3-Bilgisayarlar arsındaki farklılıklar

BİLGİ TEKNOLOJİSİNİN TEMEL KAVRAMLARI. 1-Bilgisayar, donanım ve yazılım kavramları 2-Bilgisayar çeşitleri 3-Bilgisayarlar arsındaki farklılıklar BİLGİ TEKNOLOJİSİNİN TEMEL KAVRAMLARI 1-Bilgisayar, donanım ve yazılım kavramları 2-Bilgisayar çeşitleri 3-Bilgisayarlar arsındaki farklılıklar Yılmaz DEMİR BİLİŞİM TEKNOLOJİLERİ ÖĞRETMENİ Ünitelerimiz

Detaylı

Kablosuz Ağlar (WLAN)

Kablosuz Ağlar (WLAN) Kablosuz Ağlar (WLAN) Kablosuz LAN Kablosuz iletişim teknolojisi, en basit tanımıyla, noktadan noktaya veya bir ağ yapısı şeklinde bağlantı sağlayan bir teknolojidir. Bu açıdan bakıldığında kablosuz iletişim

Detaylı

Doğu Akdeniz Üniversitesi Bilgisayar ve Teknoloji Yüksek Okulu Bilgi teknolojileri ve Programcılığı Bölümü DERS 1 - BİLGİSAYAR VE ÇEVRE ÜNİTELERİ

Doğu Akdeniz Üniversitesi Bilgisayar ve Teknoloji Yüksek Okulu Bilgi teknolojileri ve Programcılığı Bölümü DERS 1 - BİLGİSAYAR VE ÇEVRE ÜNİTELERİ Doğu Akdeniz Üniversitesi Bilgisayar ve Teknoloji Yüksek Okulu Bilgi teknolojileri ve Programcılığı Bölümü DERS 1 - BİLGİSAYAR VE ÇEVRE ÜNİTELERİ Bilgisayar, kendine önceden yüklenmiş program gereğince

Detaylı

Bir bölgede başka bir bölgeye karşılıklı olarak, veri veya haberin gönderilmesini sağlayan.sistemlerdir.

Bir bölgede başka bir bölgeye karşılıklı olarak, veri veya haberin gönderilmesini sağlayan.sistemlerdir. 1.1.3. Scada Yazılımından Beklenenler Hızlı ve kolay uygulama tasarımı Dinamik grafik çizim araçları Çizim kütüphaneleri Alarm yönetimi Tarih bilgilerinin toplanması Rapor üretimi 1.1.4. Scada Sistemleri

Detaylı

ÖZGÜR YAZILIMLAR İLE J2EE

ÖZGÜR YAZILIMLAR İLE J2EE ÖZGÜR YAZILIMLAR İLE J2EE Buğra Çakır bugra@ibrahimcakir.com Seminer İçeriği 1. İki ve üç katmanlı yazılım mimarileri 2. Java ve J2EE platformu 3. Özgür yazılımlar ile J2EE 4. Eclipse, Lomboz ve JBoss

Detaylı

JAVA MOBIL UYGULAMALAR

JAVA MOBIL UYGULAMALAR JAVA MOBIL UYGULAMALAR Ahmet JAMEKOV Nevruz AGAYEV Orazmurat AVGANOV 1 MOBİL TEKNOLOJİ NEDIR? Bireylerin hareket halindeyken bile bilgiye erişebilmesini ve bu bilgilerle ilgili işlem yapabilmesini mümkün

Detaylı

Altuğ B. Altıntaş altuga@kodcu.com

Altuğ B. Altıntaş altuga@kodcu.com Java ile Etkileşimli Ağ Uygulamaları Altuğ B. Altıntaş altuga@kodcu.com Java Nedir? Java platformu, ağ(network) ın önemi hesaba katılarak ve aynı yazılımın birçokdeğişik bilgisayar ortamında veya değişik

Detaylı

Bilgi Teknolojisinin Temel Kavramları

Bilgi Teknolojisinin Temel Kavramları Bilgi Teknolojisinin Temel Kavramları 1. Günlük yaşantıda bilgisayar hangi alanlarda kullanılmaktadır? 2. Bilgisayarın farklı tip ve özellikte olmasının sebepleri neler olabilir? Donanım Yazılım Bilişim

Detaylı

Bilgisayar İşletim Sistemleri BLG 312

Bilgisayar İşletim Sistemleri BLG 312 Bilgisayar İşletim Sistemleri BLG 312 İşletim Sistemlerine Giriş Bilgisayar Sistemi uygulama programları derleyici editör komut yorumlayıcı işletim sistemi makina dilinde programlar mikroprogram (ROM da)

Detaylı

Bilgisayar, elektronik bir cihazdır ve kendi belleğinde depolanan talimatları sırasıyla uygulayarak çalışır. İşler. Bilgi İşlem Çevrimi

Bilgisayar, elektronik bir cihazdır ve kendi belleğinde depolanan talimatları sırasıyla uygulayarak çalışır. İşler. Bilgi İşlem Çevrimi Bilgisayar nedir? Bilgisayar, elektronik bir cihazdır ve kendi belleğinde depolanan talimatları sırasıyla uygulayarak çalışır. Veriyi toplar (girdi) İşler Bilgi üretir (çıktı) Bilgi İşlem Çevrimi 1 Bir

Detaylı

Öğr.Gör. Dr. Bülent ÇOBANOĞLU. Adapazarı Meslek Yüksekokulu Bilgisayar Ağları

Öğr.Gör. Dr. Bülent ÇOBANOĞLU. Adapazarı Meslek Yüksekokulu Bilgisayar Ağları Öğr.Gör. Dr. Bülent ÇOBANOĞLU Adapazarı Meslek Yüksekokulu Bilgisayar Ağları Bu konuyu çalıştıktan sonra: Kablosuz iletişimi ve ağ yapısını kavrayacak, Kablosuz ağların sınıflandırmasını yapacak Kablosuz

Detaylı

BİLGİ TEKNOLOJİLERİ VE UYGULAMALARI

BİLGİ TEKNOLOJİLERİ VE UYGULAMALARI İÇERİK 2 BİLGİ TEKNOLOJİLERİ VE UYGULAMALARI ÖĞR. GÖR. HASAN ALİ AKYÜREK Ders izlencesi Bilgisayara giriş Bilgisayar nedir? Bilgisayarın tarihçesi Bilgisayarların sınıflandırılması Bilgisayar nasıl çalışır?

Detaylı

Kızılötesi. Doğrudan alınan güneşışığı %47 kızılötesi, %46 görünür ışık ve %7 morötesi ışınımdan oluşur.

Kızılötesi. Doğrudan alınan güneşışığı %47 kızılötesi, %46 görünür ışık ve %7 morötesi ışınımdan oluşur. Kızılötesi Kızılötesi (IR: Infrared), nispeten daha düşük seviyeli bir enerji olup duvar veya diğer nesnelerden geçemez. Radyo frekanslarıyla değil ışık darbeleriyle çalışır. Bu nedenle veri iletiminin

Detaylı

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu bulunmaktadır; 1. Performans: İşletim sistemi, makine

Detaylı

AĞ SĠSTEMLERĠ. Öğr. Gör. Durmuş KOÇ

AĞ SĠSTEMLERĠ. Öğr. Gör. Durmuş KOÇ AĞ SĠSTEMLERĠ Öğr. Gör. Durmuş KOÇ Ağ Ġletişimi Bilgi ve iletişim, bilgi paylaşımının giderek önem kazandığı dijital dünyanın önemli kavramları arasındadır. Bilginin farklı kaynaklar arasında transferi,

Detaylı

Sistem Nasıl Çalışıyor: Araç İzleme ve Filo Yönetim Sistemi

Sistem Nasıl Çalışıyor: Araç İzleme ve Filo Yönetim Sistemi arvento Araç Takip ve Filo Yönetim Sistemleri ile araçlarınızı 7 gün 24 saat on-line ve geçmişe yönelik olarak izleyebilir, hızlarını, izlemiş oldukları güzergahı, duraklama yaptıkları yerleri uzaktan

Detaylı

MODBUS PROTOKOLÜ ÜZERİNDEN KABLOLU VE KABLOSUZ ENERJİ İZLEME SİSTEMİ

MODBUS PROTOKOLÜ ÜZERİNDEN KABLOLU VE KABLOSUZ ENERJİ İZLEME SİSTEMİ MODBUS PROTOKOLÜ ÜZERİNDEN KABLOLU VE KABLOSUZ ENERJİ İZLEME SİSTEMİ 192.168.1.0 Networkunda çalışan izleme sistemi PC Eth, TCP/IP Cihaz 1, Cihaz 2, Şekil-1 U 200 Şekil-1 deki örnek konfigürasyonda standart

Detaylı

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.

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. Nagios Enterprises, kurumsal ölçekte, BT altyapı gözetiminde endüstri standardı olan Nagios için resmi ürünler, hizmetler ve çözümler sunuyor. Dünya çapında yüz binlerce kullanıcıyla Nagios bilgi teknolojileri

Detaylı

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

O P C S T A N D A R D I O P C S T A N D A R D I ASP OTOMASYON LTD. Sadık ŞENOL İsmail YAKIN 12/08/2008 OPC Standardı İnsan gücüne dayalı üretimden otomasyona dayalı, daha kontrollü bir üretime geçiş endüstride üretim hızını ve

Detaylı

Akdeniz Üniversitesi

Akdeniz Üniversitesi F. Ders Tanıtım Formu Dersin Adı Öğretim Dili Akdeniz Üniversitesi Bilgi Teknolojileri Kullanımı Türkçe Dersin Verildiği Düzey Ön Lisans ( ) Lisans (x) Yüksek Lisans( ) Doktora( ) Eğitim Öğretim Sistemi

Detaylı

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015 BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015 Ders- 12 Bilgisayar Ağları Yrd. Doç. Dr. Burcu Can Buğlalılar Bilgisayar Mühendisliği Bölümü Bilgisayar Katmanları İçerik Bilgisayar ağı nedir? Yerel alan ağları

Detaylı

EKLER EK 12UY0106-5/A4-1:

EKLER EK 12UY0106-5/A4-1: Yayın Tarihi: 26/12/2012 Rev. :01 EKLER EK 12UY0106-5/A4-1: nin Kazandırılması için Tavsiye Edilen Eğitime İlişkin Bilgiler Bu birimin kazandırılması için aşağıda tanımlanan içeriğe sahip bir eğitim programının

Detaylı

- Kablo gücünün uyulması zorunlu biçimde tanımlanması ve elektriksel izolasyon gereksinimlerinin açıklanması.

- Kablo gücünün uyulması zorunlu biçimde tanımlanması ve elektriksel izolasyon gereksinimlerinin açıklanması. IEEE1394-1995 aygıtı nasıl çalışır? Giriş FireWire olarak da bilinen IEEE1394, Apple Computer Inc. tarafından 1980'lerde piyasaya sürülmüştür. FireWire, mevcut paralel veri yollarına ucuz bir alternatif

Detaylı

Düşünelim? Günlük hayatta bilgisayar hangi alanlarda kullanılmaktadır? Bilgisayarın farklı tip ve özellikte olmasının sebepleri neler olabilir?

Düşünelim? Günlük hayatta bilgisayar hangi alanlarda kullanılmaktadır? Bilgisayarın farklı tip ve özellikte olmasının sebepleri neler olabilir? Başlangıç Düşünelim? Günlük hayatta bilgisayar hangi alanlarda kullanılmaktadır? Bilgisayarın farklı tip ve özellikte olmasının sebepleri neler olabilir? Bilgisayar Bilgisayar, kendisine verilen bilgiler

Detaylı

Bilişim Teknolojileri Temelleri 2011. Dijital Dünyada Yaşamak

Bilişim Teknolojileri Temelleri 2011. Dijital Dünyada Yaşamak Bilişim Teknolojileri Temelleri 2011 Dijital Dünyada Yaşamak Bilgisayar nedir? Bilgisayar, kullanıcı tarafından girilen bilgileri(veri) işleyen, depolayan istendiğinde girilen bilgileri ve sonuçlarını

Detaylı

JAVA RMI ve Hibernate teknolojileri kullanılarak çok amaçlı bir yazılım altyapısı hazırlanması

JAVA RMI ve Hibernate teknolojileri kullanılarak çok amaçlı bir yazılım altyapısı hazırlanması JAVA RMI ve Hibernate teknolojileri kullanılarak çok amaçlı bir yazılım altyapısı hazırlanması Hakan ALBAĞ Tahsin Barış AKAN Bitirme Projesi 05.06.2006 Giriş Ticari yazılımlarda ortak ihtiyaçlar Birden

Detaylı

Akdeniz Üniversitesi

Akdeniz Üniversitesi F. Ders Tanıtım Formu Dersin Adı Öğretim Dili Akdeniz Üniversitesi Bilgisayar I Türkçe Dersin Verildiği Düzey Ön Lisans ( ) Lisans (x) Yüksek Lisans( ) Doktora( ) Eğitim Öğretim Sistemi Örgün Öğretim (x)

Detaylı

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

BÖLÜM 7. Telekomünikasyon, İnternet ve, Kablosuz Teknoloji. Doç. Dr. Serkan ADA BÖLÜM 7 Telekomünikasyon, İnternet ve, Kablosuz Teknoloji Doç. Dr. Serkan ADA Bilgisayar Ağı Nedir? En yalın haliyle ağ, iki veya daha fazla birbirine bağlı bilgisayardan oluşur. Bilgisayar Ağı Nedir?

Detaylı

Üstünlükleri. 1- Lisans gerektirmeyen frekanslarda çalışır.

Üstünlükleri. 1- Lisans gerektirmeyen frekanslarda çalışır. Wi-Fi (İngilizce: Wireless Fidelity, Türkçe: Kablosuz Bağlantı Alanı) kişisel bilgisayar, video oyunu konsolları, dijital ses oynatıcıları ve akıllı telefonlar gibi cihazları kablosuz olarak internete

Detaylı

ÖĞRENME FAALİYETİ 2 ÖĞRENME FAALİYETİ 2

ÖĞRENME FAALİYETİ 2 ÖĞRENME FAALİYETİ 2 ÖĞRENME FAALİYETİ 2 ÖĞRENME FAALİYETİ 2 AMAÇ Kablosuz kişisel alan ağlarda kullanılan teknolojileri kavrayıp wi-fi ve bluetooth ağ cihazlarını tanıyacak, kablosuz kişisel alan ağ kurulumunu yapabileceksiniz.

Detaylı

Açıköğretimde Mobil Öğrenme Açıköğretim e-öğrenme hizmetlerinden mobil bilişim aygıtlarıyla yararlanma olanaklarının değerlendirilmesi

Açıköğretimde Mobil Öğrenme Açıköğretim e-öğrenme hizmetlerinden mobil bilişim aygıtlarıyla yararlanma olanaklarının değerlendirilmesi Açıköğretimde Mobil Öğrenme Açıköğretim e-öğrenme hizmetlerinden mobil bilişim aygıtlarıyla yararlanma olanaklarının değerlendirilmesi Yrd. Doç. Dr. M. Emin Mutlu H. Umut Yenigün Nazan Uslu Anadolu Üniversitesi

Detaylı

İŞLETİM SİSTEMLERİNE GİRİŞ - 2. Sistem, sistem kaynaklarını belli bir hiyerarşi içinde kullanıcının hizmetine

İŞLETİM SİSTEMLERİNE GİRİŞ - 2. Sistem, sistem kaynaklarını belli bir hiyerarşi içinde kullanıcının hizmetine İŞLETİM SİSTEMLERİNE GİRİŞ - 2 Kaynakların Paylaşımı (Resource Sharing) Sistem, sistem kaynaklarını belli bir hiyerarşi içinde kullanıcının hizmetine sunar. Bir işletim sisteminde paylaşılan kaynaklar

Detaylı

Bilişim Teknolojilerine Giriş

Bilişim Teknolojilerine Giriş Bilişim Teknolojilerine Giriş Bilginin toplanması, işlenmesi, saklanması ve iletilmesini sağlayan teknolojilerin bütününe bilişim teknolojileri denir. Bilişim Teknolojisi Girilen verileri saklayan, işleyen,

Detaylı

Ağ Donanımları NIC. Modem. Modem. Ağ Cihazları (Aktif Cihazlar) Repeater (Yineleyici) 03.03.2013

Ağ Donanımları NIC. Modem. Modem. Ağ Cihazları (Aktif Cihazlar) Repeater (Yineleyici) 03.03.2013 Ağ Donanımları NIC Kartlar NIC, Modem Ağ Cihazları (Aktif Cihazlar) Repeater,, Access Point (Wireless), Transceiver, Bridge, Switch, Router NIC (Network Interface Card) Ağ Arabirim(arayüz) Kartı Bilgisayarı

Detaylı

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

WiFi RS232 Converter Sayfa 1 / 12. WiFi RS232 Converter. Teknik Döküman WiFi RS232 Converter Sayfa 1 / 12 WiFi RS232 Converter Teknik Döküman WiFi RS232 Converter Sayfa 2 / 12 1. ÖZELLĐKLER 60.20mm x 40.0mm devre boyutları (5-15)VDC giriş gerilimi Giriş ve çalışma gerilimini

Detaylı

EYLÜL 2012 İŞLETİM SİSTEMLERİ. Enformatik Bölümü

EYLÜL 2012 İŞLETİM SİSTEMLERİ. Enformatik Bölümü EYLÜL 2012 İŞLETİM SİSTEMLERİ İÇERİK 2 2 Yazılım nedir? Yazılım türleri nelerdir? İşletim sistemi nedir? İşletim sisteminin özellikleri İşletim sistemleri Unix Linux Windows Mac OS Android Yazılım Yazılım(Software),

Detaylı

Dersin Konusu ve Amaçları: Ders P lanı: Bölüm 1: Bilgi Teknolojilerinde Temel Kavramlar

Dersin Konusu ve Amaçları: Ders P lanı: Bölüm 1: Bilgi Teknolojilerinde Temel Kavramlar Bilgi Teknolojileri ve Uygulamalarına Giriş Dersin Konusu ve Amaçları: Bu dersin amacı daha önce bilgisayar ve bilgi teknolojileri alanında herhangi bir bilgi ve/veya deneyime sahip olmayan öğrenciye bilgi

Detaylı

U SB M I N I ADAPTE R BLUETOOTH

U SB M I N I ADAPTE R BLUETOOTH COMMUNICATION S U PPOR T U SB M I N I ADAPTE R BLUETOOTH CLASS I I EL KITABI NI-707520 COMMUNICATION S U PPOR T U SB ADAPTE R BLUETOOTH CLASS I I Öncelik le bu Blu etoot h Ada p t örü satın ald ı ğ ı n

Detaylı

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

Bölüm 9. İletişim ve Ağlar. Bilgisayarların. Discovering. Keşfi 2010. Computers 2010. Living in a Digital World Dijital Dünyada Yaşamak İletişim ve Ağlar Bilgisayarların Discovering Keşfi 2010 Computers 2010 Living in a Digital World Dijital Dünyada Yaşamak İletişimler Bilgisayar iletişimi, iki veya daha fazla bilgisayarın veya aygıtın

Detaylı

ENF 100 Temel Bilgi Teknolojileri Kullanımı Ders Notları 2. Hafta. Öğr. Gör. Dr. Barış Doğru

ENF 100 Temel Bilgi Teknolojileri Kullanımı Ders Notları 2. Hafta. Öğr. Gör. Dr. Barış Doğru ENF 100 Temel Bilgi Teknolojileri Kullanımı Ders Notları 2. Hafta Öğr. Gör. Dr. Barış Doğru 1 Konular 1. Bilgisayar Nedir? 2. Bilgisayarın Tarihçesi 3. Günümüz Bilgi Teknolojisi 4. Bilgisayarların Sınıflandırılması

Detaylı

Bilgisayar Ağları ve Türleri

Bilgisayar Ağları ve Türleri Bilgisayar Ağları ve Türleri Bilgisayar ağı, birbirlerine bağlı ve birbirleri arasında metin, ses, sabit ve hareketli görüntü aktarımı yapabilen bilgisayarların oluşturduğu yapıdır. Ağlar sadece bilgisayarlardan

Detaylı

EYLÜL 2012 ENFORMATİK. Enformatik Bölümü

EYLÜL 2012 ENFORMATİK. Enformatik Bölümü EYLÜL 2012 ENFORMATİK İÇERİK Ders izlencesi Muafiyet sınavı hakkında bilgi Bilgisayara giriş 2 Bilgisayar nedir? Bilgisayarın tarihçesi Bilgisayarların sınıflandırılması Bilgisayar nasıl çalışır? Bit-Byte

Detaylı

BİLGİSAYAR KULLANMA KURSU

BİLGİSAYAR KULLANMA KURSU 1 2 KURS MODÜLLERİ 1. BİLGİSAYAR KULLANIMI 3 1. Bilişim (Bilgi ve İletişim) Kavramı Bilişim, bilgi ve iletişim kelimelerinin bir arada kullanılmasıyla meydana gelmiştir. Bilişim, bilginin teknolojik araçlar

Detaylı

Yeni Nesil Ağ Güvenliği

Yeni Nesil Ağ Güvenliği Yeni Nesil Ağ Güvenliği Ders 6 Mehmet Demirci 1 Bugün Taşıma katmanı güvenliği (TLS, SSL) İnternet katmanı güvenliği (IPSec) Kablosuz bağlantı güvenliği Güvenlik duvarları 2 SSL/TLS SSL ilk olarak Netscape

Detaylı

İşletim Sistemleri; İÇERİK. Yazılım BİLGİ TEKNOLOJİLERİ VE UYGULAMALARI 19.10.2015. 3 Yazılım Türleri

İşletim Sistemleri; İÇERİK. Yazılım BİLGİ TEKNOLOJİLERİ VE UYGULAMALARI 19.10.2015. 3 Yazılım Türleri İÇERİK 2 BİLGİ TEKNOLOJİLERİ VE UYGULAMALARI İşletim Sistemleri ÖĞR. GÖR. HASAN ALİ AKYÜREK Yazılım nedir? Yazılım türleri nelerdir? İşletim sistemi nedir? İşletim sisteminin özellikleri İşletim sistemleri

Detaylı

İşletim Sistemlerine Giriş

İşletim Sistemlerine Giriş İşletim Sistemlerine Giriş İşletim Sistemleri ve Donanım İşletim Sistemlerine Giriş/ Ders01 1 İşletim Sistemi? Yazılım olmadan bir bilgisayar METAL yığınıdır. Yazılım bilgiyi saklayabilir, işleyebilir

Detaylı

Üç Boyutlu Grafik Teknolojilerinin Mobil Öğrenme Alanı ile Bütünleştirilmesi

Üç Boyutlu Grafik Teknolojilerinin Mobil Öğrenme Alanı ile Bütünleştirilmesi Future Learning Future 2008 : e Learning Üç Boyutlu Grafik Teknolojilerinin Mobil Öğrenme Alanı ile Bütünleştirilmesi Eray HANGÜL eray.hangul@sandarta.com Tahir Emre KALAYCI tahir.kalayci@ege.edu.tr Aybars

Detaylı

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1 Görsel Programlama DERS 01 Görsel Programlama - Ders01/ 1 Takdim Planı Nesneye Dayalı Programlama Kavramı Nesne, Sınıf Kavramı Java Programlama Dili Java Programlama Dili Temel Özellikleri Java Sürümleri

Detaylı

ATC-3200 ZigBee to RS232/422/485 Çevirici Kullanıcı Kılavuzu

ATC-3200 ZigBee to RS232/422/485 Çevirici Kullanıcı Kılavuzu ATC-3200 ZigBee to RS232/422/485 Çevirici Kullanıcı Kılavuzu 1.0 Giriş AC-3200 cihazı, maliyet odaklı tasarlanmış yüksek entegreli Seri den ZigBee ye kablosuz çevirici adaptördür. Dahili ZigBee teknolojisi

Detaylı

Donanım ve Yazılım Altyapısı Bileşeni

Donanım ve Yazılım Altyapısı Bileşeni Donanım ve Yazılım Altyapısı Bileşeni Her Okula 1 Adet Çok Fonksiyonlu Yazıcı 1 Adet Doküman Kamera Her Dersliğe Etkileşimli Tahta Panel Tip Etkileşimli Akıllı Tahta Kablolu İnternet Bağlantısı Her Öğretmene

Detaylı

1.Mailbox Server Role:

1.Mailbox Server Role: Exchange Server 2007 Role bazlı mimarisi ile organizasyonda ki mail trafiğini sağlamak için farklı sunucular üzerine farklı işlevselliğin dağıtılması ile karşımıza çıkıyor.daha önceki Exchange Server 2003

Detaylı

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama BİL 542 Paralel Hesaplama Dersi Projesi MPJ Express Java Paralel Programlama Recep Ali YILMAZ 131419106 Fen Bilimleri Enstitüsü Bilgisayar Mühendisliği Bölümü Bilgisayar Mühendisliği Yüksek Lisans Programı

Detaylı

Üst Düzey Programlama

Üst Düzey Programlama Üst Düzey Programlama Servlet Üst Düzey Programlama-ders01/ 1 Servlet Nedir? Web sayfaları ilk başlarda durağan bir yapıya sahipti ve kullanıcıdan bilgi alarak işlemler yapmıyordu. Zamanın geçmesiyle kullanıcıya

Detaylı

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

BSM 532 KABLOSUZ AĞLARIN MODELLEMESİ VE ANALİZİ OPNET MODELER BSM 532 KABLOSUZ AĞLARIN MODELLEMESİ VE ANALİZİ OPNET MODELER Yazılımı ve Genel Özellikleri Doç.Dr. Cüneyt BAYILMIŞ Kablosuz Ağların Modellemesi ve Analizi 1 OPNET OPNET Modeler, iletişim sistemleri ve

Detaylı

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

BİLGİSAYAR AĞLARI Bilgisayar İletişimi Nedir? Veri İşleme Modelleri ve Ağ Gelişimi Merkezi İşleme BİLGİSAYAR AĞLARI Bilgisayar ağlarının kullanımındaki temel amaç bilgi ve servislerin paylaşımıdır. Bu bölümde bilgisayar ağlarının sınıflandırılması ve kullanım amaçları anlatılmaktadır. Bu bilgi ve servislerin

Detaylı

EĞİTİMDE BİLGİSAYAR UYGULAMALARI. Yrd. Doç. Dr. Halil Ersoy

EĞİTİMDE BİLGİSAYAR UYGULAMALARI. Yrd. Doç. Dr. Halil Ersoy EĞİTİMDE BİLGİSAYAR UYGULAMALARI Yrd. Doç. Dr. Halil Ersoy Sunum İçeriği Bilgisayar Nedir? Eğitim ve Öğretimde Bilgisayar Kullanımı Bilgisayar Destekli Öğretim ve Türleri Yönetimde Bilgisayar Kullanımı

Detaylı

Antalya Tıp Bilişim Kongresi Kasım Can AKSOY IT Network (CTO / STL)

Antalya Tıp Bilişim Kongresi Kasım Can AKSOY IT Network (CTO / STL) Can AKSOY IT Network (CTO / STL) can.aksoy@sisoft.com.tr SisoftHealthCare Technology Mobilite Apple iphone Apple ipad IP-Phone Tablet PC Android Windows CE Sisoft Hastane Bilgi Sistemi Sağlık bilgi sistemleri

Detaylı

Doç. Dr. Cüneyt BAYILMIŞ

Doç. Dr. Cüneyt BAYILMIŞ BSM 460 KABLOSUZ ALGILAYICI AĞLAR 1 BSM 460 KABLOSUZ ALGILAYICI AĞLAR 1. Hafta NESNELERİN İNTERNETİ (Internet of Things, IoT) 2 Giriş İletişim teknolojilerinde ve mikroelektronik devrelerde yaşanan gelişmeler

Detaylı

İşletim Sistemi. BTEP205 - İşletim Sistemleri

İşletim Sistemi. BTEP205 - İşletim Sistemleri İşletim Sistemi 2 İşletim sistemi (Operating System-OS), bilgisayar kullanıcısı ile bilgisayarı oluşturan donanım arasındaki iletişimi sağlayan ve uygulama programlarını çalıştırmaktan sorumlu olan sistem

Detaylı

Ağ Teknolojileri. Ağ Temelleri. Bir ağ kurmak için

Ağ Teknolojileri. Ağ Temelleri. Bir ağ kurmak için Ağ Teknolojileri Ağ Temelleri Bir ağdan söz edebilmek için en az 2 bilgisayarın birbirlerine uygun bir iletişim ortamıyla bağlanması gerekmektedir. Üst sınır yok! Dünyadaki en büyük bilgisayar ağı İnternet

Detaylı

2. hafta Bulut Bilişime Giriş

2. hafta Bulut Bilişime Giriş 1 2. hafta Bulut Bilişime Giriş 3. Bulut Bilişime Duyulan İhtiyaç Son yıllarda veri kullanımında görülen artışlar sayesinde verinin elde edilmesi ve üzerinde analizler yapılarak genel değerlendirmelerde

Detaylı

İnternet ve İnternet Tarayıcıları BİLGİ VE İLETİŞİM TEKNOLOJİSİ DERS NOTU - 2

İnternet ve İnternet Tarayıcıları BİLGİ VE İLETİŞİM TEKNOLOJİSİ DERS NOTU - 2 İnternet ve İnternet Tarayıcıları BİLGİ VE İLETİŞİM TEKNOLOJİSİ DERS NOTU - 2 Ağlar ve Internet Ağ, iletişim aygıtları ve iletim ortamı yoluyla, genellikle kablosuz olarak bağlanan bilgisayar ve aygıtların

Detaylı

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

OG VE AG GENİŞBANT POWER LINE HABERLEŞME OG VE AG GENİŞBANT POWER LINE HABERLEŞME Akıllı şebekeleri ve akıllı sayaç okumaları hayata geçirebilmek için anahtar nitelikteki enerji değerlerini gerçek zamanlı olarak transfer edilebilecek bir haberleşme

Detaylı

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

OG VE AG GENİŞBANT POWER LINE HABERLEŞME DAĞITIM ŞİRKETİ Kontrol Odası Yönetimi IP Altyapısı MV Akıllı şebekeleri ve akıllı sayaç okumaları hayata geçirebilmek için anahtar nitelikteki enerji değerlerini gerçek zamanlı olarak transfer edilebilecek

Detaylı

OPC Data Access (DA) Temelleri

OPC Data Access (DA) Temelleri OPC Data Access (DA) Temelleri Hazırlayan Kepware Technologies Türkçe Meal Salih GÖK Anket Data Access nedir? Data Access in getirileri OPC DA e giriş (Data Access) OPC DA Özelliklerine bakış Hızlı bir

Detaylı

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi Bil101 Bilgisayar Yazılımı I Bilgisayar Yüksek Mühendisi Kullanıcıdan aldığı veri ya da bilgilerle kullanıcının isteği doğrultusunda işlem ve karşılaştırmalar yapabilen, veri ya da bilgileri sabit disk,

Detaylı

1-20 Kullanıcı. 2*Xeon 2.4 GHZ 4 GB 2*146 GB 15k (Raid 1) c: 30 GB, d: 110. 21-40 Kullanıcı. 21-40 Kullanıcı. 41-80 Kullanıcı.

1-20 Kullanıcı. 2*Xeon 2.4 GHZ 4 GB 2*146 GB 15k (Raid 1) c: 30 GB, d: 110. 21-40 Kullanıcı. 21-40 Kullanıcı. 41-80 Kullanıcı. OPERA 1-20 Kullanıcı SINGLE SERVER 2*Xeon 2.4 GHZ 4 GB 2*146 GB 15k (Raid 1) c: 30 GB, d: 110 SINGLE SERVER 21-40 Kullanıcı 4*Xeon 2 GHZ 6GB 8*146 GB 15k (Raid 1+0) c:=40 GB, d:>=540 APPLICATION SERVER

Detaylı

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

Küme Bilgisayarlar. Enabling Grids for E-sciencE. Onur Temizsoylu. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi ODTÜ, Ankara Küme Bilgisayarlar Onur Temizsoylu ODTÜ, Ankara www.eu-egee.org EGEE and glite are registered trademarks İçerik Neden hesaplamada kümeleme? Kümeleme nedir? Yüksek kullanılabilirlik kümeleri Yük dengeleme

Detaylı

1. PS/2 klavye fare 2. Optik S/PDIF çıkışı 3. HDMI Giriş 4. USB 3.0 Port 5. USB 2.0 Port 6. 6 kanal ses giriş/çıkış 7. VGA giriş 8.

1. PS/2 klavye fare 2. Optik S/PDIF çıkışı 3. HDMI Giriş 4. USB 3.0 Port 5. USB 2.0 Port 6. 6 kanal ses giriş/çıkış 7. VGA giriş 8. İşlemci: İşlemci,kullanıcıdan bilgi almak, komutları işlemek ve sonuçları kullanıcıya sunmak gibi pek çok karmaşık işlemi yerine getirir. Ayrıca donanımların çalışmasını kontrol eder. İşlemci tüm sistemin

Detaylı

Java Programlama Giriş

Java Programlama Giriş Java Programlama Giriş 2013-2014 Bahar Dönemi Mehmet Akif Ersoy Üniversitesi Teknik Bilimler Meslek Yüksekokulu Burdur 2014 Muhammer İLKUÇAR 1 Neden Java Programlama Platformdan bağımsızdır

Detaylı

Sistem Programlama. (*)Dersimizin amaçları Kullanılan programlama dili: C. Giriş/Cıkış( I/O) Sürücülerinin programlaması

Sistem Programlama. (*)Dersimizin amaçları Kullanılan programlama dili: C. Giriş/Cıkış( I/O) Sürücülerinin programlaması Sistem Programlama Sistem programlama bilgisayar mühendisliğinin bir alanı olup karmaşık sistemlerin ve bu sistemlerin parçalarının ile ilgilenir. İşletim Sistemlerinin Programlaması Giriş/Cıkış( I/O)

Detaylı

Temel Bilgi Teknolojileri - I Ayrıntılı Ders İçerikleri

Temel Bilgi Teknolojileri - I Ayrıntılı Ders İçerikleri Temel Bilgi Teknolojileri - I Ayrıntılı Ders İçerikleri Bilgi Teknolojileri (IT) Kavramları, Bilgisayar Kullanımı ve Dosyaların Yönetimi, Bilgi ve İletişim HAFTA 1 1. Genel Kavramlar(Bilgisayarın tanımı,bilgi

Detaylı

Sonsuz İmkan için Esnek İnce İstemci

Sonsuz İmkan için Esnek İnce İstemci SC-T45 İnce İstemci: Güç ve Esneklik Sonsuz İmkan için Esnek İnce İstemci Genel Bakış ViewSonic SC-T45 İnce İstemci PC'si, Windows 7 Embedded Standard OS ile güçlü Intel Atom N2800'ü kullanır. SC-T45;

Detaylı

Bilgi Servisleri (IS)

Bilgi Servisleri (IS) Bilgi Servisleri (IS) GRID Kullanıcı Eğitimi Boğaziçi Üniversitesi 2007, İstanbul Emrah AKKOYUN Konu Başlığı Neden ihtiyaç duyulur? Kullanıcılar kimlerdir? Bilgi Servisi türleri MDS ve BDII LDAP Bilgi

Detaylı

PLC (Programlanabilir Kontrol Cihazı) TABANLI SİSTEMLERİN İNTERNET ÜZERİNDEN İZLENMESİ

PLC (Programlanabilir Kontrol Cihazı) TABANLI SİSTEMLERİN İNTERNET ÜZERİNDEN İZLENMESİ PLC (Programlanabilir Kontrol Cihazı) TABANLI SİSTEMLERİN İNTERNET ÜZERİNDEN İZLENMESİ Derya Birant, Alp Kut Dokuz Eylül Üniversitesi Bilgisayar Mühendisliği Bölümü İÇERİK Giriş PLC nedir? PLC lerin Uygulama

Detaylı

ANAKART (MOTHERBOARD)

ANAKART (MOTHERBOARD) ANAKART (MOTHERBOARD) ANAKART (MOTHERBOARD) Anakart, bir bilgisayarın tüm parçalarını üzerinde barındıran ve bu parçaların iletişimini sağlayan elektronik devredir. Anakartın Yapısı ve Çalışması Anakart

Detaylı

Temel Bilgisayar (Basic Computer) Yazılım (Software)

Temel Bilgisayar (Basic Computer) Yazılım (Software) Temel Bilgisayar (Basic Computer) Yazılım (Software) Yazılım (Software) Eğitim TV - egitimtv.biz - facebook.com/egitimtv 2 Yazılım Daha önce de bahsettiğimiz gibi; yazılım, bilgisayar üzerinde çalışan

Detaylı

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

VPN NEDIR? NASıL KULLANıLıR? VPN NEDIR? NASıL KULLANıLıR? VPN NEDIR? VPN, Virtual Private Network, yani Sanal Özel Ağ ın kısaltılmasıdır. VPN sayesinde ağlara uzaktan erişim sağlanır. VPN sanal bir ağ uzantısı oluşturduğu için ağa

Detaylı

Mobil ve Kablosuz Ağlar (Mobile and Wireless Networks)

Mobil ve Kablosuz Ağlar (Mobile and Wireless Networks) Mobil ve Kablosuz Ağlar (Mobile and Wireless Networks) Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Ders konuları Kablosuz LAN Teknolojileri Kablolu ve Kablosuz LAN Karşılaştırması

Detaylı

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2 1 Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2 Eclipse Mimarisi 4 Java Teknolojisine Genel Bir Bakış 6 Taşınabilirlik 6 Java Derleyicisi ve Bytecode 6 Java Sanal Makinası (Java Virtual Machine - JVM)

Detaylı

Java diğer programlama dilleri gibi başlı başına bir ürün değildir.

Java diğer programlama dilleri gibi başlı başına bir ürün değildir. Java Nedir? Java platformu, ağ(network) ın önemi hesaba katılarak ve aynı yazılımın birçok değişik bilgisayar ortamında veya değişik tür makinalarda çalışması fikri ile geliştirilmiş yeni bir teknolojidir.

Detaylı

WLAN (Wireless Local Area Network) Kablosuz Yerel Ağlar

WLAN (Wireless Local Area Network) Kablosuz Yerel Ağlar WLAN (Wireless Local Area Network) Kablosuz Yerel Ağlar WLAN Kablosuz yerel ağlar özellikle dizüstü bilgisayarların yaygınlaşması ile beraber popüler olmuştur. Diğer yandan internet kullanıcısı pek çok

Detaylı

Bilgisayar Ağları. Bilgisayar Ağları. Modelleri. Main-Frame Client/Server

Bilgisayar Ağları. Bilgisayar Ağları. Modelleri. Main-Frame Client/Server Bilgisayar Ağları Ortama dahil olan tüm elektronik birimlerin birbirlerine mesaj alma/gönderme ilkesine göre yapılandırılmış ağlardır. Bilgisayar ağlarında yalnızca bilgisayarlar yoktur. Bilgisayarların

Detaylı

Bilgisayar Sistemleri ilk ortaya çıktığında...

Bilgisayar Sistemleri ilk ortaya çıktığında... Bilgisayar Ağları Bilgisayar Sistemleri ilk ortaya çıktığında... Merkezi yapıya sahip ENIAC (1945) ~167 m² 30 ton IBM 650 (1960) K.G.M Dk.da ~ 74000 işlem 12 yıl kullanılmıştır http://the eniac.com www.kgm.gov.tr

Detaylı

İNFOSET İNFOSET Ses Kayıt Sistemi v2.0. Sistem Kataloğu

İNFOSET İNFOSET Ses Kayıt Sistemi v2.0. Sistem Kataloğu İNFOSET İNFOSET Ses Kayıt Sistemi v2.0 Sistem Kataloğu İ N F O S E T S E S K A Y I T S İ S T E M İ V 2. 0 Sistem Kataloğu İnfoset Yazılım Marmara Cad.Yüksel Sok. 6/7 Pendik-İstanbul Telefon 216 379 81

Detaylı

Bilgi ve iletişim teknolojileri

Bilgi ve iletişim teknolojileri Bilgi ve iletişim teknolojileri 1 Bilgisayar, Hesap makinesi gibi araçlara neden ihtiyaç duyulmuştur? Zaman tasarrufu Bilginin depolanması ihtiyacı Hatasız işlem yapma isteği İletişim ihtiyacı 30\2 Bilişim

Detaylı

Akdeniz Üniversitesi

Akdeniz Üniversitesi F. Ders Tanıtım Formu Dersin Adı Öğretim Dili Akdeniz Üniversitesi Bilgi ve İletişim Teknolojisi Türkçe Dersin Verildiği Düzey Ön Lisans (x) Lisans ( ) Yüksek Lisans( ) Doktora( ) Eğitim Öğretim Sistemi

Detaylı

DERS BİLGİ FORMU Mobil Telefon Elektrik-Elektronik Teknolojisi Haberleşme Sistemleri

DERS BİLGİ FORMU Mobil Telefon Elektrik-Elektronik Teknolojisi Haberleşme Sistemleri Dersin Adı Alan Meslek/Dal Dersin Okutulacağı Dönem/Sınıf/Yıl Süre Dersin Amacı Dersin Tanımı Dersin Ön Koşulları Ders İle Kazandırılacak Yeterlikler Dersin İçeriği Yöntem ve Teknikler BİLGİ FORMU Mobil

Detaylı

GROUPWARE ĐŞBIRLIĞI(COLLOBRATĐON) 24.11.2011 GROUPWARE NEDIR? ASENKRON GROUPWARE GROUPWARE SISTEMLERI 3 ÖNEMLI DĐCLE ERPOLAT 2007638007

GROUPWARE ĐŞBIRLIĞI(COLLOBRATĐON) 24.11.2011 GROUPWARE NEDIR? ASENKRON GROUPWARE GROUPWARE SISTEMLERI 3 ÖNEMLI DĐCLE ERPOLAT 2007638007 GROUPWARE GROUPWARE NEDIR? Groupware,grup çalışmalarını kolaylaştırmak için tasarlanmış bir teknolojidir. Bu teknoloji, iletişim, işbirliği, koordinasyon, sorunları çözmek ve rekabet için kullanılmaktadır.

Detaylı

1 Temel Kavramlar. Veritabanı 1

1 Temel Kavramlar. Veritabanı 1 1 Temel Kavramlar Veritabanı 1 Veri Saklama Gerekliliği Bilgisayarların ilk bulunduğu yıllardan itibaren veri saklama tüm kurum ve kuruluşlarda kullanılmaktadır. Veri saklamada kullanılan yöntemler; Geleneksel

Detaylı

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü BM-311 Bilgisayar Mimarisi Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Bilgisayar Bileşenleri Bilgisayarın Fonksiyonu Instruction Cycle Kesmeler (Interrupt lar) Bus

Detaylı

Connection Manager Kullanım Kılavuzu

Connection Manager Kullanım Kılavuzu Connection Manager Kullanım Kılavuzu Baskı 1.0 2 İçindekiler Bağlantı yöneticisi uygulaması hakkında 3 Başlarken 3 Bağlantı yöneticisi uygulamasını açma 3 Geçerli bağlantı durumunu görüntüleme 3 Uygulama

Detaylı

Paket Anahtarlamalı Radyo Hizmetleri. Sevil Yıldırım Mehmet Fatih Camcı Emrah Gündüz İlker Akarsu

Paket Anahtarlamalı Radyo Hizmetleri. Sevil Yıldırım Mehmet Fatih Camcı Emrah Gündüz İlker Akarsu Paket Anahtarlamalı Radyo Hizmetleri Sevil Yıldırım Mehmet Fatih Camcı Emrah Gündüz İlker Akarsu General Packet Radio Service Temel İlkleri Bu sunumda GPRS in temel ilkelerini, sistem özelliklerini, uygulama

Detaylı

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri Veri modelleri, veriler arasında ilişkisel ve sırasal düzeni gösteren kavramsal tanımlardır. Her program en azından bir veri modeline dayanır. Uygun

Detaylı

YÖNLENDİRİCİLER. Temel Bilgiler. Vize Hazırlık Notları

YÖNLENDİRİCİLER. Temel Bilgiler. Vize Hazırlık Notları YÖNLENDİRİCİLER Temel Bilgiler Vize Hazırlık Notları 1 Yönlendiriciler 1. YÖNLENDİRİCİLER 1.1. WAN Geniş Alan Bilgisayar Ağları (WAN, Wide Area Network) Bir ülke ya da dünya çapında yüzlerce veya binlerce

Detaylı

Introduction to NComputing Changing the Economics of Computing with Desktop Virtualization

Introduction to NComputing Changing the Economics of Computing with Desktop Virtualization Introduction to NComputing Changing the Economics of Computing with Desktop Virtualization IT sorumlularının günümüzdeki soruları ve sorunları. Esnek ve ölçeklenebilir bir teknolojiye ihtiyacımız var.

Detaylı