JAVA Java, Sun Microsystems tarafından geliştirilen nesne yönelimli bir programlama dilidir. Ağ (network) ortamı düşünülerek ve yazılımın platformdan bağımsız olarak çalışması (değişik bilgisayar türlerinde ve değişik işletim sistemlerinde çalışması) düşünülerek geliştirilmiştir. Bu nedenle, diğer dillerden farklı olarak, aynı zamanda kendisi de bir platformdur. Java uygulamalarınızı yazmak için, Notepad gibi bir program dışında özel olarak geliştirilmiş görsel arayüze sahip olan programlar da vardır. Bu tür programlarda kodları hem yazar, hem derler hem de çalıştırabilirsiniz. Örnek: Eclipse Platform (freeplatform), Java Builder (BORLAND), Net Bean (SUN), Visual Age (IBM), vb. Java diliyle birçok uygulama geliştirmek mümkündür: Grafiksel Kullanıcı Arayüzü (Graphical User Interface: GUI) uygulamaları, Appletler, Dağıtılmış bileşenler (EJB, RMI, CORBA, vb.), Web tabanlı uygulamalar (Servlet, JSP, vb.), Veritabanı erişimli uygulamalar, Cep telefonu, Akıllı kart uygulamaları. Java platformları: Standart Java Enterprise Java Gömülü cihazlar (embedded devices) için Java JAVA NASIL ÇALIŞIR Bir java yazılımı şu şekilde geliştirilir: Programcı java kodunu yazar. Bu kod bir java derleyicisi ile derlenir. Sonuçta bytekod adı verilen bir tür makine kodu ortaya çıkar. Platform bağımsızlığını sağlayan şey bytekod’dur. Çünkü bir kere bytekod oluştuktan sonra yazılım tüm işletim sistemlerinde çalışabilir. Bu bytekod Java Virtual Machine(Java Sanal Makinesi) tarafından adım adım işletilir. Java çok farklı ortamlarda kullanılabilen bir programlama dili olduğu için gelişim adımlarını tek standart kütüphane altında toplamak çok anlamlı değildir. Java teknolojileri bu sebeple 3'e bölünmüştür. Bu sayede her ortam için versiyonlama farklı farklı yapılabilir hale gelmiştir. JSE : Başta J2SE olarak anılan Java Standart Edition masaüstü uygulamaları geliştirmek için kullanılan bir teknolojidir. JDK 5.0 çıktıktan sonra Java Platform 2’den gelen 2 isimden çıkartılmıştır. JEE : İlk başta J2EE olarak anılan Java Enterprise Edition sunucu üzerinde çalışan uygulamalarda kullanılan bir teknolojidir. (Web siteleri gibi) Aynı sebepten dolayı “2” isimden çıkartılmıştır. JME : Java Micro Edition ise cep telefonlarında kullanılan uygulamalar (oyunlar gibi) için geliştirilmiş bir teknolojidir. JVM: (Java Virtual Machine) : JVM, Java dilinin işletim sistemi tarafından anlaşılmasını sağlar. Bu sayede, Java ile yazılan bir program herhangi bir işletim sisteminde çalışır hale gelir. JVM, bir anlamda sanal bir işletim sistemi gibi düşünülebilir. JVM yüklü olmayan işletim sistemlerinde, Java kodları çalışmaz. Bu nedenle, Flash programında hazırlanan .swf dosyalarının çalışması için Flash oynatıcısının gerekmesi gibi, Java uygulamalarının çalışması için de sisteme JVM yüklenmesi gerekir. Günümüzde bazı tarayıcılar JVM destekli olarak geliştirilmiştir. İşletim sistemine göre, kullanılan JVM türü de değişebilir. JRE: (Java Runtime Environment) : Bir Java uygulamasını çalıştırmak için gerekli minimum gereçleri içeren yapıya verilen isimdir. Yani bilgisayarımızda bir Java uygulamasının çalışabilmesi için JRE’nin kurulu olması gerekir. JRE içerisinde JVM de bulunur. JDK: (Java Development Kit) : Kendimiz bir Java uygulaması geliştirmek istiyorsak o zaman JRE yetersiz kalır. JRE’nin yanında ekstra gereçler gereklidir. JDK dediğimiz yapı içerisinde Java Compiler, Java Interpreter, geliştirici toolları, Java API kütüphaneleri, Java geliştiricileri tarafından Java uygulamaları geliştirmek için kullanılan dokümantasyonlar bulunur. Ayrıca JVM ve JRE içerir. JDK = JRE + JVM + derleyici + diğerleri diyebiliriz. Java Kodunun Yazılması Java nesneye yönelik bir dil olduğundan tüm yazılım sınıflar ve nesneler üzerinden yürütülür. Sınıflar uygulamadaki nesnelerin tanımlandığı kod parçalarıdır. Java’da her bir sınıf bir dosya içerisinde yer alır. Dosyaların uzantıları .java şeklindedir. Dosya adı ise içinde tanımlanan sınıf ile aynıdır. Örneğin, BenimSinif.java gibi. Derleme Derleyici kısaca herhangi bir editor ile yazılan java kaynak kodlarını(yani .java uzantili siniflarin yer aldigi dosyalari) java sanal makinesinin çalıştırabileceği bir tür makine dili(assembler) olan Bytecode’a dönüştürür. Bu dönüştürülen bytekod ise .class dosyaları içerisinde saklanır. Java kodunu derlemek için bir java derleyicisine ve java kütüphanelerine ihtiyacınız var. Şu anda iki derleyici yaygın olarak kullanılmaktadır. Bir tanesi Sun’ın SDK’si ile birlikte gelen javac. diğeri ise IBM’in açık kodlu derleyicisi jikes. Jikes, cok hızlı derlemesi ile ünlü olsa da en son java yazılımlarını derlemek için javac’e ihtiyaç duyulabilir. Ayrıca linux altında derleme yapmak için gnu lisansi ile geliştirilen açık kodlu Gnuj kullanılabilir. Derleyici ve kütüphanelerin(Java API) bulunduğu uygulamaya “J2SE SDK” adı verilmiştir. Derleme için yazılan kod: Çalıştırma için yazılan kod: javac *.java java * Derlenen kodlar çalıştırılmak üzere JVM e yüklenirken; sınıflar yüklenir, byte kodların kontrolü yapılır ve yorumlama başlar. JAVANIN YAPISI NESNE YÖNELİMLİDİR Gerçek hayattaki nesneler, Java.da temsil edilebilir. Örnek: öğrenci, ders, öğretmen, not Java.nın sözdizimi C++.ın sözdizimine benzer; ama nesneye dayalı bir programlama dilidir. Nesneye dayalı tasarım ve mimarisi; Smalltalk, Eiffel, Objective C gibi nesne yönelimli dillerden türetilmiştir. SÖZDİZİMİ Sözdizimi, C ve C++.ınkine benzer. C++.ın aşağıdaki özellikleri Java.da yoktur: İşaretçi (pointer) aritmetiği Otomatik tip değiştirme Typedefs, Defines, Pre-processor, Enums Structures, Unions Fonksiyonlar Çoklu kalıtım Kullanıcının tanımladığı Overloading Operatörler PLATFORM BAĞIMSIZDIR (MİMARİ OLARAK NÖTRDÜR) Java programları platformdan bağımsızdır. Java derleyicisi, kaynak kodu byte kod komutlarına çevirir. .Byte kod komutları, Java Virtual Machine (JVM) tarafından yürütülür. JVM, özel bir yazılımdır. Bilgisayarın işletim sistemi ile kendi üzerinde çalışan Java uygulaması arasında bir katman olarak yerini alır. Bu şekilde, işletim sisteminin hafızasını işgal etmez. TAŞINABİLİRDİR Java, Bir kere yaz, her yerde çalıştır ilkesine %100 uyar. Java, bir tamsayının boyut ve aritmetik davranışını kendisi belirler; bu işi çalıştığı makineye/işletim sistemine bırakmaz. DAĞITIKTIR Java TCP/IP ağ yeteneklerine sahiptir. örnek: HTTP, soket, vb. RMI (Remote Method Invocation) ve EJBs (Enterprise Java Beans) kullanarak, bir JVM deki nesneler, diğer bir JVM deki nesnelerle haberleşebilir. CORBA kullanarak, Java nesneleri başka nesnelerle haberleşebilir. Java Mimarisi 2 Katlı Mimari Klasik istemci-sunucu sistemler 2 katlı (2-tier) mimariler üzerine kurulmuşlardır. Bu tür sistemlerde, uygulama direk olarak veritabanı sunucusuyla ilişkidedir. Genel olarak, üretilen işin büyük bir bölümü istemci tarafından yapılırken, çoğu zaman sunucu sadece veritabanı sunucusu görevi görür. Bu, uygulamanın kabul edilebilir bir hızla çalışması için güçlü bir istemci donanım gereksinimini ve bilgisayar ağı olanaklarının gereğinden fazla kullanımını doğurur. Bunun nedeni, iş mantığının işlenmesinin büyük bir bölümünün istemci tarafından yapılıyor olması ve uygulamanın, her gerekli veri parçası için, veritabanına bağlanıyor olmasıdır. 2 katlı mimari 3 Katlı Mimari 2 katlı mimarilerin sık karşılaşılan problemleri karşısında, yazılım endüstrisi 3 katlı mimari kavramını geliştirdi 3 katlı mimariler uygulama görevleri ve sorumlulukları açısından birbirinden farklı 3 bölüme ayrılır. Genellikle bu ayrım fiziksel, somut bir ayrımdır. İlk bölüm, sunuş katı (presentation tier), genel olarak herhangi bir tip grafik kullanıcı arayüzünden oluşur. İkinci bölüm, iş katı (business tier) ya da uygulama katı (application tier), uygulamanın işlem mantığını içerir. Son bölüm, veri katı (data tier), uygulamanın ihtiyacı olan veriyi sunan kattır. Çok Katlı Mimari Uygulamalarda görev ve sorumluluk ayırımını bir adım daha ileriye götürürsek, çok katlı (n-tier ya da multi-tier) mimari adını verdiğimiz ve bugünün uygulama sunucularının yaygın hale gelmesini sağlayan kavrama varırız. J2EE teknolojisi bu tip mimariler üzerine kurulmuştur. Çok yeni olmayan bu kavram ancak yeni yeni kabul görüyor. Bu hızlı değişimin nedeni, şirket ihtiyaçlarının hem hacim hem de karışıklık olarak artmasıdır. Artık şirketler değişik platformlar ve değişik yazılım dilleri kullanan ve karışık hetorojen ortamlarda çalışan uygulamalardan fazla zaman harcamadan yararlanmak istiyorlar. Genel olarak, J2EE uygulama mimarileri 5 ana kattan oluşur: İstemci Katı (Client Tier): Bu kat, geliştirilen uygulamaya ya da sisteme bağlanan diğer uygulamalar ya da cihazlardan oluşur. Örneğin: Internet tarayıcısı, Java applet, WAP telefon... Sunuş Katı (Presentation Tier): Bu kat, sistemin istemcileri için gerekli olan her türlü sunuş mantığını içinde bulundurur. Uygulamaya bağlanan istemcilerin taleplerini kaydeder, gerekli iş mantığının uygulanmasını sağlar, talebin işlenmesi sonucu ortaya çıkan veriyi sunulur hale getirip istemciye cevap yollar. J2EE'yi oluşturan teknolojilerden ikisi JSP (JavaServer Pages) ve Java Servlet bu katta bulunur. Uygulama ya da İş Katı (Applıcation/Business Tier): Uygulamanın hedef aldığı ve gereklerini tatmin etmek için geliştirildiği işe dayalı tüm bilgi işlem bu katta toplanır. Bu görev, J2EE'yi oluşturan bir diğer teknoloji olan EJB (Enterprise JavaBeans)'ler tarafından sağlanır. Entegrasyon Katı (İntegrationTier): Bu kat, uygulamanın görevini yerine getirmesi için gerekli olan sistem dışı yazılımlara, sistemlere ya da veri tabanlarına bağlantıları sağlamakla yükümlüdür. J2EE uygulamalarının bu bölümleri, genelde, JDBC (Java DataBase Connectivity), J2EE Connector ya da bağlantı kurulan yazılımlara özel arayüzleri kullanırlar. Kaynak Katı (Resource Tier): Bilgiişlem için gerekli veriler ve dış servisler bu katı oluşturur. KAYNAKÇA Nesneye Yönelik Programlama-JAVA Ders Notları, Ders sorumlusu Yrd.Doç.Dr.Hilmi KUŞÇU Java Programlama Diline Giriş “Merhaba Dünya”, CanburakTümer Kaynak:http://www.bilgiustam.com/java-nedir-nasilcalisir/ http://www.yazilimdevi.com/Makaleler-583--javanincalisma-mantigi-ve-jvm--jre--jdk-kavramlari.aspx http://www.teknoturk.org/docking/yazilar/tt000051yazi.htm