1. Bölüm Java ya Giriş Java ile Nesne Merkezli Programlamaya Giriş Akın Kaldıroğlu



Benzer belgeler
Akın Kaldıroğlu Java ile Nesne Merkezli Programlama

Akın Kaldıroğlu Şubat 2009

Java Temel Özellikleri

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

BBS515 Nesneye Yönelik Programlama. Ders 1 Zümra Kavafoğlu

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

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

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

Java Programlama Giriş

Java JDK (Java Development Kit) Kurulumu:

BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

Bahar. BM 211 Programlama Dilleri 3 1

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

3. Bölüm Soyut Sınıflar (Abstract Classes) Java ile Nesne Merkezli ve Fonksiyonel Programlama Akın Kaldıroğlu

Programlama Dillerinde Kullanılan Veri Tipleri

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

2. Bölüm Nesne Merkezli Programlamanın Temelleri Java ile Nesne Merkezli Programlamaya Giriş Akın Kaldıroğlu

C# nedir,.net Framework nedir?

İçerik. Temel Kavramlar. Yazılım Geliştirme Aşamaları. Problemi Anlama ve Çözümleme. Biçimsel Gösterim - 1. Nesneye Yönelik Programlama

Öğr. Gör. Serkan AKSU 1

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

Temel Kavramlar. BS-515 Nesneye Yönelik Programlama. Ders #1 (26 Ekim 2009)

İÇERİK 2 Java Kodlaması için Gerekli Programlar JRE, JDK kurulması ve Başlangıç Ayarları Java Kodlamayı Kolaylaştıran IDE ler Java Kod Yapısı İlk Java

Java 2 Micro Edition (J2ME)

Client Server Database

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Nesneye yönelik: Javada herşey bir nesnedir. Java nesne yönelimli olduğu için kolayca geliştirilebilir.

Java Programlamaya Giriş

GÖRSEL PROGRAMLAMA - I

OMNET Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

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

BİL-141 Bilgisayar Programlama I (Java)

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1

Metin Editörleri YRD. DOÇ. DR. ENGİN CEMAL MENGÜÇ. ALINTI:

Açık Kaynak Öğrenme Yönetim Sistemleri (Learning Management Systems) Ceren Çalıcı

Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi

ÖZGÜR YAZILIMLAR İLE J2EE

Selsoft Eğitim Kataloğu

Genel Programlama II

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

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

Lecture 11: Generics

JavaServerFaces. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4

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

Üst Düzey Programlama

Bölüm1. İlk Bilgiler ISBN

Moodle-IST Kullanım Klavuzu

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

5. Bölüm Alt Sınıflar (Nested Classes) Java ile Nesne Merkezli ve Fonksiyonel Programlama Akın Kaldıroğlu

İşletim Sistemlerine Giriş

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

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

MALTEPE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ LİSANS PROGRAMI

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

R ile Programlamaya Giriş ve Uygulamalar

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

ALGORİTMA VE PROGRAMLAMA I

HSancak Nesne Tabanlı Programlama I Ders Notları

JAVA PROGRAMLAMAYA GİRİŞ

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

Java EE 5 Teknolojileri Jboss Seam

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

public static int Toplam int x, int y

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

Üst Düzey Programlama

.com. Kurumsal Java. Özcan Acar com

EMC Forum Yazılım Temelli Veri Depolama Moro Hekim Sistem Mühendisi

Java Dersi. Altuğ Bilgin Altıntaş

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

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

YZM 2105 Nesneye Yönelik Programlama


Tekir (Ön Muhasebe Yazılımı)

İnternet Programcılığı

Temel Bilgisayar (Basic Computer) Yazılım (Software)

İşletim Sistemleri. Discovering Computers Living in a Digital World

MOODLE UZAKTAN ÖĞRETİM SİSTEMİ

PHP 1. Hafta 2.Sunum

NESNEYE YÖNELİK PROGRAMLAMA

Swing ve JDBC ile Database Erişimi

1.1. Yazılım Geliştirme Süreci

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

BBS515 Nesneye Yönelik Programlama

1 PROGRAMLAMAYA GİRİŞ

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

1. HAFTA TEMEL KURULUM İŞLEMLERİ ve NESNE TABANLI PROGRAMLAMA KAVRAMLARI

İşletim Sistemlerine Giriş 2. Kaynakların Paylaşımı. Öğr.Gör. Dr. Şirin KARADENİZ

Program Nedir?(1) Programlamaya Giriş

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

JAVA API v2.0 Belge sürümü: 2.0.2

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Dizi ( Array ) ve Dizgi ( String )

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

Veritabanı. Ders 2 VERİTABANI

Bölüm 1. Ön Hazırlıklar ISBN

Transkript:

Java ile Nesne Merkezli Programlamaya Giriş 1. Bölüm Java ya Giriş Akın Kaldıroğlu Mayıs 2015

Küçük Ama Önemli Bir Konu Ø Bu dosya ve beraberindeki tüm, dosya, kod, vb. eğiam malzemelerinin tüm hakları Akın Kaldıroğlu na aier. Ø Bu eğiam malzemelerini kişisel bilgilenme ve gelişiminiz amacıyla kullanabilirsiniz ve isteyenleri hip:// adresine yönlendirip, bu malzemelerin en güncel hallerini almalarını sağlayabilirsiniz. Ø Yukarıda bahsedilen amaç dışında, bu eğiam malzemelerinin, Acari olsun/ olmasın herhangi bir şekilde, toplu bir eğiam faaliyeande kullanılması, bu amaca yönelik olsun/olmasın basılması, dağırlması, gerçek ya da sanal/ Internet ortamlarında yayınlanması yasakrr. Böyle bir ihayaç halinde lüten benimle, akin@javaturk.org adresinden ileaşime geçin. Ø Bu ve benzeri eğiam malzemelerine katkıda bulunmak ya da düzeltme ve eleşarilerinizi bana iletmek isterseniz çok sevinirim. Ø Bol Java lı günler dilerim. 2

Java nın Kısa Bir Tarihi 3

Java nın Kısa Tarihi Ø 1991 de Sun, Patrick Naughton, Mike Sheridan ve James Gosling önderliğindeki küçük bir takımla bir proje başla]. Ø 13 kişiden oluşan ve Green Team (Yeşil Takım) adlı bu grubun amacı ITC dünyasında geleceği tahmin edip ona yönelik AR- GE yapmakr. Ø Ve bu takım da geleceğin, kişisel ve ev elektronik cihazlarında olduğunu öngörüp bu alana yöneldi. 4

*7 Ø 18 aylık hummalı bir çalışmadan sonra 1992 yazında *7, Star Seven isimli ve dokunmalı ekrana sahip bir kontrol cihazı gelişardirler. Ø Bu cihaz TV, video oynarcısı ve müzik sea gibi pek çok ev cihazını kontrol edebiliyordu. Ø Cihazın bu yeteneği, platormdan bağımsız bir dile sahip olmasından kaynaklanıyordu. Ø James Gosling bu dile Oak adını vermişa. 5

Java ve Internet Ø Bu proje pek çok kablolu TV şirkeane teklif edildi ama zamanının ilerisinde olduğundan kabul görmedi. Ø Ama takımın ileri gelenleri o sırada, gelişardikleri altyapının Internet e çok uygun olduğunu farkeeler. Ø Ve hemen yönlerini değişarip, ismi daha sonra resmi olarak HotJava olan Java- tabanlı bir tarayıcı gelişardiler: WebRunner 6

İç Giyim Olarak Oak Ø Gosling explains: "We had already been developing the kind of `underwear' to make content available at the same 9me the Web was being developed. Even though the Web had been around for 20 years or so, with FTP and telnet, it was difficult to use. Then Mosaic came out in 1993 as an easy- to- use front end to the Web, and that revolu9onized people's percep9ons. The Internet was being transformed into exactly the network that we had been trying to convince the cable companies they ought to be building. All the stuff we had wanted to do, in generali9es, fit perfectly with the way applica9ons were wripen, delivered, and used on the Internet. It was just an incredible accident. And it was patently obvious that the Internet and Java were a match made in heaven. So that's what we did." 7

Oak tan Java ya Ø Oak ismi bu sırada Java olarak değişarildi, Ø Ve 23 Mayıs 1995 te Java resmi olarak piyasaya sunuldu. Ø Ve o tarihlerde ne Java yı gelişarenlerin ne de bir başkasının tahmin edemeyeceği yoğunlukta bir ilgiyle karşılaşr. Ø 2010 yılında Oracle ın Sun ı sarn almasıyla da Java el değişarmiş oldu. 8

Java Nedir? 9

Java Nedir? Ø Sun, 1995 te Java yı sunarken yayınladığı ve Java nın babası James Gosling in kaleme aldığı bir yazıda Java yı şöyle tanıryordu: Ø Java: Basit, nesne- merkezli, ağlarda yetenekli, yorumlanan, sağlam, güvenli, mimari olarak tarafsız, taşınabilir, yüksek performanslı/başarımlı, çok kanallı, dinamik bir dil. Ø Java: A simple, object- oriented, network- savvy, interpreted, robust, secure, architecture neutral, portable, high- performance, mulkthreaded, dynamic language. 10

Java BasiEr I Ø Java nın o kadar da basit değildir aslında, Ø Java, ataları olan C ve C++ dillerinden daha basier. Ø Çünkü bu dillerde olan ve karmaşıklık gearen özellikleri ve yapıları içermez: Ø Pointer aritmeaği, Ø Programcıya bağımlı bellek yöneami (memory management), Ø İşlemci çoklu kullanımı (operator overloading), Ø PlaTorm bağımlı yapılar. Ø Java soyut dolayısıyla daha yüksek seviyeli bir dildir. 11

Java BasiEr II Ø Java bu dillere göre aşağıdaki avantajlara da sahipar: Ø Standartlar üzerine kurulmuş olmak, Ø PlaTorma bağlı olmayan yapılara (örneğin basit veri yapıları) sahip olmak, Ø Daha derli- toplu gelişarme ortamlarına sahip olmak, Ø Temel dil dışında da kurumsal ve gömülü uygulama yapılarına sahip olmak Ø Başlarda Java, küçük, sade ve güçlü olmayı tercih ee, Ø Ama özellikle 5 sürümüyle başlayan eklemelerle Java bayağı büyüdü. Ø Generic yapıları, Ø 8 sürümüyle gelen fonksiyonel yapılar. 12

Java Nesne Merkezlidir I Ø Java nesne- merkezli bir dildir. Ø Nesne- merkezli diller, daha çok aşina olunan prosedürel/ yordamsal dillerden çok farklıdırlar. Ø Yordamsal dillerde en önemli kavram/soyutlama yordam/ prosedür/fonksiyondur ve bu yapılar, bir problemi alt problemlere bölüp, her birini adım adım (step- wise decomposiaon) tanımlamakta kullanılır. Ø Fakat nesne- merkezli diller tamamen nesne kavramı üzerine otururlar. 13

Nesne Nedir? Ø Nesne, insan zihninin kendisine yöneldiği, özellik ve davranışlara sahip, fiziksel olan ya da olmayan herhangi bir olgudur. Ø Yazılımda her Ap nesne için, verisi ile davranışını bir paket haline gearip sarmalayan (encapsulakon) ve adına genelde sınıf (class) denen kalıplar (şablonlar) oluşturulur. Sınıf = Veri + Davranış Ø Nesneler, şablonlardan yani sınıflardan ürealmiş çalışma zamanı yapılarıdır. 14

Nesne ve Varlıklar/Olgular Ø Nesneler gerçek dünyadaki varlıkları ya da olguları ifade ederler Ø Nesnelerin özellikleri gerçek varlıkların/olguların özelliklerine, Ø Nesnelerin davranışları ise varlıkların/olguların birbirleriyle olan ileaşimine, Ø karşılık geldiği söylenebilir. 15

Java Nesne Merkezlidir II Ø Java da basit veri Apleri hariç herşey, bütün Apler, bir nesnedir. Ø Çok güçlü kapsülleme (encapsulakon) ve bilgi saklama (informakon hiding) mekanizmaları vardır. Ø Arayüz (interface) ile gerçekleşkrme (implementakon) arasında çok açık bir ayrım vardır. 16

Java Ağlarda Yeteneklidir Ø Tarihi olarak Java nın ve Web devriminin doğumu aynı döneme rast gelmişar. Ø Bu yüzden Java, ağ ve ilgili yapılar akılda tutularak tasarlanmış ilk dildir. Ø Java ile bilgisayar için değil ağ için yazılım gelişarirsiniz. Ø HTTP ve HTTPs gibi en yaygın Web protokolleri Ø Web Servisleri Ø Uzak nesneler (remote objects) Ø Ve Telnet, FTP vs. gibi diğer bütün protokoller 17

Java Yorumlanır Ø PlaTormdan bağımsız olabilmesi için Java kaynak kodları doğrudan makina koduna derlenmez, Ø Java kaynak kodları (.java dosyaları), Java bytecodeuna (.class dosyaları) derlenir. Ø Bytecode, JVM in komutlarıdır ve çalışma zamanında (run- Ame) JVM tarayndan yorumlanır. Ø JVM (Java Virtual Machine ya da Java Sanal Makinası), donanım ve işleam sistemi üzerinde çalışan sanal bir platormdur. 18

Java Yorumlanır Ø Aslında Java hem derlenen (compiled) hem de yorumlanan (interpreted) bir dildir. Ø Java kaynak kodları (.java dosyaları) Java bytecodelarına (.class dosyaları) derlenir. Ø Bytecodelar çalışma zamanında (run- Ame) JVM tarayndan yorumlanır. Ø Dolayısıyla Java da kod yazarken, nihai çalışma ortamını bilmeniz gerekmez. Ø Taşınabilir (portable) 19

20

Bytecode Nedir? Ø Bytecode, JVM in makina dilidir, Ø Bir byte uzunluğunda olduğu için böyle adlandırılmışrr. Ø Bytecode, herhangi bir işlemciye özel değildir ya da bir başka deyişle tamamen ve sadece JVM e özeldir, Ø Bytecodelar, JVM tarayndan çalışma zamanında (run- Ame) platorma özel komutlara çevrilir: Ø Yorumlama Ø Bu şekilde Java nın platormdan bağımsız ya da taşınabilir olması sağlanır. 21

JVM Ø JVM (Java Virtual Machine ya da Java Sanal Makinası), donanım ve işleam sistemi üzerinde çalışan sanal bir platormdur. Ø Hemen her platorm için en az bir JVM mevcuiur. Ø Derlenmiş Java kodlarıyla platorm arasında bir katman oluşturur ve aynı bytecodeların farklı platormlarda değişmeden, aynı şekilde çalışmasını sağlar. 22

23

24

public class Selam { private String world = "millet"; } public String selamsoyle(string kime) { String cumle; if(kime!= "") cumle = "Selam " + kime + " :)"; else cumle = "Selam " + world + " :)"; } return cumle; public class SelamTest { } public static void main(string[] args) { Selam selam = new Selam(); String cevap = selam.selamsoyle("ali"); System.out.println(cevap); } 25

Java Taşınabilirdir Ø Java tanımlı standartlar ve şartnameler (specificakons) üzerine kurulmuştur. Ø Bu açıdan Java da gerçekleşarmeye (implementaaon) bağlı hiçbir noktanın olmaması amaçlanmışrr. Ø Örneğin int veri Api her yerde 32 bier. Ø Ayrıca, Java dili ve JVM, platormlarla alakalı sadece en genel ön kabullere sahipar. Ø Bu durum Java nın platorm bağımsızığı ve taşınabilirliğinin sağlayıcısıdır ve Java programcısına üzerinde çalışrğı ortamdan bağımsız davranma gücünü verir. 26

WORA Ø Başından bu yana bir kere yaz her yerde çalışsr (Write Once, Run Anywhere, WORA) Java nın taşınabilirlik konusundaki hedefidir. Ø Tabi olarak bu prensibin geçerli olması için programcı da platorma özel kod yazmamalıdır. Ø Java yı uzunca süredir uygulayanlar, bir kere yaz her yerde test et J (Write Once, Test Anywhere, WOTA) prensibinin daha doğru olduğu üzerinde hemfikirdirler. 27

Java Sağlamdır Ø Sağlamlık (robustness) çalışma zamanı güvenirliği olarak tanımlanır. Ø Java, dayanıklı (reliable) ve sağlam yazılımlar üretmek için tasarlanmışrr. Ø Java güçlü bir Ap sistemine sahipar dolayısıyla hem derleme zamanında hem de çalışma zamanında Ap uyumu ve çevrimi (cast) kontrol edilir, Ø Sıra dışı durumları ele almak için mekanizma oluşturulmuştur (excepaon handling), Ø Bellek yöneami otomaakar, programcıya bırakılmamışrr. Ø Ve daha pek çok derleme/çalışma zamanı kontrollerini içerir. 28

Java Güvenlidir Ø Java nın ağ ortamlarında kullanılmak için tasarlanmış olduğu beliralmişa. Ø Bu yüzden Java, ağ ortamlarında bulunmanın geardiği tehlikelere karşı koyacak şekilde yapılandırılmışrr. Ø Yabancı makinalardaki nesnelerin, yerel makinadaki nesnelere ve işleam sistemine erişimi kontrol alrndadır. Ø Java nın ilk yıllarında duyulan güvenlik açıklarına arrk pek rastlanılmamaktadır. Ø Java daki güvenlik API ları sayesinde şifrelemeden (encrypaon) sayısal imzalara (digital signatures) kadar her türlü güvenlik kodu yazılabilir. 29

Java Mimari Olarak Tarafsızdır Ø Java, birbirlerinden farklı, pek çok değişik platormun bulunduğu ağ üzerinde çalışmak için tasarlandığından, herhangi bir platormu varsaymaz, platormlardaki ortak özellikler dışında herhangi bir ön kabulü yoktur. Ø Bu durum Java nın sanal bir makina üzerinde çalışması ve hiçbir platorma varsaymayan bir şekilde, standartlar üzerine inşa edilmesinin bir sonucudur. Ø Java bytecode da herhangi bir platorma bağımlı değildir. 30

Java Yüksek Başarımlıdır I Ø Bu özelliği tabiki açıklanmaya muhtaçrr. Ø Nesne- merkezli diller, Ap hiyerarşileri ve polimorfizm gibi özelliklerinden dolayı zaten çalışma zamanında çok iş yaparlar. Ø Java, taşınabilir ve mimari olarak tarafsız olmak için sanal makina gibi bir ara katman üzerinde çalışmayı tercih etmişar, Ø Ayrıca Java sağlam bir çalışma zamanı kurgulamak için çalışma zamanında daha pek çok kontroller sahipar. Ø Java nın soyut olan yapısı da makina arasında daha fazla katmana sahip olmasına sebep olmaktadır. Ø Bu ve benzeri durumların Java yı tabii olarak çalışma zamanında daha yavaş kılabilmektedir. 31

Java Yüksek Başarımlıdır II Ø Java nın çalışma zamanı performansını ar]rmak için çok mesafe katedilmişar. Ø Etkin derleyiciler (OpAmizing compiler) HotSpot, JRockit, vd. Ø Etkin JIT ve benzeri teknolojiler Ø Java cılar da performanslı kod yazmak için hem hız hem de bellek tükeami açısından, diğer dilleri kullananlara göre daha bilgili olmalıdırlar. 32

Java Yüksek Başarımlıdır III Ø Ama unutulmamalıdır ki projeler daha çok ihayaçların yanlış kavranması vs. gibi sebeplerden başarısız olmaktadır, performanstan değil. Ø Ayrıca performans ve ölçeklenebilirlik (scalability) genel olarak mimarinin bir özelliğidir ve mimariler bu konulardaki hedefler gözönüne alınarak tasarlanmalıdır. 33

Java Çok Kanallıdır Ø Kanal (thread), bir işlem/süreç (process) içinde oluşturulan küçük bir işlem/süreçar (lightweight process). Ø Aynı işlem içinde çalışan farklı kontrol akışlarına kanal denir. Ø Kanallar aynı işlem içinde çalışrklarından, birçok işi aynı anda ve daha hızlı ve etkin olarak yerine gearebilirler. Ø Böylece daha yetenekli ve hızlı cevap veren yazılımlar gelişarilebilir. Ø CPU ve platormların çok hızlı hale gelmesi, dillerdeki çok kanallı özellikleri kullanmamızı gerekarmektedir. 34

Java DinamikAr Ø.class dosyalarındaki Java Aplerinin daha program derlenirken hazır olmaları şart değildir, Apler JVM e çalışma zamanında her hangi bir anda yüklenebilir. Ø Dolayısıyla pek çok dilde var olan derleme zamanındaki staak bağlanr kurma (staac linking) genel olarak Java da yoktur. Ø Bu da ağ üzerinde çalışan ve derleme sırasında erişilmesi mümkün olmayıp, çalışma zamanında ulaşılan nesnelerin dinamik olarak JVM e yüklenebilmesini sağlar. 35

Java nın Diğer Özellikleri 36

Java nın Sahibi Kimdir? Ø Excel in sahibinin Microso{ olması anlamında Java nın sahibi yoktur. Ø 2010 yılına kadar Java nın orijinal gelişaricisi olan Sun, Java nın sahibi ve lisanslayıcısıydı. Ø 2010 yılında Oracle Sun ı sarn alarak, Java nın sahibi ve lisanslayıcısı oldu. 37

Java yi Kim GelişArmektedir? Ø Java, JCP (Java Community Process, hip://www.jcp.org) tarayndan gelişarilmektedir. Ø JCP, kişi ve kuruluşların serbestçe karlabildiği ve kararların oy çoğunluğu ile verildiği milletlerarası bir ortamdır. Ø Çok farklı bilgi ve tecrübeye sahip binlerce kişi ve kurum JCP çarsın alrnda Java nın gidişarnı belirlerler. Ø Her ne kadar Oracle (eskiden Sun), JCP de çok etkin olsa ve bu yüzden eleşarilse de Java nın geleceği çok daha demokraak yollarla belirlendiği söylenebilir. 38

JSR I Ø JCP nin üyeleri yeni bir Java teknolojisini Java Sepecifica9on Request (JSR) mekanizması ile teklif edebilirler. Ø Her JSR ın bir yürütücü heyea ve teknik bir lideri vardır. Ø JSR lar, içinde halka açık incelemenin de (public review) bulunduğu bir dizi sa adan geçip demokraak bir oylama ile sonuçlandırılırlar. 39

JSR II Ø Kabul edilen her JSR aşağıdaki üç şeyi üretmek zorundadır: Ø API ı da içeren bir şartname (specificaaon) Ø Bir referans gerçekleme (reference implementaaon) Ø Teknoloji uyumluluk pakea (technology compaability kit) Ø Dolayısıyla her Java teknolojisi gerçekleşarmesi, bu açık ve üzerinde mutabakat oluşmuş tarifname ve API lar üzerine bina edilirler. Ø İsteyen her kişi ve kurum da bu tarifnameler üzerine ürün gelişarip, bedava ya da ücreayle lisanslayabilir. 40

Özgür Yazılım Ø Java nın bu açık ve standartlara dayalı yapısı özgür yazılımların gelişmesine de yardımcı olmaktadır. Ø Java bugün açık kaynak kodlu (open source) yazılım felsefesine gönül verenlerin en fazla kullandıkları dil haline gelmişar. Ø Bu sayede hemen her Java teknolojisinin Acari olmayan, açık kaynak kodlu gerçekleşarmesi mevcuiur. 41

Java nın Tipleri Ø Sun, tek bir Apin yeterli olmayacağını düşünerek, Java nın üç farklı Apini oluşturmuştur: Ø Standart Java (Standard EdiAon, SE) Ø Mikro Java (Micro EdiAon, ME) Ø Kurumsal Java (Enterprise EdiAon, EE) Ø Şu anda Ø Java SE nin 8. sürümü vardır, 9.si 2016 ya planlanmışrr Ø Java EE nin 7. sürümü vardır, 8.si 2016 ya planlanmışrr Ø Java ME nin 8. sürümü vardır. Ø hip://en.wikipedia.org/wiki/java_version_history 42

Java Derken Neyi Kastediyoruz? Ø Java Ø Bir programlama dilidir, Ø Bir gelişarme ortamıdır, Ø Bir uygulama ortamıdır, Ø Bir kurulum ortamıdır. Ø Bu anlamda Java, klasik programlama dillerinden farklı olarak, çok geniş ama yeknesak bir yazılım gelişarme eko- sistemi sunar. 43

Java ya Nasıl Başlarım? Ø Java ya hip://www.oracle.com/technetwork/java/index.html adresine gidip JDK in en son sürümünü indirip makinanıza kurarak başlayabilirsiniz. Ø JDK i kurduğunuz yerdeki bin klasörünü path e koyup, komut sarrı (CMD, terminal, etc.) javac ile kodunuzu derleyip, java ile de çalışrrabilirsiniz. Ø İsterseniz Netbeans (hip://www.netbeans.org) ya da Eclipse (hip://www.eclipse.org), IntelliJIDEA ( hip://www.jetbrains.com/idea/) gibi gelişarme ortamlarını da kullanabilirsiniz. 44

Java nın TabiaR ve Zorlukları I Ø Java nesne- merkezlidir, dolayısıyla arrk prosedürel değil nesne merkezli düşünmeniz gereklidir. Ø Java, sürükle- bırak merkezli programlama yaklaşımından ziyade, C/C++ geleneğine daha uygun olarak, ne yazdığınızı tam olarak bilmenizi ister. Ø Java şartname (specifica9on) temellidir: Ø Dolayısıyla şartname ve onu gerçekleşaren farklı ürünlerin olduğunu anlamanız gereklidir. Ø Dolayısıyla aynı işi yapan, aynı API ye sahip değişik ürünler vardır. 45

Java nın TabiaR ve Zorlukları II Ø Java, yazılım mimarilerine, tasarım şablonlarına (design paierns) önem verir ve onları kullanır. Ø Java da düşünmek ve modellemek yazmaktan daha önemlidir Ø Küçük bir şey yapmak için bile hiç tahmin edemeyeceğiniz kadar düşünmeniz gerekebilir. Ø Dolayısıyla hızlıca sürükle- bırak şeklinde gelişarme yerine tasarımı üzerine düşünülmüş, sürekle- bırak kullanılsa bile arka planda ne olup bieği iyice bilinen gelişarme modeli daha uygundur. Ø Amaç, örneğin, 2000 sarrlık ASP ya da PHP sayfası yerine, çoğunlukla sarr sarr yazılmış ama çok daha modüler ve şablonlara uygun tasarlanmış 50-100 sarrlık JSP sayfaları yazmakrr. Ø Java özgür ve açık kaynak kodlu yazılımların en yoğun olduğu dildir: Ø Dolayısıyla aynı işi yapan açık kaynak kodlu pek çok farklı ürün vardır. 46

Java Sertifikaları 47

Java SerAfikaları I Ø Java yı, sistemli bir şekilde, temellerinden başlayarak öğrenmenin bir yolu da Oracle ın Java serafikalarını almakrr. Ø Oracle ın Java serafikaları, Java SE 5, 6 ve 7 ile Java EE 5, 6 ve 7 sürümleri ile Java ME üzerinedir. Ø SerAfikalar, tecrübeniz olmasa bile temel bilginizin sağlam olduğunu göstermenin en güzel yoludur. Ø OCP, Java Programmer olmak tecrübem yok ama Java nın temellerini iyi biliyorum demekar. Ø SerAfikalı olmak yurt dışı için çok önemlidir ve ülkemizde de giekçe daha fazla önem kazanmaktadır. 48

Neden SerAfika? Ø SerAfika alan bir Java cı, şu iki şeyi göstermiş olur: Ø Kendi kariyeri ile ilgili bir hedefi vardır ve buna doğru ilerlemektedir, Ø Tecrübesi olmasa bile gerekli bilgi donanımına sahipar. Ø Dolayısıyla, özellikle yeni mezunlar ya da Java da yeni bir yapıyı öğrenmek isteyenler için önemlidir. Ø Bu anlamda serafika sahibi olmak saygın bir durumdur. Ø Oracle ın Java serafikaları hakkında hip://educaaon.oracle.com/pls/web_prod- plq- dad/ ou_product_category.getfamilypage?p_family_id=48 sayfasından geniş bilgi alabilirsiniz. 49

Java SE SerAfikaları I Ø Java SE serafikaları, girişten başlayarak, Associate (OCA), Professional (OCP) ve Master (OCM) adlarında 3 seviye olarak yapılandırılmışrr: 50

Java SE SerAfikaları II Ø OCA ve OCP, çoktan seçmeli sınavlardır. Ø OCA, OCP için, OCP de OCM için zorunludur. Ø OCA sınırlı ve giriş seviyede, OCP ise yerelleşarme, çok kanallı programlama ve veri tabanı programlaması gibi konuları da içeren, dolayısyla Java SE bilgisini ölçmektedir. Ø OCM ise bir proje ödevi ve bu ödevle ilgili yazılan bir makaleyi içermektedir. Ø Kasım 2014 iabariyle henüz Java SE serafikası çıkmamışrr. 51

Java EE SerAfikaları Ø Java EE serafikaları temelde farklı Java EE teknolojilerine odaklanan ve onlardaki yetkinliği gösteren serafikalardır Ø Java EE 5 için OCP, Java EE 6 için ise OCE (Oracle CerAfied Expert) 52

Java SerAfikaları III OCM, Java EE 5 Enterprise Architect OCP, Java EE 5 Web Component Developer OCP, Java EE 5 Business Component Developer OCP, Java EE 5 Web Services Developer OCM, Java SE 6 Developer OCM, Java EE 6 Enterprise Architect OCP, Java Pla\orm, Enterprise EdiKon 6 Web Component Developer OCP Java SE 5/6/7 OCA Java SE 5/6/7 OCE, Java Pla\orm, Enterprise EdiKon 6 Enterprise JavaBeans Developer OCE, Java Pla\orm, Enterprise EdiKon 6 Java Persistence API Developer OCE, Java Pla\orm, Enterprise EdiKon 6 Web Services Developer OCP, Java ME 1 Mobile ApplicaKon Developer 53

Daha Fazla AyrınR İçin Ø Oracle ın Java SE SerAfikaları: OCA, OCP ve OCM hip:///?p=2375 Ø Oracle ın Java EE 5 SerAfikaları: OCP ve OCM hip:///?p=2404 Ø Oracle ın Java EE 6 SerAfikaları: OCE ve OCM hip:///?p=2431 Ø Oracle ın Java serafika sayfası hip://educaaon.oracle.com/pls/web_prod- plq- dad/ ou_product_category.getfamilypage? p_family_id=48&p_mode=ceraficaaon 54

Dünyada ve Türkiye de Java 55

Dünyada Java - I Ø Java, dünya çapında en büyük gelişarme toplumuna sahip olan dildir, Ø TIOBE indexinde ( hip://www.aobe.com/index.php/content/paperinfo/tpci/ index.html) Şubat 2015 de ikincidir. Ø LangPop.com da göre de ikincidir. Ø Dünya çapında 7 ila 10 milyon civarında gelişarici sayısından bahsedilmektedir. Ø Dünyadaki programcıların TIOBE ye göre %17 si, Langpop a göre ise %15 i Java kullanmaktadır. Ø Muhtemelen ülkemizdeki durum daha değişikar. 56

Dünyada Java - II Ø Sayısı 250 nin üzerinde JUG lar son derece faal topluluklardır. Ø Yıllık konferanslar, web üzerinden erişilebilen dergi, blog, forum vb. yazılı ve video kaynaklar ile çok zengin bir bilgilenme ortamı sunar. Ø 24 Şubat 2015 akşamı iabariyle Amazon da Java için 24,405, C++ için 7,398, Python için 4,581, C# için ise 5,794 kitap sonucu gelmektedir. 57

Ülkemizde Java Ø Ülkemizde Java daha çok büyük ölçekli yazılımlar ile mobil ortamlarda kullanılmaktadır. Ø Büyük ölçekli yazılımlar ise ezici olarak sunucu merkezli (server- centric) yazılımlardır. Ø Sayı olarak daha fazla C#/.NET programcısının olduğu iddia edilebilir. Ø Kesin sayıları söylemek mümkün değil. 58

Üniversitelerde Java Ø En son ACM yayınına göre ABD de CS bölümlerinde, programlamaya giriş dersinde kullanılmada Python ilk sırada, Java ise ikinci sıradadır. Ø hip://cacm.acm.org/blogs/blog- cacm/176450- python- is- now- the- most- popular- introductory- teaching- language- at- top- us- universiaes/fulltext Ø Bunda Python un çok basit ve kısa sözdizimi, interpreted yapısı, basit shell arayüzü ve dinamik Ap yapısı etkilidir. Ø hip://javarevisited.blogspot.com.tr/2013/11/java- vs- python- which- programming- laungage- to- learn- first.html 59

Türk Üniversitelerinde Java Ø Çoğunlukla, C, C++, C#/.NET ve Java öğrealiyor. Ø Hiç Java ile uğraşmadan mezun olanlarla sık sık karşılaşıyoruz. Ø C#/.NET, muhtemelen dünya ortalamasının çok üstünde bir oranda öğrealiyor. Ø Python gibi diller ise azınlıktadır. 60

Online Java EğiAmleri Ø Java ile Nesne- Merkezli Programlamaya Giriş (IntroducAon to Object- Oriented Programming with Java) Ø Java ile Nesne- Merkezli ve Fonksiyonel Programlama (Object- Oriented and FuncAonal Programming with Java) Ø Daha fazla bilgi için hip:// adresini ziyaret edebilirsiniz. 61