Web Tabanlı Uygulama Geliştirme Çatıları



Benzer belgeler
ÖZGÜR YAZILIMLAR İLE J2EE

Üst Düzey Programlama

Mobil Cihazlardan Web Servis Sunumu

Swing ve JDBC ile Database Erişimi

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.

Üst Düzey Programlama

ĐSTEMCĐ SUNUCU SĐSTEMLER DERSĐ FĐNAL ÇALIŞMASI SORULAR YANITLAR

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

Client Server Database

Öğr. Gör. Serkan AKSU 1

Java EE 5 Teknolojileri Jboss Seam

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

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

Üst Düzey Programlama

MyFaces Özgür JSF Uyarlaması. Bora Güngören Portakal Teknoloji

Kepware Veritabanı Ürünleri. Teknolojiye Genel Bir Bakış

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

Özgür Yazılımlarla Web Programlama. Özlem Özgöbek

Bilgi Servisleri (IS)

AJAX nedir? AJAX nasıl çalışır? AJAX. Tahir Emre KALAYCI. Sunucu Yazılım Teknolojileri

ASP.NET TEMELLERİ. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

Spring Giriş Eğitimi

Spring Framework Eğitimi

ANKARA ÜNİVERSİTESİ ELMADAĞ MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI PROGRAMI DERS İÇERİKLERİ

HTML isteklerini anlayarak HTML sonucu üreten ve yaygın olarak kullanılan temel Servlet sınıfı HttpServlet tir.

Asp.Net Veritabanı İşlemleri

Veritabanı. Ders 2 VERİTABANI

Java ve Linux. Bora Güngören Portakal Teknoloji Akademik Bilişim

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

Java Programlama Giriş

PHP 1. Hafta 1. Sunum

VERİ TABANI UYGULAMALARI

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

JavaServerFaces. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4

Veri Tabanı-I 1.Hafta

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

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

Basit bir web uygulaması

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


İnternet Programcılığı

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

Rahman USTA Editör Altuğ B. ALTINTAŞ Papatya Yayıncılık Eğitim

Veritabanı Uygulamaları Tasarımı

Programlama Yazılımı ile Web Sitesi Oluşturma

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

OPC Data Access (DA) Temelleri

Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi

JBoss Seam Next Generation Integration Framework

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

Web Uygulamaları Mimarileri ve Güvenliği

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. 26 Şub Öğr. Gör.

LINQ (Temel Kavramlar)

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

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

Ağ Yönetiminin Fonksiyonel Mimarisi

Internet Programming II

TeamBase5 BELEDİYE İLETİŞİM MERKEZİ SIEMENS

Veri Tabanı Yönetim Sistemleri Bölüm - 3

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011

NovaFortis Yazılım Danışmanlık. E-dönüşüm adaptörü

Bilgiyi Keşfedin! Özelleştirme, Eklenti ve Veri Entegrasyonu Kurumsal Seviyede Yönetim ve Performans

PHP ile İnternet Programlama

HSE RADAR. İş Sağlığı ve Güvenliği Yönetimi Uygulama, Denetim, Eğitim ve Takip HSE GLOBAL YAZILIM A.Ş. 11 Mart 2016

VERİ TABANI YÖNETİM SİSTEMLERİ

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

BİT in Temel Bileşenleri (Yazılım-1)

Kurumsal bilgiye hızlı ve kolay erişim Bütünleşik Belge Yönetimi ve İş Akış Sistemi içinde belgeler, Türkçe ve İngilizce metin arama desteği ile içeri

Veritabanı Yönetimi Bilgisayarların. Keşfi Hedefler. Veritabanı, Veri ve Bilgi. Veritabanı, Veri ve Bilgi. Veritabanı, Veri ve Bilgi

1 Temel Kavramlar. Veritabanı 1

İŞLETİM SİSTEMLERİ. (Operating Systems)

1.PROGRAMLAMAYA GİRİŞ

Aktarımı Çalıştırmak/Geri Almak 146 Alan Seçenekleri 148 Veri Tabanı Şeması 150 Veri Tabanı ile İlgili Bazı Rake Görevleri 162 Modeller 164

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

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

PAPERWORK TEKNİK MİMARİ

Güvenli Doküman Senkronizasyonu

Üst Düzey Programlama

YZM 3215 İleri Web Programlama

PR Kasım 2009 Yazılım, PC-tabanlı kontrol Sayfa 1 / 5

Web Tabanlı Sistem Mimarileri Hafif S ıklet İstemci Mimarisi (HSIM) HSIM Sistem Yap ısı

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

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

FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜH.

ProFTPD FTP Sunucusu. Devrim GÜNDÜZ. TR.NET Sistem Destek Uzmanı.

Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

Java Temel Özellikleri

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

İŞ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

Bilgisayar İşletim Sistemleri BLG 312

1. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

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

Hızlı Başlangıç Kılavuzu

PROGRAMLAMA DERSİ 1. İNTERNET

LOGO İş Zekası çözümü ile kurumsal raporlama ve analizler. Cem Yılmaz Genel Müdür LOGOBI Yazılım

Kurumsal Yönetim Sistemleri Sistemleri

Programlama Dilleri II. Bilgisayar ve Öğretim Teknolojileri Öğretmenliği

UZAKTAN EĞİTİM MERKEZİ

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.

Transkript:

HACETTEPE ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİL447 YAZILIM MÜHENDİSLİĞİ LABORATUVARI ARAŞTIRMA KONUSU TANIMI Web Tabanlı Uygulama Geliştirme Çatıları 2007, Ankara 1

HAZIRLAYANLAR Ad Soyad Numara E-Posta Tahir BIÇAKCI 20221523 tahirbicakci@gmail.com Özgür GÖKMEN 20221633 gimuda@gmail.com 2

İçindekiler 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

Giriş İ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. 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 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

1. Web Katmanı Framewokleri 1.1 Struts 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

1.2 Spring 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

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; Inversion of Control container: uygulama bileşenlerinin düzenlenmesi ve java nesnelerinin yaşam döngülerinin yönetiminden sorumlu. 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

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

1.4 AJAX(Asynchronous JavaScript and XML) 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. 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

1.5 CACTUS 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

1.7 LOG4J 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. 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

1.9 JNDI (Java Naming and Directory Interface) 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. 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

1.10 JMX (Java Management Extension) 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

1.11 JAAS (Java Authentication & Authorization Service) 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

1.12 JSF (Java Server Faces) 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

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. 1.13.2 JUnit - Cactus 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

2 Veri Katmanı Frameworkleri 2.1 HIBERNATE 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

2.2 JDBC (Java Database Connectivity) 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

2.3 EJB (Enterprise JavaBeans) 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. 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

2.4 JDO (Java Data Objects) 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

2.5 ibatis 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

2.6 TOPLINK 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. 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

2.7 CORBA (Common Object Broker Architecture) 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

2.8 DCOM(Distributed Component Object Model) 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. 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

2.9 Karşılaştırmalar 2.9.1 Hibernate - JDBC 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. Hibernate dezavantajları; 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 2.9.2 JDO - EJB 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

Kaynaklar Struts: 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 ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/bil4xx/bil447_yml/belgeler/cactus.pdf hibernate 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 ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/bil4xx/bil447_yml/belgeler/toplinktutorial.pdf ant ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/bil4xx/bil447_yml/belgeler/ant.pdf corba 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