Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi!...

51
Akın Kaldıroğlu Java ile Nesne Merkezli Programlama www.javaturk.org Şubat 2014 www.javaturk.org

Transcript of Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi!...

Page 1: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

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

www.javaturk.org    Şubat  2014  www.java

turk.org

Page 2: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Küçük  Bir  Konu  Ø  Bu  dosya  ve  beraberindeki  tüm,  dosya,  kod,  vb.  eği=m  malzemelerinin  tüm  

hakkı  Akın  Kaldıroğlu’na  aiDr.  Ø  Bu  eği=m  malzemelerini  kişisel  bilgilenme  ve  gelişiminiz  amacıyla  

kullanabilirsiniz  ve  isteyenleri  hHp://www.javaturk.org  adresine  yönlendirip,  bu  malzemelerin  en  güncel  hallerini  almalarını  sağlayabilirsiniz.  

Ø  Yukarıda  bahsedilen  amaç  dışında,  bu  malzemelerin,  =cari  olsun/olmasın  herhangi  bir  şekilde,  toplu  bir  eği=m  faaliye=nde  kullanılması,  bu  amaca  yönelik  olsun/olmasın  basılması,  dağıQlması,  gerçek  ya  da  sanal  ortamlarda  yayınlanması  yasakQr.  Böyle  bir  ih=yaç  halinde  lüRen  benimle  ile=şime  geçin.  

Ø  Bu  eği=m  malzemelerine  katkıda  bulunmak  ya  da  eleş=rilerinizi  bana  iletmek  isterseniz  çok  sevinirim.    

Ø  Bol  eğlenceli  ve  Java’lı  günler  dilerim.    

           Akın  Kaldıroğlu                [email protected]    

2 www.javaturk.org

www.java

turk.org

Page 3: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java’nın  Kısa  Tarihi  Ø 1991  yılında  Sun,  kapalı  kapılar  ardında  ve  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)  adı  verilen  bu  grubun  amacı  ITC  dünyasında  geleceği  tahmin  edip  ona  yönelik  AR-­‐GE  yapmakQ.  

Ø Ve  bu  takım  da  geleceğin,  kişisel  ve  ev  elektronik  cihazlarında  olduğunu  öngörüp  bu  alana  yöneldi.  

3 www.javaturk.org

www.java

turk.org

Page 4: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

*7  Ø 18  aylık  hummalı  bir  çalışmadan  sonra  1992  yazında  “*7”,  “Star  Seven”  isimli  ve  dokunmalı  ekrana  sahip  bir  kontrol  cihazı  geliş=rdirler.  

Ø Bu  cihaz  TV,  video  oynaQcısı  ve  müzik  se=  gibi  pek  çok  ev  cihazını  kontrol  edebiliyordu.  

Ø Cihazın  bu  yeteneği,  plaRormdan  bağımsız  bir  dile  sahip  olmasından  kaynaklanıyordu.  

Ø James  Gosling  bu  dile  “Oak”  adını  vermiş=.  

4 www.javaturk.org

www.java

turk.org

Page 5: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  ve  Internet  Ø Bu  proje  pek  çok  kablolu  TV  şirke=ne  teklif  edildi  ama  zamanının  ilerisinde  olduğundan  kabul  görmedi.  

Ø Ama  takımın  ileri  gelenleri  o  sırada,  geliş=rdikleri  altyapının  Internet’e  çok  uygun  olduğunu  farkeDler.  

Ø Ve  hemen  yönlerini  değiş=rip,  ismi  daha  sonra  resmi  olarak  HotJava  olan  Java-­‐tabanlı  bir  tarayıcı  geliş=rdiler:  WebRunner  

5 www.javaturk.org

www.java

turk.org

Page 6: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

İç  Giyim  Olarak  Oak  Ø Gosling  explains:  "We  had  already  been  developing  the  kind  of  `underwear'  to  make  content  available  at  the  same  @me  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  revolu@onized  people's  percep@ons.  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  generali@es,  fit  perfectly  with  the  way  applica@ons  were  wriTen,  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."    

6 www.javaturk.org

www.java

turk.org

Page 7: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Oak’tan  Java’ya  Ø Oak  ismi  bu  sırada  Java  olarak  değiş=rildi,  

Ø Ve  23  Mayıs  1995’te  Java  resmi  olarak  piyasaya  sunuldu.  

Ø Ve  o  tarihlerde  ne  Java’yı  geliş=renlerin  ne  de  bir  başkasının  tahmin  edemeyeceği  yoğunlukta  bir  ilgiyle  karşılaşQ.  

Ø 2010  yılında  Oracle’ın  Sun’ı  saQn  almasıyla  da  Java  el  değiş=rmiş  oldu.  

7 www.javaturk.org

www.java

turk.org

Page 8: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

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ıQyordu:  

Ø 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,  mulHthreaded,  dynamic  language.  

8 www.javaturk.org

www.java

turk.org

Page 9: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  BasiDr  I  Ø Java’nın  o  kadar  da  basit  değildir  aslında,  

Ø Java,  ataları  olan  C  ve  C++  dillerinden  daha  basiDr.  

Ø Çünkü  bu  dillerde  olan  ve  karmaşıklık  ge=ren  özellikleri  ve  yapıları  içermez:  Ø Pointer  aritme=ği,  Ø Programcıya  bağımlı  bellek  yöne=mi  (memory  management),  Ø İşlemci  çoklu  kullanımı  (operator  overloading),  Ø PlaRorm  bağımlı  yapılar.  

Ø Java  soyut  dolayısıyla  daha  yüksek  seviyeli  bir  dildir.  9 www.javaturk.org

www.java

turk.org

Page 10: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  BasiDr  II  Ø Java  bu  dillere  göre  aşağıdaki  avantajlara  da  sahip=r:  

Ø Standartlar  üzerine  kurulmuş  olmak,  Ø PlaRorma  bağlı  olmayan  yapılara  (örneğin  basit  veri  yapıları)  sahip  olmak,  

Ø Daha  derli-­‐toplu  geliş=rme  ortamlarına  sahip  olmak,  Ø Temel  dil  dışında  da  kurumsal  ve  gömülü  uygulama  yapılarına  sahip  olmak  

Ø Daha  küçük  ve  sade  bir  dil  ile  daha  güçlü  olmayı  tercih  eder,  Ø Ama  özellikle  5.0  sürümüyle  başlayan  eklemelerle  Java  bayağı  büyüdü.  Ø  Örneğin  generic  yapıları  

10 www.javaturk.org

www.java

turk.org

Page 11: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

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  decomposi=on)  tanımlamakta  kullanılır.  

Ø Fakat  nesne-­‐merkezli  diller  tamamen  nesne  kavramı  üzerine  otururlar.  

11 www.javaturk.org

www.java

turk.org

Page 12: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

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  =p  nesne  için,  verisi  ile  davranışını  bir  paket  haline  ge=rip  sarmalayan  (encapsulaHon)  ve  adına  genelde  sınıf  (class)  denen  şablonlar  oluşturulur.  

     Sınıf  =  Veri  +  Davranış  

Ø Nesneler,  şablonlardan  yani  sınıflardan  üre=lmiş  çalışma  zamanı  yapılarıdır.  

12 www.javaturk.org

www.java

turk.org

Page 13: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Nesne  ve  Varlıklar/Olgular  Ø Nesnelerin  çoğu  zaman  gerçek  dünyadaki  varlıkları  ya  da  olguları  ifade  eDkleri  düşünüldüğünde,  nesnelerin  özellikleri  gerçek  varlıkların/olguların  özelliklerine,  davranışları  ise  varlıkların/olguların  birbirleriyle  olan  ile=şimine  karşılık  geldiği  söylenebilir.  

13 www.javaturk.org

www.java

turk.org

Page 14: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Alan  Key’in  5  Kuralı  Ø Herşey  bir  nesnedir.  

Ø Program,  birbirlerine  mesaj  (message)  göndererek  ne  yapmalarını  belirten  nesnelerden  oluşur.  

Ø Her  nesne  diğer  nesnelerden  (associa=on/composi=on)  oluşur  ve  hayzada  yer  kaplar.  

Ø Her  nesnenin  bir  =pi  (type)  vardır.  

Ø Aynı  =pten  olan  nesneler  aynı  mesajları  alabilirler.  14 www.javaturk.org

www.java

turk.org

Page 15: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  Nesne  Merkezlidir  II  Ø Java’da  basit  veri  =pleri  hariç  herşey,  bütün  =pler,  bir  nesnedir.  

Ø Çok  güçlü  kapsülleme  (encapsulaHon)  ve  bilgi  saklama  (informaHon  hiding)  mekanizmaları  vardır.  

Ø Arayüz  (interface)  ile  gerçekleşHrme  (implementaHon)  arasında  çok  açık  bir  ayrım  vardır.  

15 www.javaturk.org

www.java

turk.org

Page 16: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  Ağlarda  Yeteneklidir  Ø Tarihi  olarak  Java’nın  ve  Web  devriminin  doğumu  aynı  döneme  rast  gelmiş=r.  

Ø 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ş=rirsiniz.  Ø 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  

16 www.javaturk.org

www.java

turk.org

Page 17: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  Yorumlanır  Ø PlaRormdan  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-­‐=me)  JVM  tarayndan  yorumlanır.  

Ø JVM  (Java  Virtual  Machine  ya  da  Java  Sanal  Makinası),  donanım  ve  işle=m  sistemi  üzerinde  çalışan  sanal  bir  plaRormdur.  

17 www.javaturk.org

www.java

turk.org

Page 18: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

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-­‐=me)  JVM  tarayndan  yorumlanır.  

Ø Dolayısıyla  Java’da  kod  yazarken,  nihai  çalışma  ortamını  bilmeniz  gerekmez.  Ø Taşınabilir  (portable)  

18 www.javaturk.org

www.java

turk.org

Page 19: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

19 www.javaturk.org

www.java

turk.org

Page 20: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Bytecode  Nedir?  Ø Bytecode,  JVM’in  makina  dilidir,  

Ø Bir  byte  uzunluğunda  olduğu  için  böyle  adlandırılmışQr.  

Ø 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-­‐=me)  plaRorma  özel  komutlara  çevrilir:  Ø Yorumlama  

Ø Bu  şekilde  Java’nın  plaRormdan  bağımsız  ya  da  taşınabilir  olması  sağlanır.  

20 www.javaturk.org

www.java

turk.org

Page 21: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

JVM  Ø JVM  (Java  Virtual  Machine  ya  da  Java  Sanal  Makinası),  donanım  ve  işle=m  sistemi  üzerinde  çalışan  sanal  bir  plaRormdur.  

Ø Hemen  her  plaRorm  için  en  az  bir  JVM  mevcuHur.  

Ø Derlenmiş  Java  kodlarıyla  plaRorm  arasında  bir  katman  oluşturur  ve  aynı  bytecodeların  farklı  plaRormlarda  değişmeden,  aynı  şekilde  çalışmasını  sağlar.  

21 www.javaturk.org

www.java

turk.org

Page 22: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

22 www.javaturk.org

www.java

turk.org

Page 23: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

23 www.javaturk.org

www.java

turk.org

Page 24: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

24

public class Selam{

public String selamSoyle(String isim){ return "Selam " + isim + " :)";

} }

public class SelamTest {

public static void main(String[] args) { Selam selam = new Selam(); String cevap = selam.selamSoyle("Ali"); System.out.println(cevap);

} }

www.javaturk.org

www.java

turk.org

Page 25: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  Taşınabilirdir  Ø Java  tanımlı  standartlar  ve  şartnameler  (specificaHons)  üzerine  kurulmuştur.  Ø Bu  açıdan  Java’da  gerçekleş=rmeye  (implementa=on)  bağlı  hiçbir  noktanın  olmaması  amaçlanmışQr.  Ø  Örneğin  int  veri  =pi  her  yerde  32  biDr.  

Ø Ayrıca,  Java  dili  ve  JVM,  plaRormlarla  alakalı  sadece  en  genel  ön  kabullere  sahip=r.  

Ø Bu  durum  Java’nın  plaWorm  bağımsızığı  ve  taşınabilirliğinin  sağlayıcısıdır  ve  Java  programcısına  üzerinde  çalışQğı  ortamdan  bağımsız  davranma  gücünü  verir.  

25 www.javaturk.org

www.java

turk.org

Page 26: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

WORA  Ø Başından  bu  yana  bir  kere  yaz  her  yerde  çalışPr  (Write  Once,  Run  Anywhere,  WORA)  Java’nın  taşınabilirlik  konusundaki  hedefidir.  

Ø Tabi  olarak  bu  prensibin  geçerli  olması  için  programcı  da  herhangi  bir  plaRorma  özel  kod  yazmamalıdır.  

Ø Java’yı  uzunca  süredir  uygulayanlar,  bir  kere  yaz  her  yerde  test  et  ☺  (Write  Once,  Test  Anywhere,  WOTA)  prensibinin  daha  doğru  olduğu  üzerinde  hemfikirdirler.  

26 www.javaturk.org

www.java

turk.org

Page 27: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

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ışQr.  Ø Java  güçlü  bir  =p  sistemine  sahip=r  dolayısıyla  hem  derleme  zamanında  hem  de  çalışma  zamanında  =p  uyumu  ve  çevrimi  (cast)  kontrol  edilir,  

Ø Sıra  dışı  durumları  ele  almak  için  mekanizma  oluşturulmuştur  (excep=on  handling),  

Ø Bellek  yöne=mi  otoma=k=r,  programcıya  bırakılmamışQr.  Ø Ve  daha  pek  çok  derleme/çalışma  zamanı  kontrollerini  içerir.  

27 www.javaturk.org

www.java

turk.org

Page 28: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  Güvenlidir  Ø Java’nın  ağ  ortamlarında  kullanılmak  için  tasarlanmış  olduğu  belir=lmiş=.  

Ø Bu  yüzden  Java,  ağ  ortamlarında  bulunmanın  ge=rdiği  tehlikelere  karşı  koyacak  şekilde  yapılandırılmışQr.  

Ø Yabancı  makinlardaki  nesnelerin,  yerel  makinadaki  nesnelere  ve  işle=m  sistemine  erişimi  kontrol  alQndadır.  Ø Java’nın  ilk  yıllarında  duyulan  güvenlik  açıklarına  arQk  pek  rastlanılmamaktadır.  

Ø Java’daki  güvenlik  API’ları  sayesinde  şifrelemeden  (encryp=on)  sayısal  imzalara  (digital  signatures)  kadar  her  türlü  güvenlik  kodu  yazılabilir.  

28 www.javaturk.org

www.java

turk.org

Page 29: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  Mimari  Olarak  Tarafsızdır  Ø Java,  birbirlerinden  farklı,  pek  çok  değişik  plaRormun  bulunduğu  ağ  üzerinde  çalışmak  için  tasarlandığından,  herhangi  bir  plaRormu  varsaymaz,  plaRormlardaki  ortak  özellikler  dışında  herhangi  bir  ön  kabulü  yoktur.  

Ø Bu  durum  Java’nın  sanal  bir  makina  üzerinde  çalışması  ve  hiçbir  plaRorma  varsaymayan  bir  şekilde,  standartlar  üzerine  inşa  edilmesinin  bir  sonucudur.  

Ø Java  bytecode  da  herhangi  bir  plaRorma  bağımlı  değildir.  

29 www.javaturk.org

www.java

turk.org

Page 30: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  Yüksek  Başarımlıdır  I  Ø Bu  özelliği  tabiki  açıklanmaya  muhtaçQr.  Ø Nesne-­‐merkezli  diller,  =p  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ş=r,    

Ø Ayrıca  Java  sağlam  bir  çalışma  zamanı  kurgulamak  için  çalışma  zamanında  daha  pek  çok  kontroller  sahip=r.  

Ø Bu  ve  benzeri  durumların  Java’yı  tabii  olarak  çalışma  zamanında  daha  yavaş  kılabilmektedir.  

30 www.javaturk.org

www.java

turk.org

Page 31: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  Yüksek  Başarımlıdır  II  Ø Java’nın  çalışma  zamanı  performansını  ar\rmak  için  çok  mesafe  katedilmiş=r.  Ø Etkin  derleyici  (Op=mizing  compiler)  Ø Etkin  JIT  ve  benzeri  teknolojiler  

Ø Java’cılar  da  performanslı  kod  yazmak  için  hem  hız  hem  de  bellek  tüke=mi  açısından,  diğer  dilleri  kullananlara  göre  daha  bilgili  olmalıdırlar.  

31 www.javaturk.org

www.java

turk.org

Page 32: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  Yüksek  Başarımlıdır  III  Ø Ama  unutulmamalıdır  ki  projeler  daha  çok  ih=yaç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.  

32 www.javaturk.org

www.java

turk.org

Page 33: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  Çok  Kanallıdır  Ø Kanal  (thread),  bir  işlem/süreç    (process)  içinde  oluşturulan  küçük  bir  işlem/süreç=r  (lightweight  process).  

Ø Aynı  işlem  içinde  çalışan  farklı  kontrol  akışlarına  kanal  denir.  

Ø Kanallar  aynı  işlem  içinde  çalışQklarından,  birçok  işi  aynı  anda  ve  daha  hızlı  ve  etkin  olarak  yerine  ge=rebilirler.  Ø Böylece  daha  yetenekli  ve  hızlı  cevap  veren  yazılımlar  geliş=rilebilir.  

Ø CPU  ve  plaRormların  çok  hızlı  hale  gelmesi,  dillerdeki  çok  kanallı  özellikleri  kullanmamızı  gerek=rmektedir.  

33 www.javaturk.org

www.java

turk.org

Page 34: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  Dinamik=r  Ø .class  dosyalarındaki  Java  =plerinin  daha  program  derlenirken  hazır  olmaları  şart  değildir,  =pler  JVM’e  çalışma  zamanında  her  hangi  bir  anda  yüklenebilir.  

Ø Dolayısıyla  pek  çok  dilde  var  olan  derleme  zamanındaki  sta=k  bağlanQ  kurma  (sta=c  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.  

34 www.javaturk.org

www.java

turk.org

Page 35: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

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ş=ricisi  olan  Sun,  Java’nın  sahibi  ve  lisanslayıcısıydı.  

Ø 2010  yılında  Oracle  Sun’ı  saQn  alarak,  Java’nın  sahibi  ve  lisanslayıcısı  oldu.  

35 www.javaturk.org

www.java

turk.org

Page 36: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java’yi  Kim  Geliş=rmektedir?  Ø Java,  JCP  (Java  Community  Process,  hHp://www.jcp.org  )  tarayndan  geliş=rilmektedir.  Ø JCP,  kişi  ve  kuruluşların  serbestçe  kaQlabildiğ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  çaQsın  alQnda  Java’nın  gidişaQnı  belirlerler.  

Ø Her  ne  kadar  Oracle  (eskiden  Sun),  JCP’de  çok  etkin  olsa  ve  bu  yüzden  eleş=rilse  de  Java’nın  geleceği  çok  daha  demokra=k  yollarla  belirlendiği  söylenebilir.  

36 www.javaturk.org

www.java

turk.org

Page 37: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

JSR  I  Ø JCP’nin  üyeleri  yeni  bir  Java  teknolojisini  Java  Specifica=on  Request  (JSR)  mekanizması  ile  teklif  edebilirler.  

Ø Her  JSR’ın  bir  yürütücü  heye=  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  demokra=k  bir  oylama  ile  sonuçlandırılırlar.  

37 www.javaturk.org

www.java

turk.org

Page 38: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

JSR  II  Ø Kabul  edilen  her  JSR  aşağıdaki  üç  şeyi  üretmek  zorundadır:  

Ø API’ı  da  içeren  bir  şartname  (specifica=on)  Ø Bir  referans  gerçekleme  (reference  implementa=on)  Ø Teknoloji  uyumluluk  pake=  (technology  compa=bility  kit)  

Ø Dolayısıyla  her  Java  teknolojisi  gerçekleş=rmesi,  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ş=rip,  bedava  ya  da  ücre=yle  lisanslayabilir.  

38 www.javaturk.org

www.java

turk.org

Page 39: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Ö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ş=r.  

Ø Bu  sayede  hemen  her  Java  teknolojisinin  =cari  olmayan,  açık  kaynak  kodlu  gerçekleş=rmesi  mevcuHur.  

39 www.javaturk.org

www.java

turk.org

Page 40: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java’nın  Tipleri  Ø Sun,  tek  bir  =pin  yeterli  olmayacağını  düşünerek,  Java’nın  üç  farklı  =pini  oluşturmuştur:  Ø Standart  Java  (Standard  Edi=on,  SE)  Ø Mikro  Java  (Micro  Edi=on,  ME)  Ø Kurumsal  Java  (Enterprise  Edi=on,  EE)  

Ø Şu  anda    Ø Java  SE’nin  7.  sürümü  vardır,  8.si  2014’e  planlanmışQr  Ø Java  EE’nin  7.  sürümü  May  2013’da  çıkmışQr,  Ø Java  ME’nin  3.3  sürümü  vardır.  

Ø hHp://en.wikipedia.org/wiki/Java_version_history    40 www.javaturk.org

www.java

turk.org

Page 41: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  Derken  Neyi  Kastediyoruz?  Ø Java    

Ø Bir  programlama  dilidir,  Ø Bir  geliş=rme  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ş=rme  eko-­‐sistemi  sunar.  

41 www.javaturk.org

www.java

turk.org

Page 42: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java’ya  Nasıl  Başlarım?  Ø Java’ya  hHp://www.oracle.com/technetwork/java/index.html        (eskiden  hHp://java.sun.com  )  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  saQrı  (CMD,  terminal,  etc.)  javac  ile  kodunuzu  derleyip,  java  ile  de  çalışQrabilirsiniz.  

Ø İsterseniz  Netbeans  (hHp://www.netbeans.org)  ya  da  Eclipse  (hHp://www.eclipse.org),    IntelliJIDEA  (hHp://www.jetbrains.com/idea/)  gibi  geliş=rme  ortamlarını  da  kullanabilirsiniz.  

42 www.javaturk.org

www.java

turk.org

Page 43: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java’nın  TabiaQ  ve  Zorlukları  I  Ø Java  nesne-­‐merkezlidir,  dolayısıyla  arQk  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  (specifica@on)  temellidir:  Ø Dolayısıyla  şartname  ve  onu  gerçekleş=ren    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.  

43 www.javaturk.org

www.java

turk.org

Page 44: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java’nın  TabiaQ  ve  Zorlukları  II  Ø Java,  yazılım  mimarilerine,  tasarım  şablonlarına  (design  paHerns)  ö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ş=rme  yerine  tasarımı  üzerine  düşünülmüş,  sürekle-­‐bırak  kullanılsa  bile  arka  planda  ne  olup  biDği  iyice  bilinen    geliş=rme  modeli  daha  uygundur.  

Ø Amaç,  örneğin,  2000  saQrlık  ASP  ya  da  PHP  sayfası  yerine,  çoğunlukla  saQr  saQr  yazılmış  ama  çok  daha  modüler  ve  şablonlara  uygun  tasarlanmış  50-­‐100  saQrlık  JSP  sayfaları  yazmakQr.    

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

44 www.javaturk.org

www.java

turk.org

Page 45: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  Ser=fikaları  I  Ø Java’yı,  sistemli  bir  şekilde,  temellerinden  başlayarak  öğrenmenin  bir  yolu  da  Oracle’ın  Java  ser=fikalarını  almakQr.  

Ø Oracle’ın  Java  ser=fikaları,  Java  SE  5,  6  ve  7  ile  Java  EE  5,  6  ve  7  sürümleri  ile  Java  ME  üzerinedir.  

Ø Ser=fikalar,  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”  demek=r.  

Ø Ser=fikalı  olmak  yurt  dışı  için  çok  önemlidir  ve  ülkemizde  de  giDkçe  daha  fazla  önem  kazanmaktadır.  

45 www.javaturk.org

www.java

turk.org

Page 46: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Neden  Ser=fika?  Ø Ser=fika  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  sahip=r.  Ø  Dolayısıyla,  özellikle  yeni  mezunlar  ya  da  Java’da  yeni  bir  yapıyı  öğrenmek  isteyenler  için  önemlidir.  

Ø Bu  anlamda  ser=fika  sahibi  olmak  saygın  bir  durumdur.  Ø Oracle’ın  Java  ser=fikaları  hakkında  hHp://educa=on.oracle.com/pls/web_prod-­‐plq-­‐dad/ou_product_category.getFamilyPage?p_family_id=48  sayfasından  geniş  bilgi  alabilirsiniz.  

46 www.javaturk.org

www.java

turk.org

Page 47: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  SE  Ser=fikaları  I  Ø Java  SE  ser=fikaları,  girişten  başlayarak,  Associate  (OCA),  Professional  (OCP)  ve  Master  (OCM)  adlarında  3  seviye  olarak  yapılandırılmışQr:  

47 www.javaturk.org

www.java

turk.org

Page 48: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  SE  Ser=fikaları  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ş=rme,  ç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.  

48 www.javaturk.org

www.java

turk.org

Page 49: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  EE  Ser=fikaları  Ø Java  EE  ser=fikaları  temelde  farklı  Java  EE  teknolojilerine  odaklanan  ve  onlardaki  yetkinliği  gösteren  ser=fikalardır  

Ø Java  EE  5  için  OCP,  Java  EE  6  için  ise  OCE  (Oracle  Cer=fied  Expert)    

49 www.javaturk.org

www.java

turk.org

Page 50: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Java  Ser=fikaları  III  

50 www.javaturk.org

OCM,  Java  EE  5  Enterprise  Architect   OCM,  Java  EE  6  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    

OCP,  Java  PlaZorm,  Enterprise  EdiHon  6  Web  

Component  Developer  

OCE,  Java  PlaZorm,  Enterprise  EdiHon  6  Enterprise  JavaBeans  Developer  

OCE,  Java  PlaZorm,  Enterprise  EdiHon  6  Java  

Persistence  API  

Developer    

OCE,  Java  PlaZorm,  Enterprise  EdiHon  6  Web  

Services  Developer  

OCP,  Java  ME  1  Mobile  

ApplicaHon  Developer    

OCP  Java  SE  5/6/7  

OCA  Java  SE  5/6/7  

www.java

turk.org

Page 51: Java ile Nesne-Merkezli Programlama. Bölüm Java'ya Giriş.pdfJava’nınKısaTarihi! 1991yılındaSun,kapalıkapılarardındavePatrick Naughton,MikeSheridanve&JamesGoslingönderliğindeki

Daha  Fazla  AyrınQ  İçin  Ø Oracle’ın  Java  SE  Ser=fikaları:  OCA,  OCP  ve  OCM  hHp://www.javaturk.org/?p=2375    

Ø Oracle’ın  Java  EE  5  Ser=fikaları:  OCP  ve  OCM  hHp://www.javaturk.org/?p=2404    

Ø Oracle’ın  Java  EE  6  Ser=fikaları:  OCE  ve  OCM  hHp://www.javaturk.org/?p=2431    

51 www.javaturk.org

www.java

turk.org