İçindekilerGirişİndex
YukarıİlkÖncekiSonraki YokSon
Geriİleri
Yazdır
Özgür Toprak
toprakoz@yahoo.com
Seyhun Altunbay
altunbay@isikun.edu.tr

Java ve SOAP kullanılarak Mobil Cihazlardan Hisse Senedi Alımı Uygulaması

Özet

Günümüzde mobil tabanlı teknolojileri kullanan çözümler hızla yaygınlaşmaktadır. Bu bağlamda mobil teknolojilerin diğer teknolojilerle bütünleşmesini sağlamak büyük bir önem kazanmıştır. Müşterilerine mobil çözümler sunmak isteyen şirketlerin bu ihtiyacı, WAP ve Java destekli telefonların sayısının artması ve GPRS teknolojisinin cep telefonu operatörleri tarafından desteklenmesiyle birlikte gün geçtikçe bir zorunluluk haline gelmektedir.

Burada sunulan uygulama, bir borsa aracı kurumunun müşterilerine sunduğu "mobil hizmet" için gerek kullanıcı arayüzü gerekse genel sistem mimarisi açısından bir örnek teşkil edebilir. Java tabanlı telefonlar ve Palm avuç içi bilgisayarlar için geliştirilen bu uygulama Web servislerinden de faydalanan esnek ve genişletilebilir bir yapıya sahiptir

1. Giriş

Java 2 platformunun elektronik tüketici ürünlerine (Akıllı kartlar, cep telefonları, avuç içi bilgisayarlar, çağrı cihazları) yönelik sürümü J2ME (Java 2 Micro Edition), şirketlerin sunabilecekleri çözümleri çeşitlendirmiştir.

Şirketlerin sistemlerini mobil çözümleri sunmak için gereken teknolojilerle bütünleştirebilmeleri gerekir. Bunu kısa zamanda başarabilmek için gereken, halihazırdaki sistemlerin ölçeklenebilir yapıya sahip olmalarıdır. Eğer bu sistem çok katmanlı J2EE (Java 2 Enterprise Edition) uygulamalarıyla oluşturulmuşsa, ölçeklenebilir bir sistem yapılandırılmış demektir.

Varsayılan, şirketin J2EE uygulamaları altyapısına sahip olmasıdır

Bu uygulamadaki amaç:

Kısaca Web Servisleri

Web servisi uzaktan çağırılıp çalıştırılabilen ve belli görevleri yerine getiren bir modüldür. İstemci, sunucudan RPC (Remote Procedure Calling) kullanarak belli web servislerini çağırabilir. İstemci bu web servislerinden gelen verilerle uygulamanın gerektirdiği bazı işlemleri yerine getirmiş olur [1]. Örneğin, uygulama o anda İstanbul’un hava sıcaklığına ihtiyaç duyarsa, bunu bir web servisi kullanarak başarabilir. Aynı uygulama belli bir noktadaki araç trafik yoğunluğunu başka bir web servisinden elde edebilir

Bugün web servisleri geliştirme sürecinde üç standart bulunmaktadır: SOAP, WSDL, UDDI.

a. Simple Object Access Protocol (SOAP)

Web servisleri, taşıma katmanı olarak SOAP (Simple Object Access Protocol) ve HTTP kullanırlar. SOAP mesajları XML belgeleridir ve bu belgeler web servisiyle, bu web servisi çağıran uygulama arasında gidip gelir.

Gerek web servislerinin gerekse bu web servisleri kullanan uygulamaların her dilde yazılabilmeleri ve her platformda çalışabilmeleri bu teknolojinin en önemli özelliklerinden biridir.

Aşağıda örnek bir SOAP iletisi bulunmaktadır. Her SOAP iletisi bir kök "Envelope" elemanına sahiptir. Envelope elemanın içinde Header ve Body olmak üzere iki parça vardır. Header elemanı yönlendirme (routing) veya kaynak (context) bilgilerini içerir. Body kısmıysa iletinin kendisini içerir. Gerek Header, gerekse Body kısımları boş olabilir.

Şekil 1 – Örnek bir SOAP mesajı (Kaynak: BORLAND)

b. Web Services Description Language (WSDL)

Bir web servisin hangi işlemleri yaptığını ve nasıl çağırılacağını belirten XML tabanlı bir dildir. Bir istemci, kullanmak istediği web servisini WSDL belgesi sayesinde tanır, nasıl kullanılacağını bu belge aracılığıyla anlayabilir. WSDL belgesi, hangi metodların hangi parametrelerle çağırılabileceğini içerir.

c. Universal Description, Discovery and Integration (UDDI)

UDDI; web servislerini tanımlama, yayınlama ve bulma işlemleri konusunda bir standarttır. WSDL belgelerine sahip web servisleri UDDI sistemine kayıt olurlarsa, bu web servisleri istemciler tarafından kolayca bulunabilir. [1]

2. J2EE - J2ME Bütünleşmesi

Şekil 2’de uygulamanın genel yapısı gözükmektedir.

Şekil 2 – Uygulamanın genel yapısı

2.1 J2EE (Java 2 Enterprise Edition)

J2EE uygulamaları çok katmanlı ve dağıtık mimariye sahiptirler. Burada modüler yapı ön plana çıkmaktadır. Sistemin karmaşıklığının, ölçeklenebilirliğinin ve diğer sistemlerle bütünleşmesinin kolaylaştırılması açısından çok katmanlı mimari büyük avantaj sağlamaktadır. Bugün J2EE, çok katmanlı dağıtık mimarinin uygulamalarının en önemlilerinden biridir.

J2EE uygulamalarında (Şekil 3), "iş mantığı" (Business Logic) istemci aracılığıyla sunulan arayüze yönelik öğeler içermemelidir. "Sunum mantığı" (Presentation Logic) kullanıcı arayüzüyle iş mantığı arasında yer alan bir katmandır [2]. Böylece farklı kulanıcı arayüzleri için gereken destek farklı sunum mantıkları geliştirerek sağlanabilir. Örnek olarak, WAP destekli mobil cihazlara yönelik ince istemci yapısı sağlanarak WML (Wireless Markup Language) sunum mantığı geliştirilebilir.

Şekil 3 – Çok katmanlı model (Kaynak: Borland)

EJB (Enterprise Java Beans) bir sunucu bileşen modelidir. Uygulama sunucularında çalışır. Bileşen model, bütün sunucu taraflı nesnelerin uyması gereken, uygulama sunucuları ve uygulama geliştiricilerin üzerinde anlaştıkları kurallar üzerine oturtulmuş bir standarttır. EJB; dağıtık (RMI aracılığıyla), ölçeklenebilir ve güvenli Java uygulamalarının geliştirilmesini sağlar. [3]

Şekil 4'te örnek bir J2EE yapısı görülüyor.

Şekil 4 – Örnek J2EE uygulaması (Kaynak: Borland).

2.2 J2ME (Java 2 Micro Edition)

Ağa bağlı J2ME uygulamaları mobil cihazlar üzerinde özerk olarak çalışırlar. Gerektiğinde sunucuya bağlanabilir ve gerekli verileri sunucudan getirerek kullanıcıya sunar. J2ME uygulamasının özerk yapısı, Şekil 3’te bulunan sunucu tarafındaki sunum mantığının tamamiyle istemci üzerinde olmasını gerektirir; sunucudan (Servlet’ler aracılığıyla) sunum mantığının kullanacağı veriler sağlanır.

Şekil 5 – Java platformu [4]

Bu uygulamada Şekil 5'te görülen J2ME profillerinden MIDP (Mobile Information Device Profile) kullanılmıştır. Bu profil özellikle Java tabanlı cep telefonları ve avuçiçi bilgisayarlar için kullanılmak üzere geliştirilmiştir.

Bu cihazların sahip olması gereken en düşük özellikler:

3. Uygulamanın Özeti

Bir borsa aracı kurumu müşterilerine mobil hizmet sunmaktadır. Müşteriler varolan hesaplarını Java tabanlı cep telefonları veya avuç içi bilgisayarları aracılığıyla yönetebilmektedir.

Uygulamanın özellikleri:

Uygulamanın iki ana kısmı bulunmaktadır:

İlk kısımda, kullanıcı piyasa hakkında haber ve rakamsal verilere ulaşabilir. Bu kısımda güvenli veri transferi sağlanmasına gerek yoktur. Verilerin iletimi web servisleri kullanılarak sağlanır.

İkinci kısım sadece şirketin müşterilerine yöneliktir. Müşteriler yatırımlarına her an ve her yerden yön verebilme imkanına sahiptirler. Hisse senedi ve yatırım fonu gibi menkuller alınıp satılabilir. Burada güvenli bir bağlantı sağlanmıştır.

Güvenlik

Güvenlik konusunda alınan önlemler şöyle özetlenebilir:

Şekil 6 – Müşteri şube no,Hesap no ve Şifre girişi
Şekil 7 – Özel soru.

RMS (Kayıt Yönetim Sistemi - Record Management System)

MIDP, MIDlet’lerin cihazlarda kalıcı olarak veri depolamasını ve çağırabilmesini sağlar. Bu sistem, basit bir kayıt yönelimli veritabanıyla sağlanır. Bir MIDP veritabanınındaki veri MIDlet'ten çıkış yapıldığında da varlığını sürdürür. Uygulamaya RMS desteğini sağlamak için javax.microedition.rms paketini kullanmak gerekmektedir.

RMS’de kayıtlar birbirine bağlı olarak saklanırlar. Bir kayıt eklendiğinde, alacağı kayıt numarası bir önceki kaydın bir fazlasıdır. 1, 2 ve 3 numaralı kayıtlar mevcutsa ve 2 numaralı kayıt silinirse bir daha 2 numaralı kayıt kullanılamaz ve artık 1 numaralı kayıttan sonra 3 numaralı kayıt gelir (Şekil 8).

Şekil 8 – RMS’de kayıt silme işlemi.

Bu uygulamada RMS,

amacıyla kullanılmıştır.

kSOAP ile Web Servislerine Ulaşmak

MIDP, SOAP için doğal bir destek vermez. Fakat açık kaynak kodlu bir proje olan kSOAP (http://www.ksoap.org) bu ihtiyaca cavap vermektedir. kSOAP 1.0 JAR dosyası yaklaşık 40 KB büyüklüğündedir.

Sunucu tarafında Apache SOAP 2 kullanılmaktadır. Servlet’lere SOAP desteği kazandırarak istemcinin SOAP sunucusundaki bir uzaktan yordam çağrısını (Remote Procedure Calling) çalıştırması sağlanmaktadır.

kSOAP kullanarak uzaktan yordam çağırılması

HttpTransport transport =
new HttpTransport("http://test:8082/Mobil/servlet/Hisse", " urn:Hisse# hisseAdiGetir ");
SoapObject istem = new SoapObject("urn:Hisse ", "hisseAdiGetir");
istem.addProperty("sube", "78");
istem.addProperty("hesapNo", "3453259800");
istem.addProperty("hisseKodu", "21");
String gelen = transport.call(istem).toString();

SOAP çağrılarını HTTP üzerinden J2ME bağlantı yapısını kullanarak gerçekleştirmek için HttpTransport sınıfı kullanılmaktadır.

SoapObject sınıfı, bir SOAP nesnesinin SOAP istemi veya yanıtını belirtmek için kulllanılmaktadır

Servlet tarafındaki kaynak kodu

public class Hisse  {
    public String hisseAdiGetir (String sube, String hesapNo, String hisseKodu) {
          return hisseAdi(sube, hesapNo, hisseKodu);
   }
   ...
   ..
}

Uygulamanın Boyutu

Uygulamanın boyutunu standartlar ölçüsünde tutabilmek amacıyla çeşitli yöntemler kullanılmıştır:

Yazılım Geliştirme Araçları

Sonuç

Bu uygulamayla, mobil cihazlarda çalışan uygulamaların ihtiyaç duyduğu

özellikleri karşınlanmaya çalışılmıştır

İstemci web servisleri aracılığıyla piyasa verileri, haberleri, yorumları getirmektedir. İhtiyaç duyulduğunda farklı verilere farklı web servisleri aracılığıyla erişilebilir. Bu, uygulamaya genişleyebilir bir yapı da sunmaktadır.

J2ME uygulamalarına kalın istemci yapısının getirdiği bir özellik grafik çizme özelliklerinin gelişmişliğidir. İnce istemci modellerinin aksine MIDP cihazlardaki uygulamalarda istemci ekranında karmaşık grafiklerin çizilebilmesi mümkündür.

RMS aracılığıyla cihazda türlü kullanıcı tercihleri kalıcı olarak saklanarak daha kullanıcı dostu bir uygulama yaratılmıştır.

Uygulamanın boyutu yaygın MIDP cihazlarına sığabilecek kadar küçültülerek verilen hizmetin sınırlanması engellenmeye çalışılmıştır.

Bu uygulama, J2ME tabanlı bir istemci kullanarak Java’nın halihazırda sahip olduğu platform bağımsızlık, endüstri standartlarına olan bağlılık gibi özelliklerini de elde etmiş olmaktadır.

Kaynaklar

İçindekilerGirişİndex
YukarıİlkÖncekiSonraki YokSon
Geriİleri
Yazdır