1. Bölüm Java`ya Giriş

Transkript

1. Bölüm Java`ya Giriş
rg
rk
.o
Java ile Nesne Merkezli Programlamaya Giriş w
.ja
va
tu
1. Bölüm
Java’ya Giriş
w
w
Akın Kaldıroğlu www.javaturk.org Mayıs 2015 rg
Küçük Ama Önemli Bir Konu rk
.o
Ø  Bu dosya ve beraberindeki tüm, dosya, kod, vb. eğiAm malzemelerinin tüm w
w
w
.ja
va
tu
hakları Akın Kaldıroğlu’na aiEr. Ø  Bu eğiAm malzemelerini kişisel bilgilenme ve gelişiminiz amacıyla kullanabilirsiniz ve isteyenleri hIp://www.javaturk.org 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, [email protected] 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. www.javaturk.org
2
rg
rk
.o
tu
va
Java’nın Kısa Bir Tarihi w
w
w
.ja
www.javaturk.org
3
rg
Java’nın Kısa Tarihi rk
.o
Ø 1991’de Sun, Patrick Naughton, Mike Sheridan ve James .ja
Ø Ve bu takım da va
tu
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. w
w
w
geleceğin, kişisel ve ev elektronik cihazlarında olduğunu öngörüp bu alana yöneldi. www.javaturk.org
4
rk
.o
rg
*7 Ø 18 aylık hummalı bir çalışmadan sonra w
w
w
.ja
va
tu
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. www.javaturk.org
5
rk
.o
rg
Java ve Internet Ø Bu proje pek çok kablolu TV şirkeAne teklif tu
edildi ama zamanının ilerisinde olduğundan kabul görmedi. va
Ø Ama takımın ileri gelenleri o sırada, w
.ja
gelişArdikleri altyapının Internet’e çok uygun olduğunu farkeEler. w
Ø Ve hemen yönlerini değişArip, ismi daha w
sonra resmi olarak HotJava olan Java-­‐
tabanlı bir tarayıcı gelişArdiler: WebRunner www.javaturk.org
6
rg
İç Giyim Olarak Oak w
w
w
.ja
va
tu
rk
.o
Ø 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." www.javaturk.org
7
rg
Oak’tan Java’ya rk
.o
Ø Oak ismi bu sırada Java olarak değişArildi, va
tu
Ø Ve 23 Mayıs 1995’te Java resmi olarak piyasaya sunuldu. Ø Ve o tarihlerde ne Java’yı gelişArenlerin ne de bir w
.ja
başkasının tahmin edemeyeceği yoğunlukta bir ilgiyle karşılaşR. w
Ø 2010 yılında Oracle’ın Sun’ı saRn almasıyla da Java el w
değişArmiş oldu. www.javaturk.org
8
rg
rk
.o
tu
va
Java Nedir? w
w
w
.ja
www.javaturk.org
9
rg
Java Nedir? rk
.o
Ø Sun, 1995’te Java’yı sunarken yayınladığı ve “Java’nın tu
babası” James Gosling’in kaleme aldığı bir yazıda Java’yı şöyle tanıRyordu: va
Ø Java: Basit, nesne-­‐merkezli, ağlarda yetenekli, yorumlanan, .ja
sağlam, güvenli, mimari olarak tarafsız, taşınabilir, yüksek performanslı/başarımlı, çok kanallı, dinamik bir dil. w
Ø Java: A simple, object-­‐oriented, network-­‐savvy, interpreted, w
w
robust, secure, architecture neutral, portable, high-­‐
performance, mulKthreaded, dynamic language. www.javaturk.org
10
rg
Java BasiEr I tu
rk
.o
Ø Java’nın o kadar da basit değildir aslında, Ø Java, ataları olan C ve C++ dillerinden daha basiEr. yapıları içermez: .ja
Ø Pointer aritmeAği, va
Ø Çünkü bu dillerde olan ve karmaşıklık geAren özellikleri ve Ø Programcıya bağımlı bellek yöneAmi (memory management), w
Ø İşlemci çoklu kullanımı (operator overloading), w
w
Ø PlaTorm bağımlı yapılar. Ø Java soyut dolayısıyla daha yüksek seviyeli bir dildir. www.javaturk.org
11
rg
Java BasiEr II .ja
va
tu
rk
.o
Ø 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 w
w
Ø 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ü. w
Generic yapıları, Ø  8 sürümüyle gelen fonksiyonel yapılar. Ø 
www.javaturk.org
12
rk
.o
Ø Java nesne-­‐merkezli bir dildir. rg
Java Nesne Merkezlidir I Ø Nesne-­‐merkezli diller, daha çok aşina olunan prosedürel/
va
tu
yordamsal dillerden çok farklıdırlar. Ø Yordamsal dillerde en önemli kavram/soyutlama yordam/
w
w
.ja
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. w
Ø Fakat nesne-­‐merkezli diller tamamen nesne kavramı üzerine otururlar. www.javaturk.org
13
rg
Nesne Nedir? rk
.o
Ø Nesne, insan zihninin kendisine yöneldiği, özellik ve tu
davranışlara sahip, fiziksel olan ya da olmayan herhangi bir olgudur. va
Ø Yazılımda her Ap nesne için, verisi ile davranışını bir paket Sınıf = Veri + Davranış w
w
.ja
haline geArip sarmalayan (encapsulaKon) ve adına genelde sınıf (class) denen kalıplar (şablonlar) oluşturulur. w
Ø Nesneler, şablonlardan yani sınıflardan üreAlmiş çalışma zamanı yapılarıdır. www.javaturk.org
14
rg
Nesne ve Varlıklar/Olgular rk
.o
Ø Nesneler gerçek dünyadaki varlıkları ya da olguları ifade ederler tu
Ø Nesnelerin özellikleri gerçek varlıkların/olguların özelliklerine, olan ileAşimine, va
Ø Nesnelerin davranışları ise varlıkların/olguların birbirleriyle w
w
w
.ja
Ø karşılık geldiği söylenebilir. www.javaturk.org
15
rg
Java Nesne Merkezlidir II rk
.o
Ø Java’da basit veri Apleri hariç herşey, bütün Apler, bir tu
nesnedir. Ø Çok güçlü kapsülleme (encapsulaKon) ve bilgi saklama .ja
va
(informaKon hiding) mekanizmaları vardır. Ø Arayüz (interface) ile gerçekleşKrme (implementaKon) w
w
w
arasında çok açık bir ayrım vardır. www.javaturk.org
16
rg
Java Ağlarda Yeteneklidir rk
.o
Ø Tarihi olarak Java’nın ve Web devriminin doğumu aynı tu
döneme rast gelmişAr. Ø Bu yüzden Java, ağ ve ilgili yapılar akılda tutularak .ja
va
tasarlanmış ilk dildir. w
w
w
Ø 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 www.javaturk.org
17
rg
Java Yorumlanır rk
.o
Ø PlaTormdan bağımsız olabilmesi için Java kaynak kodları doğrudan makina koduna derlenmez, Ø Java kaynak kodları (.java dosyaları), Java bytecodeuna (.class va
tu
dosyaları) derlenir. Ø Bytecode, JVM’in komutlarıdır ve çalışma zamanında (run-­‐
w
.ja
Ame) JVM tarayndan yorumlanır. w
Ø JVM (Java Virtual Machine ya da Java Sanal Makinası), w
donanım ve işleAm sistemi üzerinde çalışan sanal bir plaTormdur. www.javaturk.org
18
rg
Java Yorumlanır rk
.o
Ø Aslında Java hem derlenen (compiled) hem de yorumlanan (interpreted) bir dildir. tu
Ø Java kaynak kodları (.java dosyaları) Java bytecodelarına .ja
va
(.class dosyaları) derlenir. Ø Bytecodelar çalışma zamanında (run-­‐Ame) JVM tarayndan yorumlanır. w
Ø Dolayısıyla Java’da kod yazarken, nihai çalışma ortamını w
bilmeniz gerekmez. w
Ø Taşınabilir (portable) www.javaturk.org
19
rg
rk
.o
tu
va
.ja
w
w
w
www.javaturk.org
20
rg
Bytecode Nedir? tu
rk
.o
Ø 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 va
başka deyişle tamamen ve sadece JVM’e özeldir, .ja
Ø Bytecodelar, JVM tarayndan çalışma zamanında (run-­‐Ame) plaTorma özel komutlara çevrilir: w
w
Ø Yorumlama w
Ø Bu şekilde Java’nın plaTormdan bağımsız ya da taşınabilir olması sağlanır. www.javaturk.org
21
rg
JVM rk
.o
Ø JVM (Java Virtual Machine ya da Java Sanal Makinası), tu
donanım ve işleAm sistemi üzerinde çalışan sanal bir plaTormdur. .ja
va
Ø Hemen her plaTorm için en az bir JVM mevcuIur. Ø Derlenmiş Java kodlarıyla plaTorm arasında bir katman w
w
w
oluşturur ve aynı bytecodeların farklı plaTormlarda değişmeden, aynı şekilde çalışmasını sağlar. www.javaturk.org
22
rg
rk
.o
tu
va
.ja
w
w
w
www.javaturk.org
23
rg
rk
.o
tu
va
.ja
w
w
w
www.javaturk.org
24
rg
public class Selam {
private String world = "millet";
tu
rk
.o
public String selamSoyle(String kime) {
String cumle;
if(kime != "")
cumle = "Selam " + kime + " :)";
else
cumle = "Selam " + world + " :)";
va
return cumle;
}
.ja
}
w
public class SelamTest {
w
w
public static void main(String[] args) {
Selam selam = new Selam();
String cevap = selam.selamSoyle("Ali");
System.out.println(cevap);
}
}
www.javaturk.org
25
rg
Java Taşınabilirdir rk
.o
Ø Java tanımlı standartlar ve şartnameler (specificaKons) üzerine kurulmuştur. Ø Bu açıdan Java’da gerçekleşArmeye (implementaAon) bağlı Örneğin int veri Api her yerde 32 biEr. va
Ø 
tu
hiçbir noktanın olmaması amaçlanmışRr. .ja
Ø Ayrıca, Java dili ve JVM, plaTormlarla alakalı sadece en w
w
w
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. www.javaturk.org
26
rg
WORA rk
.o
Ø Başından bu yana bir kere yaz her yerde çalışSr (Write tu
Once, Run Anywhere, WORA) Java’nın taşınabilirlik konusundaki hedefidir. va
Ø Tabi olarak bu prensibin geçerli olması için programcı da .ja
plaTorma özel kod yazmamalıdır. w
Ø Java’yı uzunca süredir uygulayanlar, bir kere yaz her yerde w
w
test et J (Write Once, Test Anywhere, WOTA) prensibinin daha doğru olduğu üzerinde hemfikirdirler. www.javaturk.org
27
rg
Java Sağlamdır rk
.o
Ø Sağlamlık (robustness) çalışma zamanı güvenirliği olarak tu
tanımlanır. Ø Java, dayanıklı (reliable) ve sağlam yazılımlar üretmek için tasarlanmışRr. va
Ø Java güçlü bir Ap sistemine sahipAr dolayısıyla hem derleme w
w
w
.ja
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. www.javaturk.org
28
rg
Java Güvenlidir rk
.o
Ø Java’nın ağ ortamlarında kullanılmak için tasarlanmış .ja
va
tu
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 w
rastlanılmamaktadır. w
Ø Java’daki güvenlik API’ları sayesinde şifrelemeden w
(encrypAon) sayısal imzalara (digital signatures) kadar her türlü güvenlik kodu yazılabilir. www.javaturk.org
29
rg
Java Mimari Olarak Tarafsızdır rk
.o
Ø Java, birbirlerinden farklı, pek çok değişik plaTormun va
tu
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 w
w
.ja
hiçbir plaTorma varsaymayan bir şekilde, standartlar üzerine inşa edilmesinin bir sonucudur. w
Ø Java bytecode da herhangi bir plaTorma bağımlı değildir. www.javaturk.org
30
rg
Java Yüksek Başarımlıdır I rk
.o
Ø Bu özelliği tabiki açıklanmaya muhtaçRr. Ø Nesne-­‐merkezli diller, Ap hiyerarşileri ve polimorfizm gibi tu
özelliklerinden dolayı zaten çalışma zamanında çok iş yaparlar. va
Ø Java, taşınabilir ve mimari olarak tarafsız olmak için sanal w
w
.ja
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. w
Ø Bu ve benzeri durumların Java’yı tabii olarak çalışma zamanında daha yavaş kılabilmektedir. www.javaturk.org
31
rg
Java Yüksek Başarımlıdır II rk
.o
Ø Java’nın çalışma zamanı performansını ar]rmak için çok mesafe katedilmişAr. Ø Etkin derleyiciler (OpAmizing compiler) – HotSpot, JRockit, va
tu
vd. Ø Etkin JIT ve benzeri teknolojiler .ja
Ø Java’cılar da performanslı kod yazmak için hem hız hem de w
w
w
bellek tükeAmi açısından, diğer dilleri kullananlara göre daha bilgili olmalıdırlar. www.javaturk.org
32
rg
Java Yüksek Başarımlıdır III rk
.o
Ø Ama unutulmamalıdır ki projeler daha çok ihAyaçların tu
yanlış kavranması vs. gibi sebeplerden başarısız olmaktadır, performanstan değil. va
Ø Ayrıca performans ve ölçeklenebilirlik (scalability) genel w
w
w
.ja
olarak mimarinin bir özelliğidir ve mimariler bu konulardaki hedefler gözönüne alınarak tasarlanmalıdır. www.javaturk.org
33
rg
Java Çok Kanallıdır rk
.o
Ø Kanal (thread), bir işlem/süreç (process) içinde oluşturulan .ja
va
tu
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 w
gelişArilebilir. w
Ø CPU ve plaTormların çok hızlı hale gelmesi, dillerdeki çok w
kanallı özellikleri kullanmamızı gerekArmektedir. www.javaturk.org
34
rg
Java DinamikAr rk
.o
Ø .class dosyalarındaki Java Aplerinin daha program tu
derlenirken hazır olmaları şart değildir, Apler JVM’e çalışma zamanında her hangi bir anda yüklenebilir. va
Ø Dolayısıyla pek çok dilde var olan derleme zamanındaki .ja
staAk bağlanR kurma (staAc linking) genel olarak Java’da yoktur. w
Ø Bu da ağ üzerinde çalışan ve derleme sırasında erişilmesi w
w
mümkün olmayıp, çalışma zamanında ulaşılan nesnelerin dinamik olarak JVM’e yüklenebilmesini sağlar. www.javaturk.org
35
rg
rk
.o
tu
va
Java’nın Diğer Özellikleri w
w
w
.ja
www.javaturk.org
36
rg
Java’nın Sahibi Kimdir? rk
.o
Ø Excel’in sahibinin Microso{ olması anlamında Java’nın tu
sahibi yoktur. Ø 2010 yılına kadar Java’nın orijinal gelişAricisi olan Sun, .ja
va
Java’nın sahibi ve lisanslayıcısıydı. Ø 2010 yılında Oracle Sun’ı saRn alarak, Java’nın sahibi ve w
w
w
lisanslayıcısı oldu. www.javaturk.org
37
rg
Java’yi Kim GelişArmektedir? tarayndan gelişArilmektedir. rk
.o
Ø Java, JCP (Java Community Process, hIp://www.jcp.org) Ø JCP, kişi ve kuruluşların serbestçe kaRlabildiği ve kararların oy va
tu
çoğunluğu ile verildiği milletlerarası bir ortamdır. Ø Çok farklı bilgi ve tecrübeye sahip binlerce kişi ve kurum JCP w
.ja
çaRsın alRnda Java’nın gidişaRnı belirlerler. w
Ø Her ne kadar Oracle (eskiden Sun), JCP’de çok etkin olsa ve w
bu yüzden eleşArilse de Java’nın geleceği çok daha demokraAk yollarla belirlendiği söylenebilir. www.javaturk.org
38
rg
JSR I rk
.o
Ø JCP’nin üyeleri yeni bir Java teknolojisini Java Sepecifica9on tu
Request (JSR) mekanizması ile teklif edebilirler. va
Ø Her JSR’ın bir yürütücü heyeA ve teknik bir lideri vardır. .ja
Ø JSR’lar, içinde halka açık incelemenin de (public review) w
w
w
bulunduğu bir dizi sa|adan geçip demokraAk bir oylama ile sonuçlandırılırlar. www.javaturk.org
39
rg
JSR II va
tu
rk
.o
Ø 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 w
.ja
üzerinde mutabakat oluşmuş tarifname ve API’lar üzerine bina edilirler. w
Ø İsteyen her kişi ve kurum da bu tarifnameler üzerine ürün w
gelişArip, bedava ya da ücreAyle lisanslayabilir. www.javaturk.org
40
rg
Özgür Yazılım rk
.o
Ø Java’nın bu açık ve standartlara dayalı yapısı özgür tu
yazılımların gelişmesine de yardımcı olmaktadır. Ø Java bugün açık kaynak kodlu (open source) yazılım .ja
va
felsefesine gönül verenlerin en fazla kullandıkları dil haline gelmişAr. w
Ø Bu sayede hemen her Java teknolojisinin Acari olmayan, w
w
açık kaynak kodlu gerçekleşArmesi mevcuIur. www.javaturk.org
41
rg
Java’nın Tipleri üç farklı Apini oluşturmuştur: rk
.o
Ø Sun, tek bir Apin yeterli olmayacağını düşünerek, Java’nın tu
Ø Standart Java (Standard EdiAon, SE) Ø Mikro Java (Micro EdiAon, ME) va
Ø Kurumsal Java (Enterprise EdiAon, EE) w
w
w
.ja
Ø Ş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 www.javaturk.org
42
rk
.o
tu
.ja
va
Ø Java Ø Bir programlama dilidir, Ø Bir gelişArme ortamıdır, Ø Bir uygulama ortamıdır, Ø Bir kurulum ortamıdır. rg
Java Derken Neyi Kastediyoruz? Ø Bu anlamda Java, klasik programlama dillerinden farklı w
w
w
olarak, çok geniş ama yeknesak bir yazılım gelişArme eko-­‐
sistemi sunar. www.javaturk.org
43
rk
.o
Ø Java’ya rg
Java’ya Nasıl Başlarım? va
tu
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, w
.ja
komut saRrı (CMD, terminal, etc.) javac ile kodunuzu derleyip, java ile de çalışRrabilirsiniz. w
Ø İsterseniz Netbeans (hIp://www.netbeans.org) ya da w
Eclipse (hIp://www.eclipse.org), IntelliJIDEA (
hIp://www.jetbrains.com/idea/) gibi gelişArme ortamlarını da kullanabilirsiniz. www.javaturk.org
44
rg
Java’nın TabiaR ve Zorlukları I rk
.o
Ø Java nesne-­‐merkezlidir, dolayısıyla arRk prosedürel değil nesne merkezli düşünmeniz gereklidir. tu
Ø Java, sürükle-­‐bırak merkezli programlama yaklaşımından .ja
va
ziyade, C/C++ geleneğine daha uygun olarak, ne yazdığınızı tam olarak bilmenizi ister. w
w
w
Ø 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. www.javaturk.org
45
rg
Java’nın TabiaR ve Zorlukları II rk
.o
Ø Java, yazılım mimarilerine, tasarım şablonlarına (design paIerns) önem verir ve onları kullanır. tu
Ø  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. va
Ø  Dolayısıyla hızlıca sürükle-­‐bırak şeklinde gelişArme yerine tasarımı w
.ja
ü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. w
dildir: w
Ø Java özgür ve açık kaynak kodlu yazılımların en yoğun olduğu Ø  Dolayısıyla aynı işi yapan açık kaynak kodlu pek çok farklı ürün vardır. www.javaturk.org
46
rg
rk
.o
tu
va
Java Sertifikaları w
w
w
.ja
www.javaturk.org
47
rg
Java SerAfikaları I rk
.o
Ø Java’yı, sistemli bir şekilde, temellerinden başlayarak .ja
va
tu
öğ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. w
Ø OCP, Java Programmer olmak “tecrübem yok ama Java’nın w
temellerini iyi biliyorum” demekAr. Ø SerAfikalı olmak yurt dışı için çok önemlidir ve ülkemizde de w
giEkçe daha fazla önem kazanmaktadır. www.javaturk.org
48
rg
Neden SerAfika? va
Dolayısıyla, özellikle yeni mezunlar ya da Java’da yeni bir yapıyı öğrenmek isteyenler için önemlidir. .ja
Ø 
tu
rk
.o
Ø 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. w
Ø Bu anlamda serAfika sahibi olmak saygın bir durumdur. Ø Oracle’ın Java serAfikaları hakkında w
w
hIp://educaAon.oracle.com/pls/web_prod-­‐plq-­‐dad/
ou_product_category.getFamilyPage?p_family_id=48 sayfasından geniş bilgi alabilirsiniz. www.javaturk.org
49
rg
Java SE SerAfikaları I rk
.o
Ø Java SE serAfikaları, girişten başlayarak, Associate (OCA), w
w
w
.ja
va
tu
Professional (OCP) ve Master (OCM) adlarında 3 seviye olarak yapılandırılmışRr: www.javaturk.org
50
rg
Java SE SerAfikaları II rk
.o
Ø OCA ve OCP, çoktan seçmeli sınavlardır. tu
Ø OCA, OCP için, OCP de OCM için zorunludur. Ø OCA sınırlı ve giriş seviyede, OCP ise yerelleşArme, çok .ja
va
kanallı programlama ve veri tabanı programlaması gibi konuları da içeren, dolayısyla Java SE bilgisini ölçmektedir. w
Ø OCM ise bir proje ödevi ve bu ödevle ilgili yazılan bir w
w
makaleyi içermektedir. Ø Kasım 2014 iAbariyle henüz Java SE serAfikası çıkmamışRr. www.javaturk.org
51
rg
Java EE SerAfikaları rk
.o
Ø Java EE serAfikaları temelde farklı Java EE teknolojilerine w
w
w
.ja
va
tu
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) www.javaturk.org
52
rk
.o
rg
Java SerAfikaları III OCM, Java EE 6 Enterprise Architect tu
OCM, Java EE 5 Enterprise Architect OCE, Java OCE, Java OCE, Java Pla\orm, Pla\orm, OCP, Java Pla\orm, Enterprise ME 1 Enterprise Enterprise EdiKon 6 Mobile EdiKon 6 EdiKon 6 Java ApplicaKon Web Enterprise Persistence Services Developer JavaBeans API Developer Developer Developer OCP Java SE 5/6/7 OCA Java SE 5/6/7 w
w
w
.ja
va
OCP, Java Pla\orm, OCP, Java OCP, Java OCP, Java EE 5 OCM, Java Enterprise EE 5 Web EE 5 Web SE 6 Business EdiKon 6 Services Component Developer Component Web Developer Developer Developer Component Developer www.javaturk.org
53
rg
Daha Fazla AyrınR İçin rk
.o
Ø Oracle’ın Java SE SerAfikaları: OCA, OCP ve OCM w
w
w
.ja
va
tu
hIp://www.javaturk.org/?p=2375 Ø Oracle’ın Java EE 5 SerAfikaları: OCP ve OCM hIp://www.javaturk.org/?p=2404 Ø Oracle’ın Java EE 6 SerAfikaları: OCE ve OCM hIp://www.javaturk.org/?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 www.javaturk.org
54
rg
rk
.o
tu
va
Dünyada ve Türkiye’de Java w
w
w
.ja
www.javaturk.org
55
rg
Dünyada Java -­‐ I rk
.o
Ø Java, dünya çapında en büyük gelişArme toplumuna sahip w
w
w
.ja
va
tu
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. www.javaturk.org
56
rg
Dünyada Java -­‐ II rk
.o
Ø Sayısı 250’nin üzerinde JUG’lar son derece faal tu
topluluklardır. Ø Yıllık konferanslar, web üzerinden erişilebilen dergi, blog, .ja
va
forum vb. yazılı ve video kaynaklar ile çok zengin bir bilgilenme ortamı sunar. w
Ø 24 Şubat 2015 akşamı iAbariyle Amazon’da Java için w
w
24,405, C++ için 7,398, Python için 4,581, C# için ise 5,794 kitap sonucu gelmektedir. www.javaturk.org
57
rg
Ülkemizde Java ortamlarda kullanılmaktadır. rk
.o
Ø Ülkemizde Java daha çok büyük ölçekli yazılımlar ile mobil Ø Büyük ölçekli yazılımlar ise ezici olarak sunucu merkezli va
tu
(server-­‐centric) yazılımlardır. Ø Sayı olarak daha fazla C#/.NET programcısının olduğu iddia w
.ja
edilebilir. w
w
Ø Kesin sayıları söylemek mümkün değil. www.javaturk.org
58
rg
Üniversitelerde Java rk
.o
Ø En son ACM yayınına göre ABD’de CS bölümlerinde, tu
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-­‐
.ja
va
now-­‐the-­‐most-­‐popular-­‐introductory-­‐teaching-­‐language-­‐at-­‐
top-­‐us-­‐universiAes/fulltext Ø Bunda Python’un çok basit ve kısa sözdizimi, interpreted w
w
yapısı, basit shell arayüzü ve dinamik Ap yapısı etkilidir. w
Ø hIp://javarevisited.blogspot.com.tr/2013/11/java-­‐vs-­‐
python-­‐which-­‐programming-­‐laungage-­‐to-­‐learn-­‐first.html www.javaturk.org
59
rg
Türk Üniversitelerinde Java rk
.o
Ø Çoğunlukla, C, C++, C#/.NET ve Java öğreAliyor. tu
Ø Hiç Java ile uğraşmadan mezun olanlarla sık sık va
karşılaşıyoruz. .ja
Ø C#/.NET, muhtemelen dünya ortalamasının çok üstünde bir w
oranda öğreAliyor. w
w
Ø Python gibi diller ise azınlıktadır. www.javaturk.org
60
rg
Online Java EğiAmleri rk
.o
Ø Java ile Nesne-­‐Merkezli Programlamaya Giriş (IntroducAon tu
to Object-­‐Oriented Programming with Java) Ø Java ile Nesne-­‐Merkezli ve Fonksiyonel Programlama .ja
va
(Object-­‐Oriented and FuncAonal Programming with Java) Ø Daha fazla bilgi için hIp://www.javaturk.org adresini w
w
w
ziyaret edebilirsiniz. www.javaturk.org
61

Benzer belgeler

Java ile Nesne-Merkezli Programlama

Java ile Nesne-Merkezli Programlama Ø Oak  ismi  bu  sırada  Java  olarak  değiş=rildi,  

Detaylı

8. Bölüm Java Nesneleri: Organizasyon

8. Bölüm Java Nesneleri: Organizasyon kullanabilirsiniz  ve  isteyenleri  hIp://www.javaturk.org  adresine  yönlendirip,   bu  malzemelerin  en  güncel  hallerini  almalarını  sağlayabilirsiniz.   Ø  Yukarıda...

Detaylı

9. Bölüm Tekrar Kullanım ve Kalıtım

9. Bölüm Tekrar Kullanım ve Kalıtım kullanabilirsiniz  ve  isteyenleri  hIp://www.javaturk.org  adresine  yönlendirip,   bu  malzemelerin  en  güncel  hallerini  almalarını  sağlayabilirsiniz.   Ø  Yukarıda...

Detaylı

Önder Gürcan - Ege University

Önder Gürcan - Ege University conference [c11] Özgür Gümüş, Önder Gürcan, Oğuz Dikenelli. Anlamsal Veb Servisleri Ortamında Bir Aracı Etmen paper Tasarımı ve Gerçekleştrimi (The Design and Implementaton of a Broker Agent in the...

Detaylı