Java Terimleri Java Terimleri Java, birbirinden farklı aygıtlarda çalışabilen, bu aygıtlar arasında iletişimi kolay hale getiren programlama dili ve platformudur. Java diliyle yazılmış programlar, Windows, UNIX, Mac işletim sistemi yüklü bilgisayarlarda hiç bir değişiklik yapmayı gerektirmeden çalışabilmektedirler Java Nedir? www.dijitalders.com Java Terimleri 1 Java Terimleri Masaüstü bilgisayarlar için 'standart' sürümünün dışında, el cihazları için 'micro', server network'leri için 'enterprise' sürümleri bulunmaktadır. Micro sürüm, yazılan programların farklı cep telefonlarında ve diğer el cihazlarında çalıştırılabilir olmasını sağlamaktadır. Enterprise sürümü farklı işletim sistemleri yanısıra farklı veritabanalrı ve diğer server programlarıyla standart şekilde çalışmasını sağlamaktadır. Niye Java öğreneyim? Yazılım alanındaki en son gelişmeleri içerdiği için Java iyi bir programlama dilidir. Bu yüzden bu dil ve platform giderek yaygınlaşmaktadır. Bir araştırmaya göre üniversitelerin %80'i programala dili olarak Java'yı öğretmektedir. %50'sinde bu dil zorunlu ders olarak konulmuştur. Rakipleri C/C++ ve Pascal bu alanda gerilemektedir. Java'ya başlamanın en kolay yolu nedir? JDK'yı (Java Development Kit'i) veya bunu içeren herhangi bir programalama ortamını kurmak gerekir. Bir kitap ve çeşitli belgelerden program yazma öğrenilebilir. Bütün bunları bulabileceğiniz bir çok İnternet sitesi vardır. Java'nın resmi sitesi java.sun.com'da da bunlar bulunmaktadır. Bu sitede Java'yla ilgili her türlü kaynak bulunmaktadır. Java Tutorial iyi bir başlangıç olabilir. Object, Class ve Instace ne demek? Object, içerisinde veri ve fonskiyon barındıran yapıdır. Veri tutan birimler 'property', belli bir işlev gören birimlere de 'method' denir. Bir insanın boyu bir property dir ve yürümek bir method'dur. Bir nesnede ne gibi property ve methodlar olacağını belirleyen yapıya class denir. Bu class'a uygun olarak yaratılan nesneye de instance denir. 'Web Sitesi' bir class'dır, 'godoro.com' bunun bir instance'dır. İnsan bir class'tır, Remzi de bunun bir instance'ı. Object-Oriented Programming ne demek? www.dijitalders.com Java Terimleri 2 Java Terimleri Gerçek hayattaki nesneleri ve kavramları belirtmek için kullanılır. Object-Oriented Programlama'da programcının öncelikle yapması gereken belli bir programı yapmak için gerekli nesneleri belirlemek ve bunlar arasındaki ilişkileri tanımlamaktır. Bir şirketle ilgili program yapılırken, örneğin, Department, Employee, Manager, Customer, Supplier gibi class'lar yapılır. Bunlara gerçek hayattaki karşılıklarına uygun olarak işlevler eklenir. Inhertiance ne demek? Bir nesnenin başka bir nesnenin özel olması ve ondaki bütün özellekileri içerimesini sağlayan yapı. Manager, örneğin, Employee'nin özel bir halidir. Çünkü her manager aynı zamanda bir Employee'dir. Sigorta işlemleri örneğin her ikisininde de olduğu için, manager için ayrı bir işlem yapmaya gerek yoktur. Encapsulation ne demek? Bir nesnenin bazı özellik ve işlevlerini diğerlerinden saklanabilmesi, erişimin sınırlandırılabilmesidir. Encapsulation'u televizyonun kasası olmasına benzetebiliriz. Bazı düğmeler ortada ('public') dururuken bir çok parça kasanın içerisinde gizildir (private). Zaten bir kullanıcının bunları kullanması gerekmez hatta dokunmaması gerekir. Aynı şekilde bir nesnenin kendinde bulunan bileşenleri kötü niyetli veya bilinçis kullanımlardan gizlemesi gerekir. Encapsulation programcıya nesneleri koruma gücünü verir. Polymorphism ne demek? Birbirine benzer nesnelere, aralarındaki farklarl ilgilenmeden aynı şekilde erişebilmektir. Her aygıtın bir on/of düğmesi vardır. "Aç" düğmesine basılınca açılır, "Kapa" düğmesine basılınca kapanır. Ama her aygıtın açılması ve kapanma süreçleri farklıdır. Ancak kullancı bunlarla ilgilenmez. Bu kavramın porgramlama dillerindeki nesnenlere uygulanmış hali polymorphism'dir. Applet nedir? Applet, bir tarayıcı içerisinde çalışan program parçasıdır. Bir web sayfasında bir image veya tablo gibi belli bir dikdörtgen içerisinde çalışır ve programalamayla yapıbilecek bir çok işlemi gerçekleştirebilir. İndirildiği makineye bağlanıp veri alış verişinde bulunabilir, kullanıcıyla etkileşimli olarak çalışabilir. JavaBean'i nedir? Belli bir standarda göre yazılmış nesnedir. Örneğin xxx adlı bir veriyi değiştiren method setXxx(), erişim sağlayan method'da getXxx() şeklinde yazıılır. Teknik olarak bir nesnenin bean olması default (parametresiz) bir constructor'u olması ve serializable (dosyaya veya başka bir stream'a yazılıp oklunabilmesi) gerekir. Servlet ve JSP nedir? Sunucularda belli bir application server içerisinde çalışan programlardır. Tıpkı client'ta appletlerin çalışması gibi.Tipik olarak servlet'lere HTTP üzerinden erişilir. Servlet'ler çıktı olarak HTML üretir. JSP ise, bir Java kodunun HTML kodu içerisinde gömülmesini sağlayan yapıdır. JSP sayfası statik bir HTML sayfası gibidir sadece belli yerlerde Java kodu bulunur. (ASP ve PHP gibi.) JavaScript'le Java'nın ne farkı var? Java çok amaçlı, kullanım alanı oldukça geniş bir programlama dilidir. JavaScript ise web sayfaları veya benzeri markup dilleriyle ilgili olarak form paramterelerinin girilmesi gibi sayfa içerisinde programlamaya benzer bazı işlemleri yapılabimesini sağlayan script dilidir. Aralarında sintaks benzerliği bulunmaktadır. Ayrıca bazı ortamlarda birlikte çalışmaktadırlar. Şu anda iki dil birbiriyle daha önce oldukları kadar ilişkili değildir. J2EE (Java 2 Enterprise Edition) Nedir? J2EE, Java'nın çok katmanlı kurumsal uygulama geliştirme standardıdır. J2EE, standart ve modüler bileşenlerden oluşan bir yapının karmaşık işlemler yapmadan, otomatik olarak geliştirilebilmesini sağlar. Çok sayıda makine, sunucu, veritabanı ve uygulamadan oluşan bir ortamın uyuölu çalışması için bir alt yapı oluşturur. Sadece bir kaç kişilik bir ekibiyle geliştirilen basit uygulamalar, sadece bir veritabanı, bir sunucu ve az sayıda kullanıcıdan oluşan ağlar için yapılan sistemler için J2EE çok anlamlı gelmeyebilir. Ancak çok sayıda veritabanı, çok sayıda makine, çok sayıda sunucu birbirinden farklı yeteneklere ve gereksinmelere sahip çok sayıda kullanıcıdan oluşan büyük sistemler için uygulama geliştirmek oldukça karmaşık bir hal almaktadır. Hatta sistemden beklenen şlevler ve kullanıcı sayısı büyüdükçe basit mimariler bile tek makinenin tek sunucunun ve tek veritabanının kaldıramayacağı hale gelir. Bu durumlarda zorluk asıl işlevlerin gerçekleştirilmesinden daha çok bir üşlevleri gerçekleştirilmesinide kullanılan bileşenlerin entegrasyonunda çıkmaktadır. Bu tip ortamlarda 'dağıtık' uygulama geliştirme kavramı devreye girmektedir. Dağıtık sistemler, bütün sistemin ayrı makinelere, hatta ayrı networklere dağıtıldığı, birbirileriyle iletişim kuran bileşenlerden oluşan sistemlerdir. J2EE, bu tip ortamlarda yapılacak işlemleri kolaylaştırmakta, hatta bazı işlemleri otomatik olarak yapmaktadır. J2EE Hangi Teknolojileri İçerir? * Java API for XML-Based RPC (JAX-RPC) : Farklı makinelerdeki nesnelerin birbirleriyle XML konuşarak haberleşmesini sağlar * JavaServer Pages & Java Servlets : Web programlama teknolojileri www.dijitalders.com Java Terimleri 3 Java Terimleri * Enterprise JavaBeans components : Nesnelerin veritabanında saklanması, networkteki herhangi bir makineden erişilmesini sağlar * J2EE Connector Architecture : Başka tekonolojilerler geliştirimiş sistemleri J2EE ilei birlkte çalışmasını sağlar. * J2EE Management Model : Network yönetim sistemleri ve protokolleriyle entegrasyon * J2EE Deployment API : J2EE bileşenlerinin geliştirlmesi ve sisteme yüklenmesi * Java API for XML Registries (JAXR) : Web servislerinin yaratılması, kurulması ve erişilmesi * Java Message Service (JMS) : Uygulamaların ve nesnelerin eşzamansız (asenkron) iletişimi için. * Java Naming and Directory Interface (JNDI) : Nesneleri belli bir isimler veya belli bir dizinde saklamak için * Java Transaction API (JTA) : Transactional veri erişimi için. * CORBA : Java Dışında C++ gibi diğer dillerin de nesneleriyle iletişim kurabilmek için * JDBC data access API : SQL Veritabanlarına erişim için * Java Mail : Mail sunucularına erişip mail alma/verme işleri için * JavaBeans Activation Framework (JAF) : Belli bir veri tipinde çeşitli komutların çalıştırlması için * J2SE : Java 2 Standart Edition : Standart Java'daki her şeyin enterprise da kullanılması için EJB (Enterprise Java Beans) Nedir? Entity Bean, Session Bean, Message-Driven Bean Nedir? Enterprise Bean, business logic'i (belli bir işlevin çalışma mantığını) sunucu tafında barındıran özel bir nesne türüdür. İşlev sunucu tarfında tanımladığı için kullanıcı tarafındaki nesneler sadece enterprise bean'leri çağırırlar herhangi bir işlevi yapmak için. J2EE sunucuları, enterprise bean'lerin dağıtık yapısını, güvenliği, ağdaki yeri saklanması gibi konuları hallederler. Programcıya sadece bean'de neyin nasıl yapılacağını belirtmek kalır. J2EE'nin temel bileşeni EJB olarak düşünülebilir. Ancak EJB olmadan da server side enterprise application'ları geliştrilevilir. Enterprise Bean'ler 3 Tiptir Entity Bean, Session Bean, Message-Driven Bean. Entiy Bean, verinin saklanması ve erişilmesi için, Session Bean, belli bir sürede başlayıp biten süreçler için, Message-Driven Bean, doğrudan çağrılarak çalıştırılmayan, belli bir mesaj alındığında yapılan işler için. CMP (Container-Managed Persistence) & BMP (Bean-Managed Persistence) J2EE'nin somut olarak işlevlerine örnek olarak CMP (Container Managed Persistent) verliebilir. CMP ile programcılar isterlerse nesnelerini veritabanında otomatik olarak saklanmasını sağlayabilirler. Hiç SQL yazmadan sadece hangi alanların veritabanın saklanacağını (persistent olduğunu) belitmeleri yeterli olur. (Elbette istenirse veritabanında saklama işini kendileri de hallede bilirler ki buna da Bean ) J2EE ile EJB Fark Nedir? J2EE bir standartlar bütünüdür. EJB bu standartlardan sadece biridir. EJB kullanmadan J2EE'nin diğer bileşenleri kullanılabilir. Hata J2EE deki her şeyi kullanan, bir ket EJB kullanmayanlarda bulunmaktadır. EJB performans ve karmaşıklık nedeniyle kullanım dışı bırakılabilmektedir. Ayrıca EJB, başka dille ve platformlarda benzeri olmayan bir kavram olduğu için, programcılar başka ortamlarda alıştıkları gibi çalışmaya devam etme eğilimindedirler. Örneğin ASP ve PHP yapanlar, için 3-Tier uygulamala geliştirdikleri için, JSP de aynı şekilde kullanılabilir. HTML-JSP-SQL şeklindeki standart kullanım J2EÊ'de de mümkündür, dahası yaygındır. J2EE ile XXX Server Arasındaki Fark Nedir? J2EE standartlar bütünüdür. Belli bir ürün veya ürün grubu değildir. Piyasada bu standarda uyan bir çok ürün bulunmaktadır. Sun (Java Server System) , IBM (WebSphere) , BEA (Web Logic), Oracle (8i,9i,..), Netscape gibi firmalar J2EE standardına uygun sistemler üremektedirler. Ayırca JBoss ve Apache (Gerenimo) gibi organizasyonlar da free j2EE uygulamaları üretmektedirler. Bunların bir kısmı Sun tarfından verilen J2EE Compatible ünvanını resmen almış olmaları gerekmektedir. Ancak bu J2EE Compatibleünvanını almasa da J2EE uyumlu olan (veya olmaya çalışan) serverlar bulunabilir. J2EE ile Xxx Server arasında bazı farklar bulunabilir. Herhangi bir application server J2EE standardında olmayan özellikler içerebilir. O zaman J2EE uyumlu değildir denmez. Bu özellikler kullanılırsa standardın dışına çıkılmış olur, bir üründe çalışan kod idğerinde çalışmayabilir. Ancak adı verilen ürünler J2EE'den bazı konularda çok daha zengin ve yeni özellikler içermektedirler. Örneğin Struts, AspectJ gibi konular standartta yoktur ama bir çok application server'da bu özellikler bulunmaktadır. EJB ile JDO Arasındaki Farklar Nedir ? 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 yapmak. Veritabanın SQL de olabilir, XML de olabilir, Object Database de olabilir. JDO, programcının veritabanı işleriyle uğraşmadan (örneğinm SQL yazmadan) nesneleri saklamasına, erişmesine ve sorgulamasına olanak tanır. EJB de bunu işlevelri sağlayan bir standarttır. Ancak EJB çok daha geniş imkanlar sunar. Güvenlik, dağıtık programlama, ölçeklenebilirlik v.s. EJB ve JDO arasındaki karşılaştırmaya eklenebilecek ilginç bir notta, 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. Kaynak www.godoro.com/Divisions/Ehil/Mahzen/Java/Faqs/txt/html/faq_Java.html www.dijitalders.com Java Terimleri 4