i.c o
m
HACETTEPE ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİL447 YAZILIM MÜHENDİSLİĞİ LABORATUVARI ARAŞTIRMA KONUSU TANIMI
va
dil
Web Tabanlı Uygulama Geliştirme Çatıları
ww w. ja
2007, Ankara
1
m i.c o
HAZIRLAYANLAR Soyad BIÇAKCI GÖKMEN
Numara 20221523 20221633
E-Posta
[email protected] [email protected]
ww w. ja
va
dil
Ad Tahir Özgür
2
m
İçindekiler
ww w. ja
va
dil
i.c o
Giriş ........................................................................................................................................... 4 Belge İçeriği Hakkında Genel Bilgi ................................................................................... 4 1. Web Katmanı Framewokleri ........................................................................................... 5 1.1 Struts .................................................................................................................................. 5 1.2 Spring................................................................................................................................. 6 1.3 COCOON ........................................................................................................................... 8 1.4 AJAX(Asynchronous JavaScript and XML) ............................................................. 9 1.5 CACTUS........................................................................................................................... 10 1.6 JUNIT................................................................................................................................ 10 1.7 LOG4J .............................................................................................................................. 11 1.8 ANT (Another Nice Tool) ............................................................................................. 11 1.9 JNDI (Java Naming and Directory Interface) ......................................................... 12 1.10 JMX (Java Management Extension) ............................................................................ 13 1.11 JAAS (Java Authentication & Authorization Service) ...................................... 14 1.12 JSF (Java Server Faces) ........................................................................................... 15 2 Veri Katmanı Frameworkleri.......................................................................................... 17 2.1 HIBERNATE .................................................................................................................... 17 2.2 JDBC (Java Database Connectivity) ........................................................................ 18 2.3 EJB (Enterprise JavaBeans) ...................................................................................... 19 2.4 JDO (Java Data Objects) ............................................................................................. 20 2.5 iBATIS .............................................................................................................................. 21 2.6 TOPLINK .......................................................................................................................... 22 2.7 CORBA (Common Object Broker Architecture) ................................................... 23 2.8 DCOM(Distributed Component Object Model) ...................................................... 24 2.9 Karşılaştırmalar .................................................................................................................. 25 2.9.1 Hibernate - JDBC ............................................................................................................ 25 2.9.2 JDO - EJB........................................................................................................................ 25 Kaynaklar ................................................................................................................................. 26 Struts: ...................................................................................................................................... 26 ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/BIL4XX/BIL447_YML/belgeler/struts.pdf...... 26 Cocoon .................................................................................................................................... 26 Ajax .......................................................................................................................................... 26 Jmx........................................................................................................................................... 26
3
m
Giriş
i.c o
İnternet tabanlı bir uygulama geliştirilirken birçok işin düzgün ve doğru bir biçimde yapılması zorunluluğu ortaya çıkmaktadır. Çoğu internet tabanlı uygulamalarda bir bağlantıya bir kullanıcının giriş izninin olup olmadığı kontrolü (authentication), bir işi yapmaya yetkisinin olup olmadığı kontrolü (authorization), veri tabanı ile etkileşiminin nasıl olacağı işler standart olarak yapılmaktadır. Bunun gibi birçok işi bizim yapmamız (kodlamamız) hem zordur hem de risklidir. Bu yüzden bu işleri güvenli ve daha basit bir biçimde yapan bir araca ihtiyaç duyulur. İşte bu noktada frameworkler devreye girmektedir.
dil
Frameworkler kullanıcıların yapması gereken birçok zorunlu işi kolaylıkla çözer. Bir frameworkü kullanmak için frameworke özgü kurallara uymamız gerekmektedir. Bu kurallar yayımcı firma tarafından dağıtılmaktadır.
Belge İçeriği Hakkında Genel Bilgi
ww w. ja
va
Bu belgede Struts, Spring, Cocoon, Ajax, Cactus, JUnit, Log4j, Ant, Jndi, Jmx, Jaas, Jsf, Hibernate, Jdbc, Ejb, Jdo, iBatis, TopLink, Corba ve Dcom hakkında genel bilgiler verilmektedir. Sonrasında ise bu frameworklerden bazıları birbirleri ile karşılaştırılmıştır.
4
m i.c o
1. Web Katmanı Framewokleri
va
dil
1.1 Struts
ww w. ja
Struts model, görünüm(view) ve denetçi(controller) MVC tasarım örüntüsüne dayalı sunucu taraflı bir java uygulamasıdır. Web uygulamalarının sunum katmanını kolayca ayırabilmek, aynı zamanda birim işlem ve veri katmanından soyutlamak için tasarlanmış açık kodlu bir framework’tür. Model: Model veri nesnelerinin kullanıcıya sunumundan sorumludur Görünüm: Modelin ekrana sunumunda görev alır. Veri nesnelerinin o anki durumlarını sunar. Denetçi: Kullanıcı girdileri ile etkileşecek kullanıcı arayüzlerinin yollarını tanımlar. Denetçi bileşeni model veya veriyi işleyen bir nesnedir. Struts MVC nin JSP, JSP etiketleri(tags) ve java servletlerinden oluşan kombinasyonun gerçekleştirimidir. Struts’daki her görünüm bileşeni struts etiketlerinin kombinasyonlarını barındıran bir JSP ile eşleşir. Denetçi ve Action sınıflarını etkileşimleri şu şekildedir: - İstem gelir. - Denetçi(ActionServlet) istemi ele alıyor ve hangi action olduğuna karar verir. - Action modelle ilgili işlemleri yapar. - Action çalşmasını bitirince, kontrol denetçiye dönüyor ve bir anahtar sağlar.Denetçi anahtara bakarak nereye sapması gerektiğine karar verir. - Denetçi istemi dönen anahtarın bağlı olduğu görünüme yönlendirir, görünüm de sonuçları action’a gösterir.
5
m va
dil
i.c o
1.2 Spring
ww w. ja
Spring, son dönemde J2EE uygulaması geliştirme alanında popülerlik kazanan ve yaygın olarak kullanılmaya başlanılan bir uygulama geliştirme çatısıdır (application framework). Uygulama geliştirmeyi ve denetimi zorlaştıran ağır (heavyweight) çözümlere alternatif olarak hafif (lightweight) bir yapı sunarken, aynı zamanda esnek ve modüler bir şekilde bir çok özelliği içerisinde barındırması Spring'e gösterilen ilgide önemli rol oynar. Spring temel olarak, bileşenleri XML yapılandırma kütükleri aracılığıyla bütünleştirmeye dayalı bir yapı sunar. Bu yaklaşım esas olarak Denetim Çevrimi (Inversion of Control), diğer bir adıyla Bağımlılık İletimi (Dependency Injection), tasarım örüntüsünü kullanır. Buna göre, bileşenler arasındaki bağımlılıklar bileşenlerin kendileri yerine Spring tarafından ele alınır.
Spring bileşenleri bir araya getirmek ve biçimlendirmek için Java çekirdeklerini (JavaBean) kullanır. Sınıfları kodlanan bu çekirdeklere dair isimlendirmelerin yapılması, gerekli ilk değer atamaları ve diğer çekirdeklerle aralarındaki bağımlılıkların tanımlanması XML yapılandırma kütüklerinin içerisinde yapılır. Spring, bu kütükleri okur ve buradaki tanımları kullanarak çekirdek olgularını gerekli yapılandırmaları gerçekleştirerek oluşturur. Bu işleyiş sayesinde uygulamadaki bileşenlerin yapılandırılması ve kullanımı kodun içine girmeye gerek kalmadan, yapılandırma kütükleri aracılığıyla son derece esnek ve kolay bir biçimde gerçekleştirilir.
6
m i.c o dil
Inversion of Control container: uygulama bileşenlerinin düzenlenmesi ve java nesnelerinin yaşam döngülerinin yönetiminden sorumlu.
ww w. ja
•
va
Spring frameworkü küçük frameworklerin bir birikimi ya da frameworkler içinde frameworkler olarak düşünülebilirler. Bu iç frameworklerin birçoğu bağımsız çalışabilir olarak çalışabilirken birlikte kullanıldığında daha iyi sonuç veren frameworklerdir. Bu frameworkler karmaşık işleri bloklara ayırmak için bölümlendirilmişlerdir. Bu bölümler;
•
Aspect-oriented prgagramming framework: java’nın nesne tabanlı programlaması ile içerim yapılamayan işlevlerle çalışır.
•
Data Access framework java platformunda JDBC ve nesne ilişkisel eşleme araçlarını kullanarak ilişkisel veri tabanı yönetim sistemi ile çalışır.
•
Transection management framework:
•
Model-view-controler framework: yayılmayı ve kişiselleştirmeyi sağlamada bağlamayı sağlayan http ve servlet tabanlı framework.
•
Remote Access Framework
•
Autehtication and Authorization framework
•
Remote Management framework
•
Messaging framework
•
Testing framework
7
va
dil
i.c o
m
1.3 COCOON
Cocoon; XSLT (XML Stylesheet Language Transformation) dönüşümlerini kullanarak XML içeriğinin devingen yayınını sağlayan bir java sunucu yapısıdır.
ww w. ja
Cocoon içeriğini tanımlamak için XML’i bu içeriği çeşitli biçimlere dönüştürmek için uygulamalar geliştirebileceğimiz bir platform sağlar.
Cocoon, ağa içerik yayınlamada pipeline anlayışını kullanır. Geniş bir bileşen çeşitliliği sunar ve bu bileşenlerin ayarlanması ile, fazladan bir geliştirim süresi harcanmadan karmaşık işlemlerin yapılmasını sağlar. Örneğin yalnızca XML ve XSLT kullanarak cocoon devingen olarak yaratılan sonuçları sunabildiği gibi durağan kütüklerin yayınlanmasını da sağlayabilir. Basit ve çok kademeli XSLT dönüşümleri yapar. Parametrelerin devingen olarak XSLT dönüşümlerine geçirilmesini sağlar. XML, HTML, PNG, JPEG, ve PDF gibi pek çok türde çıktı oluşturabilir. Cocoon sayesinde olabilecek en az karmaşıklıkla devingen internet sitesi yaratmak mümkündür.
8
dil
i.c o
m
1.4 AJAX(Asynchronous JavaScript and XML)
va
Ajax, sunucuda çalışacak betiğin sayfa yenilenmeden javascriptle tetiklenmesinden ibarettir. AJAX, sunucuda çalışan bir kodun çıktılarının postback (sayfanın yeni verilerle yeniden yüklenmesi) olmadan istemciye ulaştırılmasıdır. Ajax, terimolojik olarak Asynchronous Javascript and XML; yani Javascript ve Xml'in eş zamanlı olmayan hareketlerle icra ettiği faaliyete verilen isimdir.
ww w. ja
Bir HTML sayfası, JavaScript kullanarak sunucusuna asenkron olarak bilgi gönderebilir ve sunucudan XML belgeleri çekebilir. Çekilen XML belgeleri JavaScript tarafından kullanılarak HTML sayfasının Document Object Model (DOM) u değiştirilir veya günlenir . Bu etkileşim modeli son zamanlarda Asenkron JavaScript ve XML – yani Ajax olarak adlandırılmaya başlanmıştır, ancak bu model aslında yeni değildir. Bu teknikler daha önce Windows platformunda Internet Explorer içinde (remote scripting terimi kullanılarak) ve Java pluginleri ve appletlerle birlikte uzun süre kullanılmıştı. Ancak performans ve tüm web tarayıcılarında kullanım – yani taşınabilirlik açısından, JavaScript in XMLHttpRequest nesnesini getirmesiyle bugünkü Ajax ortaya çıktı diyebiliriz.
9
dil
i.c o
m
1.5 CACTUS
ww w. ja
va
Cactus, JUnit tabanlı bir ünite testi sistemidir. Apache Group tarafından, web uygulamalarında ünite testi amaçlı kullanılır. JSPTestCase, ServletTestCase, FilterTestCase gibi alt parçaları vardır.
1.6 JUNIT
JUNIT yeniden tekrarlanabilen testler yazmak için kullanılan bir framework’tür. Java programlarının özel alanlarının açıkça test edilmesi için kolay bir yol sunar. Genişleyebilirdir ve bir programın bir çok birimini test etmek için görevlendirilebileceği gibi tek bir biriminin testi için de görevlendirilebilir. JUnit önce test etmeyi ve sonra kodlamayı destekler. Bu sayede programın belirli bir birimi için test verisi hazırlanabilir ve bu birim testi geçene kadar kodlama yapılabilir.
10
m
1.7 LOG4J
i.c o
Log4j, Java için geliştirilmiş en popüler günlük tutma paketidir. Log4j açık kaynak projesi kapsamında geliştirilmiştir. Uygulama geliştiricilerine, günlük (log) deyimlerini istedikleri boyutlarda, istedikleri biçimlerde çıktı olarak alma imkanı sağlar. Harici yapılandırma dosyaları aracılığıyla çalışma zamanında tamamen yapılandırılabilir. Her şeyden öte, Log4j kendi kendine öğrenebilir.
ww w. ja
va
dil
Log4J, hata ve bilgilendirme mesajlarımızı yaratmamızı sağlayan API'lar içeriyor. Bu ara yüzleri mesaj gereken her yerden çağırabiliriz. Önemli hatalar için error(), bilgilendirme için debug(), ve uyarı mesajları için warn() kullanabiliriz.
1.8 ANT (Another Nice Tool)
Ant; Apache Yazılım tarafından geliştirilmiş, açık kaynak java tabanlı bir yazılım geliştirme aracıdır. Ant kısaltmasının açılımı Another Nice Tool olarak bilinir. Tomcat, JDOM gibi açık kaynak ürünlerin geliştirilmesinde kullanılmıştır. Ant build kütüğü XML formatındadır. Build kütüğününün üzerinde işlem yapabilmek için, basit bir metin editörü yeterli olacaktır. Harici bir XML parser’a gerek yoktur. Zaten Ant’ın kurulumu sırasında JAXP Uyumlu XML parser yüklenir.
11
dil
i.c o
m
1.9 JNDI (Java Naming and Directory Interface)
va
Java isimlendirme ve dizinleme servisi (Java Naming and Directory Interface) Java dilinde yazılmış uygulamalara isimlendirme ve dizinleme işlevselliği katan bir uygulama programlama ara yüzüdür(Application Programming Interface). Herhangi bir isimlendirme ve dizinleme servisinden bağımsız olarak tasarlanmıştır. Böylelikle birçok dizine –yeni , görünen ya da çoktan kurulmuş- ortak bir yolla erişim sağlanır.
ww w. ja
JNDI mimarisi bir API ve bir servis sağlayıcı ara yüzünden (service provider interface SPI) oluşur. Java uygulamaları JNDI API ‘sini birçok isimlendirme ve dizinleme servisine aynı yolla ulaşmak için kullanırlar. SPI, birçok isimlendirme ve dizinleme servisini etkinleştirip onların şeffaf olarak takılıp çıkarılmasını ve JNDI API’ sini kullanan Java uygulamalarının bu servislere erişmesini sağlar.
12
m
dil
i.c o
1.10 JMX (Java Management Extension)
ww w. ja
va
JMX parametrelere ulaşılması ve konfigürasyonlarının değiştirilmesi, uygulamaların ve bileşenlerinin yüklenmesi ve ilk değer verilmesi ve servislerin izlenmesini sağlar. JMX izleme ara yüzü genel izleme ara yüzlerini de kullanır fakat güvenlik ve daha iyi uyum için Java uygulamaları önerilir. Genelde uygulamalar sürekli bir gelişim ve evrim göstermektedir. Bu da uygulamaların izlenmesini ve yönetimini daha da zorlaştırmaktadır. JMX sezgisel, uymlu ve esnek bir izleme ve yönetme arayüzü sağlayarak bu problemi kolaylaştırır. Böylelikle EJB, servlet ve java sınıfları dahil tüm java öğeleri izlenebilmektedir. Asıl amaç kaynakları yönetmektir. Yönetilebilir kaynaklar basit java sınıflarından ağ kaynaklarına kadar olabilir. MBean’ler kaynakları yönetir. MBean’ler JMX’in kalbidir. MBean’ler kaynakları JMX arayüzüne bildiren java sınıflarıdır. JMX Instrumentation Layer MBean’leri ve yönetimli kaynakarı kapsar. . Bir sonraki katman Agent Katmanıdır(Layer). Bu katman JRun’da MBean sunucudur. Bu katman servislerin ilk değerini verir ve yönetim arayüzüne bildirir. Bu servisler jrun-server-directory/SERVER-INF/jrun.xml kütüğü kullanılarak otomatik olarak da ilklendirilebilirler. Bu kütük JRun’ın JavaMail ve Java Messaging Service gibi kendi servislerini ve yeni eklenen servislerin yerini içerir. MBean’ler ilklenmek için jrun.xml’i kullanmazlar. Son katman ise Dağıtık Servis Katmanı(Distributed Service Layer). Bu katman servisleri bağlayıcılara ve birimlere bildirir. Bağlayıcılar veya birimler herhangi bir protokolde olabilir. Bu katman servislere uzatan erişim sağlar.
13
va
dil
i.c o
m
1.11 JAAS (Java Authentication & Authorization Service)
ww w. ja
JAAS (Java Authentication & Authorization Service), Java Kimlik Denetimi ve Yetkilendirme Servisi istemci ve sunucu tarafındaki Java uygulamalarımızın güvenli çalışmasını sağlamak için çözümler sunan bir uygulama geliştirme ara yüzüdür. Eski Java güvenlik yapılarında kullanılan yöntemlerde sistem kullanıcıyı taşınabilir koddan korumak üzerine odaklanmıştır. Diğer bir deyişle güvenlik yapısının temeli kodun kaynağına yani kim tarafından yazıldığı bilgisi üzerine kuruludur. Uygulamanın çalışma zamanında hangi kodun çalıştırıldığı, bu koda verilen izinler kontrol edilir; yani kullanıcı tabanlı erişim hakkı kontrolü hiçbir zaman yapılmaz. Güvenlik Politikası Dosyası(Security Policy File) adı verilen, özel bir sözdizimine sahip dosya içerisinde uygulamadaki koda özel erişim izinleri verilir. Böylece koruma altındaki bir sistem kaynağına erişim talebi geldiğinde kodun karakteristiğine(kodun nereden geldiğine, varsa dijital imzasına ve sahibine) bakılır. Politika dosyası üzerinden verilmiş haklar ile erişimi gerçekleştirmek için gerekli olan haklar karşılaştırılır. İlki ikincisini de kapsıyorsa erişime izin verilir; kapsamıyorsa istem reddedilir. Kod tabanlı denetimin yapıldığı bu sistemde kodun kime ait olduğu dışında kim tarafından çalıştırıldığı ise tamamen göz ardı edilir. Bununla birlikte Java’nın çok kullanıcılı ortamlarda kullanımı oldukça yaygındır. Örneğin kurumsal bir uygulama birçok kullanıcı ile aynı anda etkileşim içindedir ve bu kullanıcılara kimliklerine göre farklı ayrıcalıklar vermelidir.
14
dil
i.c o
m
1.12 JSF (Java Server Faces)
ww w. ja
va
Java Server Faces güçlü ve dinamik web uygulamaları geliştirmeyi kolaylaştıran web tabanlı ara yüzler hazırlamak için bir frameworktür. JSF swing gibi bir takim standart bileşenler(butonlar, linkler, secim kutuları gibi) ya da özelleştirilmiş bileşenler oluşturmak için model sunmasının yanında istemci taraflı olayların (event) islenmesi için yöntemler sunar ve ayrıca araç(tool) kullanma desteği vardır. Java için birçok web ara yüz frameworkleri bulunmasına karşın JavaServer Faces birçok sebepten dolayı öne çıkmaktadır. JSF “java community” standardıdır. JavaBean bileşenleri paradigmasının, web arayüz tasarımında kullanılmasına olanak verir. JSF, piyasadaki birçok frameworkün iyi yönleri alınarak tasarlanmıştır. JSF kullanarak web uygulamaları geliştirmek swing uygulamaları geliştirmeye benzer. Aslında JSF’yi Swing ile Struts’ın birleşimi olarak düşünebiliriz. Ancak JSF bu ikisinin yerine geçecek bir şey olarak algılanmamalıdır. JSF ikisi ile de birlikte çalışabilecek şekilde tasarlanmıştır.
15
m
1.13 Karşılaştırmalar 1.13.1 Spring - Struts
Spring, kontrol kesimleri(controllers), JavaBean modelleri ve görünüşler (views) arasında açık bir ayrım sağlar.
•
Spring MVC çok esnektir. Struts’daki somut Action ve Form kalıtımlarının yerine Spring ara yüzleri temel alır. Bunun dışında Spring’in bütün parçaları ara yüzlerdeki eklentiler(plugin) tarafından düzenlenebilir.
•
Spring görüntü bilinmezdir. Yani JSP kullanmak istemediğimiz zaman buna zorunlu değiliz. Velocity, XSLT veya başka bir görüntüleme teknolojisi kullanarak bunu Spring’le kolayca bütünleştirebiliriz.
•
Spring kontrol kesimleri diğer nesneler gibi IoC ile düzenlenebilir. Bu test etmeyi kolaylaştırır. Yani Spring’in test edilebilirliği daha kolaydır.
ww w. ja
va
1.13.2 JUnit - Cactus
dil
i.c o
•
Cactus ile JUnit arasındaki en belirgin fark JUnit aynı Java sanal makinesinde çalışırken Cactus’un testleri bir java sanal makinesinde çalışıp sonuçlar uygulama sunucusunun Java sanal makinesine çalıştırılmak üzere gönderilir. Cactus’un son derece akıllı bir gönderme aracı vardır. Öyle ki gereken bilgiler paketlenir. Böylelikle server tarafı testi bulur ve çalıştırır.
16
m
2 Veri Katmanı Frameworkleri
va
dil
i.c o
2.1 HIBERNATE
ww w. ja
Java için geliştirilmiş olan (NHibernate adında bir de .NET versiyonu vardır) nesne/ilişki eşleme işini yapan, ücretsiz, açık kaynak (LGPL lisansına sahip) bir yazılımdır. Nesne tabanlı alan modelini geleneksel ilişkisel veritabanına çevirmeye yaramaktadır. Hibernate verilerin saklanması, güncellenmesi, silinmesi, vb. işleri nesne tabanlı modele göre kolaylaştırmak için kullanılmaktadır. Kalıcı sınıfları oluşturup (basit veri sınıfları) bu sınıfları XML kullanılarak eşlenmiş veritabanı tablolarına ve sahalarına kaydetmek için kullanılır.
17
va
dil
i.c o
m
2.2 JDBC (Java Database Connectivity)
ww w. ja
JDBC ( Java Database Connectivity ) , ilişkisel veritabanı datalarına Java kodundan ulaşmamızı sağlayan bir API'dir.( Application Programming Interface ) . Bu API, java.sql paketi içinde bulunan ve veritabanı ile iletişim kurmamızı sağlayan bir takım sınıflarla gelir. JDBC sürücüsü ( driver ), bizim SQL dilini kullanarak veritabanı ile konuşmamızı sağlar. Herhangi bir veritabanı sistemine ulaşmak için o veritabanının JDBC sürücüsünü kullanmamız gerekir.
18
dil
i.c o
m
2.3 EJB (Enterprise JavaBeans)
va
Kurumsal Java Çekirdekleri (Enterprise JavaBean, EJB) Mimarisi, bileşen tabanlı ve dağıtımlı kurumsal uygulamaların geliştirilmesi ve yaygınlaştırılmasına yönelik bir J2EE mimarisidir. EJB genel olarak güçlü ve birçok hizmete olanak sağlayan bir mimaridir. Bu mimari kullanılarak geliştirilmiş yazılımlar; ölçeklenebilir, birim işlem yeteneğine sahip, güvenli ve dayanıklı olup kurumların önemli gereksinimlerini karşılayacak nitelikte, çok kullanıcılı uygulamalardır. EJB ile oluşturulan uygulamalar, bir kez yazıldıktan sonra EJB belirtimlerine uygun herhangi bir sunucu ile kullanılabilir.
ww w. ja
EJB, ilk olarak CORBA mimarisinin karmaşıklıklarına bir çözüm sunma vaadi ile ortaya çıkar. Bu yeni mimari, birçok ana düzenleme ve şişirilmiş temel özellikleri ile kısa zamanda J2EE’nin kalbi olur. EJB mimarisi ilk anda birçok kullanıcı tarafından uygulama geliştiriminde tercih edilir. Ancak EJB mimarisinin bu güçlü ve birçok özelliği içinde barındıran yapısı ile uygulama geliştiren kişiler açısından, geliştirdikleri projeler için bekledikleri etkiyi vermez. Çünkü EJB ile uygulama geliştirmek beklenilen kadar kolay olmakla beraber tüm EJB belirtimleri daha da karmaşık bir yapı sunmaktadır.
19
dil
i.c o
m
2.4 JDO (Java Data Objects)
ww w. ja
va
JDO nesnelerin saklanmasını sağlayan bir sistemdir. JDO’nun yaptığı Java nesneleri ile veri tabanı arasında aracılık yapmaktır. Programcının veritabanı işleriyle uğraşmadan (örneğin sql kodu yazmadan) nesneleri saklamasına, erişmesine ve sorgulamasına olanak tanır.
20
i.c o
m
2.5 iBATIS
ww w. ja
va
dil
iBatis için, JAVA ve .NET için veritabanı işlerini kolaylaştırmak/düzene sokmak için ortaya çıkarılmış bir "data mapper framework" diyebiliriz. iBatis nesneleri SQL ifadelerine haritalamada(map) kolaylık sağlayan basit ama tam bir çatıdır. iBatis’i geliştiren ekibin temel felsefesi: veriye erişimde %80 işlevselliği %20 kod kullanarak sağlamaktır. Haritalayıcı(Mapper) denince anlaşılan anlamlardan biri, iki bağımsız nesne arasındaki iletişimi sağlayan nesne olarak bilinir. “Veri Haritalayıcı”(A Data Mapper) ise verileri nesneler ve veritabanı arasında taşıyan ve bunu yaparken aradaki bağımsızlığı sağlayıp, koruyan bir haritalayıcı katmandır. Siz veritabanı ve nesneleri sağlarken; iBatis bu ikisi arasındaki haritalama katmanı görevini yerine getirir.
21
dil
i.c o
m
2.6 TOPLINK
va
Oracle9iAS TopLink; Java uygulamalarının ilişkili veritabanlarına ve ilişkisiz veri kaynaklarına erişmelerini sağlayan bir framework’tür. TopLink; nesneleri ve EJB’leri (Enterprise Java Beans) kullanıcının nesne düzeyinde çalışmasına izin verecek şekilde veritabanına kaydeder.
ww w. ja
TopLink sayesinde; • Standart bir framework kullanılmasıyla birlikte; geliştirim süreci ve maliyet azalır. • Daha önceden kanıtlanmış performans daha yüksek performanslı uygulamalar geliştirilebilir. • Herhangi bir Java ortamında veya Java uygulama sunucusunda çalışabilen bir Java ürünü kullanılarak sistem bağımsızlığı %100’e çıkarılır. • Toplink’in nesne düzeyinde sağladığı API’ler ve sorgular kullanılarak veri bağımsızlığı sağlanır. • Bir JDBC sürücüsü üzerinden herhangi bir veritabanına erişilebileceği gibi; TopLink SDK üzerinden ilişkisel olmayan veri kaynaklarına da erişilebilir. • EJB, XML, CORBA, JTS, RMI gibi teknolojilerle bütünleştirilebilir.
22
dil
i.c o
m
2.7 CORBA (Common Object Broker Architecture)
ww w. ja
va
CORBA “Ortak Nesne İstem Aracısı Mimarisi”nin İngilizcesinin kısaltmasıdır. CORBA Nesne Yönetim Grubu'nun (OMG) Nesne Yönetim Mimarisi'nin (OMA) ana bileşenlerinden birisidir. Nesne Yönetim Mimarisi Nesne Modeli ve Referans Modelinden oluşur. Nesne Modeli heterojen bir ortamda dağılmış nesnelerin nasıl tanımlanabileceğini belirler. Referans Modeli ise nesneler arası etkileşimleri tanımlar. Dolayısıyla Nesne Yönetim Mimarisi heterojen ortamlara dağılmış beraber işleyebilen dağıtık nesnelerin geliştirilmesine ve konuşlandırılmasına yardımcı olur. CORBA sayesinde programcılar kullandıkları nesnelerin hangi dilde yazıldığına, dağıtık olup olmadıklarına, işletim sistemlerine ve iletişim protokollerine bakmaksızın programları geliştirebilirler. Dağıtık nesnelerin iki yönü vardır. Bunlar sunucu ve istemci yönüdür. EN basit haliyle bu ilişki şöyle gerçekleşir: Sunucu uzak bir ara yüz (remote interface) sağlar ve istemci de sağlanan uzak ara yüzü çağırır. Bu ilişki RMI ve CORBA gibi birçok dağıtık nesne standartlarında benimsenen bir yaklaşımdır. Bu bağlamda, sunucu ve istemci terimlerinden kastedilen uygulama düzeyindeki etkileşimlerden ziyade nesne düzeyindeki etkileşimlerdir. Yani bir uygulama, herhangi bir nesne için sunucu olabilirken başka bir nesnenin istemcisi olabilir. İstemci tarafında, uygulama uzak nesnenin bir referansını içerir. Bu nesne referansı, uzaktan çağrılan nesne metodunun bir vekil metoduna sahiptir. Sunucu tarafından ise, ORB (Object Request Broker), uzaktan çağrıyı, yerel nesne üzerinde bir metot çağrısıymış gibi yapmak için bir kod gövdesi (çatı) kullanır. Bu gövde, mevcut çağrıyı ve uygulamaya özel formattaki parametreleri çevirir ve metodu çağırır. Yordam dönüsünde, gövde, sonuçları ve hataları çevirerek çağrının geldiği istemciye tekrar, ORB’ yi kullanarak gönderir. ORB’ler arasında iletişim, paylaşılan ortak bir protokol üzerinden (IIOP-Internet Inter ORB Protocol) üzerinden sağlanır. IIOP, standart TCP/IP internet protokolü temel alınarak oluşturulmuş, ORB’ler arasında bilgi aktarımını sağlamak için oluşturulmuş bir protokoldür. Tıpkı CORBA ve IDL gibi IIOP de OMG tarafından tanımlanmış bir standarttır.
23
dil
i.c o
m
2.8 DCOM(Distributed Component Object Model)
va
DCOM dağıtımlı nesne yapısını desteklemek üzere Microsoft tarafından geliştirilmiştir. DCOM çözümünde nesnelerin yerel ya da uzak makinelerde konumlarının saptanması görevi bir hizmet denetim yöneticisi olan SCM(Service Control Manager) tarafından yerine getirilmektedir. Web uygulamalarında, web sayfası içindeki Yerel nesne ile birlikte istemciye aktarıldığı sırada gerekli vekil(proxy) nesneleri de birlikte yüklenir. Bundan sonra vekil nesnesi, gelen yerel nesneler tarafından kullanılan uzak nesnelerin yüklü bulunduğu uygulama sunucusuna kendisini tanıtarak hizmet almak üzere kayıt yaptırır.
ww w. ja
DCOM’un en büyük sakıncası yalnızca Windows tabanlı sistemler tarafından desteklenmesidir. Her ne kadar DCOM açık bir belirtim olarak herkesin kullanımına açık olsa bile uygulamada Microsoft dışında bu standardı benimseyen olmamıştır. Ancak Windows tabanlı sistemlerin yaygınlığı göz önüne alındığında, bu durum özellikle intranet uygulamaları için bir sorun olarak değerlendirilmeyebilir.
24
m
2.9 Karşılaştırmalar 2.9.1 Hibernate - JDBC •
• • •
Hibernate dezavantajları; • • • •
dil
i.c o
Aynı anda hem yazılımla hem nesne tabanlı yazılımla, hem de ilişkisel veritabanı ile çalışmak JDBC’de zordur. Sebebi ise verinin nesnede nasıl sunulduğu ile ilişkisel veri modeli arasındaki uyumsuzluktur. Bu yüzden JDBC’de kod geliştiren kişilerin nesne modelinin veri sunumları ile ilişkisel veri modeli arasında bir tanımlama yazması gerekir. Hibernate bu sorunu XML kütükleri ile çözer. Böylece bu işlev için kod yazmaya gerek kalmaz. Hibernate’de Java nesneleri ile veri tabloları arasındaki tersinir eşleşme (Transparent Persistance) vardır. JDBC’de ise yoktur. JDBC sadece temel sorgu dilini(SQL) destekler. Bu yüzden kod geliştiricilerin en iyi sorguyu yazmaları gerekir. Hibernate ise kendi sorgu dilini sağlar. Veri tabanında herhangi bir şey değiştiğinde(kolon adının değişmesi gibi) JDBC’de ilişkili tüm yapıların değişmesi gerekir. Hibernate’de ise bu değişiklik sadece XML kütüğünde olur.
ww w. ja
2.9.2 JDO - EJB
va
Hibernate’i öğrenmek daha zordur. İki değişik tablo ile bir nesne ilişkilendirilemez. İnternette Hibernate için yeterli destek yok. Hibernate JDBC’nin desteklediği bazı sorguları desteklemez. Örneğin aynı tabloya aynı sorguda çoklu veri eklenemez. Bunun için kodu geliştiren kişinin her bir nesne için farklı sorgu yazması gerekir
•
•
EJB bir nesnelerin saklanması, ağda erişilmesi, güvenliği gibi konularda servisler sağlar. JDO (Java Data Objects) ise sadece nesnelerin saklanmasını sağlayan bir sistemdir. JDO'nun yaptığı Java Nesneleriyle veritabanı arasında aracılık yapmaktır. Veritabanın SQL de olabilir, XML de olabilir, Object Database de olabilir. JDO, programcının veritabanı işleriyle uğraşmadan nesneleri saklamasına, erişmesine ve sorgulamasına olanak tanır. EJB de bu işlevleri sağlayan bir standarttır. Ancak EJB çok daha geniş imkanlar sunar. EJB ve JDO arasındaki karşılaştırmaya eklenebilecek ilginç bir not da, EJB'nin JDO kullanarak uygulanabilmesidir. Yani EJB standardına uyan bir sistem, o standardı uygulama için arka planda JDO kullanabilir. EJB server üreticileri CMP için arkaplanda JDO'yu kullanabildiği gibi, programcılar da BMP için JDO'yu kullanabilirler.
25
m
Kaynaklar Struts:
i.c o
ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/BIL4XX/BIL447_YML/belgeler/struts.pdf
Spring:
ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/BIL4XX/BIL447_YML/belgeler/SpringMVC_20221853.pdf
Cocoon
ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/BIL4XX/BIL447_YML/belgeler/cocoon.pdf
Ajax
ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/BIL4XX/BIL447_YML/belgeler/Ajax_Arastirma_20159752.pdf
cactus hibernate
dil
ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/BIL4XX/BIL447_YML/belgeler/cactus.pdf
ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/BIL4XX/BIL447_YML/belgeler/Hibernate.pdf
ejb
ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/BIL4XX/BIL447_YML/belgeler/ejb3.pdf
toplink ant
va
ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/BIL4XX/BIL447_YML/belgeler/toplinktutorial.pdf
ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/BIL4XX/BIL447_YML/belgeler/ant.pdf
corba
ww w. ja
ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/BIL4XX/BIL447_YML/belgeler/CORBA_20122034.pdf
dcom
Web Tabanlı Üç Katmanlı Yazılım Mimarileri (Cesur BARANSEL-Alim MUMCUOĞLU)
Jmx
ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/BIL4XX/BIL447_YML/belgeler/jmx.pdf
jaas
ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/BIL4XX/BIL447_YML/belgeler/JAAS_20221609.pdf
26