Burak ÇAKIL IT Specialist Yazılım Akademisi 2011 Eğitim Sunumu -1
Başlıklar Java / Java EE WAS RSA DB2 Genel Kavramlar Sorularınız 2
Java Java Nedir? Nesne Yönelimi Nesneler arası ilişkiler Java SE & Java EE Java EE Uygulama Mimarisi Java EE Bileşenleri 3
Java Nedir? Dünyada en çok kullanılan programlama dillerinden biri 1.1 Milyar Masaüstü bilgisayar 3 Milyar cep telefonu Blu-ray disk çalarların tamamı Java kullanıyor! Yüksek Seviyeli (High-Level) Platform Bağımsız Nesne Yönelimli (Object Oriented) 4
Java Sürümleri Java SE (Standard Edition) Java EE (Enterprise Edition) Java ME (Mobile Edition)
Nesne Yönelimi (Object Orientation) Nesne ve sınıflandırma mantığı ile daha kolay ve efektif kodlama Nesneler arası ilişkiler sayesinde Daha az satır Modüler Parçalara ayrılabilir kod yazma imkanı Nesne Yöneliminde kullanılan kavramlardan bazıları Sınıflar Nesneler Metodlar
Nesneler arası ilişkiler Kalıtım (Inheritance) Çok Şekillilik (Polymorphism) Soyut Sınıflar (Abstract Classes) Encapsulation
Kalıtım (Inheritance) Bir sınıfın, karakteristik özelliklerini kendi alt sınıflarına aktarmasıdır Alt sınıf, kendi üst sınıfının tüm özelliklerini taşır Alt sınıf ek olarak kendine özgü karakteristik özellikler de taşıyabilir Bir sınıf sadece tek bir sınıftan türeyebilir. (Single inheritance) Taşıt adında bir sınıfımız olduğunu varsayarsak, Otomobil sınıfını Taşıt sınıfından türetiriz, çünkü Otomobil, bir taşıtın tüm özelliklerini barındıracaktır
Kalıtım (Inheritance)
Çokşekillilik (Polymorphism) Çokşekillilik, bir Java metodunun aynı isimle, farklı işler yapmasını sağlayan yöntemdir. İki çeşit Çokşekillilik örneği bulunur Method Overloading Method Overriding Method Hiding
Çokşekillilik (Polymorphism) Method Overloading: Bir metodun, aldığı parametre tipine ve sayısına göre farklı işlevler gösterebilmesidir Bu şekilde, bir class içinde aynı isimde birden fazla metod bulunması mümkündür 11
Polymorphism Method Overloading 12
Polymorphism Method Overriding Bir sınıfta varolan bir metodun, alt sınıflarından birinde farklı işlev gösterecek şekilde yeniden yazılmasıdır Uçak da bir taşıttır, ve bir uçağın sola dönmesi, bir yer taşıtından farklılık gösterecektir Bu yüzden uçağın sola dönmesi için kullanılacak metod Uçak sınıfı içerisinde override edilmelidir
Polymorphism Method Overriding
Polymorphism Method Hiding Statik bir metod override edilemez. Çünkü constructor'dan muaftırlar ve sadece sınıf tiplerine göre erişilebilirler Bu yüzden statik metodlar override yerine hide edilmiş olurlar
Polymorphism Method Hiding
Interface Bir sınıfın uygulamasını gerektiren metodları barındıran soyut tiplerdir. (Bir nevi template [taslak]) Yani: Bir interface'i implement eden bir sınıf, o interface içinde tanımlanan soyut metodları kullanmak zorundadır. Gerçek bir varlık ile o varlığı temsil eden sınıf ile arada bir arayüz görevi görür Bir sınıf birden fazla interface'i implement edebilir, bu sayede çoklu kalıtım da sağlanmış olur.
Interface
Soyut Sınıflar (Abstract Classes) Soyut sınıf, içinde soyut metod barındıran sınıftır Soyut metod, içeriği belli olmayan, sadece ismi ve parametreleri belirlenmiş metottur Bu metod, soyut sınıftan türeyen sınıfların içerisinde override edilmelidir, çünkü aynı metod alt sınıfların her birinde farklı bir işlev görmektedir
Soyut Sınıflar
Soyut Sınıflar
Java SE & Java EE Java SE Çekirdek Java kütüphaneleri Başlangıç için ideal Java EE Java SE + ek kütüphaneler Kurumsal, çok katmanlı web uygulamaları geliştirme amaçlı kullanılır EJB, JSP, Servlet, JavaMail gibi kütüphaneleri içerir
Java EE Mimarisi Genel olarak 3 katmandan oluşur Sunum Katmanı Uygulama Katmanı Veritabanı katmanı Avantajları Güvenlik Ölçeklenebilirlik Yüksek erişilebilirlik
Java EE 2 Katmanlı 3 Katmanlı sistemler Servlet JSP (Java Server Pages) JSF (Java Server Faces) EJB (Enterprise Java Beans) JNDI (Java Naming and Directory Interface) JPA (Java Persistence API) Web Servisleri SOA, WSDL
2 Katmanlı 3 Katmanlı Sistemler 2 Katmanlı Sistemler İstemci Sunucu İstemci Veritabanı Uygulanması kolay Çok kullanıcılı sistemlerde yönetilmesi zor
2 Katmanlı 3 Katmanlı Sistemler 3 Katmanlı Sistemler İstemci Sunucu Veritabanı 2 Katmanlı sistemlere göre daha efektif ve hızlı çalışır Kolay yönetilebilir Sisteme modülerlik kazandırır (her katman birbirinden bağımsız çalışabilir) Yük dağılımını dengeler Güvenliği arttırır
Servlet Özel bir Java sınıfından türer (HttpServlet) Kullanıcı isteklerine dinamik olarak cevap üretir Bir uygulamaya login olmak Veritabanına bağlanıp bilgi çekmek Bu cevabı istenen bir formatta kullanıcıya sunar Session bilgisi tutmak için de kullanılır
Servlet Yaşam Döngüsü Kullanıcı GET veya POST ile bir Servlet isteğinde bulunur Servlet, init() metodu çağırılarak yaratılır. (Bu işlem sadece bir defa yapılır) İstek dopost() veya doget() metodlarına gönderilir. Bu metodlara request ve response nesneleri parametre olarak gönderilir Servlet istenen görevi yerine getirir (DB bağlantısı kurma vs.) Servlet destroy() metodu çağırılarak yok edilir.
JSP (Java Server Pages) JSP: Dinamik Web sayfaları oluşturmak için kullanılan bir web teknolojisidir. JSP Sayfalarının içeriği, scriptlet denen küçük kod blokları ve HTML kodundan oluşur Bu sayfalar sunucu tarafında derlenir ve çalıştırılır Scriptlet ler <% ve %> işaretleri arasına yazılır JSP kodu, sunucu tarafında derlendikten sonra Java Servletlerine çevrilerek çalıştırılır Sonuç: Her JSP aslında bir Servlet'tir.
JSP (Java Server Pages)
JSF (Java Server Faces) Web sitelerine görsel arayüz tasarımını kolaylaştırmak için kullanılan, Java tabanlı bir kütüphanedir Business presentation katmanlarının ayrılmasında rolü büyüktür Bileşenlerinin durum bilgilerini (state) tutabilir Standart olarak Ajax desteği bulunmaktadır
EJB (Enterprise Java Beans) EJB, Java EE uygulamalarının business logic altyapısını oluşturur Uygulamanın fonksiyonel görevlerini bu katman yerine getirir Çeşitleri Stateless Session Bean Stateful Session Bean Entity Bean
EJB Stateless Session Bean Durum bilgisi tutmayan session bean' e verilen isimdir Bean içerisinde tanımlanan metodlar çalışırken, kullanıcının durumu ile ilgili bilgi saklamazlar Bir öğrenci otomasyonunda öğrenci bilgisi getiren bean, stateless session bean' e örnek gösterilebilir
EJB Stateful Session Bean Kullanıcı durum bilgisini saklayan beanlere verilen isimdir Kullanıcının sistemdeki belli bir anında varolan ve sürekli değişebilen verilerin tutulmasında kullanılır Veriler bellekte geçici olarak saklanır Aynı anda sadece bir kullanıcı bu verilere erişebilir. E-ticaret sitelerindeki alışveriş sepeti mantığı Stateful Session Bean'lere örnektir
EJB Entity Bean Session Bean'lerin aksine, kalıcı veri içerir. (Sistem kapandığında bu bilgiler kaybolmaz) Müşteri, ürün bilgileri gibi kalıcı verilerin saklanmasında kullanılır. Aynı anda birden fazla kullanıcı, aynı bilgiye erişebilir.
JNDI (Java Naming and Directory Interface) Naming ve Directory hizmeti sunan bir Java EE kütüphanesidir Çeşitli objelere isimlendirme ve dizin hiyerarşisi yoluyla kolayca ulaşmayı sağlar Ulaşılacak dizin / obje ile uygulama arasında bir köprü görevi görür, bu sayede uygulamanın bu objelere olan bağımlılığını ortadan kaldırır. LDAP veya DNS sorguları için kullanılabilir
JNDI Nesne arama örneği
JNDI Dizin arama örneği
Persistence & JPA (Java Persistence API) JPA, uygulamalardaki persistence katmanını oluşturan bir Java EE kütüphanesidir. Veritabanındaki kalıcı verinin, Java objeleri olarak kullanılabilmesine olanak tanır Uygulamadaki business logic ile data katmanı arasında bir arakatman görevi görür, bu şekilde iş katmanını ve data katmanını birbirinden ayırır Uygulama modülerliğini ve taşınabilirliğini arttırır Veri aktarımı, Entity adı verilen Java sınıfları ile gerçekleştirilir (Örn: Kitap, Müşteri) JPA'daki her bir entity, veritabanındaki bir tabloya işaret eder
Web Servisler Web Servis, farklı altyapılarda çalışan uygulamalar arasındaki bağlantıyı sağlayabilen bir iletişim teknolojisidir Platformdan bağımsız olarak çalışır bu şekilde Linux sunucu üzerinde çalışan bir Java uygulaması, Windows'ta çalışan bir.net uygulamasıyla haberleşebilir Web Servis bileşenleri, İstemci (Client,Requester), Sunucu (Server,Provider) ve mesajdan oluşur. İstekler SOAP (Simple Object Access Protocol) adı verilen XML blokları şeklinde, HTTP / RPC üzerinden gönderilir ve alınır. Web Servis istekleri ve cevapları, önceden tanımlanmış XML formatlarında gönderilip alınırlar. (WSDL = Web Services Description Language) Java Web Services API - JAX-WS
Web Servisler - SOAP Web Servislerin iletişiminde kullanılan XML mesajlarıdır HTTP / RPC protokolü üzerinden gönderilip alınırlar Her SOAP sorgusu, <soap:envelope> adı verilen tagların arasına yazılır. <soap:header> ve <soap:body> elementlerini bulundurur Cevap istenen mesaj <soap:body> içerisinde, WSDL de tanımlı formata göre yazılarak gönderilir.
Web Servisler - SOAP Örnek bir SOAP sorgusu
Web Servisler WSDL (Web Service Description Language) Web Servis istek ve cevaplarının formatlarını belirleyen, web servisleri tanımlayan dosyalardır XML formatında oluşturulurlar WSDL dokümanlarında kullanılan elemanlar: <message> Web Servis tarafından gönderilen ve alınan mesajların tanımı <porttype> Web Servis tarafından gerçekleştirilen operasyonlar <type> Web Serviste kullanılan veri tiplerinin tanımları <binding> Web Servisin kullandığı iletişim tipi, ve web servisin gerçekleştirdiği operasyonlar
Web Servisler WSDL (Web Service Description Language) http://www.w3.org/2001/04/wsws-proceedings/uche/wsdl.html
WebSphere Application Server
WAS (WebSphere Application Server) - Nedir? Web uygulamalarını çalıştıran bir uygulama sunucusu Uygulamaların sürekli erişilirliğini, güvenliliğini, ölçeklenebilirliğini sağlar Hem akademik amaçlı, hem de kurumsal olarak kullanılabilir Sürümleri WebSphere Application Server Community Edition (WASCE) WebSphere Application Server Express WebSphere Application Server Base WebSphere Application Server Network Deployment WebSphere Application Server Hypervisor Edition Ücretsiz sürüm: http://www.ibm.com/developerworks/downloads/ws/wasce/
WAS (Özellikleri) Tüm büyük işletim sistemlerini destekler Windows Linux AIX z/os Sun Solaris Uygulama sunucuları pazarında lider Yüksek performans Uygulama güvenliği Kolay kullanım ve yönetim SOA ve Java EE Mimarisine tam uyum Rational Software Architect ile mükemmel entegrasyon
WAS Mimarisi ve Servisleri
WAS Bileşenleri Tek Sunucu
WAS Bileşenleri Çoklu Sunucu
WAS (Güvenlik) İç ve dış iletişimde SSL desteği SSL destekli LDAP kimlik doğrulaması Otomatik sertifika yönetimi SSO (Single Sign On) Java 2 Security Ve daha niceleri
WAS (Yüksek erişilebilirlik) Kurumsal uygulamalar sürekli çalışır halde olmalı Sorun çıkarabilecek bileşenler: Web Sunucusu Uygulama sunucusu İşletim Sistemi Donanım vb. WAS üzerindeki clustering teknolojisi buna çözüm getiriyor Aynı uygulama -> 2 (ya da daha fazla) adet sanal ortamda çalışabilir Birinde sorun olması durumunda diğerleri hizmet vermeye devam eder Load Balancing (Yük dengeleme) sayesinde yükün eşit olarak dağılması sağlanır
DB2
DB2 DB2, IBM'in sektörde önde gelen İlişksel Veritabanı Sistemidir Kurumsal firmalar tarafından en çok tercih edilen veritabanı yazılımıdır Neden DB2? Hızlı Üstün sıkıştırma teknolojisi ile daha az veri transferi Güvenli Gelişmiş, çok yönlü güvenlik konfigürasyonu Az masraflı Kendi kendini yönetebilir Ücretsiz sürüm: DB2 Express C ( http://www-01.ibm.com/software/data/db2/express/download.html?cm_sp=mte10 ) İnanılması güç, fakat 100' den fazla DB2 instance'ını yönetmek için sadece 3 İnanılması güç, fakat 100' den fazla DB2 instance'ını yönetmek için sadece 3 adet DBA kullanıyoruz. adet DBA kullanıyoruz. --Phil Kilgore --Phil Kilgore Lithonia Lighting Lithonia Lighting
DB2 Desteklediği İşletim Sistemleri Linux Windows Unix (AIX) z/os IBM i
DB2 Java ile DB2 bağlantısı (JDBC API) JDBC = Java DataBase Connectivity 4 şekilde bağlantı yapılabilir Type 1 Type 2 Type 3 Type 4
JDBC Type 1 Driver JDBC sorgularını ODBC sorgularına çevirerek veritabanına gönderir İstemci bilgisayarına ODBC kütüphanesi yüklenmelidir Performansı düşüktür ve tercih edilmemektedir
JDBC Type 2 Driver JDBC sorgularını işletim sistemi koduna çevirerek veritabanına gönderir İşletim sistemine bağımlıdır Performans olarak en hızlısıdır
JDBC Type 3 Driver Arakatman yazılımlarının (Örn: WebSphere App Server) veritabanı sürücülerini kullanır Bir uygulama aynı anda farklı veritabanı tiplerine bağlanabilir (DB2, Oracle, MySQL vs.) Arakatman yazılımının avantajlarından faydalanabilir (Örn: Logging, caching vs.)
JDBC Type 4 Driver Tamamen Java kodu ile yazılmıştır Veritabanına direk bağlantı sağlar, ara bir katman gerektirmez Farklı veritabanları için farklı sürücülere ihtiyaç duyar
DB2 purexml DB2, XML veri tipini destekler Karmaşık veri modellerini basitleştirir Tasarımı basitleştirir, tasarım masraflarını düşürür İlişkisel veri ile XML verisi bir arada tutulabilir Herhangi bir XML bloğu, tablolarda bir alana insert edilebilir XQuery kullanılarak XML içerisinde arama yapılabilir
DB2 purexml DB2 9, XML verisi saklamak üzere optimize edilmiştir Bu sayede, karmaşık veri ilişkilerini tek bir XML içinde saklayarak, göz alıcı performans elde edebilirsiniz Daha fazla bilgi için: http://www.ibm.com/developerworks/wiki
DB2 (Diğer Özellikler) DB2 9.7 sürümü ile birlikte PL/SQL dilini de desteklemektedir DB2 sürümünün ücretli olarak yükseltilmesi durumunda HADR (High Availability and Disaster Recovery) DB2 purescale teknolojisi Veri sıkıştırma özellikleri de kullanılabilir
Rational Software Architect (RSA) IBM'in yazılım geliştirme ve modelleme uygulamasıdır Açık kaynak kodlu Eclipse üzerinde çalışmaktadır Uygulamalarınızı hızlı ve efektif bir şekilde geliştirmenizi sağlar Eclipse üzerinde olduğundan ötürü, harici plug-inler ile desteklenebilir
Rational Software Architect (RSA) Desteklediği işletim sistemleri Linux Windows Desteklediği uygulama tipleri Java / Java EE Web Servis uygulamaları SOA uygulamaları Veri modellemeleri Raporlama Altyapısı (Crystal Reports vb.) Ve daha niceleri
Rational Software Architect (RSA) UML modelleme desteği ile uygulamalarınızı görsel olarak tasarlama seçeneği sunar Tasarladığınız UML modelini RSA otomatik olarak Java koduna (ya da başka bir dil) çevirecektir
Rational Software Architect (RSA) Otomatik kod tamamlama özelliği Taslak Web modülleri ile web sayfalarınızı sıfırdan kodlamanıza gerek yok Sürükle bırak web formları Navigasyon menüleri Kodlama anında sözdizim (syntax) kontrolü Debugging modu ile kolay hata ayıklama Uygulama sunucusu desteği Uygulama sunucunuzu (WAS, Apache Tomcat vs.) RSA üzerinde tanıtabilir, web uygulamalarınızı kolaylıkla deploy edip çalıştırabilirsiniz Uygulama sunucunuzun konfigürasyonunu RSA üzerinden yapabilirsiniz
Genel Kavramlar Güvenlik Yüksek Erişilebilirlik Ölçeklenebilirlik Yedekleme & Geri Yükleme Versiyonlama
Güvenlik (Security) Günümüz uygulamalarında en çok aranan özellik olarak karşımıza çıkıyor En çok karşımıza çıkan uygulamaları SSL Uygulama Güvenliği Firewall Güvenliği İşletim Sistemi Güvenliği
Yüksek Erişilebilirlik (High Availability) %99,9 oranında çalışır ve erişime açık olması gereken, kritik uygulamalar Clustering OS Clustering Software Clustering Load Balancing (Yük Dengeleme) WebSphere Application Server bu metodları desteklemektedir
Ölçeklenebilirlik İyi tasarlanmış bir uygulama mimarisi, büyüyen ihtiyacı karşılayabilmelidir Sistemler büyümeye (veya çoğalmaya) elverişli tasarlanmalıdır Boyuna ölçekleme (Vertical Scaling): Mevcut bir sunucudaki CPU, bellek vs. konfigürasyonların arttırılması Enine ölçekleme (Horizontal Scaling): Mevcut sisteme eşdeğer yeni bir node (düğüm eklenmesi)
Yedekleme & Geri Yükleme Verileriniz değerlidir, kaybolmalarını istemezsiniz Bunu önlemek için Yedek almalı Yedek almalı Yedek almalısınız
Yedekleme & Geri Yükleme Veriler çeşitli sebeplerden ötürü kaybolabilir Donanımsal arızalar, örneğin harddiskin yanması Verilerin bozulması, okunamaz hale gelmesi İnsan hatalarından ötürü verilerin silinmesi Doğal afetler, çalınma, kaybolma vs. Yedeklenen veriler daha sonra geri yüklenerek, veri kaybı önlenmiş olur Bu yüzden, sisteminizin mutlaka bir yedekleme çözümü olmalıdır Tivoli Storage Manager, IBM'in yedekleme çözümü getiren bir ürünüdür. http://www.ibm.com/software/tivoli/products/storage-mgr
Versiyonlama Uygulama geliştirme projelerinde yapılan çalışmaların (kod, dokümantasyon, vs.) versiyonlarının saklanabilmesini sağlayan bir sistemdir Bu şekilde, bir sunucu üzerinde repository oluşturup, tüm çalışma ekibinin bu repository üzerinde, birbirlerinin çalışmalarını etkilemeden çalışabilmeleri sağlanır Örnek uygulamalar CVS SVN (Subversion)