Вы находитесь на странице: 1из 82

Java Ninja Rehberi

Java renmek in Pratik neriler

Cem Ikta
Bu kitap http://leanpub.com/java-ninja-rehberi adresinde sattadr.

Bu versiyon, 2016-09-24 tarihinde yaynlanmtr

This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing
process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and
many iterations to get reader feedback, pivot until you have the right book and build traction once
you do.

Copyright 2016 Cem Ikta. All rights reserved.


Bu Kitab Tweetle!
Yazara, Cem Ikta, destek olmak iin bu kitab Twitter da paylan!
Bu kitap iin nerilen tweet:
Java Ninja Rehberi, Java renmek in Pratik neriler via @cemikta #JavaNinjaRehberi
Bu kitap iin nerilen hashtag #JavaNinjaRehberi.
Bu linke tklayarak, Twitterda bu kitap hakknda neler paylaldn grebilirsiniz:
https://twitter.com/search?q =#JavaNinjaRehberi
indekiler

Yazar Hakknda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i

nsz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii

Neden Java Ninja? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii

Kitabn erii Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv

Kitap Kimler in Yazld? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi

Kimler Java renebilir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii

Kitaba Katkda Bulunmak ster misiniz? . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii

1.Blm - Javaya Balarken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1


Javaya Balarken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Neden Java? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Java Platformlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Bir Programlama Dili Nasl Seilir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Bir Projeye Uygun Programlama Dili ve Teknolojileri Nasl Seilir? . . . . . . . . . . . . 7

2.Blm - Java Standard Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8


Java Programlama Dilinin Temelleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Java le Veritaban Programlama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Java Desktop ve Rich Client Programlama . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Design Patterns - Tasarm Kalplar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Apache Commons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Google Guava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.Blm - Java Enterprise Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21


Java Enterprise Edition - Java EE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Java Web Programlama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Enterprise JavaBeans - EJB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Web Servers - Application Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Build Tools: Ant, Maven, Gradle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
NDEKLER

Source Code Management - SCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.Blm - Frameworks, Reporting ve Testing . . . . . . . . . . . . . . . . . . . . . . . . . 28


Framework Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Neden Java Dnyasnda Birok Uygulama ats Var? . . . . . . . . . . . . . . . . . . . 28
Spring Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Apache Wicket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Google Web Toolkit - GWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Vaadin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Errai Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Play Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
ZK Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Dier Frameworkler? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Framework Seimi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Raporlama - Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
leri Konular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

5.Blm - Mobil Apps Gelitirme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47


Mobil Uygulamalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Android Programlama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

6.Blm - Sertifikalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Sertifikalar Dnyasna Hogeldiniz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Sertifikalar nemli mi? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Java Sertifikalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Java SE Sertifikalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Java EE Sertifikalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Sertifika Snavlarna Hazrlk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Spring Framework Sertifikalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Android Sertifikas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

7.Blm - Eitim Kaynaklar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60


Kitaplar, Eitim Setleri, Ak Kaynak Projeler . . . . . . . . . . . . . . . . . . . . . . . . 60
Java Programlama Dilinin Temelleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Java le Veritaban Programlama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Java Desktop ve Rich Client Programlama . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Design Patterns - Tasarm Kalplar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Java Web Programlama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Enterprise JavaBeans - EJB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Build Tools: Ant, Maven, Gradle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Source Code Management - SCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
NDEKLER

Spring Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Apache Wicket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Google Web Toolkit - GWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Vaadin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Play Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Raporlama - Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Testing, Agile, XP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Android Programlama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

Sonsz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Yazar Hakknda
Cem Ikta, yazlm gelitirme uzman, yazar ve gezgin. 1995 ylndan beri yazlm dnyasnda al-
yor. CemIkta.com ve DevSniper.com adreslerinde yazlm ile ilgili blog yazlar yaynlamaktadr.
Hakknda detayl bilgiler iin LinkedIn profiline bakabilirsiniz.
nsz
Bu kitap, Javaya yeni balayan, heyecanl, programlamay renmekten haz duyan, BTSoru ve e-
mailler aracl ile bana sorular ynelten genlere, Java teknolojileri ile alan, fakat yine de hangi
yne gideceini bilemeyen, yanl ynlendirilen yazlmc arkadalara kk bir yol gsterici klavuz
olarak yazlmtr.
Bu kitap, Java ve teknoloji eitimleri vermek yerine, size hangi sralama ile nasl Java ve ilgili
teknolojileri renebileceinizi gstermek iin yazlmtr. Ben, bu klavuz kitapta yazlanlar,
deneme-yanlma yolu ile, uzun bir sreten, i dnyasnda yaadm ve grdm tecrbelerden
geerek rendim. Ben de birok kurumsal Java yazlm uzmannn uzun ve acl bir renme
srecinden getii yollardan getim. O yzden bu klavuz kitapta yazlanlar, kendi ahsmda
denenmi, test edilmi ve uygulanabilirlii bizzat kantlanmstr. Her programcnn veya programc
adaynn renme sreci ok farkldr, bu kitap size bilgi ynlar iinde kaybolmadan, Java
dnyasnda, ncelikle neleri renmeniz gerektiini zetle anlatma amac tamaktadr.
Bu kitap, sizlere birazck da olsa, Java ve ilgili teknolojileri hakknda yol gsterebildiyse ne mutlu
bana. Umarm sizin de Java serveniniz heyecanl ve neeli geer :))
Neden Java Ninja?
Ninja gnmzde Ninjutsu olarak bilinen Japon dv sanatn bilen kiilere verilen isim. Bir
Ninjann dmanlarn yenebilmek iin pek ok dv ve zihin tekniine hakim olmas gerekir.
Ninjalar evik, sabrl, abuk vazgemeyen, pes etmeyen niteliklere sahiptir. Ustalamak iin,
yllarca bkmadan, usanmadan alrlar.
Java Ninja, yazlm dnyasnda, en yeni teknolojilerle kendini gelitiren, en zor proje gelitirme
artlarnda bile akllca zmler reten, takm arkadalaryla uyumlu, test gdml, yzde yz
mteri memnuniyetini esas alarak kod yazan, usta, dijital bir yazlm gelitirme savasdr.

Kitap kapandaki ninjas vektor grafik: Copyright Emir imek


Kitabn erii Nedir?
Bu mini kitap, size Java renme serveninizde yol gstermek amacyla yazlmtr. Java ve ilgili
teknolojileri renmek iin, tavsiye edilen konu sralamasna gre, Eitim Kaynaklar blmnde
verilmi kitap ve dier eitim materyallerine bavurarak bir grenme plan karmanz tavsiye edilir!

1. Blm - Javaya Balarken


Bu blmde, Java programlama dilinin temel zellikleri ile Java platformlar ve versiyonlar
hakknda genel bilgiler anlatlmaktadr. Ayrca bir programlama dili seerken nelere dikkat etmeniz
gerektii ve bir yazlm projesine uygun dil ve teknolojilerin nasl seilecei zerinde durulmutur.

2. Blm - Java Standard Edition


Bu blmde, Java Standard Edition renmek iin detayl bilgiler verilmektedir. Hangi sralama ile
ncelikle neler reneceiniz anlatlmtr. Java programlama dilinin temelleri, Java ile veritaban
programlama, veritaban seimi, veritabanlar hakknda bilgiler, Java Desktop ve Rich Client
programlama hakknda mutlaka renmeniz gereken konular ve Java dnyasnda olmassa olmaz
Design Patterns hakknda anlatmlar yer almaktadr.

3. Blm - Java Enterprise Edition


Bu blmde, Java Enterprise Edition renmek isteyenler iin detayl bilgiler verilmektedir. Java
Web Programlamaya nasl balamanz gerektii, ilk nce renilecekler listesi, Html - CSS Fra-
meworkler hakknda aklamalar, Enterprise JavaBeans, gnmzde Cloud ve mobl projelerinde
popler olan Web Servisler ile kurumsal uygulamalarda kullanlan Web Servers - Application
Servers ve dier Java Enterprise konularna deinilmitir.

4. Blm - Frameworks, Reporting ve Testing


Bu blmde, kurumsal Java uygulamalarnda aktif olarak kullanlan Spring Framework gibi, birok
Java uygulama gelitirme atlar, raporlama ve test gdml yazlm gelitirme konular zerine
detayl anlatmlar yer almaktadr. Java renirken hangi Frameworklerle almanz gerektiini
bilmiyorsanz, bu blm okuduktan sonra daha net dncelere sahip olabilirsiniz.
Kitabn erii Nedir? v

5. Blm - Mobil Apps Gelitirme


Bu blmde, mobil uygulamalar zerine detayl bilgiler bulabilirsiniz. Android programlama iin
tavsiyeler, Android iin App gelitirme yntemleri sadece Java ile snrl deil ayn zamanda Ja-
vaScript App gelitirme atlar da verilerek anlatlmtr. Raspberry Pi ile kendi mini bilgisayarnz
yapp, Java ile programlamak istiyorsanz bu blmde ilginizi ekebilir.

6. Blm - Sertifikalar
Bu blmde, Java dnyasnda kariyer yapmak ve kariyerini tm dnyada geerli sertifikalar ile
pekitirmek isteyen Java Ninja adaylarna, Oracle Java SE ve Java EE sertifikalar hakknda detayl
bilgiler verilmitir. Sertifika snavlarna hazrlk ve ipular, nelere dikkat etmeniz gerektii ve
sertifika ile ilgili eitim olanaklar listelenmitir. Ayrca Spring Framework ve Android sertifikalar
hakknda da nemli bilgileri bu blmde bulabilirsiniz.

7. Blm - Eitim Kaynaklar


Bu blmde kitap boyunca anlatlan konular hakknda tavsiye edilen kitaplar, eitim setleri,
sunumlar ve i dnyasnda size avantajlar salayabilecek ak kaynak projeleri hakknda detayl
anlatmlar bulunmaktadr.
Kitap Kimler in Yazld?
Bu kitap Java renmek veya Javada uzmanlamak isteyen, programc veya programc adaylar
iin yazld. Java renmek istiyor, ama nerden balyacanz bilmiyorsanz, Java ile ilgili kitaplara
bakp konular iinde kayboluyorsanz, Javay tek banza renmeye alp her seferinde ilerleye-
meden vazgeiyorsanz, bu kitap size Java renme serveninizde yol gsterici bir klavuz nitelii
tamaktadr.
Bu kitap Java SE, Java EE ve uygulama atlar hakknda yol gsterici bir klavuzdur. Bu kitabn
amac Java Ninja olabilmek iin size, sistematik bir yol haritas karmak, Java dnyasindaki
yzlerce uygulama ats iinde kaybolmadan, sizi temel Java eitimlerine ve popler uygulama
atlarna ynlendirmektir.
Kimler Java renebilir?
Sabr ve kararllkla, renmekten yorulmayan herkes, Java dili ve teknolojilerini renebilir! Java
Ninja olabilmek iin birok Java kitab, makale ve online eitimler okumak zorundasnz, eer
kitap okumay sevmiyorsanz Java Ninja olamassnz, hi urasmayn, kendinizi yormayn!
Gnmzde yazlm teknolojileri arlkl olarak ngilizce kullanmaktadr. yazlm dnyasnda
kullanlan teknik ngilizce, genelde kolay, anlalabilir bir yapda olup, okuduunuzu anlayabilecek
seviyede ngilizce biliyorsanz, ok rahat anlayabilirsiniz. Eer okuduunuzu anlayabilecek kadar
ngilizce bilmiyorsanz, Javaya balamadan nce ngilizce renmelisiniz! Aslnda ngilizce sadece
Java iin deil, btn programlama dilleri iin narttr. Gnmzde online birok ngilizce eitim
imkanlar bulunmakta ve ok rahat ngilizce anlayabilecek seviyede renilebilmektedir.
Java ve dier programlama dillerini renmek iin, ileri dzeyde matematik bilmek zorunda
deilsiniz! Evet mhendislik blmlerinde matematik nemli bir rol oynar, fakat programlama
matematikten daha ok mantk kullanr. Matematiksel ilemleri anlyor olmanz, bir programlama
dili renmek iin yeterlidir. Ama unu unutmayn, matematik ve fizik alanlarnda iyi olanlar,
programlama mantklarn daha kolay anlayabilir, daha hzl renebilirler! Dnyada en iyi bilinen
programclar tahmin edecebileceiniz gibi, bilgisayar mhendisleri deil, matematik ve fizikilerdir.
niversite eitimi ok nemlidir, ama maalesef lkemizdeki niversite renci seme sistemi,
rencilerin istedii blm okumasnda ok byk bir engel! ogu zeki renci, srf SS hazrlk
stresinden kurtulmak ve bir yl daha beklememek iin, okumak istemedii blmleri tercih etmekte,
fakat bitirdii blmlerle ilgili ilerde almamaktadr. Bilgisayar ile ilgili olmayan bir blmde
okumu veya hala okuyor olmanz, programc olamyacanz anlamna gelmez! Eer programc
olmaya kesin karar verdiyseniz ve severek greniyorsaniz Java Ninja olabilirsiniz. unu unutmayn
ki eer bilgisayar ile ilgili blmlerde okumuyorsanz, renmek ve aradaki a kapatmak iin
ok daha fazla almanz gerekecektir. Dnyada birok yazlm uzman kendini kendi kendine
grenen programc olarak tanmlamaktadr. Bilgisayar programlama ile ilgili niversite eitimi
almayanlarn, programc olamayacan iddia eden kiilere, Avrupa ve dnyann bircok gelimi
lkesinde, programlama derslerinin, artk okullarda temel eitime alndn hatrlatmak isterim!
Kitaba Katkda Bulunmak ster
misiniz?
Bu kitapta anlatlan konularn daha basit ve anlalr olmas iin nerilerinizi,
Bu kitapta Java Ninja olmak iin renilmesi gereken konular, grenme srasna ve teknoloji
nceliklerine gre sralamaya altm, Java dnyasndaki btn Frameworkleri anlatmak
yerine nemli grdm, gncel ve i dnyasnda sklkla aranan Frameworkler hakknda
bilgi vermeyi tercih ettim. Yine da Java Ninjalar iin nemli grdnz ve kitapta
deinilmemi Framework veya konular varsa,
Javaya yeni balyorsaniz ve bu kitap size yeterince anlalr ve yol gsterici gelmiyorsa, hangi
konular hakknda daha detayl bilgiler istediinizi,
Ve her trl gr ve eletirilerinizi,

ltfen bana bildirin!

Kitabn Dili zerine


Bu kitab yazarken, ngilizce terimleri Trkeye en yakn, en uygun anlam vermeye alarak
evirdim. Baz yerlerde, zellikle yanl anlam verdii iin, Trke kelimeler yerine, orjinal ngilizce
kelimeleri tercih ettim. Sayn okuyucu, bu kitapta baz blmlerde ngilizce arlkl kelimeler
kullanmamn amac, sizlere yazlm dnyasndaki terimleri orjinal hali ile aktarma isteimdendir.
Gzel Trkemize zen gstererek, kullanmaya altm halde, yine de hatalar, eksikler ve
yazm yanllar ile karlarsanz, ltfen bana bildirin! En ksa zamanda dzeltmeye alacam
belirtmek isterim.
1.Blm - Javaya Balarken
Javaya Balarken
Javaya balarken motivasyon ok nemli. Kafanzda neden Java reniyorum sorusuna net cevaplar
vermi olmalsnz! Java renmek uzun ve yorucu bir sre fakat rendikten ve Java dnyasna
girdikten sonra eitlilik ve yaplan ileri grnce kesinlikle altnza deeceine emin olabilir-
siniz.
Java kodlamaya balarken, ok hata yapacanz, hatta bir Hello World program yazarken bile
zorlanacanz gznne aln. Java renmek iin bir kitaba yada eitim setine bal kalmayn,
deiik birok kaynaa bakn, ama bir eitim setine veya kitaba baladnzda, temel Java konularn
anlamasanz bile sonuna kadar okuyun, anlamadnz konular byk ihtimalle baka kitaplarda
daha basit, daha anlalr anlatlmtr. Java renirken soru sormaktan ekinmeyin, sorularnzn
cevabn nce kendiniz arayn, neden byle kodlanyor, neden yle yazlmyor gibi fikir yrtn.
ok kaln yazlm Java kitaplarndan korkmayn, bazen yzlerce sayfa okuduunuz kitaptan, iinize
yarayan elli sayfalk ksm olabilir. Ben Javaya baladmda yirmiden fazla kitab batan sona ou
blmleri anlamasam bile okudum, anlamaya altm, ilgili blmde anlatlanlar hangi projelerde,
nasl kullanabilirim gibi mantklar yrttm.
Javaya balarken renme servenimin uzun ve bazen bezdirici, yorucu olacan tahmin edi-
yordum. Baladktan sonra da, ka kez, bu byle olmayacak sanrm, baka bir yol bulmalym
gibi vazgeme teebbslerim oldu. Neden X dilini renmiyorum ki, hem ok kolay hem de Web
projelerinde ok kullanlyor gibi dncelerim oldu. Fakat ilerledike, zellikle de alan kodlar
yazabildike zevkli olduunu ve renebileceim umudunu daha ok tadm.
Dnyadaki birok Java kitab yazar, Java renme grafiinin dier dillere gre daha yksek
olduunu belirtir. Java renmek C++dan daha kolay ama PHP, Python, Ruby ve JavaScript gibi
dillerden daha zordur. Java renmeyi zorlatran, Java ile ok eitli ve birok alana zmler
sunan API, Framework, Library gibi yaplarn okluudur. Eskiden Borland Delphi ile sadece offline
alan Desktop programlar yazmak ile Javada kurumsal projeler yazmak arasnda uurumlar var.
renirken bunlar dikkate almak nemlidir. Javada ilerlemek iin, planl grenmek zorundasnz!
Belirli bir plana uygun ve konular nem srasyla renin. Bu kitabn yazl amac da, zaten belirli
bir plan ile reneceiniz konular nemlerine gre sralamak, ksa ve yol gsterici bilgiler vermek.

Neden Java?
Java ok esitli platformlarda kullanlan nesneye dayal bir programlama dilidir. zellikle kurumsal
(Enterprise) uygulamalara younlat iin bu alanda ok geni bir kullanma sahiptir. nternet
1.Blm - Javaya Balarken 2

ve mobil dnyasndaki gelimeler Javann yaylmasnda byk rol oynamtr. Android iletim
sisteminin de Java ile kodlanmas, son yllarda Javann daha da popler olmasnda etkili olmutur.
Yazlm uzman olarak bir gelecek kariyeri planlyorsanz, Java ve Java ile ilgili teknolojiler, size
sadece Trkiyede deil btn dnyada geni i olanaklar salar. zellikle, dnyadaki byk
kurumsal nitelikli firmalar, Java ile ok esitli zmler gelitirmekte ve kullanmaktadr. Byk
sigorta, banka, otomotiv ve telekomnikasyon firmalar yazlm sistemlerinde arlkl olarak Java
teknolojilerini kullanmaktadrlar.
Son yllarda niversitelerin ders programlarna Java ile ilgili teknolojileri de almalar Javann btn
dnyada ne kadar yaygnlatn gsteren baka bir rnek olarak karmza kmaktadr.
Java TIOBE Index 2015 en popler programlama dilleri sralamasnda birinci olarak sralanmtr.

Java renmek in 10 Sebep


1. Java renmek, dier C++ veya C# gibi nesneye dayal programlama dillerine gre daha
kolaydr.
2. Java nesneye dayal bir programlama dilidir.
3. Java ok esitli ve zengin APIlere sahiptir.
4. Java dnyas ok gl gelitirme ara gerelerine sahiptir, ou ak kaynak ve cretsiz
datlmaktadr.
5. Java ok eitli ak kaynak kodlu uygulama gelitirme atlar ve ktphanelere sahiptir.
6. Java dnyasnda ok iyi topluluk destei vardr.
7. Java ak kaynak kodlu gelitirilmekte ve kullanm cretsizdir.
8. Mkemmel bir dkmantasyon destei vardr.
9. Java platform bamsz alan bir dildir. Bir kez yaz, her yerde altr (Write once run
anywhere - WORA) presibi Javann popler olmasnda byk rol oynamtr.
10. Java her yerde kullanlmaktadr, masast, internet, mobil, akll cihazlar, kartlar vb.

Temel zellikler
Java programlama dili tasarlanrken be nemli hedefe odaklanlmtr:

1. Java basit, nesneye dayal, datk ve gvenilen bir programlama dili olmal.
2. Java gl ve gvenli olmal.
3. Java mimari bamsz ve tanabilir olmal.
4. Java verimli olmal.
5. Java yorumlanabilir, paralelletirilmi ve dinamik olmal.

Bu zellikler Javanin dev projelerde kullanlmasnda ok etkendir.

Java Platformlar
Java platformu farkl versiyonlardan olumaktadr:
1.Blm - Javaya Balarken 3

Ad Gncel Versiyonu
Java Platform, Standard Edition - Java SE 8u7
Java Platform, Enterprise Edition - Java EE 7u2
Java Platform, Micro Edition - Java ME 8.7
Java Card 3.0.5

Resmi Java Logosu Duke Java Maskotu

Java Platform, Standard Edition - Java SE


Java SE masast, sunucu ve gml ortamlar iin Java uygulamalar gelitirilmesi ve datmn
salayan bir platformdur. Java SE geni kullanma sahip APIleri, Java dili ve Java Sanal Makinesinin
(Java Virtual Machine - JVM) spesifikasyonlarn tanmlar. Javann en yaygn olarak kullanlan
implementasyonu Oracle firmasnn Java Gelitirme Setidir (Java Development Kit - JDK).

pucu
Java SE daha nce J2SE ksaltmasyla kullanlyordu.

Java Platform, Enterprise Edition - Java EE


Java SE zerine bina edilmi, datk (Distributed), ok katmanl mimariler (Multi-tier Architectures)
ve Web servisler (Web Services) sunan kurumsal (Enterprise) bir platformdur. Java EE geni bir
kullanm alanna sahiptir. Java EE kendi iinde modler bir yapda, birbiriyle uyumlu bir ok
APIden oluur.
Java EE, Java topluluu tarafndan ynlendirilerek gelitirilmektedir. Java Community Process -
JCP ad verilen bu topluluk endstri uzmanlar, ticari ve ak kaynak organizasyonlar, Java kullanc
gruplar ve saysz kiilerin bireysel katklar ile Java EEye yn vermektedir.

pucu
Java EE daha nce J2EE ksaltmasyla kullanlyordu. Bu yzden hala baz i ilanlarnda
J2EE olarak gemektedir.
1.Blm - Javaya Balarken 4

Java Platform, Micro Edition - Java ME


Java ME gml sistemler iin tasarlanm bir Java platformudur. Mobil aletler, gnmzde
Nesnelerin nterneti (Internet of Things) olarak da bilinen, mikro kontroller, sensrler, mobil
telefonlar, PDAlar, yazclar, akll TVler ve benzeri cihazlarda alabilen bir platformdur. Java
ME uygulamalar retici, model ve iletim sistemi bamsz altrlabilir.

pucu
Java ME daha nce J2ME ksaltmasyla kullanlyordu.

Ayrca Java TV Java MEyi baz alarak TV ve TV seti cihazlar iin gelitirilen Java yazlm
teknolojisidir.

Java Card
Java Card, snrl bellek ve ilem kapasitesine sahip akll kart ve benzeri cihazlarda gvenli
alabilen Java yazlm teknolojisidir. Gml cihazlar iin karlm en kk Java platformudur.
Mobil telefon SIM kartlarnda ve bankalarn ATM kartlarnda geni bir kullanma sahiptir. Java Card
rnleri Java Card Platform spesifikasyonlarn baz almaktadr.

Hangi Java Versiyonu renilmeli?


Btn Java platform versiyonlar, aslnda standart Java dilini esas alarak gelitirilmektedir. Java
platformlar spesifikasyonlardan olumaktadr, versiyonlar, platformlar ve uygulama atlar bu
spesifikasyonlara uygun olarak gelitirilmektedir. Java Ninja olabilmek iin Java SEde ok iyi
olmanz gerekir, Java SEde uzmanlatktan sonra Java EE veya Java ME ile ilgili almalara
balayabilirsiniz. Java SEde uzmanlamadan dier versiyonlara atlarsanz, Java size ok da zevkli
grnmeyebilir ve renirken ok zorluklar yaarsnz.

Bir Programlama Dili Nasl Seilir?


Java hakknda genel bilgiler verdikten sonra, hemen u soru akllara gelmektedir: Java benim iin
uygun bir programlama dili mi? ok sk sorulan sorular: C++, C# veya Java m renmeliyim?
Python, Ruby veya PHP mi daha iyi? Hangi dil ile neler yapabilirim? Yazlm gelitiren arkadalar-
mzn herzaman kendilerine de sorduu sorulardr bunlar. Dil seimi, aslnda o dil ile kullanlacak
Frameworklerin zelliklerine de baldr. Eer Ruby dilini seiyorsanz, byk ihtimalle bu seimde
Ruby on Rails Frameworknn byk bir etkisi vardr.
Eer gelecekte iyi bir yazlm gelitirme uzman olmak istiyorsanz doru dil, Framework ve ara
gereleri (tools) semelisiniz! Dil ve Framework seimleriniz size ilerde bir aidiyet duygusu da
verecektir. Java Yazlm Uzman, C++ Yazlm Uzman gibi. yi bir yazlm gelitirme uzman olmak
1.Blm - Javaya Balarken 5

iin birden ok dil bilmeniz gerekecektir. Eer yeni programlamaya balyorsanz direk Java, C++
gibi renimi zaman alacak dillerle balamanz tavsiye edilmez, dnyada birok niversitenin ilk
programlama dili olarak kulland Python ile balamanz tercih sebebidir. Neden? Python sade
ve anlalr, kolay renilebilir yapsyla programlama algoritmalarn ve mantn anlamanzda
kolaylklar salar. Biraz C mantn biliyorsanz dier reneceiniz dillerde size ok faydas
olacaktr. Dier dilleri renmek iin C grenmek mecburi kriter deildir, ama ok faydaldr.
Bir programlama dilini seerken ihtiyalara gre, karlatrmal giderek, eleme metodunu izlerseniz
seiminiz kolaylar. Bir dili seerken nemli kriterlerden bazlar yle sralanabilir:

1. Platform bamszl: Btn platformlarda alyor mu? GNU/Linux ve MacOSX iletim


sistemlerinin de yaygn kullanlmaya baladn gz nne alarak setiiniz dil GNU/Linux,
MacOSX ve MS Windows sistemlerinde altrlabilir olmaldr.
2. Desktop, Web ve Mobil platformlarna programlamaya imkan tanyor mu? Web ve mobil
programlama vazgeilmez olmaya balad artk.
3. Dil ve kulland teknolojiler ileriye dnk gelitirilmeye ak m? Nesneye ynelik prog-
ramlama (OOP) ve tasarm ablonlarna (Design Patterns) uygun yapda m?
4. Yeterli dkman, kitap, eitim setleri var m? Topluluklardan yeterli destek (Community
Support) gryor mu? En kaliteli dil bile olsa yeterli dkman yoksa renmeniz uzun zaman
alabilir!
5. Programlama, paketleme ve install/deploy iin gerekli ara gere seti var m? Code Editor,
IDE, Application Server, Web Server, Test Simulator, Setup Tools, Deploy Tools vb.
6. Lisans artlar nasl? Kullanacanz dil ve teknolojileri i modellerine uygun artlarda m? O
dil ve teknolojileri ile reteceiniz programlar Copyright ekleyerek kullanmanza/satmanza
izin veriyor mu?
7. Toplam sahip olma maliyeti nedir? zellikle 5. ve 6. maddede bahsedilen ara gere seti ve
lisans cretleri nedir? Bu dili ve ona bal teknolojileri setiginizde bu maliyetleri demeye
hazr msnz?
8. Dil ve teknolojileri bilim ve niversite evrelerince kabul edilmi mi? niversiteler ders
programlarna alyor mu? Yaygnlk ve dilin gelecei iin nemli bir kriterdir!
9. renme kolayl nasldr? Ne kadar srede renip uzmanlaabilirsiniz?
10. Ak kaynak/zgr yazlm (Open Source Software - OSS/Free Software) m? Ak kaynak
sistemleri destekliyor mu? Kullanacagnz dil ve ona bal teknolojilerin ak kaynak olmas
size birok avantajlar kazandrr. Kendinizi hzl gelitirir, birok ak kaynak projeyi kendi
yazacanz projelere baz alp kolayca prototip oluturabilirsiniz.

Bu kriterleri oaltmak mmkn. Yukardaki kritelere gre programlama dillerine bakarsak:


Java, Python, Ruby yukardaki artlara ok iyi uyar. Platform bamsz, ak kaynak kodlu, topluluk
destei ok iyi olan ve birok belge, eitim bulabileceiniz dillerdir.
C++ ksmen uyar, nk C++ ok iyi nesneye dayal programlama (Object Oriented Programming)
zelliklerine sahip olsa da Web programlamada ok iyi deildir. Zaten C++ Web programlama iin
1.Blm - Javaya Balarken 6

deil, gl sistemler/programlar yazabilmek iin gelitirilmitir. Hala dnyada ok kullanlan diller


arasndadr.
PHP ksmen uyar, aslnda birok maddeye uyar fakat nesneye dayal programlamada Java, Python,
Ruby, C++, C# kadar iyi deildir! Ayrca PHP, ayn JavaScript gibi bir Web dilidir, native desktop
projeleri yazlamyor. PHP gnmzde Webde cok nemli bir yere sahip. Hemen hemen her internet
Server PHP destei vermektedir.
JavaScript aslnda bir internet tarayc script dili olarak km olsa da gnmzde Node.js ile Server
tarafnda da alabilmektedir, bu da zaten Web ve mobil projelerde gl olan JavaScriptin Backend
kodlamada da kullanlmasn yaygnlatrm olup, EcmaScript 6 (ES 2015) ile dile nesneye dayal
yaplar eklenmesiyle ok popler hale gelmitir. Ayrca deiik Pluginler kullanarak JavaScript
ile gelitirilen programlar GNU/Linux, MacOSX ve MS Windows sistemlerine local kurularak
kullanlabilmektedir. Bu bilgiler gz nne alndnda yeni JavaScript gelimeleri yukardaki
kriterlere uymaya balamtr.
C#, Visual Basic.Net ve dier .Net teknolojileri platform bamsz deiller, bu da herzaman sizi
MS Windows iletim sistemlerine mahkum eder, toplam sahip olma maliyetleri yksektir, IDE,
Componentler ve dier ara gere seti ounlukla cretlidir, cretsiz verilen Starter veya Express
versiyonlu rnleri ise herzaman gelitiriciyi Pro versiyonu satn almaya ynlendirir. niversite-
lerde .Net CDleri, programlar cretsiz verilse de bu rnler sadece renim amal kullanlabilir,
bu rnlerle ticari projeler gelitirilemez, satlamaz! .Net platform bamsz olduunu iddia etse de
henz MS Windows dndaki platformlara .Net VMi tamamstr! .Net iin standart gelitirme
platformu MS Visual Studio henuz MS Windows dndaki iletim sistemlerinde almamaktadr!
imdilerde Microsoft tarafndan Code Editor olarak cretsiz datlan Visual Studio Code, MS
Windows, GNU/Linux ve MacOSX iletim sistemlerinde almakla birlikte MS Visual Studio
IDEnin tm zelliklerine sahip deildir! Mono projesi .Neti GNU/Linux platformlarna tamaya
almsa da patent sorunlar ve Microsoftun destek vermemesi sonucu baarsz olmutur! Mono
projesinin arkasndaki Xamarin firmas, C# ile platform bamsz mobil uygulamalara ynelmi ve
Xamarin firmas daha sonra Microsoft tarafndan satn alnarak Visual Studio IDE ile datlmaya
balanmtr.

.Net Ak Kaynak Gncellemesi:


Microsoft .NET Framework Libraries, .NET Core Framework Libraries ve RyuJit VM
teknolojilerini ak kaynak olarak yaynlad. Win Forms, WPF ve daha birok nemli
teknoloji paralarn ise ak kaynak olarak yaynlamad. Ama ASP.Net 5in btn plat-
formlarda alsmas olarak deerlendiriliyor. Eer birgn Microsoft .Netin btn nemli
teknolojilerini ak kaynak olarak yaynlar ve GNU/Linux ve MacOSX iletim sistemlerine
de destek verirse, dil seiminde yeniden deerlendirmek gerekebilir. Hala Java, Python,
Ruby gibi her platforma hitap eden bir platform olmaktan ok uzak!
zellikle Web ve mobil dnyasnda efafflk ve ak kaynak kodlu rnler n plana
karken, kapal kod sunan dil ve teknolojilerde uzmanlamanz tavsiye etmem!
1.Blm - Javaya Balarken 7

renim Kolayl Notu


Java, C++ ve C# dierlerine gre daha uzun renme grafiine sahip olabilir, renim
sresi kiiden kiiye deiir. Python, Ruyb, PHP ve JavaScript gibi script dilleri daha hzl
renilebilir.

Bir Projeye Uygun Programlama Dili ve Teknolojileri


Nasl Seilir?
Yukardaki bilgiler, genel anlamda kiisel olarak seeceiniz programlama dillerini karlatrarak,
seim yapmanz kolaylatrr. Peki setiiniz, sevdiiniz ve srekli kullanmak istediiniz program-
lama dili, sizden istenen projeye uygun bir yapda m? te bu noktada yazlm mhendisliinde
genel kabul grm bir kural olan

Use the right tools for the right job! - Doru ie, doru ara gereleri kullan!

prensibi geerlidir. Yani ie gre alet antasna doru aletleri semelisiniz.


Bir rnekle aklayalm: Eer bir ierik ynetim sistemi (Content Management System - CMS)
kodlamanz gerekiyorsa ve bunu en iyi Script dilleri olarak da bilinen Python, Ruby, PHP veya
JavaScript dilleri ile yapabileceinizi bile bile, Java ve ilgili teknolojileri semeniz size ok zaman
kaybettirir. Java ile CMS yazlabilir mi? Evet, hatta Java ile yazlm ok karmak yapda, kurumsal
CMS sistemleri de mevcut (baknz: Magnolia Business CMS ve dierleri). Fakat burda asl sormanz
gereken: Java bu ie uygun mu? En ksa srede bu projeyi hangi teknolojilerle yapabilirim? Srf
Javay biliyorsunuz diye daha kolay ve hzl zebileceiniz teknolojileri semiyor, renmek
istemiyorsanz Konforlu Alandan (Comfort Zone) hi kamassnz.
2.Blm - Java Standard Edition
Java Programlama Dilinin Temelleri
Ben Java renirken, ncelikle eriebildiim btn Java kitaplarn kurcaladm, ktphanede eski,
artk modas gemi diyebileceiniz Java kitaplarna bile, tek tek baktm. renirken, kendi kendime
soru sormay ve bu sorular not alarak cevaplar aramay hi brakmadm. Maalesef Java kitaplar
deiik konular da iermesi nedeniyle ok kaln, aslnda Javaya ilk balayanlarn renmemesi
gereken birok konuyu uzun uzun anlatyor. Bu konular Javada uzmanlatka yada ilerde lazm
olduunda da renilebilir aslnda. rnein Javada yeni Hello World yazan bir kisiye Java E-Mail
APIyi detaylca anlatmak ok da kolay bir retme yolu deildir diye dnyorum!
Javaya yeni balyorsanz, ncelikle detaylar arasnda kaybolmadan, Java dilinin temel prensiplerini
ve kodlama tekniini anlamalsnz! Java JDK ve NetBeans IDE kurulumu yaparak Java renmeye
balayabilirsiniz. Yeni balayanlar iin NetBeans IDE kullanm kolayl asndan tavsiyemdir.
Oracle resmi Java eitimlerinde Java renmek iin temel konular srasyla anlatlmtr. Bu konular
ister resmi Java eitimlerinden, ister kitap ve baka kaynaklardan renebilirsiniz. Burda nemli
olan temel Java konularn anladnzdan emin olmanz. Bu yzden birden ok kaynakla alrsanz
daha kolay anlalabilir.
Temele Java konularn renirken, nemli, olmassa olmaz ve renmediinizde ilerde ok zorluklar
ekebileceiniz konular vermek istiyorum. Methods, Generics, Abstraction, Classes, Interface, Ob-
jects, Instance, Polymorphism, Inheritance ve Encapsulation gibi konular Java temellerini renirken
ok nem vermeniz gereken alanlar. Nesneye Dayal Programlama (Object Oriented Programming
- OOP) mantklar ilerde, hemen hemen her Java projesinde kullanabileceiniz yaplardr. Bu
blmlerde anlamadnz konularda aratrmalar yapp detaylca renmeye aln.
Bir Java Ninja olma yolunda ilk admnz attnz! Javada uzmanlamann ilk adm, temel Java
konularnda uzmanlamak.

Java le Veritaban Programlama


yi bir Java Ninja olmak iin, ok iyi veritaban programlama renmeniz gerekir. Veritaban
programlama, aslnda Java i dnyasnda temel bir yetenek olarak grlr. Sonuta, i yazlmlarnda
verilerin kalc olarak depolanmas (data persistence) esastr.

Veritaban Sorgulama Dili - SQL


Java ile veritaban progralamaya balamadan nce temel Yaplandrlm Sorgu Dili (Structured
Query Language - SQL) bilmeniz n arttr. SQL renirken Veri Tanmlama Dili (Data Definition
2.Blm - Java Standard Edition 9

Language - DDL) ve Veri leme Dili (Data Manipulation Language - DML) yani veritaban yapsal
tanmlama ve veritabanndaki verileri ileyebilme zelliklerine hakim olmalsnz. Ayrca her verita-
bannda farkl yazlan Stored Procedure ve Trigger renmeniz, veritabanlarnda uzmanlamanz
iin nemlidir.

pucu
Buradaki veritaban kavram likisel Veritaban Ynetim Sistemi (Relational Database
Management System - RDBMS) iin kullanlmaktadr. Son zamanlarda popler olan Mon-
goDB gibi likisel Olmayan Veritaban (Not only SQL - NoSQL) bu kitabn ieriini
fazlasyla amaktadr.

Veritaban Seimi
Veritaban renmek iin ncelikle ok kullanlan, ak kaynak kodlu, Web projelerinde yaygn,
herzaman severek kullanmay isteyeceiniz bir veritaban semelisiniz. Bu veritaban, en iyi ve-
ritaban pratikleri yapmak iin size ok yardmc olacaktr. Javada uzmanlatka, ilerde deiik
projelerde, farkl birok veritabanyla almanz gerekecektir. lk etapta, Oracle ve DB2 gibi byk
ve karmak veritaban sistemlerinden uzak durup, temel veritaban tasarmlarnda uzmanlama-
lsnz. yi bir Java Ninja proje ihtiyalarna ve mteri isteklerine gre birok veritaban sistemi
ile alabilmelidir. Artk veritaban sistemlerinde uzmanlamaya baladnzda, Oracle ve DB2
gibi byk veritaban sistemleriyle alabilirsiniz. Zaten, Java yazlm gelitirme uzman olarak
veritaban kullanacanz iin, bu byk veritaban sistemlerini Oracle DB Admin ve IBM DB2
Admin seviyesinde renmeniz gerekmeyecektir!
Kiisel tavsiyem, yaygnlk ve renim kolayl asndan MySQL olacaktr. PostgreSQL ve test
ynelimli projelerde test veritaban olarak kullanlan H2 veritaban da Javada uzmanlamak iin
vakit bulduunuzda renmeniz gereken veritabanlar listesinde olmaldr. ncelikle bir veritaban
renin ve Javada uzmanlamaya odaklann. Zaten Java, temel SQL bilgisi ile ve JDBC/JPA gibi
katmanlarla veritaban bamsz kodlamay kolaylatrmaktadr. Javada iyi tasarlanm bir proje
hibir kod deiiklii yaplmadan baka bir veritaban ile alabilmelidir.
MS Office paketi ile datlan MS Access ile kesinlikle veritaban renmeye kalkmayn! MS Access
bir ilikisel veritabannda bulunan birok zellie sahip olsa da gerek anlamda bir veritaban
deildir! Daha ok, kk ofis ihtiyalarna uygun olarak tasarlanm bir yapya sahiptir. Ayrca
lisans modeli, lisans creti ve platform bamsz olmamas gibi dezavantajlara sahiptir!
Neden MySQL, PostgreSQL ve H2 veritabanlarn tavsiye ettiimi daha iyi anlayabilmeniz iin, bu
veritabannn zelliklerine ksaca bakalm:
MySQL

MySQL, dnyann en popler zgr yazlm, ilikisel veritaban ynetim sistemidir.


2.Blm - Java Standard Edition 10

Web projelerinde LAMP (Linux, Apache, MySQL, PHP/Python/Perl) kombinasyonlaryla kul-


lanm ok yaygndr.
C, C++, Java, Python, ODBC, .Net, ve PHP srclerine sahiptir.
nce Sun Microsystems tarafndan 1 milyar dolara satn alnm, Oraclein Sun Microsys-
temsi satn almasyla Oraclea gemitir.
Google, Facebook, Twitter, YouTube gibi ok byk sistemlerde kullanlmaktadr.
Bata GNU/Linux, Unix, Mac OS X ve MS Windows olmak zere yirmiden fazla platformda
alabilmektedir.
MySQL veritaban, ift lisans ile lisanslanmtr: GNU GPL GNU General Public License ve
MySQL Commercial License.
MariaDB trevi, MySQL topluluu tarafndan MySQL GPL versiyonunun atallanarak (fork
edilerek) gelitirilen yeni bir veritabandr ve sadece GNU GPL ile datlmaktadr.

PostgreSQL

PostgreSQL, dnyann en gelimi zelliklerine sahip, zgr yazlm nesnesel veritaban


ynetim sistemidir (ORDBMS Object-Relational Database Management System).
Postgres olarak da bilinmektedir.
ok byk veri yaplarn ynetebilecek seviyededir.
PL/pgSQL olarak bilinen gelimi zelliklere sahip kendi SQL dili vardr.
Bata Perl, Python ve Tcl olmak zerek birok dil ile (Procedural Languages) veritaban
ilemleri yapabilir.
Gelimi veri tipi tanmlamalar mevcuttur.
Veritaban tablo miras yapsna (inheritance) sahiptir.
hstore ile key-value yaplarndaki verileri depolayabilir.
Birok veritabannn aksine, kullanclarn veritaban objeleri (User Defined Objects) tanmla-
masna imkan vermektedir.
Versiyon 9.2 ile JSON destei gelmitir.
PostgreSQL iin gelitirilmi ok esitli eklentiler mevcuttur.
Platform bamsz (Cross Platform) alabilmektedir.
PostgreSQL birok firma ve bireylerden oluan PostgreSQL Global Development Group tara-
fndan gelitirilmektedir.
PostgreSQL, BSD ve MIT lisanslarna benzer, serbest ak kaynak PostgreSQL License ile
lisanslanmtr.

H2

H2, ok hzl alr, kullanm basittir.


Ak kaynak kodlu veritabandr, saf Java ile gelitirilmitir.
JDBC API ve ODBC srcsne sahiptir.
2.Blm - Java Standard Edition 11

Gml (embedded), DB Server veya bellek (in-memory) veritaban olarak kullanlabilir.


nternet tarayc bazl Console uygulamasna sahiptir.
ok kk, yaklak 1.5 MB bir Jar dosyas ile alr.
Pratik kullanmndan dolay gerek projelerde ounlukla Test Gdml Gelitirme (Test
Driven Development - TDD) ilemlerinde ska kullanlmaktadr.
H2 veritaban, ift lisans ile lisanslanmtr: MPL Mozilla Public License Version 2.0 ve EPL
Eclipse Public License.

Java Database Connectivity - JDBC


JDBC, Javann en dk dzeydeki (Low Level) veritaban eriim ve ilemlerini tanmlayan bir
Uygulama Programlama Arayz (Application Programming Interface - API)dr. JDBC standart
SQL kullanr ve temel SQL ile birok ilemi performansl bir ekilde yapabilir. ok youn ilemlerin
olduu, milisaniyelik hzlarn bile nemli olduu sistemlerde genellikle JDBC kullanlr. Youn
kullanma rnek olarak, aralarda kullanlan GPS sistemlerini verebiliriz: Her arac 4-5 saniyelik
aralklarla ara ve konum bilgilerini sunucuya yollar. Sunucu, verileri ileyerek veritabanna kayt
eder. Bu ilemi binlerce ara iin yaptnzda, bir Java Ninja olarak, gnlk milyonlarca verilerle
boumanz gerekecektir. Bu tr younluklarn stesinden JDBC ile gelebilirsiniz.
JDBC, Java SE platformunda yer alir. Java SE ve Java EE projelerinde kullanlabilir. yi bir Java
Ninja olmak istiyorsanz ok iyi JDBC renmelisiniz!

Apache Commons DbUtils


JDBC renirken hemen unu farketmi olmalsnz, JDBC Low Level veritaban ilemleri yapar
demitik, bu yzden kodlamalarn ok pratik olmadn, birok kontrol ve ayarlar programcnn
yaptn grmsnzdr. Java topluluklar, bu tr tekrar eden JDBC ilemlerini kolaylatrmak
iin birok ktphane gelitirmitir. Apache Commons DbUtils bu ktphaneler iinde pratiklii ile
ne kanlardan bir tanesidir.
Apache Commons DbUtils JDBC ilemlerini kolaylatrmak iin gelitirilmi, kk, anlalr ve hzl
bir JDBC yardmc ktphanesidir (JDBC helper library). JDBC bilginizi daha da derinletirmek,
ilerletmek istiyorsaniz denemeler yapmanz tavsiye ederim. Hatrlatmakta fayda var, Apache
Commons DbUtils, JDBC renmek iin mecburi deil, sadece JDBC ilemlerinin nasl daha kolay
ve daha yapsal yazlabileceini anlamanz iin gereklidir!

JPA - Java Persistence API


JPA, bir Nesne-likisel Eleme (Object-relational mapping - ORM) spesifikasyonudur. JPA, Java
nesneleri ile standart SQL yazmadan veritaban ilemleri yapmanza olanak salar. Java projeleri
nesneye dayal programlama modeli ile gelitirildii iin JPA veritaban ilemlerini kolaylastrr. JPA
tahmin edeceginiz gibi JDBC zerine ina edilmi bir APIdir. JPA renirken ORM ve JPA objeleri
iin sorgulama dili olan Java Persistence Query Language - JPQL de renmi oluyorsunuz aslnda.
2.Blm - Java Standard Edition 12

ORMler gelitirilirken genellikle iki ana tasarm kalbna gre gelitirilmektedir. OpenJPA, MyBatis,
EclipseLink ve jOOQ Active Record tasarm kalb ile, Hibernate ise Data Mapper tasarm kalb
ile gelitirilmektedir. ORMler gnmzde birok programlama dili ve uygulama gelitirme atlar
iinde mevcuttur. zellikle Ruby on Rails Web uygulama ats iindeki Active Record ve Python
dnyasnda ok tercih edilen SQLAlchemy ORMler ok popler kullanma rnek olarak verilebilir.
JPA, ak kaynak kodlu bir API ve birok kurumsal firma JPA iin deiik salayclar (provider)
gelitiriyor. Bunlar iinde en popler ve yaygn kullanma sahip olan Redhat firmasnn gelitirdii
Hibernate ve Eclipse Foundation tarafndan gelitirilen ve ayn zamanda JPA iin Reference Imple-
mentation** olarak seilmi EclipseLink ve Apache Software Foundation tarafndan gelitirilen
OpenJPA n plana kmaktadr.

Peki JPA renirken hangi provider seilmeli?


Kullanm yaygnl, dkman ve topluluk destei asndan Hibernatei tavsiye ederim.
Son yllarda EclipseLink de yaygn olarak kullanlmaktadr. Bir JPA provider aslnda
standart JPA spesifikasyonunu kulland iin Java projelerinde JPA providerlar aras gei
yapmak ok sorun olmamaktadr. Ayrca JPA providerlar JPA standartlar dnda, ek
zellikler de sunanarak Java programclarna birok kolaylklar salamaktadr. JPA, Java
EE platformunda yer almasna ramen Java SE projelerinde de kullanlabilecek ekilde
tasarlanmtr.

yi bir Java Ninja olmak istiyorsanz, ok iyi JPA renmelisiniz! JPA, Web ve kurumsal Java
projelerinde artk de facto bir teknoloji haline geldi.

MyBatis

Eer JDBC ve JPA rendiyseniz aslnda Java ile veritaban ilemlerinde uzmanlamaya baladnz
demektir. Java projelerinizde JPA kullanmaya baladysanz, kullanm kolayl ve yaygnl ile
karlatnz bircok Java veritaban sorunlarna ok rahat zmler bulabilirsiniz.
yi bir Java Ninja en uygun ktphane ve ORMlerle almaldr. Bu sebeple MyBatis ile ilgili
bilgiler vermeyi istedim. JDBC veya JPA renmek iin MyBatis renmek zorunda deilsiniz, fakat
MyBatis bir Java Persistence Framework nasl farkl ekillerde alabilir sorusuna gzel bir cevap
olacaktr.
MyBatis nedir? MyBatis SQL veya Stored Procedure ile Java nesnelerini eleyen(mapper) bir Java
Persistence Frameworkdr. Bu elestirmeleri XML veya Java Annotationlar ile yapar.
JPA ile MyBatis arasnda baz temel farkllklar var:
2.Blm - Java Standard Edition 13

JPA, JPQL (nesne sorgulama dili) kullanrken, MyBatis standart SQL kullanr.
JPA, Java classlarn veritaban tablolarna eletirir, JPA ile tanmlanm her Entity classn
veritabannda bir tablo karl olmaldr. Buna karn MyBatis direk veritaban tablosunu
eletirmek yerine Mapper olarak kullanlyor. rnein MyBatisda bir Select sorgusu yazp
setiiniz tablo kolonlarn Mapping yapabilirsiniz. JPAdaki mantk SQL sorgularn mapping
yapmak yerine, direk veritaban tablolarn mapping yapmak olarak dnlebilir.
JPA bire bir veritaban tablosu Entity class eletirme yapmakla birlikte, dier Java EE
modulleriyle uyumlu aliir, JTA, EJB, CDI vs. gibi. Bu tr kurumsal zellikler MyBatisda
bildiim kadaryla yok! MyBatis bu tr ilemleri uygulama gelitirme atlarna entegrasyon
yaparak salamaya alr!
MyBatis Standalone Persistence Framework olarak da grlebilir.
JPA standart bir Java APIsidir ve JDK iinde yer alir, MyBatis bamsz olarak, MyBatis
yazlm ekibi tarafndan gelitirilmektedir.

Performans ve karmak SQL kullanmnn n plana kt projelerde MyBatis, standart olmas ve


kurumsal projelerde olgunluunu ispatlami, geni kullanc ve dkman desteine sahip olmas gibi
sebeplerden dolay da JPA kullanm tavsiye edilir. Ayrca gnmzde birok Web ve kurumsal Java
uygulamas Caching zmleri ile daha performansl alabilmektedir.

Java Object Oriented Querying - jQOO

jOOQ, son zamanlarda Java ile standart SQL kullanmn n plana karan, Active Record tasarm
kalb ile gelitirilmi, veritaban eleme ktphanesidir.
jOOQ, veritabanndan otomatik Java kodu oluturarak, Fluent API olarak bilinen, akc APIleri ara-
clyla, tip gvenli SQL sorgular oluturmanza olanak salar. jOOQ, Domain Specific Language
- DSL olarak bilinen sistemi kullanarak veritaban ilemlerini kolaylatrmay hedeflemitir.
2.Blm - Java Standard Edition 14

jOOQ, bir JPA Provider deildir! JPAya eletiriler getirerek, veritaban ilemlerinin, yine standart
veritaban SQL sorgular ile gelitirilmesi gerektiini vurgulayan bir DSL zmdr.
yi bir Java Ninja olmak iin, ykselen yazlm trendlerini takip etmeli ve jOOQ gibi zmleri,
kodlar yazp denemelisiniz. Kiisel grm, proje yapsna uygun bir veritaban ktphanesi,
ORM veya Persistence Frameworkleri kullanmanzdr. Java EE dnyasnda JPAnn geni bir proje
yaygnlna sahip olduunu syleyebilirim.

Flyway

Flyway, Java ile projeler gelitirirken, hepimizin karlat, farkl veritabanlarn (local db, remote
db, development db, test db, production db gibi) ynetme zorluklarn amak iin, gelitirilmi, ak
kaynak kodlu, bir veritaban srm kontrol sistemidir. Flyway ile veritaban migrasyonlarn, local
veya remote veritabanlar ile kolaylkla ve gvenle yapabilirsiniz. Flyway consol, masast veya
kurumsal Java projelerinde kullanlabilir. Flyway, direk Java API ile kullanlabildii gibi farkl build
tools ile de kullanlabilmektedir. MySQL, PostgreSQL, DB2, Oracle, MS SQL Server ve daha birok
veritaban desteine sahiptir.
Flyway, JDBC ve JPA rendikten sonra gz atmanz tavsiye edeceim kullanl bir veritaban
versiyon ynetim atsdr.
2.Blm - Java Standard Edition 15

Liqui Base

Liqui Base, veritaban ema deiikliklerini ynetmek iin, ak kaynak kodlu gelitirilmi, veritaban
bamsz bir ktphanedir. evik srelerle gelitirilen (Agile Software Development) sistemlerde
aktif olarak kullanlmaktadr. Veritaban tablolarndaki deiiklikleri XML, YAML, JSON veya SQL
gibi text formatlarnda tutmaktadr. Liqui Base, zellikle birok programcnn birlikte alt
projelerde veritaban deiikliklerini (Database Change Log) otomatik olarak oluturmaktadr.
Liqui Base, JDBC ve JPA rendikten sonra gz atabileceiniz, veritaban deiikliklerini test
edebilmeniz iin gzel bir ktphane.

Java Desktop ve Rich Client Programlama


Java renmek iin Swing veya JavaFX renmek zorunda deilsiniz, fakat masast (Desktop)
ya da Zengin nternet Uygulamalar (Rich Internet Application - RIA) yazlm gelitirme ve Java
kodlama pratiklerini en yaln haliyle kullanabileceiniz bir alandr. Eger Interface, Abstract Class,
Class, Object, Instance, Inheritance, Composite gibi en temel Java pratiklerini bilmiyorsanz, Java EE
veya Anrdoid programlama size fazlasyla karmak gelecektir. rnein Javada Design Patterns
(Tasarm Kalplar) ok fazla kullanlr, bu tr kalplar uygularken Desktop veya RIA projeleri daha
sade yaplar olarak karnza kar. Direk Enterprise (Kurumsal) projelerde bu tr yeni renilen
Java pratiklerini kullanmak kolay deildir, genelde kurumsal projelerin datk yapsndan dolay,
anlamanz, yazdnz kodun istediiniz ekilde alp almadn grebilmeniz daha da zordur.
Java masast ve RIA projelerinde uzmanlamanz demek, ayn zamanda Java EE projelerinde de ok
sk kullanlan JDBC, JPA, Design Patterns ve birok kodlama pratiklerinde uzmanlamanz demektir.
Bu yaplar hi bilmeden Java EE ile uramak Javaya yeni balayan ou programc iin kstrc
olmaktadr.
Java, genelde Java EE projelerinde aranlan bir dil ve i ilanlarnda genelde Java EE alannda kullan-
lan teknolojileri grrsnz, ama unutmayn Desktop ve RIA projeleri sigorta, telekommunikasyon,
banka gibi birok byk sektrde Java EE projeleri ile birlikte Rich Client olarak kullanlmaktadr.
Java EE teknolojileri bilmek ve gerektiinde Java Desktop ve RIA uygulamalar yazabilmek size i
grmelerinde birok avantajlar salar.
Ayrca kiisel grm, Javada Desktop ve RIA projelerini yazmann daha zevkli olduu ynnde.
Java EE projelerinde kalabalk bir programc takmyla alrsnz ve genelde yazdnz kodlar b-
tn sistemin kk bir yzdesini kaplar. Ksaca yazdnz kod paracklarn btn sistemin iinde
2.Blm - Java Standard Edition 16

ok da fazla gremezsiniz. Java Desktop ve RIA projelerinde ise sizin yazdnz Componentlerin
projenin her yerinde takm arkadalarnz tarafndan kullanldn grmek, size deisik bir haz verir.
Kendi kiisel Java renme servenimde, Java Desktop ve RIA renmek bana ok avantajlar salad,
i grmelerinde ok sk sorulan Design Patterns, GUI Architectures (Grafiksel Kullanc Arabirimi
Mimarileri), JPA, Hibernate, OOP ve birok Java kodlama pratiklerini nce Desktop projelerinde
rendiim iin Java EE projelerinde hi zorlanmadm. Bu ok zor bir matematik sinavnda bildiiniz
konulardan sorularla karlamak gibi bir duygu diyebilirim.

Applets
Java Applets, internet tarayclarda Html iine gml alan, Java yazlmlardr. 90l yllarda
Javann popler olmasnda etkili olmu bir teknolojidir. Java Applets, istemci tarafl (Client Side)
alr. Gnmzde, internet tarayclarda native almayan Html, Css ve JavaScript dndaki
teknolojiler gvenlik sebebiyle tercih edilmemektedir.
Birok temel Java konularn anlatan kitaplarda hala Java Applets anlatlmaktadr. Artk Java Applets
i dnyasnda kullanlmamaktadr. Bu nedenlerden dolay bence Java Applets ile vakit kaybetmeyin!

Awt/Swing - NetBeans RCP


Eer gelecee yatrm olarak masast projelerini renmek istiyorsanz artk AWT ve Swing eski
teknolojiler. Java Swing, hala Java JDK iinde olmasna ramen, gvenlik gncellemeleri dnda
artk gelitirilmiyor, bu sebeple eer varolan bir proje yada bir i ilan iin renmeyecekseniz artk
gelecee yatrm olarak renilecek bir teknoloji olmaktan kt.
NetBeans RCP (NetBeans Rich Client Platform), NetBeans IDEnn altyapsn kullanarak gelitiril-
mi bir zengin uygulama gelitirme atsdr (Rich Client Platform Application Framework).
NetBeans RCP, NetBeans IDE platformu zerinde Swing bileen seti (Component Set) ile masast
ve RIA (Rich Internet Application) uygulamalar gelitirmeyi kolaylatrmaktadr. Hala birok
projede aktif olarak kullanlmaktadr, fakat Eclipse RCP kadar popler deildir.
Javada uzmanlamak iin, Java Swing veya NetBeans RCP renmek zorunda deilsiniz! Java Swing
veya NetBeans RCP yerine, tek bana aliabilen, bamsz (Standalone) JavaFX projeleri yazmanz
tavsiye ederim. JavaFX detayl aklamalarna baknz!

SWT ve Eclipse RCP


The Standard Widget Toolkit - SWT, IBM tarafndan gelitirilen ve daha sonra Eclipse IDE ile birlikte
Eclipse Vakfna balanan, grafiksel kullanc arabirimidir. SWT, AWT ve Swing grafiksel kullanc
arabirimlerine alternatif olarak gelitirilmitir.
Eclipse RCP - (Eclipse Rich Client Platform), Eclipse IDE platformu zerinde Eclipse IDEnin de
kulland bileen seti ile masast ve RIA uygulamalar gelitirmeyi kolaylatrmaktadr. Hala
birok projede aktif olarak kullanlmaktadr.
2.Blm - Java Standard Edition 17

Javada uzmanlamak iin SWT ve Eclipse RCP renmek zorunda deilsiniz! Eclipse RCP versiyon
4 ile SWT bileen seti yerine JavaFX bileen setleri ile de gelitirme yapmaya imkan tanmaktadr!

JavaFX

JavaFX, Java platformunun standart, yeni nesil grafiksel kullanc arabirimi ara setidir (GUI
Toolkit - Graphical User Interface Toolkit). JavaFXin amac gml cihazlar, akll telefonlar,
tablet, televizyonlar ve masast bilgisayarlar gibi eitli cihazlarda Java ile uygulama gelitirmeyi
kolaylatrmaktr. JavaFX, Swingin aksine Web Servicelerle ok kolay aliabilmekte, bylece
kurumsal Java projelerine RIA olarak da eklenebilmektedir. Bu alardan bakldnda, yeni projeler
iin kesinlikle JavaFX tercih edilmelidir.
Ayrca Java topluluu JavaFXi benimsemi ve ControlsFX gibi standart JavaFX iinde bulunmayan
esitli bileen setleri de gelitirmitir. JavaFX topluluk haberlerini FX Experience sitesinden takip
edebilirsiniz. JavaFX ile Mobile App(mobil uygulamalar) gelitirme ile ilgileniyorsanz Gluon
firmasnn kard rnlere de bir gz atn derim.
Uzman bir Java Ninja olmak istiyorsanz, en iyi Java SE pratiklerini kullanacanz JavaFXi
renmelisiniz! JavaFX renmek iin resmi JavaFX eitimlerine bakmanz tavsiye ederim.

Design Patterns - Tasarm Kalplar


Yazlm dnyasnda Design Patterns olarak bilinen Tasarm Kalplar, ksaca yazlm dnyasnda
bir zmnn, yeniden kullanlabilir (re-usable) ekilde kodlanabilmesidir. Tasarm kaliplar,
yazarlar The Gang of Four olarak da bilinen mehur kitap Design Patterns: Elements of Reusable
Object-Oriented Software - Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides ile
popler olmutur. Bu kitap aslnda birok yazlm gelitirme uzmanna, nasl daha sistematik kod
yaplarnn oluturulabileceini gsterdii iin cok tutulmutur.
Peki neden tasarm kalplar?
Programclar yllarca karlarna kan problemlere en uygun zm yollar aradlar. Her programc
kendi mant ile zmler gelitirdi, sonra dier programclarla bu zmler zerine tartt, daha
2.Blm - Java Standard Edition 18

basit, daha anlalr, daha sistematik zmler ortaya kt. te Tasarm Kalplar (Design Pat-
terns) en iyi programlama tekniklerinin sistematize edilmi halidir. Tasarm kalplar, programclara
daha nce alrl defalarca test edilmi, doruluu kantlanm, tekrarlayan ayn durumlar iin
zm yollar gsterir.
Aslnda birok programc farknda olmadan da tasarm kalplarn, projelerde gnlk kodlamalarda
kullanmaktadr. Bu kullanma en basit rnek veritaban balants (Database Connection) verilebilir.
Bir masast projesi, ilk balatldnda veritaban balants yaplr, daha sonra ayn programa
giri yapan kullanclar, ilk oluturulmu veritaban balantsn kullanrlar. Programclar yle bir
mantk gelitirirler: Program balat, veritaban balants yoksa veritaban balants ve balant
havuzu(Connection Pool) olutur, dier kullanc giri (User Login) ilemlerinde bu balant ha-
vuzlarn kullan. Burda bir sorun karmza kyor: Balant ilemlerinden sorumlu DatabaseUtil
class bir kez new yaplmal ve dier kullanc girilerinde zaten DatabaseUtil instance varsa
varolan instance kullanlmaldr. Eer birden ok kez DatabasUtil instance oluturulursa gereksiz bir
ekilde veritaban balantlar yaplacak, bu da programn yava almasn, bellek kaynaklarnn
gereksiz yere kullanlmasn ve beraberinde birok sorunun olumasna sebep olacaktr. Genelde
programclar basit bir if else yapsyla bu sorunu zerler. te burda Singleton tasarm kalbn
farknda olmadan kullanrsnz. Ama Singleton tasarm kalb daha ileri dzeyde kontrol salayarak
bu yapnn ok kullancl (multi user) ve ayn anda alan oklu ilem sistemlerinde (multi thread)
bile hi hata vermeden almasn salar.
Javada en ideal kodlama sistemine ok nem verilmitir. JDK kodlamalarnda bile tasarm ka-
lplarnn ileri dzeylerde kullanld grlmektedir. Aslnda tasarm kalplar bir sistemin, bir
projenin, bir kod kmesinin en ideal kodlama teknikleriyle gelitirilmesini esas alr. Tasarm kalplar
standartlami kullanma sahip olduu iin, projeye yeni katlan programclarn daha hzl adapte
olmasn salar, kod okumay kolaylatrr, daha az satr kodla, daha ideal kod bloklar oluturmay
salar.
kinci rnek ise, bir UI tasarm kalb olan MVC (Model View Controller) zerine. MVC ana
birimden olusan UI programlama modellerinden birisidir, Model veri katmann (data model), View
sunum katmann (Presentation Layer), Controller ise program kontrol ve program mantk katmann
(Business Logic Layer) ifade eder. Javada bir JSF projesi yazdnz dnelim, MVC yapsna uygun
yapda class tasarm yapmassanz, tekrarlayan kod bloklarn Abstract Class mant ile BaseCont-
roller gibi yaplar oluturmassanz, gereinden ok daha fazla class ve kod yazmanz gerekecektir.
Oysa MVC size bu dzeni salamak iin gelitirilmitir. Zaten JSFin k sebeplerine de bakarsanz
View katmann Control katmanndan ayrmak iin (Separation of Concerns) kullanldn, JSFden
nce JSFe rnek olan Apache Struts ile benzer yapda kullanldn grrsnz.
Tasarm kalplar, yukardaki rneklere benzer birok gerek uygulama gelitirme tecrbeleri (Real
World Applications Experiences) sonucu ortaya kmtr.
yi bir Java Ninja olmann yolu, ayn zamanda tasarm kalplarnda uzmanlamaktan geiyor!
2.Blm - Java Standard Edition 19

Logging
Logging nedir? Loglama, bir uygulama alrken, merkezi bir sistemle, uygulamada yaplan btn
ilemlerin Log mesajlar halinde kayda alnmasdr. Loglama hata, uyar ve bilgilendirme amal
mesajlarn raporlanmas ve kayt edilmesi ilemidir. Loglama, aslnda alan bir uygulamann
aktivitelerinin kayt altna alnmasdr (Recording of Activity). Bu Log mesajlar daha sonra analiz
ve istatistik raporlama iin kullanlabilir.
Log mesajlar, genelde dz metin formatnda kayt edilmekle birlikte, Xml ve Html format
da kullanlabilir veya veritabanna kayt ilemleri de yaplabilmektedir. Java masast, Web ve
kurumsal uygulamalarda Loglama byk neme sahiptir.
Java kendi iinde standart bir Java Logging API ile gelir. Java dnyasnda Apache log4j, SLF4J ve
Logback popler olan dier Logging Frameworklerdir.
yi bir Java Ninja, uygulama hata ve analizlerini kolaylatran Loglama sistemlerini ok iyi
kullanabilmelidir!

Apache Commons
Apache Commons, eski adyla Jakarta Project projesinin amac, ak kaynak kodlu ve tekrar
kullanlabilen Java yazlmlar gelitirmektir. Apache Commons, bir programcnn ihtiyac olabi-
lecek birok alt projeden olumaktadr. zellikle Lang, BeanUtils, Collections, CSV ve DbUtils
gibi modulleri yaygn olarak kullanlmaktadr. Hatrlarsanz, JDBC konusunda Apache Commons
DbUtils yardmc ktphanesinden bahsetmitik.
Tekrar eden kod bloklarnda, bu tr yardmc ktphaneleri kullanmak, projelerdeki gereksiz kod
kalabaln azaltp, kodlarn daha kolay okunabilirliini artrmaktadr. Tekerlei her seferinde
yeniden icad etmek istemiyorsanz, bu tr modlleri renmenizde byk fayda var. Ayrca Apache
Commons gibi ok iyi dokmana (JavaDocs) sahip, ak kaynak kodlu yardmc ktphanelerin kod-
larn okumak, Javada daha iyi kodlamalarn nasl yapldn grmek, programlama yeteneklerinizi
daha hzl gelitirmenizi salar.
Unutmayn, iyi bir Java Ninja, kaliteli kodlanm zmleri kullanarak, Java topluluunun geli-
tirdii ktphaneleri kendi projelerinde avantaja dntrebilmelidir. Apache Commons kesinlikle
ufkunuzu aaak birok pratik zmler sunmaktadr.

Google Guava
Google Guava, Google yazlm mhendislerinin Java ile proje gelitirirken sk kulland, ak kay-
nak kodlu, ortak ktphanelerden olumaktadr. Genelde Google yazlm mhendisleri tarafndan
gelitirilse de, Java topluluklarndan gelen kod eklemeleri de kabul edilmektedir.
2.Blm - Java Standard Edition 20

Google Guava, genel itibariyle programclarn Java ile daha kolay alabilmesi iin gelitirilmitir.
zellikle Preconditions, Immutable collections, Ordering, Caches, EventBus, Reflection ile
ilgili yardmc ktphaneler ilginizi ekebilir.
Uzman bir Java Ninja olmak iin Google Guava bilmek zorunda deilsiniz, fakat Google Guavann
salad kolaylklardan yararlanmak, nemli projelerde size ok zaman kazandracaktr!
3.Blm - Java Enterprise Edition
Java Enterprise Edition - Java EE
Java EE - Java Platform, Enterprise Edition, Java SE zerine bina edilmi datk (Distributed), ok
katmanl mimariler (Multi-tier Architectures) ve Web servisler (Web Services) sunan bir platformdur.
Java EE geni bir kullanm alanna sahiptir. Java EE kendi iinde modler bir yapda birbiriyle
uyumlu birok APIden oluur.
Java EE platformu, kurumsal (Enterprise) yazlmlar gelitirmek ve bu yazlmlar koturabilmek iin
API ve altrma ortam (Runtime Environment) sunar. Kurumsal yazlmlar Web servisleri ve dier
byk lekli (Large-scale), ok katmanl (Multi-tiered), leklenebilir (Scalable), gvenilir (Reliable)
ve gvenli a uygulamalarn (Secure Network Applications) da kapsamaktadr. Java EE yazlmlar
genellikle GlassFish, WildFly gibi bir uygulama sunucu (Application Server) zerinde koar.
Aada temel Java EE teknolojileri renme srasna gre alnmtr. Java EE aadaki tekno-
lojilerden ibaret olmayp, daha birok APIye sahiptir. ncelikli olarak aadaki teknolojileri
renip, ilerleyen zamanlarda ihtiya duyduka dier Java EE APIlerine bakmanz, temel Enterprise
teknolojilere odaklanmanz iin nemlidir.

Java Web Programlama

Html 5, Css 3, JavaScript


Java Web programlamaya balamann n art Html 5, Css 3 ve temel dzeyde JavaScript -
renmektir. Eer bu Web programlamann temelinde kullanlan dilleri renmesseniz, Java Web
programlamada taklr, ilerleyemez, tekrar geriye dnp bu dilleri grenmek zorunda kalrsnz.
JavaScripti ok iyi dzeyde renmek ok zamannz alacaktr. Bu yzden Java teknolojilerine
younlap temel dzeyde JavaScript kodu yazabiliyor ve anlyor olabilmek nemlidir. Temel
JavaScript renirken dil yaps ve Html DOM ilemlerini renmek yeterlidir. lerde frsat bulduka
JavaScripti derinlemesine renmek ve deiik uygulama atlarn test etmek faydal olacaktr.
Html 5 iaretleme ve Css 3 biimlendirme dili olduu iin, renmek ok kolay olup, biraz pratik
yaparak kendinizi gelitirebilirsiniz. Html 5 ve Css 3 renirken, kesinlikle srkle brak (Drag and
Drop) mantyla, otomatik Html 5 kodlar oluturan programlar kullanmayn! Unutmayn Java
Ninja olmak iin Sublime Text benzeri iyi editrlerle almalsnz!
3.Blm - Java Enterprise Edition 22

Html - CSS Frameworks


Bu blmde verilen Frameworkler ncelikli renilmek zorunda deil! Javada Web projeleri
gelitirirken bu blmdeki Frameworkleri renmeniz faydal olacaktr. Konu btnl iinde
vermek istediim iin anlatmlar bu blmde verilmitir.
[Bootstrap][], ak kaynak kodlu, Twitter tarafndan gelitirilen, Css ile alrken ok pratik
ve ihtiya duyabileceiniz birok Css, Html ve JavaScript bileenlerine sahip bir Framework.
zellikle Responsive Design, Mobile First gibi yaklamlarla gelitirildii iin projelerde iinizi ok
kolaylatrabilecek bir yapdadr. Java Web projelerinde artk standart olarak kullanlmaktadr.
Foundation, gelimi bir Responsive Design, Css ve Html Frameworkdr. Mobile First zellii
bata olmak zere Sites, Emails, Apps gibi deiik platformlara minimal zmler sunmaktadr.
Bootstrapi eletiren tasarmclar ve programclar tarafndan kullanlmakta olup, son zamanlardaki
yenilikleriyle dikkat ekmektedir.
Google Material Design, Google tarafndan ncelikle Adroid Apps iin gelitirilmi, daha sonra
tasarmclarn youn ilgisi zerine Web sitelerini de destekleyen srm Material Design Lite
karlm, platformlar iin birleik bir UI deneyimi gerekletiren tasarm, prensip ve bileenlerden
oluan tasarm atsdr (Design Framework).
Less Css, Css zerine bina edilmi, Cssde olmayan zellikleri ekleyen bir nilemcidir (preprocessor).
Less Css kodlar, uygulamalarda kullanlmadan nce, standart Css kodlarna derlenerek kullanma
hazir hale getirilir. Less Css, Css kodlamalarnda variables, mixins, functions gibi zellikler ekleye-
rek, byk projelerde binlerce satrlk Css kodlarnn gelitirilmesini, bakmn kolaylatrmaktadr.
Less Css, Java Web projelerinde karnza kabilir. Bootstrap nceleri Less Css Framework ile
gelitirilmi, daha sonra hem Less Css hem de Sass Css ile kodlanmtr.
Sass Css, yine Css zerine bina edilmi, Cssde olmayan zellikleri ekleyen bir dier nilemcidir
(preprocessor). Less Cssin aksine Sass birok dil ve uygulama ats ile derlenebilme zellii sunarak,
birok uygulama atsna gml olarak gelmektedir. rnegin Vaadin Framework, Sass Css ile
derlenebilen, seilen renklerle gelitirilebilen Themes ile birlikte gelmektedir.
yi bir Java Ninja kendini Full Stack Developer olarak tanmlyorsa, Html ve Css Frameworkleri ile
rahata alisabilmelidir.

Servlets, JSP, JSF


Java Web programlamann temelinde Java Servlets yatar. Java btn Http islemlerini Servlets
zerinden yapar, bu yzden ilk nce Servlets mantn grenmeniz ok nemli. Servlets renirken,
aslnda Http renmek zorundasnz. Belki de hergn internet kullanrken, bu ilemlerin farkna
bile varmyoruz ama btn bu ilemler bata Http Request ve Http Response ile yaplmaktadr. Java
Servlets renmeden nce temel Http ilemlerini ve terimlerini bildiinizden emin olun.
Java Server Pages - JSP: Html ve benzeri dkman tiplerinde, dinamik oluturulan Web sayfalardr.
JSP, PHPye benzer ekilde almakla birlikte, Server tarafnda Java ile kodlanmaktadr. JSP, Java
Servlets zerine bina edilmi bir teknoloji olmakla birlikte JSP kodlar alma zamannda (Runtime)
3.Blm - Java Enterprise Edition 23

Java Servletse evrilmektedir. JSP sayfalar Html, Css ve JavaScript gibi native Web dilleri ile
oluturulduu iin sayfa yorumlama (Page Rendering) ilemleri performansl almaktadr. JSP
projelerini koturabilmek iin(deploy ilemi) Apache Tomcat gibi Servlet Container uyumlu bir Web
sunucusu gereklidir.
Eer daha modern bir at olan JSF ile devam etmek isterseniz JSP renmek zorunda deilsiniz,
fakat temel dzeyde JSP renmek JSF renirken anlamanz kolaylatracaktr.
Java Server Faces - JSF: Web uygulamalar iin bileen bazl (Component Based) kullanc arabimi
(User Interfaces - UI) gelitirme Java spesifikasyonlarn tanmlar. Facelets varsaylan Template
sistemidir. JSF bileenleri programclara proje gelitirirken birok kolaylklar salar.
Java topluluklar birok JSF bileen seti gelitirmitir, ilerinde Red Hat, JBoss tarafndan ak
kaynak kodlu gelitirilen RichFaces ve Trkiyede PrimeTek tarafndan, yine ak kaynak kodlu
gelitirilen PrimeFaces geni kullanm alanlarna sahiptir. Ayrca PrimeFaces tasarm alanndaki
birok yenilikleri Premium Themes iinde kodlayarak, cretli kullanma sunmaktadr. Yine JSF ile
proje gelitirirken, gnlk karlalan sorunlara pratik zmler sunan OmniFaces ise popler bir
yardmc ktphanedir. Bu popler JSF Framework de Showcase demolar ile programclara pratik
eitimler sunmaktadr.
BootsFaces, Bootstrap 3 ve jQuery UI tabanl gelitirilmi, gl ve hafif bir JSF uygulama geli-
tirme atsdr. BootsFaces, Java kurumsal uygulamalarnda hzl ve kolay Front-end uygulamalar
gelitirmeyi hedeflemektedir.
ButterFaces, JSF 2 ile, Bootstrap, jQuery and HTML 5 tabanl, hafif ve Responsive modern Web
uygulamalar gelitirmek iin yazlm bir JSF uygulama gelitirme atsdr.
JSF renirken standart JSF bileen setleri yannda PrimeFaces ve RichFaces renmeniz, ilerde i
grmelerinde sizi daha avantajl duruma getirebilir. Daha sonra JSF ile karlatnz sorunlar
zerken mutlaka OmniFaces ktphanesinden faydalanacaksnz. Daha hafif ve modern CSS
tabanl JSF bileen setlerine ihtiya duyduunuzda BootsFaces ve ButterFaces bileen setlerine
bakmanz tavsiye ederim.
yi bir Java Ninja olmak iin Java dnyasnn standart Web UI Framework olan JSF renmelisiniz!

Enterprise JavaBeans - EJB


Enterprise JavaBeans, sunucu tarafnda btn i mantklarn (Business Logic) altran Java
bileenleridir. Dependency Injection (bamllklarn enjekte edilmesi), Transaction (transaksiyon),
Messaging (mesajlama), Scheduling (zamanlama), Remote Access (uzaktan eriim), Web Service
End Points (Web servis u noktalar) vb. gibi ilemlerde kullanlr. Java EE 7 platformu ile EJB 3.2
versiyonu yaynlanmtr.
EJBler iki ana grupta toplanabilir: Session Beans ve Message Driven Beans.
3.Blm - Java Enterprise Edition 24

Session Beans
Session Beans e ayrlr. Stateless, Stateful ve Singleton Beans. Session Beans, kurumsal Java
uygulamalarnda byk bir neme sahiptirler.
Stateless Session Beans: Durumsuz Beanlerdir, ilgili kullanc oturumunda ilem yapldktan sonra
unutulurlar.
Stateful Session Beans: Durumlu Beanlerdir, kurumsal Java uygulamas alt srece, belirli bir
zamanam (Timeout), ilemsizlik gibi durumlar oluana kadar, sunucu tarafnda tutulurlar ve tekrar
tekrar kullanlabilirler.
Singleton Session Beans: Singleton tasarm kalbna gre kurumsal Java uygulamas balatldnda
sadece bir kez oluturulup, uygulama sonlandrlana kadar eriime ak, kullanlabilen Beanlerdir.

Message Driven Beans


Aslnda Message Drive Beans, Stateless Session Beans gibi almaktadr, Java Messaging Service
- JMS ilemlerinde asenkron (Asynchronously) mesajlama iin kullanlmaktadr. Basit ve bilinen
bir rnek vermek gerekirse, bir kurumsal Java uygulamasnda baz ilemler yapldktan sonra e-
mail gnderme ilemi Message Driven Beans ile yaplabilir. E-mail gnderme ilemi asenkron
yapld iin uygulama e-mail gnderme ilemini balatr ve e-mail gnderme ileminin bitmesini
beklemeden dier ilemlere devam eder.
Session Beansleri yeteri kadar rendiginizi dnyorsanz, Message Driven Beans renmeye
balayabilirsiniz.

JAX-RS - RESTful Web Services


Web ve mobil dnyasndaki gelimeler artk birok projede Web servis kullanmn kanlmaz
hale getirmitir. JAX-RS, RESTful Web servisleri iin gelitirilmi bir Java APIdir. JAX-RS, Java
Annotations (Javada @ iareti ile kullanlan iaretlemeler rnek: @Stateless) ile Web servis
istemcilerini (Web Service Clients) ve u noktalarn (End Points) gelitirmeyi ve kurulum (Deploy)
ilemlerini kolaylatrmaktadr. Eer EJBlerin mantn rendiyseniz JAX-RS renmeniz ok
daha kolay olacaktr.
JAX-RS, Java iin RESTful Web Services spesifikasyonlarn tanmlamakla beraber, bu spesifikasyon-
lar kullanan ve referans olarak kodlanan Jersey RESTful Web Services Framework birok projede
kullanlmaktadr. JBoss projesi olarak gelitirilen RESTEasy, JAX-RS uyumlu bir RESTful Web Ser-
vices implementasyonu. Ayrca Apache CXF Web Services Framework JAX-RS implementasyonu
da sunmaktadr.
Drop wizard, yksek performansl RESTful Web Services yazabilmek iin tasarlanm, baka bir
uygulama gelitirme ats. Drop wizard, popler olduktan sonra Microsoft tarafndan satn alnan,
firmalar iin sosyal network sloganyla kan Yammer platformunun alt yapsnda gelitirildiini
3.Blm - Java Enterprise Edition 25

ve kullanldn da ek olarak belirtmeliyim. Drop wizard, son zamanlarn popler Micro Service
mimarisi ile de uyumlu bir yapya sahiptir.
Unirest for Java, pratik bir kullanima sahip, Http Request istemci ktphanesidir. Unirest ile End
point yazmadan RESTful arlar yaparak veri alabilirsiniz.
JAX-RS renmek iin, nce EJB bilmeniz tavsiye edilir! ncelikle Jersey ile JAX-RS rendikten
sonra dier JAX-RS Web servis atlarna bakmalsnz! Hemen hatrlatalm, Java dnyasnda EJB
kullanmadan da RESTful Web servisleri yazabilirsiniz!

JAX-WS - XML Web Services


JAX-WS, XML Web servisler iin tasarlanm Java API spesifikasyonudur. Metro Project ile referans
implementasyonu gelitirilmektedir. JAX-WS ile alrken Simple Object Access Protocol - SOAP ve
Web Services Description Language - WSDL gibi terimleri renmelisiniz. JAX-WS Java Annotations
ile kullanm daha da kolaylatrlmtr. Gnmzde XML Web servisler, RESTful Web servisler
kadar popler olmasa da hala kullanlmaktadr. grmelerinde JAX-WS ile JAX-RS arasndaki
farklar nelerdir veya hangisini kullanmay tercih edersiniz gibi klasik sorularla karlaabilirsiniz.
Ayrca Apache CXF Web Services Framework JAX-WS implementasyonu da sunmaktadr.

Web Servers - Application Servers


Java dnyasnda popler birok Web Server ve Application Server bulunmaktadr. Web Server ve
Application Serverler, Web ve kurumsal Java projelerinde kullanlmaktadr. ncelikli olarak yeni
balayanlarn renmesi gereken ey, Web Server ve Application Server ayrmdr. Her Application
Server kendi iinde zaten bir Web Server ile gelir. Web Serverler Servlet Container olarak da
bilinen Java Servlet, JavaServer Pages, Java Expression Language ve Java WebSocket teknolojilerini
destekler (her Web Server deiik zelliklerle gelebilir, baz teknolojileri desteklemeyebilir!). Buna
karn Application Serverler ise, Java EE ve birok extra gelitirilmi teknolojileri destekleyebilir.
Yeni bir JSF projesi gelitirmeye baladnz ve EJB kullanarak Service Classlarnz yazdnz ve bu
projeyi Tomcat Server ile koturmaya urayorsunuz. Anlamadnz birok hata almanzn sebebi
Tomcatin bir Web Server olmas ve Java EE teknolojilerini direk desteklememesidir. Projeinizi
WildFly veya GlassFish Application Server ile altrdnzda hata vermeden altn greceksi-
niz.
Ayn JSF projesini Spring Framework ile EJB yerine Spring Serviceler ile gelitirip Tomcat ile ko-
turursanz hata vermeden altn greceksiniz. Bu sebeplerden dolay kullandnz teknolojiler
ile kullanacanz Web Server ve Application Serverlarn seimi nemlidir.
Burda ksa bilgiler vererek hangilerini ncelikli renmeniz gerektiini belirtmek istiyorum.
Apache Tomcat, Java Web dnyasnda en yaygn kullanma sahip bir Web Serverdr. Yllardr
kullanm ile olgunlam, hzl ve sorunsuz almas ile tercih sebebi olmaktadr.
3.Blm - Java Enterprise Edition 26

Jetty, minimal ve ok hzl alan bir Web Serverdr. Embedded Web Server olarak da birok Frame-
work ile kullanlabilmektedir. rnein bir Vaadin projesi oluturup direk Jetty ile koturabilirsiniz.
WildFly, JBoss Application Server, yeni adyla ve yapsal deiikliklerle gelitirilmeye balanm
ve Java topluluklar tarafndan aktif olarak kullanlmaktadr. JBoss veya yeni adyla WildFly
Application Server Java dnyasnda en ok kullanlan Application Serverlardan biridir. cretsiz
ve ak kaynak kodlu olup, Red Hat firmasnn destek vermesi, bunda ok etkili olmutur.
Undertow, Java NIO ile gelitirilmi, hafif, hzl, esnek, performansl, blocking ve non-blocking
API sunan bir Web Serverdr. Undertow Web Server, JBoss sponsorluunda gelitirilmekte olup,
WildFly Application Server iin varsaylan Web Server olarak kullanlmaktadr.
GlassFish, Java EE iin referans implementasyonu olarak gelitirilen ve zellikle Java EE 6 ile yaygn
kullanlmaya balanm bir Application Serverdr. Oracle, nceleri GlassFish iin cretli destek
sunmaya balam, daha sonra bu cretli destei ektiini aklam, bu da Java topluluunun
tepkisini ekmi ve ciddi firmalarin GlassFishden uzaklamasn salamtr.
Apache TomEE, Tommy olarak da bilinen Java EE 6 Web Profile sertifikal Application Serverdr.
Java EE Web Profile uygulama gelitiricilerin Java EE modllerini seerek kendilerine zel bir App-
lication Server konfigrasyonu yapmalarna imkan vermektedir. Apache Tomcat ile kartrmayn!
IBM WebSphere Application Server ve Oracle WebLogic Server ticari olarak kullanlan dier
Application Serverler olarak i ilanlarnda grlmektedir.
Gnmzde Java topluluu, Web Server ve Application Server tartmalar yapmakta ve Appli-
cation Serverlerin daha hafif ve Java EE modlleriyle yaplandrlabilir, zelletirilebilir olmasn
savunmaktadr. Application Serverlerin yava almas, uygulama gelitirme srelerinde prog-
ramclarn ok vakit kaybetmesine sebep olmas ve test srelerinin kolay yaplamamas gibi birok
sebeplerden dolay eletiriler bu tartmalarn merkezindedir.
ncelikli olarak Apache Tomcat ve WildFly grenmenizi tavsiye ederim. Dier Web ve Application
Serverlerle de frsat bulduka denemeler yapabilirsiniz.

Build Tools: Ant, Maven, Gradle


Apache Ant, Java bazl gelitirilmi bir build tool. Karlatnz hemen hemen her eski projede ve
baz yeni projelerde grmeniz mmkn. Birok IDE ve Java editr standart olarak kullanmaktadr,
rnein NetBeans IDE standart projesi yapsn Ant ile kullanmaktadr. Gnmzde yaygnln
yitirmitir.
Apache Maven, kapsaml bir proje gelitirme sistemidir. Maven ile proje yaps oluturma, proje
bamllklarn tanmlama, build, deploy, raporlama, dkman oluturma ve proje altrma gibi
birok grevler yaplabilir. Gnmzde Java projeleri iin kullanm de facto standart haline
gelmitir. Maven kullanm kolay olmakla birlikte, birok modlden oluan projelerde karmak
olabiliyor. Maven command line tool olmasna ramen gnmzde IDEler ok iyi Maven destei
sunmaktadr.
3.Blm - Java Enterprise Edition 27

Gradle, ileri dzey, gelimi proje build ynetim sistemidir. Gradle Groovy programlama dilini kulla-
narak ilemler yapmakta olup, Maven ve Apache Ivy depolarn (Repositories) desteklemektedir. Yeni
gelitirilen projelerde Gradle yaplarn grmek mmkn. Spring Framework gibi gelimi uygulama
atlar Maven yannda, Gradle gibi build aralarn da desteklemektedir. JavaFX resmi demolarnda
Gradle kullanlmaktadr.
u an Apache Maven build toollar ierisinde de facto standarta sahiptir. Grdnz birok ak
kaynak Java projesinin Maven ile gelitirildiini grebilirsiniz. Gradle son zamanlarda popler
olsa da, Maven Java topluluklar tarafndan standart bir build tool olarak kabul edilmektedir.
Apache Ant, Maven ncesi dnemde standart olarak kullanlyordu, Ant kullanma mecburiyetiniz
yoksa, renmek iin zaman harcamayn derim. Eski Java projelerinde sklkla Ant kullanldn
grrsnz. rnein NetBeans IDE ile bir Java projesi oluturduunuzda NetBeans IDE proje
yapsn arkaplanda Ant scriptleri ile oluturur.

Source Code Management - SCM


Genelde Java projeleri birden ok programcnn katlmyla gelitirilmektedir. Byk kurumsal
projelerde 5 - 30 kii arasnda deisen yazlm gelitirici, tester, Web Designer gibi deiik grevlere
sahip kiiler alabiliyor. Takm halinde yazlm gelitirilirken, kod deiiklikleri ve versiyonlama
ok byk neme sahip. te btn source code deiikliklerini ynetmek iin kullanlan sistemler
artk mecburi bir kullanmda.
Apache Subversion, ksaca SVN olarak da bilinen, ak kaynak kodlu, versiyon kontrol sistemi.
Concurrent Versions System - CVSin gelimi hali olarak tasarlanmtr. SVN, merkezi kod versiyon
ynetim sistemi olarak da dnlebilir. Baz programclarin Home Office gibi uzaktan alt
durumlarda SVN kullanm sorunlu olabilmektedir.
GIT, ak kaynak kodlu gelitirilen, merkezi olmayan, gnmzde ok kullanlan bir datk versiyon
kontrol sistemidir. GIT hzl, datk ve dorusal olmayan alma sistemleri iin, ilerinde Linus
Torvaldsn da bulunduu Linux Kernel programclar tarafndan gelitirilmitir. GIT, lokal kod
deposu (Local Repositories) mant ile altndan, uzaktaktan alan programc takmlar iin
ideal bir kullanma sahiptir. GitHub, cretli ve cretsiz online GIT depolar sunan bir platform.
Birok ak kaynak kodlu proje kodlarna GitHub zerinden erimek mmkn. Bitbucket, ise GitHub
benzeri bir GIT platformu sunmakla birlikte, be kullancya kadar snrsz zel depo (Private
Repositories) vermektedir.
Gnmzde GIT birok projede ncelikli olarak tercih edilmektedir. SVN ve GIT kullanm bir
programc olarak GIT ile ok daha rahat altm sylemek isterim. zellikle console komutlar ile
GIT ok pratik. Yeni birok yazlm projesinde de GIT tercih edilmektedir. grenirken GITe ncelik
vermenizi tavsiye ederim.
4.Blm - Frameworks, Reporting ve
Testing
Framework Nedir?
Framework bir yazlm sistemi iin yeniden kullanlabilir, geniletilebilir ve modler yapda tasar-
lanm ktphaneler veya snflardan oluan bir uygulama atsdr. Uygulama atlar program-
clara ok karmak ve tekrar eden ilemleri daha kolaylatrarak kodlamalarna olanak salayan,
basitletirilmi, sistematik bir yap sunar. Uygulama atlar nceden belirlemi hiyeraik kurallar
ve uygulama paket yapsyla birlikte kullanldndan programc takmlar arasnda kod okunabi-
lirliini artrr, yeni ie balayan programclarn proje yapsna daha hzl adapte olmasn salar,
renme srelerini daha sistematik hale getirir.
Uygulama atlar standart bir yap sunmakla beraber, daha basit kodlama zmleri varken gereksiz
kullanldnda karmak ve byk kurumsal projelerin daha fazla karmak yapya brnmesine
neden olabilmektedir.

Neden Java Dnyasnda Birok Uygulama ats Var?


Java genel amal kullanlan bir programlama dili, Java masast, kurumsal, web, mobil, gml sis-
temler ve akll kartlar gibi deiik birok platform ve cihazlarda kullanlmaktadr. Java dnyasnda,
firmalar Java ile birok problemlere, yeniliklere, tekrar eden rutin ilere, karlatklar sorunlara
ve i mantklarna zmler retiyor. Firmalar bu zmleri gelitirirken daha yapsal ve tekrar
kullanlabilir yapda olmas iin Frameworkler gelitiriyor.
Bu yzden Java dnyasnda karlastnz birok soruna zel gelitirilmi, programclarn proje
kodlamasn kolaylatran yzlerce Framework bulunmaktadr. Bir dilde bu kadar ok Framework
olmas, o dilin yazlmclar tarafndan ne kadar yaygn kullanldn ve yazlm topluluklar
tarafndan ne kadar ok tercih edildiini gsterir.
Java dnyasnda, bir framework ile yapamadnz ileri dieri ile ok rahat yapabiliyorsunuz
yada birka tane Framework birletirip kullanabiliyorsunuz. Java ile proje gelitirirken o projenin
yapsna uygun Frameworkleri semeniz, proje ilerledike ok daha zevkli ve sorunsuz kodlama
yapabilmenizi salar.
Bir Web uygulamas iin rnek vererek Framework yaplarn daha iyi anlamaya alalm:
Bir Web projesi gelitirmek istediinizi dnelim. Java Server Faces - JSF ve Vaadin, bu iki Web
uygulama gelitirme ats da Web UI teknolojilerine farkl yapdaki bileen setleriyle zmler
4.Blm - Frameworks, Reporting ve Testing 29

sunmakta. Eer projeniz masast benzeri alan bir Web uygulamas ise Vaadin size dogal Ajax
Widget zengin bileen seti sunar. Normal Html Web projesi gelitirecekseniz JSF size Html ile alan
hazr bileen seti sunar. Siz bu iki Web UI uygulama atsn da beenmeyip daha iyi ve farkl bir
Web UI uygulama ats yazmaya alr, bunu ak kaynak kodlu yaynlar ve bylece ortaya farkl
bir Web UI Framework karabilirsiniz. Java topluluklar hangi Framework beenirse, hangisi
gelitirecekleri projeye uygunsa onu kullanr, bu programclara proje gelitirirken birok seenek
sunar.
Java dnyasnda veritaban ilemleri iin en ok kullanlan atlardan Hibernatee bakarsak daha
net anlalr:
Java veritaban ilemleri iin temelde Low Level JDBC kullanr. Bunu beenmeyen ve nesnelerle
veritaban ilemleri yapmak isteyen birisi/birileri kp Hibernate ORMi yazar, btn dnyaya
aar. Eer kaliteli gzel ve birok soruna farkl zmler sunuyorsa Java topluluklar tarafndan
desteklenir, gelitirilir ve yaygnlatrlr. Siz programc olarak ister JDBCyi kullanrsnz ister
Hibernatei. Hibernatei hantal bulan bakalar Hibernate mantna benzeyen, nesnelerle veritaban
ilemleri yapan baka bir ORM Framework yazar, rnein EclipseLink, OpenJPA ve benzerleri gibi.
Btn bu Java bileen seti, ktphane ve Framework eitlilii, Java dnyasnn birok i alanna
hitap etmesini salar. Bu eitliliin en byk dezavantaj ise Java renmeye yeni balayanlarn
Nereden balamalym? Hangi Framework renmeliyim? Hangisi gelitireceim proje iin daha
uygun? gibi sorularna cevap bulmada zorlanmasdr!
yi bir Java Ninja olmak istiyorsanz, Java dnyasnda genel kabul grm, ok iyi alan, Java
topluluklar tarafndan aktif olarak desteklenen ve hereyden nemlisi de gelitireceiniz proje
yapsna uygun Frameworkleri semelisiniz. Java Ninja adaylarna kolaylk olmas asndan
aada Java uygulama atlar hakknda genel bilgiler verilmitir. yi bir Java Ninja btn
Frameworkleri bilmek zorunda deildir! dnyasnda ok kullanlan, projelerde byk neme
sahip Frameworkleri ncelikli olarak renmeniz, bilmediiniz Frameworkleri zamanla, ihtiya
duydugunuzda renmeye balamanz, kariyer planlamanzda etkili olacaktr.
4.Blm - Frameworks, Reporting ve Testing 30

Spring Framework

Java dnyasnda sanrm Spring Framework kadar popler ve kabul grm ok az uygulama
gelitirme ats vardr. Peki Spring neden bu kadar popler ve yaygn kullanlyor? ve neden iyi
bir Java Ninja Spring Framework renmelidir? Cevaplar Spring Framework zelliklerine bakarak
vermeye alalm.
Spring Framework Rod Johnson tarafndan gelitirmeye balanan, ak kaynak kodlu bir Java plat-
formudur ve ilk kez Haziran 2003te versiyon 0.9 Apache 2.0 Lisans ile piyasaya srlmtr. Mart
2004te resmi versiyon 1.0 yaynlanm ve birka yl iinde Java topluluklar iinde yaygnlamtr.
Spring Framework, kurumsal Java proje gelitirme srelerini kolaylatrmay hedef almtr. yi
bilinen programlama pratiklerini POJO tabanl programlama modeli ile uygulayarak, daha hafif
kurumsal proje yaplar oluturmutur.
Spring Framework, tanabilir, basit, hzl ve esnek JVM tabanl sistemleri ve uygulamalar olutur-
manza yardmc olur. Spring Framework, kurumsal Java projeleri iin en ok kullanlan uygulama
gelitirme atsdr. Dnyada milyonlarca yazlm gelitirici yksek performans, yeniden kullan-
labilir kod yaps, test gdml proje gelitirme yaps gibi birok zellik iin Spring Framework
kullanmaktadr.
Spring Framework, zellikle bamllklarn enjekte edilmesi (Dependency Injection - DI), kontroln
tersine evrilmesi (Inversion of Control - IoC) prensibi ve Aspect Oriented Programming (AOP) ile
n plana kmaktadr.
Spring Framework birok farkl bileenlerden olumaktadr. Burda amacm Spring Framework ve
bileenlerini uzun uzun anlatmak yerine, ksa aklamalarla, ncelikle neler grenmeniz gerektiini
gstermektir.

Spring MVC
Spring Web MVC Framework, Model View Controller mimarisi ile esnek ve elementlerinin
birbirine gevek bal (Loosely Coupled) olduu Web uygulamalar gelitirmek iin tasarlanmtr.
4.Blm - Frameworks, Reporting ve Testing 31

Spring MVC mimarisi bir Web uygulamasnda elementlerin ayrl (Separation of Concerns)
prensibine dayanr. Model uygulama data katmann, View uygulama UI katmann, Controller ise
kullanc istekleri ileme katmann temsil eder.
Spring MVC Framework DispatcherServlet kullanlarak gelitirilmitir, DispatcherServlet btn
HTTP istek (Requests) ve yantlarn (Responses) iler. Daha nce Java Web Programlama iin
Java Servlets renmek zorundasnz demitik. Java Servlets rendiyseniz, Spring MVC size ok
daha anlalr gelecektir. Spring MVC, Spring Framework iinde kullanlan Kontroln Tersine
evrilmesi - Inversion of control(IoC) tasarm kalb presibi zerine bina edilmitir.
Peki Spring MVC hangi tr projeler iin uygundur? Java dnyasnda Spring MVC birok deiik View
kombinasyonu ile Html 5 ve JavaScript projelerinde aktif olarak kullanlmaktadr. Son zamanlarda
zellikle JavaScript dnyasndaki gelimelerle Spring MVC daha popler olmaya balamtr. View
teknolojileri proje yapsna gre deimekle birlikte, seenekler programcnn tercihine braklmtr.
Aadaki View teknolojileri ile kullanm rnek olarak verilebilir.
Java Template sistemleri ile kullanma rnekler:

Spring MVC + JSP - Java Server Pages


Spring MVC + Apache Velocity
Spring MVC + Apache FreeMarker
Spring MVC + ThymeLeaf

JavaScript projeleri ile kullanma rnekler:

Spring MVC + AngularJS


Spring MVC + EmberJS
Spring MVC + Sencha ExtJS
Spring MVC + DOJO Toolkit
Spring MVC + jQuery + jQuery UI

pucu
JSR 371 spesifikasyonu ile Java EE 8 ierisine standart Model-View-Controller (MVC
1.0) ats eklenmesi kararlatrlmtr. Spring MVC ile benzer bir yapya sahip olmas
dnlebilir.
4.Blm - Frameworks, Reporting ve Testing 32

Spring Boot
Spring Boot bamsz Spring uygulamalarn minimal ayarlar yaparak koturmak iin kullanlr.
zellikle uygulama gelitirme srecinde programclara ok byk kolaylklar salar, kendi iindeki
gml Web Serverlar (Tomcat, Jetty, Undertow) aracl ile uygulamalar ok hzl koturulabilir.
Spring Boot ile uygulama prototipleri gelitirmek ve test etmek mmkndr. Spring Boot projeleri
Jar veya WAR olarak deploy edebilmektedir.
Spring Initializr ile ok kolay Maven veya Gradle tabanl, farkl Framework seenekleri ile Spring
Boot projeleri oluturmak mmkndr.

Spring Data
Spring Data, programclarn veritaban uygulamalar gelitirirken karlat sorunlara pratik -
zmler retir. Spring Data ilikisel ve noSQL veritabanlar, Map-Reduce ve bulut tabanl (Cloud) veri
servislerine eriim teknolojilerini destekleyerek kolay bir yap sunar. Spring Data, JDBC, MyBatis,
Hibernate, JDO ve JPA gibi popler veri eriim atlarn destekler. zellikle Spring Data JPA ilikisel
veritaban ilemlerinde interface kullanm ile tekrar eden kod bloklarn azaltp, hzl gelitirme
yapmay salar.

Spring Batch
Spring Batch, toplu ilem (Batch Processing) yaplan uygulamalarda, zellikle byk aptaki
kaytlarn ilenmesi iin tekrar kullanlabilen, yksek performansl temel zellikler sunar. rnek
olarak yle bir proje yaps dnelim: Elimizde hergn ilenmesi ve kontrollerden getikten sonra
veritabanna kayt edilmesi gereken 2GB byklgnde CSV File olsun. Bu dosyay sral bir ekilde
ileyip, kontrollerden geirirken karlalan hatalar Loglama, doru ilenmi verileri ve ilikili
tablolar gncelleme/kayt etme, veritaban Transactionlarn ynetme ve daha birok ilemler
Spring Batch tarafndan yaplr. Toplu ilemler yaplrken farkl uygulama admlar (Read, Process,
Write vb.) kullanlr.

pucu
JSR 352 spesifikasyonu ile Java EE 7 ierisine standart Batch Applications for the Java
Platforms eklenmitir.

Spring Security
Spring Security, Java uygulamalar iin kimlik dorulama (Authentication), yetkilendirme (Autho-
rization) ve dier gvenlik ilemlerini yapar. Spring Security, internet ataklarna kar da koruma
salar, ayrca Servlet API ve Spring MVC entegrasyonu da mevcuttur. Spring Java uygulamalarnda
standart bir Java Authentication and Authorization Service - JAAS zmdr.
4.Blm - Frameworks, Reporting ve Testing 33

pucu
Apache Shiro kullanm kolayl ile ne kan, popler bir dier Java Security Frame-
workdr. Apache Shiro, standart Java EE ve Spring Framework entegrasyonu sunmaktadr.

Spring Social
Spring Social, Spring uygulamalarn Twitter, LinkedIn, Facebook gibi API sunan sosyal medya
hesaplarna balant yapar. Sosyal medyann kitleler tarafndan aktif kullanlmas ile birok Web
site, Web ve mobil uygulama sosyal medya kullanc hesaplar ile giri yapabilme veya yeni
hesap oluturma (Sign in, Sign up) zellii ekledi. Spring Social, bu APIleri kimlik dorulama
(Authentication) ile kolayca kullanmanz salar. Sosyal medya ile ilgili projeler gelitiriyorsanz
Spring Social kullanm ok pratiktir. Spring Social kullanmadan, sosyal medya API ilemlerini
kendiniz kodlamaya alrsanz Spring Social kolaylklarn hemen farkedersiniz!

Spring Framework ve Standart Java EE Tartmalar


Java EE versiyon 6, Spring Core Framework iinde bulunan en nemli zellikleri (Dependency
Injection, Context and Dependency Injection, POJO Component model vb.) standart Java EE iine
alm, hantal Component yapsndan daha hafif bir yapya brnmtr. zellikle Java EE versiyon
6 ile artk Spring Framework yerine standart Java EE kullanlmal reklamlar yaplm ve Java EE ile
gelen standart yapnn daha mantkl olduu tartmalar balamtr.
Spring Framework bu srete kendini hzl yenileyerek, birok eklenti ve gelitirmeler karm,
Java topluluuna zellikle test gdml kurumsal proje gelitirme srelerini daha zevkli hale
getirmitir. Spring MVC, zellikle JavaScript uygulama atlarnn ykselii ile daha popler hale
gelmi, AngularJS, EmberJS gibi uygulama gelitirme atlar ile aktif kullanlmaya balanmtr.
Java topluluklar, hala Spring Framework ve standart Java EE seimi konusunda deiik tartmalar
yaamakla birlikte, Spring Frameworkn kurumsal projelerde birok kolaylklar saladn kabul
etmektedirler.
Zaman ierisinde, Spring Framework ilk kt ve yaygnlat zamanlardaki gibi hafif kalmam,
her geen gn eklenen yeni zelliklerle daha da karmak bir yapya brnmtr. Java EE mi Spring
Framework m kullanmalym? tartmalarnda

Spring Framework eskisi gibi ok hafif deil, Java EE ise eskisi gibi ok hantal
degil!

genel gr ne kmaktadr.
Spring Framework iin eletirilerin banda btn konfigrasyon ilemlerinin XML ile yaplmas
geliyordu. Spring Framework versiyon 3.0dan itibaren Java classlar icinde Annotations ile konfi-
grasyon yapmaya olanak salayarak spagetti XML yapsndan kurtulmutur.
4.Blm - Frameworks, Reporting ve Testing 34

Btn bu tartmalar bir yana, Spring Framework Spring Boot, Spring Data, Spring Social gibi
gncel yaklam ve gelitirmeler ile hala geerli ve pratik bir uygulama gelitirme ats olduunu
ispatlamtr. Eer standart Java EE ve Spring Framework kullanma konusunda seim yapmak
zorunda kalrsanz, taraftar olarak deil de, gelitireceiniz projenin yapsn gz nne alarak,
uygun ie, uygun alet antas mantyla yaklamanz tavsiye ederim.

Apache Wicket

Apache Wicket, Jonathan Locke tarafndan 2004 ylnda gelitirilmi, versiyon 1.0 2005 Haziran
aynda yaynlanm, ak kaynak kodlu, hafif bileen tabanl, sunucu tarafnda alan Java Web
uygulama gelitirme atsdr. Konsept olarak JSF ve Tapestry uygulama atlarna benzemekle
birlikte Java Swing bileen seti yaps rnek alnarak gelitirilmitir. 2007 Haziran aynda Apache
st dzey projesi olarak tanmlanmtr. Apache Lisans srm 2.0 ile lisanslanmtr.
Wicket, Java programclarnn rahat, gl ve esnek bir ekilde Web uygulamalar oluturabilmesini
amalamaktadr, bu nedenle karmak gereksinimleri olan Web uygulamalarn yksek verimlilik
elde ederek kodlamak mmkndr. Wicket, programclar nesne ynelimli programlama yapmaya
zorlar, Wicket ile yeniden kullanlabilir bileenler gelitirmek ok kolaydr.
Apache Wicket sigorta, banka, CRM, ERP sistemleri bata olmak zere, birok sektrde Web
uygulamalar ve Web siteleri gelitirmek iin kullanlmaktadr.

pucu
Apache Wicket renmek iin Java Swing, JSF veya Tapestry gibi uygulama atlarn
renmek zorunda deilsiniz! Java Swing biliyorsanz Apache Wicketi daha kolay anla-
yabilirsiniz.
4.Blm - Frameworks, Reporting ve Testing 35

Google Web Toolkit - GWT

Google Web Toolkit - GWT, Java ile karmak JavaScript Web arayzleri ve zengin internet
uygulamalar (Rich Internet Applications - RIA) gelitirmek iin, Google tarafndan 2007 Mays
aynda, ak kaynak kodlu gelitirilmi, aralar kmesinden oluan bir uygulama gelitirme atsdr.
Dier uygulama gelitirme atlarnn aksine, GWT btn kodlamalar Java ile yapmaktadr.
Java ile yazlan kodlar, derleme zamannda seilen Web tarayclara gre JavaScript kodlarna
dntrlmektedir.
GWT, Java programclarna, yeniden kullanlabilir Web bileenleri, ezamanl olmayan RPC agrlar
(Asynchronous Remote Procedure Calls - RPC) ve esitli Web tarayclara uyumluluk gibi nemli
zelliklerle karak, interaktif masast uygulamalarn internete tamay amalamtr. GWT
arlkl olarak Model View Presenter - MVP tasarm ablonunu kullanarak, UI iin test gdml
uygulama gelitirmeyi kolaylatrmtr. GWT, Backend kodlamalarn programcya brakm ol-
makla birlikte RPC ve Google Guice ile hafif Backend kodlamalarna imkan tanmaktadr. GWT,
Spring veya Standart Java EE ile birlikte kullanlabilmektedir.
GWT ile gelitirilen uygulamalar Single Page Applications - SPA olarak da bilinen, internet
tarayclarda tek sayfa iinde alan Ajax JavaScript uygulamalardr. GWT deisik platformlara
gre UI kodlamasna imkan tanyarak ayn projenin Web ve mobil aletler iin derlenmesine ve
kullanlmasna imkan vermektedir. Bu zellik ile ayn uygulamann Web, Tablet ve akll telefonlarda
ayn kod yaps ile almas salanmaktadr. GWT uygulama atsnn en byk avantaji ise internet
taraycda herhangi bir eklenti kurmadan alabilmesidir. Google birok uygulamasn GWT ile
gelitirdiini duyurmutur.
GWT dnyasnda Java topluluklar ve firmalar birok ak kaynak kodlu GWT bileenleri gelitir-
mitir. GWT ile proje gelitiriyorsanz Sencha GXT ve Smart GWT bileen setlerini incelemenizi
neririm. Ayrca GWT projelerinde RPC ilemleri yapyorsanz, popler bir kullanma sahip olan
4.Blm - Frameworks, Reporting ve Testing 36

Dozer ktphanesine bakmanz tavsiye ederim. Dozer, GWT projelerinde, sunucu tarafnda okunan
data nesnelerini, istemci tarafna uygun hale evirmek iin kullanlmaktadr.
2012 ylndan beri GWT projesinin ynetimi ve gelitirilmesi Googleun da iinde bulunduu, farkl
firma ve kiilerden oluan GWT Ynetim Kurulu tarafndan yrtlmektedir. GWT Apache Lisans
srm 2.0 ile lisanslanmtr.

Vaadin

Vaadin, ak kaynak kodlu, zengin internet uygulamalar iin gelitirilmi, bileen tabanl Java Web
UI uygulama gelitirme atsdr. Vaadin, dier RIA uygulama gelitirme atlarnn aksine sunucu
tarafl almaktadr. Ksaca Vaadin uygulama mantklarn ogunlukla sunucu tarafl iletip, istemci
tarafnda ise Ajax kullanarak zengin ve interaktif kullanc deneyimi salamaktadr. Vaadin, sunucu
tarafnda standart Java APIlerini kullanrken, istemci tarafnda ise Page Rendering ilemlerinde
GWT kullanmaktadr. Vaadin bileenleri GWT zerine bina edilmi olup, yeni Vaadin bileenleri
GWT ile kodlanabilmektedir.
Vaadin ile GWT karlatrmas yaparken en dikkat ekici farkllk Vaadin bileen setlerinin sunucu
tarafl almas, buna karlk GWT bileen setlerinin ise sadece istemci tarafl almas gsteri-
lebilir. Bu zellik Vaadin uygulamalarnn ayn JSF uygulamalar gibi sunucu tarafl ve durumlu
(Stateful) almasn salamaktadr. Vaadin son zamanlarda Java topluluklar tarafndan popler
grlmeye balanm zellikle ERP, CRM ve intranet i uygulama zmlerinde tercih edilmeye
balanmtr. Vaadin topluluu, yzlerce Vaadin eklentileri gelitirerek Vaadinin popler olmasnda
byk rol oynamtr.
Vaadin, standart Java EE ve Spring Framework ile entegre kullanlabilir ve firmalar iin cretli
gelimi aralar, profesyonel eitim ve kod zmleri sunmaktadr.
Vaadin, ilk olarak Ajax uygulama gelitirme ats olarak gelitirilmi, 2007 ylnda ad IT Mill
Toolkit olarak duyurulmu, 2009 Mays aynda ise Vaadin Framework olarak ismini deitirmitir.
Vaadin, Apache Lisans srm 2.0 ile lisanslanmtr.
4.Blm - Frameworks, Reporting ve Testing 37

Errai Framework

Errai Framework, Red Hat tarafndan JBoss projesi olarak GWT tabanl gelitirilen, zengin Web
uygulama gelitirme atsdr. Dier GWT uygulama gelitirme atlarnn aksine Errai Framework
zellikle Contexts and Dependency Injection - CDI ve Java Message Service - JMS gibi standart
Java EE APIleri ile entegre almaktadr. Dikkat ekici zelliklerinden birisi de JAX-RS ile entegre
Web servisleri kullanarak alabilmesidir. GWT, Vaadin ve diger GWT ile gelitirilmi uygulama
gelitirme atlar da JAX-RS ile gelitirilmi Web servislerle alabilir, fakat bu entegrasyonu
programcnn yazmas gereklidir!
Birok gzel zelliklerine ragmen Errai Framework, Vaadin kadar popler bir kullanma ulaama-
mtr. Bunun en nemli sebebi olarak Vaadin ve diger GWT uygulama gelitirme atlarna gre
renme sresinin daha uzun olmas ve Errai Frameworke zel gelitirilen birok Annotations ve
Template Binding gibi GWTden farkl birok zelliinin olmas gsterilebilir.
Errai Framework, Apache Lisans srm 2.0 ile lisanslanmtr.
4.Blm - Frameworks, Reporting ve Testing 38

Play Framework

Play Framework, ak kaynak kodlu, Java ve Scala programlama dillerinde gelitirilmi Web
uygulama gelitirme atsdr. Play Framework Model View Controller - MVC tasarm desenine gre,
programclarn verimlilii esas alnarak gelitirilmitir. Java dnyasnn Ruby on Rails veya Django
Framework Web uygulama gelitirme ats da denilebilir. Bu iki Web uygulama ats ile birok
benzer zellii bulunmaktadr.
Play Framework ile Web uygulamalar hem Scala hem de Java dili kullanlarak gelitirilebilir.
Play Framework Template Engine iin Scala dilini kullanr. Play Framework, dier Java uygulama
gelitirme atlarnn aksine tamamen RESTful mant ile durumsuz (Stateless) alr, Full Stack
Web uygulama gelitirme atsdr, yani programcnn ihtiyac olan btn bileenler ile, test aralar
ve Web Server da dahil, birlikte gelir. Dier Java EE uygulamalarna gre, Play Web uygulamalar
daha az CPU ve bellek tketirler, ayrca yksek leklenebilir yapdadrlar.
Trkiyede Mustafa Dumlupnarin gelitirdii, ak kaynak kodlu Seyhan n muhasebe program
Play Framework ile gelitirilmitir.
4.Blm - Frameworks, Reporting ve Testing 39

ZK Framework

ZK Framework, ak kaynak kodlu, kurumsal Web ve mobil uygulama gelitirme ats ve zengin
bileen setidir. Bileenleri tek bir kod yaps ile deiiklik yaplmadan Web, Tablet ve mobil aletlerde
alabilmektedir. Bileenleri ZUML, XUL ve XHtml kullanlarak ok az programlama bilen tasarm-
clar tarafndan da tasarlanabilir. Bileenler iine Java kodlar Script olarak gmlebilmektedir. ZK
Framework, JSP iin zel Tags Library ve Spring Framework entegrasyon destei sunmaktadr.
ZK Framework iin en byk eletiri, kendi bileenlerine zel bir Syntax gelitirmesi ve lisans modeli
saylabilir. ZK Framework ve bileen setlerini gelitiren Potix Corporation firmas cretli kurumsal
destek de vermektedir.

Dier Frameworkler?
Java dnyasnda birok uygulama gelitirme atlar gelitirilmi olup, ben sadece nemli grdm,
gncel olan, hakknda bilgi sahibi olmanz gerektiini dndklerimi buraya aldm. nemli
grdnz ve bu blmde deinilmemi uygulama gelitirme atlar varsa, ltfen bana bildirin,
hakknda aratrma yapp bu blme ekleyebilirim.

Framework Seimi
Daha nce de tekrar tekrar sylediim gibi yazlm dnyasndaki uygun ie, uygun alet antas
(Use the right tools for the right job) prensibi Framework seiminde dikkat edilecek birinci prensip
olmaldr. Eer taraftarlk yaparak projenize uygun olmayan bir Framework ile yola karsanz, ilerde
zorluklarla karlar, projeyi zamannda bitiremez, bitirdiinizde ise birok hatay gn kurtararak
zme yoluna gidebilirsiniz!
renmek iin hangi Framework seilmeli? diye sorarsanz, ilk cevabm Java dnyasnda yaygn
bir kullanma sahip, hemen hemen her Java i ilannda karlaabileceiniz Spring Framework ve
4.Blm - Frameworks, Reporting ve Testing 40

Spring MVC olur. zellikle Spring MVC, Cloud ve JavaScript projelerin sunucu tarafnda ok sklkla
kullanlmaktadr.
GWT ve Vaadin gibi Web uygulama gelitirme atlar size zellikle Single Page Applications -
SPA uygulama gelitirme hakknda birok tecrbe kazandracaktr. Yazlm dnyasnda ykselen
JavaScript trendlerine bakarsanz, SPA uygulamalarn ne kadar popler olduunu grebilirsiniz.
Vaadin mi GWT mi grenmeliyim? diye sorarsanz, cevap kesinlikle modern GWTnin geldii son
noktada Vaadin olacaktr.
Apache Wicket ile internette aratrmalar yaparsanz birok eletiriye ramen u cevab sklkla
grrsnz: Apache Wicket just works!. Bu gerek projelerde, baka Web uygulama gelitirme
atlarndan dili yanm, ok problemler yaam programclarn tecrbesidir: Evet Apache Wicket
alyor, sorun yok!
Buradaki tavsiyeler benim yllarca Java projelerinde sizler gibi renme, okuma, aratrma ve
deneme-yanlma sonucunda ulatm tecrbelerin bir sonucu. Aslnda siz, kendi yolunuzu kendiniz
belirlemelisiniz, burdaki aklamalar benim kiisel grm olup, benim kiisel zevklerim ve
altm projelerin bir sonucudur. yi bir Java Ninja olmak istiyorsanz okumakla yetinmeyin,
kod yazn, basit denemeler, kk projeler, belki herkes yanl yapyordur, belki sizin bildikleriniz,
sizi farkl sonulara gtrecektir, kod yazn ve Frameworkleri kendiniz test edin! Anlamann en
kolay yolu bence budur.

Raporlama - Reporting
Birok Java uygulamasnda verilerin listelenmesi, analiz edilmesi, ihtiyalara gre raporlanp,
deiik formatlarda grntlenmesi, yazdrlmas, E-Mail veya Download olarak son kullancya
sunulmas gibi ilemlere ihtiya duyulmaktadr. Bu tr ilemleri yapan raporlama aralar Java
uygulamalarnda bazen ok byk bir neme sahip olmaktadr. rnek olarak, bir ticari yazlm
setinde kayt edilen siparilerin e-mail ile PDF olarak gnderilmesi verilebilir.
Yazlm dnyasnda birok dil ve platform destekleyen, ak kaynak kodlu veya cretli raporlama
aralar mevcut. Ben burda Java topluluklar tarafndan kabul grm ve popler kullanma sahip
olanlar hakknda ksa bilgiler vermek istedim.
4.Blm - Frameworks, Reporting ve Testing 41

Jasper Reports

Jasper Reports, JasperSoft firmas tarafndan gelitirilen, ak kaynak kodlu ve popler Java
raporlama aracdr (Reporting Tool). Jasper Reports ile Java programlarndan PDF, HTML, XML,
CSV, TXT, RTF, Open Office ve MS Office formatlarnda raporlar oluturulabilir. Jasper Reports ile
oluturulan raporlar Jasper Viewer program ile ekranda grntlenebilir, istenirse direk yazdrla-
bilir veya dosya olarak export edilebilir. Jasper Report, Java programclarna raporlama ilemlerini
kolaylatrmak iin gelitirilmitir.
Jasper Reports, rapor taslaklar (Report Template), JRXML ad verilen XML dosyalaryla yaplmak-
tadr. JRXML, elle veya gelimi Jasper Reports designer programlar ile yaplabilir. Jasper Reports
taslaklar derlenebilir yapdadr, derleme annda hatalar gsterilerek, programclara tasarm annda
hatalar dzeltme imkan vermektedir.
iReport ak kaynak kodlu, NetBeans RCP tabanl gelitirilmi, Jasper Reports rapor tasarm (Report
Designer) programdr. iReport hala kullanlsa da JasperSoft firmas yine ak kaynak kodlu, Eclipse
RCP tabanl Jaspersoft Studio programn duyurmu ve gelecek Jasper Reports srmleri iin
yeniliklerin sadece Jaspersoft Studio ile sunulacan bildirmitir.
Jasper Reports, Jasper Viewer ad verilen, masast Java programlarnda kullanlan, Java Swing
tabanl bir Jasper Reports rapor grntleyeci ile birlikte gelmektedir. Ayrca SWT Jasper Viewer ile
SWT ve Eclipse RCP ile de kullanlabilmektedir.
Jasper Reports, ayrca Jasper Reports Server ile Web veya mobil uygulamalara, bamsz ve g-
mlebilir bir raporlama ve analiz sunucusu olarak kullanlabilir. Jasper Reports Server ile ezamanl
veya zamanlanm raporlama ve analizler internet taraycya, mobil cihazlara veya e-mail olarak
iletilebilmektedir.
Dynamic Reports, Jasper Reports tabanl gelitirilmi, Report Designer olmadan direk Fluent Java
API kodlar ile raporlar oluturulabilen, dinamik bir raporlama aracdr. Dynamic Reports program-
clara Java kodlar ile hzl raporlama teknikleri verse de ben ileri dzey raporlama tasarmlar iin
iReport veya Jaspersoft Studio kullanmay tercih ediyorum.
4.Blm - Frameworks, Reporting ve Testing 42

pucu
Jasper Reports ile temel raporlama ilemleri Jasper Reports Library ile yaplmaktadr,
balarken dier JasperSoft rnleri ile kartrmayn!

BIRT

BIRT, (Business Intelligence and Reporting Tools - BIRT), Eclipse platformu ile ak kaynak kodlu
gelitirilen, zellikle Java ve Java EE tabanl Web ve masast uygulamalar (Rich Clients veya RIA)
iin, gelimi zelliklere sahip, raporlama ve i zekas (Business Intelligence) zmdr.
BIRT, iki ana bileenden olumaktadr, Eclipse IDE ile entegre alan grsel rapor tasarm arac
(Visual Report Designer) ve raporlar oluturan Runtime Report Engine. BIRT ile HTML, PDF, Open
Office, MS Office ve PostScript formatlarnda raporlar oluturabilirsiniz.
4.Blm - Frameworks, Reporting ve Testing 43

Pentaho Reporting

Pentaho Reporting, ak kaynak kodlu, birok bileenden oluan ilikisel ve analitiksel raporlama
aracdr (Reporting Suite). Rapor tasarm arac Report Designer, masast rapor tasarm yazlm ile
zengin ve karmak yapdaki raporlamalar iin grsel tasarm ortam sunmaktadr. Reporting Engine,
Report Designer tarafndan raporlar oluturmak iin kullanlan, gmlebilir Java raporlama ktp-
hanesidir. Eski adyla JFreeReport olarak da bilinmektedir. Reporting SDK ise Java programclarna
Pentaho Reporting kullanmn sunan paketlerden olumaktadr.
Pentaho Reporting ile sunucu veya istemci tarafnda HTML, PDF, XML, Text, CSV ve MS Excel
formatlarnda raporlar oluturulabilir.

JFreeChart

JFreeChart, ak kaynak kodlu gelitirilen, Java ile grafik, diyagram ve izelgeler oluturmak iin
kullanlan bir ktphanedir (Chart Library). JFreeChart bir raporlama arac deildir, fakat sunucu
ve istemci tarafnda alan Java uygulamalar iin Chart ilemleri yapabileceiniz ok yararl
bir ktphane. JFreeChart birok ak kaynak kodlu Java projesinde programclarn kullanmna
sunulmaktadr.
4.Blm - Frameworks, Reporting ve Testing 44

JFreeChart ile oluturulan grafik, diyagram ve izelgeler farkl formatlarda kullanlabilir, kayt
edilebilir:

Java Swing, JavaFX bileenleri


PNG ve JPEG resim formatlar
Vektor grafikleri, SVG de dahil
PDF, EPS formatlar

Reporting Tools Seimi


Bugne kadar Jasper Reports ile daha fazla altm ve Jasper Reports ile raporlama ihtiyalarna
hzl zmler bulunabileceini rahatlkla syleyebilirim. ncelikle Jasper Reports renmenizi,
ilerde dier raporlama araclarn test etmenizi, denemenizi tavsiye ederim.

Testing
Seksenli ve doksanl yllarda Cobol, Pascal, Visual Basic ve Delphi gibi diller ile binlerce satr
kod yazlr ve program kodlamas bittikten sonra, kodu yazan programc tarafndan kodun alp
almad test edilir, daha sonra ise program mterilere gnderilmeden nce, bir test ekibi
tarafndan GUIlerin ve yeni fonksiyonlarn alp almad test edilir, hata bulunmad takdirde,
mterilere kurulmak zere yeni srm oluturulurdu. Test ekibi ne kadar dikkatli test ederse etsin,
yine de mterilere gnderilen programlarda alma zaman hatalar (Runtime Errors), ilemsel
hatalar (Functional Errors), kurulum hatalar (Installation Errors) veya gncelleme hatalar (Update
Errors) kard. Hatta firmalarda

Benim testlerimden hata kaamaz!

diye vnen testiler olurdu. Mterilerine en az hata ile kurulum disketi, CDleri gnderen
firmalar bunun yazlmda kalite gstergesi olduunu anlatp vnrd. Yine de lkemizde birok
yazlmevinin programlarnda hatalarla karlalrd.
Yazlm gelitirme son yllarda ok deiik srelerden geti ve hala da geiyor. Test gdml yazlm
gelitirme Test Driven Development - TDD olarak bilinen ve yazlan kodlarn, yine kod yazarak
test edilmesini bir zorunluluk olarak savunan yazlm gelitirme prensipleri, artk olmassa olmaz
seviyesinde kabul grm durumda.
yi bir Java Ninja olmak istiyorsanz yazdnz her satr kodun, metotlarn ve snflarn efektif
altndan emin olmalsnz. Bu da ancak deiik testler yazlarak mmkn olmaktadr.
Testing bal bana kitaplara konu olacak kadar geni bir konu, benim burdaki asl amacm Java
Ninja adaylarna TDD gretmek deil, belli bal, olmassa olmaz Testing eitleri hakknda ksa
bilgiler vermek.
4.Blm - Frameworks, Reporting ve Testing 45

Test Driven Development - TDD Nedir?


Klasik proje gelitirme srecinde nce proje kodlanr, sonra zaman ve yeterli bte varsa testler
kodlanr ve testler aslnda proje gelitirmenin bir paras olarak grlmez, daha ok, vakit varsa
testler yazlsa iyi olur mant hakimdir. Test gdml gelitirme, bir proje gelitirilirken nce
testlerin, sonra testlerle birlikte snf implementasyonlarnn yazlmasn ve daha sonra kodlarn
iyiletirilmesini (Refactoring), deitirilmesini ve implementasyonlarn testlerle birlikte yazlmasn
esas alr. Bu yntem, test ekle, altr, yeni test hata verir, testin almas iin kod yaz, Refactoring
yap, kod yapsn deitir, testi dzelt eklinde devam eden yazlm gelitirme srecidir. TDD, yaz-
lm gelitirme sreclerinin en iyi testlerle birlikte yaplabileceini syler. Bylece projede daha nce
kodlanm modller, classlar ok rahat deitirilebilir, testler araclyla yaplan deiikliklerin
proje zerindeki etkisi hemen grlebilir.
Yazlm dnyasnda Unit Testing, Functional Testing, Integration Testing, Acceptance Testing, User
Testing ve benzeri gibi birok test eidi bulunmaktadr. TDD ve Testing gibi geni konular, bu mini
kitabn boyutlarn ok aacak nitelikte ve detayl. Bu sebepten dolay ksa bir tantm ile, TDD ve
Testing konularnda kaynak kitap ve eitimler vererek sizlere yol gstermek istedim.
Bir projede test edilebilecek en kk birimlerin test edilmesine Unit Test denir. Unit, adndan
da anlalaca gibi bir class iindeki birimlerin (Methods), btn projeden soyutlanm ekilde
test edilmesidir. lgili birim, test edilirken, o birime bal dier classlar Mock Objects (simule
edilmi nesneler) ad verilen teknikle kullanlr. Unit Test, yazdnz kodu projeden soyutlayarak,
alabilirliini test eder.
Java dnyasnda ak kaynak kodulu JUnit Testing Framework basitlii ve yaygn kullanm ile ne
kmaktadr. Yine ak kaynak kodlu Mockito, JUnit ile birlikte kullanmyla ne kan bir Mocking
Frameworkdr. TestNG, JUnitden esinlenerek gelitirilmi, ak kaynak kodlu dier bir Testing
Frameworkdr. TestNG ile sadece Unit testler deil, Functional, End-to-end, Integration testleri de
yaplabilmektedir.
Arquillian, ise Java EE projelerinde uzak (Remote) veya gml (Embedded) bir Container iinde
testlerin altrlmasn salar. EJBlerle gelitirilen projelerin alabilmesi iin bir Application Ser-
ver olmas zorunluluu, testlerin Arquillian ile koturulmasyla alabilmektedir. Ksaca Arquillian,
JVM zerinde alan, ileri dzeyde geniletilebilir, programclara Java Middleware iin otomatize
edilmi Integration, Functional ve Acceptance testleri yazmay kolaylatran bir test platformudur.
Selenium, test dnyasnda popler olan bir dier test platformudur. ThoughtWorks firmas tarafn-
dan gelitirilen, ak kaynak kodlu ve birok programlama dilini destekleyen, Web uygulamalar iin
otomatize edilmi testler oluturulabilen bir test aracdr. Selenium aslnda internet tarayc zerinde
yrtlen ve tekrar eden testleri otomatize etmek ve interaktif UI testleri iin gelitirilmitir.
Selenium, Html ve JavaScript tabanl gelitirilmitir.
yi bir Java Ninja olmak iin Unit testlerde uzmanlamanz gerekir. Unit testler TDDnin ilk
admdr. Yazdnz classlardaki metodlarn alp almadn size Unit testler syler.
4.Blm - Frameworks, Reporting ve Testing 46

leri Konular
Bu mini kitapta bahsedilmeyen ve Java ile birlikte kullanlan birok teknoloji var. Tecrbeli
Java gelitirme uzman arkadalar birok teknolojiden bahsetmediimi hemen farketmilerdir. Pair
Programming, Extreme Programming, Agile Software Development, Scrum, Kanban, Big Data,
NoSQL, MongoDB, Redis, Apache Hadoop, Solr, Lucene, Elasticsearch ve benzeri gibi saylabilecek
Java ile ilgili o kadar ok teknoloji var ki behsetmediim.
Sizin Java Ninja olarak kariyerinizde ilerlemeniz, yazlm trendlerini ve teknolojik gelimeleri takip
edip, kendinizi srekli yenilemeniz ve aktif bir renim srecinden gemeniz gereklidir. lerde bu
konularda frsat bulduka kitaplar okumanz tavsiye ederim.
5.Blm - Mobil Apps Gelitirme
Mobil Uygulamalar
Gnmzde akll telefon, tablet ve dier mobil aletler/akll cihazlar yaygn olarak kullanlmaktadr.
Bu, biz programclar iin byk avantajlar beraberinde getirmektedir. Eskiden programlar arlkl
olarak i dnyasna ynelik gelitirilirdi. Gnmzde ise i yazlmlar, multi medya, eitim ve
oyun programlar, artk birok akll cihazda alabilmekte ve kullanlabilmektedir. Eer yazlm
dnyasnda kariyer yapmay planlyorsanz, mobil yazlm gelitirme, size, gelitireceiniz bir mobil
uygulamann Google Play Store veya Apple App Store gibi uygulama marketleri araclyla tm
dnyaya datlabilmesi imkan vermektedir.
Gelecein dnyasnda mobil uygulamalarn ok daha ncelikli olarak gelitirileceini ngrmek
imdiden mmkndr. Google Play Store ve App Store gibi uygulama marketlerindeki uygulama
says milyonlar gemitir. Nesnelern interneti (Internet of Things - IoT) akll cihazlarn da
hayatmza her geen gn daha fazla girmesiyle Mobile First Web siteleri ve uygulamalar firmalar
ve son kullanclar iin ok daha nem kazanmtr. Gnmzde yazlm gelitirme, tarihte hi
olmad kadar popler olmutur ve daha da popler olmas beklenmektedir. Ksaca mobil uygulama
gelitirme alannda uzmanlarsanz, bu kariyeriniz iin iyi bir gelecek yatrmdr.

Android Programlama
Android, akll telefon, tablet, TV, NetBooks, Media Player gibi mobil cihazlar iin Google ve
Open Handset Alliance tarafndan gelitirilen ak kaynak kodlu bir iletim sistemi ve yazlm
platformudur. Android iletim sisteminin temelini Linux-Kernel oluturmakla birlikte, Android
tipik bir Linux datm deildir, Android birok Linux temel ayarlarn deitirerek gelitirilmitir,
bu sebeple daha ok gml Linux datm gibi grlebilir. Android, 2014 ylnda akll telefon
pazarnda yzde 84.6 paya ulam, Google verilerine gre, gnlk milyonlarca yeni Android cihaz
aktifletirilmektedir.
Burda uzun uzun Android iletim sisteminin hikayesini anlatmak yerine, Java Ninjalar iin nemli
olabilecek noktalara deinmek istiyorum. Android, Java SE zerine bina edilmi Dalvik Virtual
Machine (srm 5.0 ile birlikte Android Runtime - ART olarak isimlendirilmitir) ve Android
iin gelitirilmi Java ktphaneleri (Android Java class libraries) ile almaktadr. Standart Sun
JVM gibi Dalvik VM de Java Byte-Codelarn altrmaktadr. Android uygulamalar Java ile
gelitirilmekte olup, SQLite, OpenGL tabanl 3D-Grafik ktphanesi gibi baz sistem yazlmlar C
ve C++ ile yazlm native ktphaneleri kullanmaktadr. JNI Java Native Interface ile C program
kodlar Android iinde kullanlabilmektedir. Kk bir ayrnt: Android, GNU/Linux dnyasnda
5.Blm - Mobil Apps Gelitirme 48

kullanlan GNU ktphanelerinin implementasyonuna sahip olmad iin, standart GNU/Linux


uygulamalarn Androide tamak mmkn deildir.
Android platformuna yazlm gelitirmek iin Java SDK ve Android SDK gereklidir. App ad verilen
uygulamalar apk uzantl bir kurulum paketi oluturularak Google Play Store veya dier ticari uy-
gulama datclarn (Amazon, Samsung vb.) uygulama marketlerine yklenebilir, istenirse Package
Manager ile cihaza local kurulum da yaplabilir. Android modler bir yapda tasarlanmtr, VM
ve Kernel fonksiyonlar haricindeki sistem komponentleri farkl farkl gelitirilmi uygulamalarla
deitirilebilir. rnein SMS uygulamas hounuza gitmiyorsa, yeni bir SMS App gelitirirerek,
Android iletim sisteminin bu yeni SMS Appi standart olarak kullanmasn seebilirsiniz. Android
bu modlerlii sayesinde bir ok donanm ve yazlm reticilerine Android zerinde zelletirme
imkan sunmaktadr.
Android programlama iin n art Java SE teknolojilerine hakim olmanz. Eer Javaya yeni
baladysanz, bir POJO class yazmay bile bilmiyorsanz, Android programlamaya balamanz
hayal krkl yaratabilir. Ayrca online Android Apps gelitirmek iin Java Backend uygulamalar
iinde Web Serviceler yazmanz gerekecektir. nceki blmlerdeki Java Web Serviceleri ile ilgili
verilmi detayl bilgilere bakabilirsiniz. Android iin mecburi olmamakla birlikte Html 5, Css 3 ve
temel dzeyde JavaScript bilmeniz Android App gelitirirken size ok yardmc olacaktr.
Java ile masast, Web veya Andorid Apps gelitirirken temel UI ve UX tasarm prensiplerine
dikkat etmelisiniz. Android iin Material Design iyi bir balang. Google Material Design, Google
tarafndan ncelikle Adroid Apps iin gelitirilmi, daha sonra tasarmclarn youn ilgisi zerine
Web sitelerini de destekleyen srm Material Design Lite karlm, platformlar iin birleik
bir UI deneyimi gerekletiren tasarm, prensip ve bileenlerden oluan tasarm atsdr (Design
Framework).

Android iin App Gelitirme Yntemleri


Android iin App gelitirmenin eitli yollar var:
Native App Gelitirme: Java SDK ve Android SDK ile Java kodlayarak standart native Apps
gelitirmek. Java ile gelitirilen Apps, Google Play Store veya Package Manager ile cihaza direk
yklenebilir. Eer cihazn donanmna (rnek kamera veya telefonun adres defteri verilebilir) erien
uygulamalar gelitiriyorsanz performans asndan native App gelitirme tavsiye edilir. Ayrca baz
mobil JavaScript App platformlar da cihazlarn donanmna eriim salayabilmektedir.
Html 5 App Gelitirme: Html 5 ile mobil tasarm destekleyen bir JavaScript uygulama ats
kullanarak App gelitirme. App verileri offline olarak cihaza kayt edilecekse, Android ile birlikte
nceden yklenmi olarak gelen SQLite veritabann kullanabilirsiniz. Eer verilerinizi online
tutmak istiyorsanz, veri alverii iin Server tarafnda alan bir programlama dili ile Web
Serviceler yazmanz gerekecektir. Html 5 ve JavaScript ile App gelitirmenin en byk avantaj,
sadece Android platformu iin deil, btn mobil platformlarda alabilen Cross Platform Apps
gelitirilebilmesidir.
5.Blm - Mobil Apps Gelitirme 49

AngularJS, Google tarafndan gelitirilen JavaScript uygulama gelitirme ats. Kurumsal Java uy-
gulamalarnda son zamanlarda da Frontend uygulama ats olarak kullanlmaktadr. AngularJS ile
platform bamsz Web projeleri ve Apps gelitirmek mmkndr. Akll cihazlardaki dokunmatik
zellikler Touch Events de desteklenmektedir.
Ionic Framework, AngularJS kullanlarak gelitirilmi, platform bamsz App gelitirme atsdr.
jQuery Mobile, popler jQuery JavaScript ktphanesinin mobil versiyonu.
Dojo Toolkit Mobile, popler Dojo Toolkit JavaScript uygulama gelitirme atsnn mobil versiyonu.
Sencha Touch, btn App platformlarn destekleyen platform bamsz JavaScript uygulama
gelitirme ats. Sencha Touch zaten btn dnyada mehur olan Sencha ExtJS JavaScript uygulama
gelitirme ats temel alnarak gelitirilmitir. Sencha ExtJS ve Sencha Touch ile tek bir Codebase
yapsyla hem Web uygulamalar hem de Apps gelitirmek mmkndr.
Adobe PhoneGap, Html ve JavaScript kullanarak platform bamsz Hybrid App gelitirme atsdr.
Aslnda PhoneGap ve Apache Cordoba ayn temel App gelitirme atsdr. Adobe firmas Phone-
Gapi satn aldktan sonra ak kaynak versiyonunu Apache Vakfna balam ve Apache Cordova
ak kaynak olarak sunulmutur.
[Apache Cordova][], Html ve JavaScript ile gelitirilen mobil uygulamalar Native Container iinde
altrarak birok platformda akll cihazlar daha uygun kullanabilmektedir. Akll cihaz fonksi-
yonlar, JavaScript API olarak, gelitiricilere sunulmaktadr. Apache Cordoba, Html ve JavaScript ile
gelitirilmi mobil uygulamalar sanki native platform uygulamalariym gibi compile etmektedir.
Titanium, Native, Hybrid veya mobil Web Apps gelitirmek iin tasarlanm, platform bamsz App
gelitirme atsdr.
Meteor, Web, mobil ve masast platformlar iin, ak kaynak kodlu, JavaScript uygulama gelitir-
me atsdr.
Yukaridaki listeye almadm birok App gelitirme platformlar/atlar bulunmaktadr. Burdaki
amacmz btn JavaScript uygulama atlarn anlatmak yerine, Java Backend + JavaScript Frontend
App gelitirme iin temel bilgiler vermektir. Adobe PhoneGap, Apache Cordova, Titanium ve Meteor
uygulama gelitirme platformlar Hbyrid ve native APIler sunarak App gelitirmeyi destekledii
iin dier JavaScript App gelitirme atlarndan farkl kullanlabilmektedir.
Bir Web Sitesini Native App Olarak Kullanmak: Online bir Web sitesi veya Web uygulamanz
var ve bu uygulamay online alabilecek ekilde App olarak Google Play Store ve dier App
marketlerden kullanclara sunmak istiyorsunuz. ncelikli yapmanz gereken ey, Web sitesi veya
Web uygulamasn Responsive Design prensipleri ile mobil cihazlara uygun halde tasarlayn. Tasarm
ilemleriniz bittikten sonra, Adobe PhoneGap, Apache Cordoba veya Titanium ile bir native
App eklinde derleyin ve ilgili App marketlere ykleyin. Bu App, mobil cihazlara kurulduunda,
kullanclara native App deneyimi sunmakla birlikte, aslnda gml bir Web Container iinde
Web uygulamas olarak alacaktr. Detayl bilgiler iin Adobe PhoneGap, Apache Cordoba veya
Titanium dkmanlarna bakmanz tavsiye ederim.
5.Blm - Mobil Apps Gelitirme 50

Raspberry Pi
Raspberry Pi, ngilterede Raspberry Pi Vakf tarafndan gelitirilen, tek karttan oluan bir bilgisa-
yardr. Okullarda ve gelimekte olan lkelerde bilgisayar bilimleri renimini desteklemek amacyla
gelitirilmektedir. Fiyat 20$ - 35$ arasnda modele gre deimekte olup, bata dokunmatik ekran,
kamera olmak zere birok ek para ile kullanlabilmektedir. Raspberry Pi Vakf 2016 ylnn ubat
aynda yaklak 8 milyon adet Raspberry Pi satldn duyurmutur. Avrupada aylk Raspberry Pi
dergilerinin kmas ne kadar yaygnlatnn da gstergesidir.
Raspberry Pi, aslnda evde kendi bilgisayarn ve buna bal deneysel programlamalar yapmak iin
ok ideal bir sistem. Raspberry Pi, GNU/Linux tabanl ve Windows 10 IoT Core iletim sistemleri ile
almaktadr. Python ana programlama dili olarak kullanlmakta olup C, C++, Java, Perl, Ruby ve
birok programlama dili desteklenmektedir.
Raspberry Pi ile ilgili uzun uzadya bilgiler vermek yerine, Java programclar iin neden ilgin
olduundan bahsetmek istiyorum. Java platformu Java Embedded (JavaSE Embedded, JavaME
Embedded, JavaME, JDK for ARM, Java Card SDK) ile deiik birok cihaza yklenebilmektedir.
JDK 8 for ARM, Raspberry Pi gibi ARM ilemciler kullanan cihazlar iin tasarlanm bir JDK.
Oracle JDK 8 for ARM ile ilk balarda, JavaFX yeni nesil grafiksel kullanc arabirimi ara setini
Raspberry Pi gibi ARM ilemcileri kullanan cihazlarda kullanma sunmutu, fakat daha sonralar,
cihaz eitlilii ve deiik srm oluturmann zorluklar bahane edilerek JDK 8u33 srmyle ARM
ilemcili cihazlar iin JavaFX destei kaldrlm ve OpenJDK ile desteklenecei bildirilmiti. Bunun
zerine Java topluluu, ak kaynak kodlu JavaFXPorts projesi ile JavaFX desteini tekrar ARM
ilemcili cihazlara getirmitir.
JavaFX, dokunmatik UI gelitirmeyi destekledii ve X-Server olmadan direk Framebuffer ile alt
iin daha az kaynak kullanmaktadr. Yeni Raspberry Piler 1.2GHz 64-bit Quad-core ARMv8 CPU
ve 1GB ile JavaFX projeleri iin yeterli sistem kayna salamaktadr.
Eer hobi amal, evde kendi bilgisayarnz yapp, Raspberry Piye deiik aksasuarlar ekleyerek
Nesnelerin Interneti (Internet of Things - IoT) veya Akll Ev Otomasyonlar (Smart Home
Automation) projeleri gelitirmek istiyorsanz JavaFXPorts sizin iin doru seim olabilir.
6.Blm - Sertifikalar
Sertifikalar Dnyasna Hogeldiniz
Yazlm dnyasnda alan programclar niversitelerin deiik blmlerinde eitim alan kiilerden
olumaktadr. Hacker diye bilinen en eski yazlm ustalar, bilgisayar bilimlerinden daha ok
matematik, fizik gibi blmlerden gelen kiilerdi. Eskiden niversiteler, bilgisayar mhendislii veya
bilgisayar programlama ad altnda eitim verirken, gnmzde firmalarn ihtiyalarna gre birok
farkl alan domutur. Artk hemen hemen her niversite fakltesinde bilgisayar yazlmlar, web
design veya programlama dersleri verilmektedir. Hatta programlama dersleri artk birok lkede
niversite ncesi okullarn temel eitimine bile alnmtr. Bir yazlmc olarak, inaat mhendislii
okuyan birisinin Java veya C++ reniyor olmasna armamalsnz.
Eskiden bilgisayar bilimleri mhendislik eitimi verirken, gnmzde hemen hemen her blmde,
o blm ile ilgili IT blmleri de almaktadr. rnein eskiden sadece Computer Science veya
Software Engineering gibi blmler varken gnmzde Ynetim Biliim Sistemleri (Business
Computer Science), Tbb Biliim Sistemleri (Medical Computer Science), Medya Biliim Sistemleri
(Media Computer Science) gibi blmler almaktadr. rnein dnyada ve Trkiyede Ynetim
Biliim Sistemleri adyla alan blmler programclarn sadece mhendis olarak deil, ayn za-
manda i mant da bilmesi gerektii tezinden yola karak almaktadr. Baka bir rnek makine
mhendislii: artk makine mhendislii informatii gibi, makine mhendisliine zel programlama
dersleri verilen blmler eitim vermektedir.
Hangi blm veya isimle akademik eitim verirse versin, gnmzde niversiteler teknolojinin
hzna yetiememektedir. Bu yzden niversiteyi bitiren yeni mezunlar, yazlm firmalarnda i
bulmakta zorlanmaktadr. Yazlm gelitirme, eitimin yansra tecrbe ve pratik proje gelitirerek
renildigi iin, yeni mezunlar firmalarn istedii teknolojilerde yeterli dzeyde bilgi ve tecrbeye
sahip olamamaktadr. niversitelerde akademik eitim veren hocalarmz hemen yle bir itirazda
bulunabilir: niversitelerin amac piyasada kullanlan en son teknolojilerle eitim vermek deil,
renme pratiini ve blmle ilgili genel prensipleri retmektir. Doru. Ksaca niversitelerin
amac Java Ninja yetitirmek deil, yazlm prensiplerini ve yazlm sistemlerini bilen mezunlar
vermektir. Burda rencilere ok byk sorumluluklar dmektedir. renciler eitim sresini iyi
deerlendirip ayn zamanda piyasada kullanlan teknolojilerle de hair neir olmak zorundadrlar.
Peki diyelim ki ok iyi bir niversiteden Java renerek mezun oldunuz. Artk diplomanz da
var, ama diploma i grmesinde size sorulan Java sorularna cevap veremez! Bu durumda i
grmesinde seeneiniz var:

1. Java sorularna dogru cevap verip, Java bilginizi ispatlamak.


6.Blm - Sertifikalar 52

2. Dnyaca kabul grm bir Java sertifikas gstererek, bu sertifikay almak iin Javay ok
detayl rendiinizi ispatlamak.
3. Daha nce Java ile gelitirmi oldugunuz projelerinizi referans gstermek.

Sertifikalar nemli mi?


Gnmzde birok kurum, deiik eitimler vererek birok IT alannda sertifikalar vermektedir. Baz
sertifikalar iin sadece egitime katlma art aranrken, baz sertifikalar iin ev devleri de yapmanz
gerekmekte ve sonuta eitimi rendiinizi ispatlamak iin sertifika snavn en az yzde 60 - 70
gibi derecelerle gemeniz istenmektedir.
Belirli teknolojilerde sertifika almak, zaman, para ve emek ister. ten veya niversiteden yorgun
argn eve gelip tekrar evde 2 - 3 saat sertifika snavlar iin almak, ev devleri yapmak hi de
zevkli deil. Sertifikalar nemli, fakat mecburi deildir, ama unu unutmayn, sertifikalara nem
veren firmalar bazen sizi, sadece zgemiinize bakarak deerlendirmektedir. Bu da sertifikalar olan
kiilere +1 puan salamaktadr.
Benim kiisel grm: Java sertifikalar i grmesinde nemlidir, zellikle yeni mezunsanz,
size i grmelerinde avantaj salar. Yurtdnda almay planlyorsanz, Oracle Java sertifikalar,
btn dnyada kabul grd iin herzaman avantajldr. Javay yeni reniyorsanz, sertifika
snavlarna hazrlanmak, sizin daha detayl Java konularn renmenize yardmc olabilir. Eer
zaten Java sertifikalarnn ok ok zerinde Java bilgi ve tecrbesine sahipseniz, Java sertifikalar
sizin iin para ve zaman kayb olabilir. Merak edenler iin syleyeyim, ben 2012 ylnda Oracle
Certified Professional, Java SE 6 Programmer sertifikas aldm. lgi duyduum ve zevkle rene-
ceim teknolojiler olursa, ilerde farkl sertifikalar da almay dnyorum. Fakat kariyer amacmn
sertifika olmadn, teknoloji odakl olduunu belirtmek isterim!

Java Sertifikalar
Oracle University uan sadece Java SE ve Java EE sertifikalar vermektedir. Java sertifika snavlar
Oracle University sertifika snav artlarn salayan herkese aktr. Herhangi bir niversite/blm
mezunuyeti art aranmamaktadr. Java sertifika snavna girmek iin, bulundugunuz lkede Java
sertifika snav yapmaya yetkili bir sinav merkezine bavurup, demeyi yaptktan sonra snav tarihi
belirlemeniz gerekiyor. Snavdaki sorularn kodlar tercme edilmeyip, snav sorular deiik dillerde
seilebilmekle birlikte, ngilizce girmenizi tavsiye ederim. Hangi dilde snav geerseniz gein Oracle
sertifikalar ngilizce dzenlenmektedir. Snavda baarl olma genelde yzde 63 veya st puanlarla
belirleniyor, her snavn geme derecesi farkl. Snav hangi puanla baardnz nemli deil, yzde
99 ile geenle, yzde 70 ile geen kisi arasnda fark yok, snav derecesi sertifikaya yazlmyor!
Snav yapan en iyi, en kt kurum diye birey yok, zaten snavlar USA merkezl online yaplyor,
snava girdiiniz kurum sadece bulunduunuz lkede size snava girme artlarn hazrlyor (pc,
kamera gzetiminde snav odas vs.) lke vatandal snavda sorun olmamakla birlikte, snav
6.Blm - Sertifikalar 53

iin iki tane resimli, resmi kimlik istenmektedir. (Pasaport, nfus czdan, ehliyet vb. gibi.) Snava
girmeden nce kamera ile resminiz kayt edilmekte, snav sonucu belgesi, bu ekilen resim ile
baslmaktadr. Sertifika zerinde resim bulunmamaktadr.

nemli Not
Baz niversiteler veya eitim kurumlar deiik isimler altnda Java Sertifikas kurslar
veya snavlar dzenleyip, sertifika vermektedir. Bu tr sertifikalarn tm dnyada geerli
olmadn, sadece bulunduunuz lkede dikkate alnacan gz nnde bulundurmanz
yararnza olur.

Java sertifikalar ile ilgili en gncel bilgilere Oracle Education Web sitesinden ulaabilirsiniz. Genel
sertifika bilgilerinden sonra, sertifika detaylarna gz atalm:

Java SE Sertifikalar
Java SE sertifikalar Associate, Professional ve Master olmak zere 3 kategoriden oluuyor.

Oracle Associate Sertifikalari - OCA


Aadaki sertifika snavlarndan birini geerseniz Oracle Certified Associate, Java SE 5/6/7/8 serti-
fikas almaya hak kazanrsnz. rnein Java SE 8 snavna girdiniz, sertifikanz: Oracle Certified
Associate, Java SE 8 Programmer olarak dzenlenir.

Oracle Certified Associate, Java SE 5/6 Programmer


Oracle Certified Associate, Java SE 7 Programmer
Oracle Certified Associate, Java SE 8 Programmer

Java 5/6/7 versiyonlaryla hala sertifika snav yaplsa da, Java 8 son versiyon olduu iin bu snava
girmenizi tavsiye ederim.

Oracle Professional Sertifikalari - OCP


Professional sertifika snavlarna girebilmek iin ilgili Java versiyonunun rnein Oracle Certified
Associate, Java SE 8 Programmer sertifikasna sahip olmanz gerekir. Aadaki sertifika snav-
larndan birini geerseniz Oracle Certified Professional, Java SE 5/6/7/8 sertifikas almaya hak
kazanrsnz. rnein Java SE 8 snavna girdiniz, sertifikanz: Oracle Certified Professional, Java
SE 8 Programmer olarak dzenlenir.

Oracle Certified Professional, Java SE 6 Programmer


6.Blm - Sertifikalar 54

Oracle Certified Professional, Java SE 7 Programmer


Oracle Certified Professional, Java SE 8 Programmer

Ayrca eski versiyonlar iin de Update snavlar mevcuttur. Java SE 6 ile Associate sertifikas alp
Java SE 8 versiyonuna Update yapabilirsiniz. Sertifikanz zaten yoksa, direk en son versiyonla, yani
Java 8 ile sertifika snavlarna girmenizi tavsiye ederim.

Oracle Master Sertifikas - OCM


Java SE Master sertifikas, uan sadece Java SE 6 olarak veriliyor ve Java Master sertifika snavlar
en zor snavlar olarak biliniyor. Oracle Certified Master, Java SE 6 Developer sertifikas almak
iin aadaki admlar gemeniz gerekmektedir:

1. Herhangi bir Oracle Certified Professional, Java (SE 5, SE 6, SE 7 veya SE 8) Programmer veya
Sun Certified Java Programmer (herhangi bir Java versiyonu) sertifikasna sahip olmalsnz.
2. Aadaki verilen listeden bir kursu tamamlamanz gerekiyor. Bu kurslar online veya Oracle
yetkili eitim kurumlarndan da alnabiliyor. Maalesef cretler pahal, online kurslar biraz
daha ucuz.
Developing Applications with Java EE 6 on WebLogic Server 12c
Java SE 7 New Features
Java SE 7 Programming
Java SE 7 Fundamentals
Object-Oriented Analysis and Design Using UML
Java SE 7: Develop Rich Client Applications
Java Performance Tuning with Mission Control & Flight Recorder
Java SE 8 Fundamentals
Java SE 8: Programming
Java SE 8 New Features
3. Bu adm 2. adma ek olarak verilmi, daha nceki Sun/Oracle kurslarndan birini tamamla-
dysanz da 2. adm yerine geerli olabiliyor. Ksaca 2. adm veya 3. admdan bir Sun/Oracle
kursu tamamlamalsnz.
4. Bu admda Java SE 6 Developer Certified Master Assignment 1Z0-855 snavn gemeniz
gerekiyor. Bu aslnda ev devi. Size verilen konularla ilgili Java programn gelitirip yolla-
manz gerekiyor. Sonular 6 - 8 hafta iinde aklanyor.
5. Bu adm 4. admda baarl olamadysanz tekrar niteliinde.
6. Bu admda Java SE 6 Developer Certified Master Essay 1Z0-856 testini gemeniz gerekiyor.
Assignment ev devini gndermeden bu snava giremiyorsunuz.

nemli Not
4. 5. ve 6. adm, yani Assignment ve Essay kayttan itibaren 6 ay iinde bitirilmesi
gerekiyor.
6.Blm - Sertifikalar 55

Java EE Sertifikalar
Java EE sertifikalar Master ve Certified Expert olmak zere 2 kategoriden oluuyor.

Master Sertifikas
Java EE Master sertifikas uan sadece Java EE 6 olarak veriliyor ve Java EE Master sertifika snavlar
en zor snavlar olarak biliniyor. OCA sertifikas gibi hibir nkoulu yok, yani OCP sertifikas
olmadan girilebiliyor. Oracle Certified Master, Java EE 6 Enterprise Architect sertifikas almak
iin aadaki admlar gemeniz gerekmektedir:

1. Aadaki verilen listeden bir kursu tamamlamanz gerekiyor. Bu kurslar online veya Oracle
yetkili eitim kurumlarndan da alnabiliyor. Maalesef cretler pahal, online kurslar biraz
daha ucuz.
Architect Enterprise applications with Java EE
Developing Applications for the Java EE 6 Platform
Java Design Patterns
Java EE 6: Develop Business Components with JMS & EJBs
Java EE 6: Develop Database Applications with JPA
Java SE 7 Fundamentals
Java SE 7 Programming
Web Component Development with Servlets & JSPs, Java EE 6
Java EE 6: Develop Web Services with JAX-WS & JAX-RS
Java EE 7: New Features
Object-Oriented Analysis and Design Using UML
Java SE 8 Fundamentals
Java SE 8: Programming
Developing Applications with Java EE 6 on WebLogic Server 12c
2. Bu adm 1. adma ek olarak verilmi, daha nceki Sun/Oracle kurslarndan birini tamamla-
dysanz da 1. adm yerine geerli olabiliyor. Ksaca 1. adm veya 2. admdan bir Sun/Oracle
kursu tamamlamalsnz.
3. Bu admda Java EE 6 Enterprise Architect Certified Master 1Z0-807 testini gemeniz
gerekiyor.
4. Bu admda Java (EE) Enterprise Architect Certified Master Assignment 1Z0-865 snavn
gemeniz gerekiyor. Bu aslnda ev devi. Size verilen konularla ilgili Java programn gelitirip
yollamanz gerekiyor. Sonular 6 - 8 hafta iinde aklanyor.
5. Bu adm 4. admda baarl olamadysanz tekrar niteliinde.
6. Bu admda Java (EE) Enterprise Architect Certified Master Essay 1Z0-866 testini gemeniz
gerekiyor. Assignment ev devini gndermeden bu snava giremiyorsunuz.
6.Blm - Sertifikalar 56

nemli Not
4. 5. ve 6. adm, yani Assignment ve Essay kayttan itibaren 6 ay iinde bitirilmesi
gerekiyor.

Certified Expert Sertifikalar


Uzmanlk sertifikalar olarak da biliniyor. Master sertifikalarnn aksine, sadece bir alanda uzmanlk
ieren sertifikalardr. Master sertifikalarna gre, sinavlarn gemek daha kolaydr.
Oracle Certified Expert, Java EE 6 JavaServer Faces Developer Sertifikas: Java Web program-
clar iin popler bir sertifika. Bu sertifikay almak iin 2 adm gerekli:

1. Herhangi bir Java versiyonu Sun/Oracle Certified Java Programmer Professional sertifikasna
sahip olmak.
2. Java EE 6 JavaServer Faces Developer Certified Expert 1Z0-896 snavn gemek.

Oracle Certified Expert, Java EE 6 Web Component Developer Sertifikas: Java Web program-
clar iin popler bir sertifika. Bu sertifikay almak iin 2 adm gerekli:

1. Herhangi bir Java versiyonu Sun/Oracle Certified Java Programmer Professional sertifikasna
sahip olmak.
2. Java EE 6 Web Component Developer Certified Expert 1Z0-899 snavn gemek.

Oracle Certified Expert, Java EE 6 Web Services Developer Sertifikas: Java Web, Mobile ve
Cloud programclar iin popler bir sertifika. Bu sertifikay almak iin 2 adm gerekli:

1. Herhangi bir Java versiyonu Sun/Oracle Certified Java Programmer Professional sertifikasna
sahip olmak.
2. Java EE 6 Web Services Developer Certified Expert 1Z0-897 snavn gemek.

Oracle Certified Expert, EE 6 Java Persistence API Developer Sertifikas: Java veritaban ve
Business Logic - Backend programclar iin popler bir sertifika. Bu sertifikay almak iin 2 adm
gerekli:

1. Herhangi bir Java versiyonu Sun/Oracle Certified Java Programmer Professional sertifikasna
sahip olmak.
2. Java EE 6 Java Persistence API Developer Certified Expert 1Z0-898 snavn gemek.

Oracle Certified Expert, Java EE 6 Enterprise JavaBeans Developer Sertifikasi: Java Business
Logic - Backend programclar iin popler bir sertifika. Bu sertifikay almak iin 2 adm gerekli:

1. Herhangi bir Java versiyonu Sun/Oracle Certified Java Programmer Professional sertifikasna
sahip olmak.
2. Java EE 6 Enterprise JavaBeans Developer Certified Expert 1Z0-895 snavn gemek.
6.Blm - Sertifikalar 57

Sertifika Snavlarna Hazrlk


Java sertifika snavlar, sizin Java bilginizi lmekten daha ok, elikili ve yanltmal sorularda nasl
cevaplar verdiinizi ler. Baz sorular size ok sama gelebilir, baz doru cevaplar deerlendirmeye
alnmaz, baz sorular syntax hatalar ile veya Code formatlar deitirilerek sorulur, bylece snava
giren kiinin azami dikkati llr. Bazen Java projeleri kodlarken hi de ezberlemediiniz paket
isimleri, class, metod isimleri sorulur. Birok modern Java IDE ve kod editrlerinin otomatik
olarak dzelttii ve ok da nemsemediiniz kk ayrntlar snavlarda sorulabilir. Bence en zor
sorular da 5 - 7 cevabn olduu ve doru verilen her cevab iaretlemenizin istendii ok cevapl
sorular. Eleyerek gitme ansnz olmad ve cevaplar birbirine ok benzedii iin seim de ok
zorlaabilmektedir.
Yeni mezun olan ve Java tecrbesi olmayan arkadalar kesinlikle snavlara ynelik kitap ve sertifika
eitimlerine alarak snava girmeliler. Java bilmek sertifika snavndaki artmal sorular cevap-
lamanza yetmez. zellikle soru rnekleri zmeden snava kesinlikle girmeyin, kaybedersiniz. Java
ile proje gelitiren, tecrbeli programc arkadalara tavsiyem ise bol bol soru rnekleri zmeleri.
Javada uzman programc olmanz, gerekten soru zmeden snav gemenize yetmeyebilir, sorular
ok artmal kabiliyor.
Sertifika snavlarna hazrlanmak iin deiik yollar var:

1. Oracle Training kurslarna katlabilirsiniz, kurslar pahal olduu iin tavsiye etmem! Online
kurslar biraz daha ucuz, isterseniz Oraclen anlamal olduu resmi eitim kurumlarnda
da sertifika eitimleri alabiliyorsunuz. Gittiiniz kursun Oracle tarafndan onayl olmasna
dikkat edin (Oracle Partner veya Oracle Yetkili Kursu).
2. zel Java Sertifika Kurslar: Java eitimi veren zel kurslara gidebilirsiniz. Javann popler
olmasyla her ehirde Java kurslar veren zel eitim kurumlar, firmalar veya niversite
kurslar bulunmaktadr. Bu kurslar temel Java eitimi vermektedir, baz kurslar ise temel Java
eitimini tamamlayanlara ynelik Java sertifika kurslar dzenlemektedir. yi kurslar sertifika
almanz garanti etmez, fakat yol gsterici olabilir. Gideceiniz kursun eitim ieriinin sizin
Java seviyenize uygun olduuna dikkat edin. Eer sertifika almak iin Java temel eitimi
veren bir kursa giderseniz, sertifika snavnda ok da faydal olmayabilir! Sertifika kurslarnn
sresine dikkat edin, baz eitim kurumlar bir sertifika almak iin alt ay gibi uzun bir
eitim tavsiye etmektedir. Unutmayn eitim sresi, sizin Java seviyenizle ve eitime gnlk
ayracanz zamanla ilgilidir. Java ile alan ve proje gelitiren arkadalarn, aylk bir
alma ile Master haricindeki Java sertifikalarn ok rahat alabileceini tahmin ediyorum.
Ksaca renim sresi kiiden kiiye deiir, hazr olduunuzu hissedene kadar renmeye
devam edin.
3. Sertifika Hazrlk Kitaplar: zellikle gireceiniz sertifika sinav iin, Oracle University
tarafndan tavsiye edilen kitaplar ve snavda sorulacak sorularn konu listelemeleri ok
nemli. Standart Java kitaplar sertifika sinavlar iin faydal olsa da, tm sertifika ieriklerini
anlatmayacaktr.
6.Blm - Sertifikalar 58

4. EPractize Labs, Java sertifika snavna ynelik eitim setleri satmaktadr. Sadece sertifika
snavlarna younlat iin, rnek sorular ve fiyatlarn uygunluu, kesinlikle zaman kaybn
nlyor. Sertifika sinavna hazrlk kitaplarnn yannda EPractize Labs eitimleri sertifika
konularnda ok hzl yol almanz salayabilir.
5. Coderanch, Java sertifika forumlarnda sertifika snavlar ile ilgili kaynaklar, yorumlar, rnek
sorular ok faydal, sorularn mantn anlamanz ve sertifika tartmalarnda tavsiye edilmi
kitaplara gzatmanz ok iyi olacaktr. Sertifika snavlarn gemi kiilerin tavsiyeleri ve
alt kaynaklar da yol gsterici olabiliyor.

Spring Framework Sertifikalar


uan Spring Framework gelitiren Pivotal firmas Pivotal Academy adyla Spring Framework
kurslar ve sertifika snavlar dzenlemektedir. Birok sertifika snav dzenlense de, ben Java
kariyeri yapmak isteyen arkadalar iin aadaki sertifikalar hakknda ksa bilgiler vermek istedim:

Spring Professional Sertifikas


Bu sertifika temel Spring konularn kapsyor. Java OCP snav gibi dnlebilir. Bu sertifikay
alabilmek iin aadaki admlar izlemeniz gerekiyor:

1. Pivotal veya partner eitim kurumlar tarafndan verilen, drt gnlk Core Spring kursunu
tamamlamanz gerekiyor. Bu kurs cretli ve maalesef pahal.
2. Core Spring kursunu tamamladktan sonra Spring Professional Certification Exam snavn
gemeniz gerekiyor. Snav iin extra cret istenmiyor. Zaten Core Spring kurs creti, snav
cretini de kapsyor.

Spring Web Application Developer Sertifikas


Bu sertifika, Spring Web konularn kapsyor ve Spring ile Web uygulamalar gelitiren programc-
lara tavsiye ediliyor. Bu sertifikay alabilmek iin aadaki admlar izlemeniz gerekiyor:

1. Pivotal veya partner eitim kurumlar tarafndan verilen drt gnlk Spring Web kursunu
tamamlamanz gerekiyor. Bu kurs cretli ve maalesef pahal.
2. Spring Web kursunu tamamladktan sonra Spring Web Application Developer Exam
snavn gemeniz gerekiyor. Snav iin extra cret istenmiyor. Zaten Spring Web kurs creti,
snav cretini de kapsyor.
6.Blm - Sertifikalar 59

Enterprise Integration Specialist Sertifikas


Bu sertifika Java mimarlar ve Java Yazlm gelitiriciler iin tasarlanm. Bu sertifikay alabilmek
iin aadaki admlar izlemeniz gerekiyor:

1. Pivotal veya partner eitim kurumlar tarafndan verilen drt gnlk Enterprise Spring
kursunu tamamlamanz gerekiyor. Bu kurs cretli ve maalesef pahal.
2. Enterprise Spring kursunu tamamladktan sonra Enterprise Integration Specialist Certifi-
cation Exam snavn gemeniz gerekiyor. Snav iin extra cret istenmiyor. Zaten Enterprise
Spring kurs creti, snav cretini de kapsyor.

Android Sertifikas
Google, Google Developer Certification, program ile Android eitimleri ve sertifikasyonu sun-
maktadr. Udacity eitim platformu zerinden cretsiz Developing Android Apps, kursu Google
tarafndan verilmektedir. Yine Udacity eitim platformu zerinden Associate Android Developer
Certification snavn geerek Google Developer sertifikasn alabilirsiniz.
7.Blm - Eitim Kaynaklar
Kitaplar, Eitim Setleri, Ak Kaynak Projeler
Bu blmde Java Ninjalar iin seilmi kitap, eitim setlerini ve projeleri listeledim. Bu mini
kitabn amac sizi doru kaynaklara ynlerdirmek ve yzlerce kitabn arasnda kaybolmadan, en
ncelikli renme sras ile kitaplar okumanz salamaktr. Burdaki kitaplar gerekten zenli
semeye dikkat ettim, bazlarn okudum, bazlarn ise daha nceki yllarda baslm ama artk
gncelliini yitirmi kitaplarn yerine ekledim. Hala da okumaya ve renmeye devam ediyorum.
Burdaki kitaplar okuma tercihini sizlere brakyorum, herkes farkl renme pratiklerine sahip
olabilir. Baz programclar ak kaynak kodlu proje kodlarn okuyup, kod rnekleri yazarken,
bazlar teorik olarak kitaplar okumay tercih edebilirler. Baz i grmelerinde uzman olduum
bir alanda hangi kitaplari okuduum ve bu kitaplarn ierii ile ilgili sorular gelmiti. rnein
kendinizi dzgn, anlalr Clean Code yazan bir Java uzman olarak tantyorsanz byk ihtimalle
Clean Code ile ilgili hangi kitaplar okuduunuz sorulabilir veya Clean Code presipleri nedir gibi bir
soruyla karlaabilirsiniz. Size soruyu yneltenler de sizin gibi bir renme srecinden getikleri
iin, kitaplar i grmelerinde ortak bir dil konuabilmenizi salar.
Baz kitaplar vardr 300 sayfa iinde iinize belki de 50 sayfas yarayabilir, baz kitaplar vardr
her satrn zenle okur, baucu kitab yapar, proje gelitirirken tekrar tekrar bakarsnz. Ayrca
gnmzde internet zerinden eitimler, kurslar belirli bir alanda uzmanlamak isteyenlere daha
pratik, daha interaktif renme deneyimleri sunmaktadr. Evet bu online eitimlerin bir ou
cretlidir, ama size direk uzmanlk eitimi verecei iin ok zaman kazandrabilir.
Ksaca Java Ninja serveninizde nemli olan, ilgi duyduunuz ve renmek istediginiz alanlara
ynelik, kaliteli eitim materyallerine ulamanzdr. Aadaki kitap, eitim kaynaklar ve projeler
listesi, bu mini kitapta anlatlan konu srasna gre dzenlenmitir. Kitap veya eitim kaynaklar
nerilerinizi bana bildirirseniz burdaki listeye ekleyebilirim.

Java Programlama Dilinin Temelleri


Oracle resmi Java eitimleri.
Tutorials Point Java eitimleri.
Profesyonel Java Sanal Kursu 1. Blm.
Java: A Beginners Guide, Sixth Edition.
Head First Java.
Effective Java.
Thinking in Java.
7.Blm - Eitim Kaynaklar 61

Java Cookbook, 3rd Edition.


Java 8 E-Book, Rahman Usta.

Java le Veritaban Programlama


W3Schools SQL eitimleri ile ok kolay ve pratik SQL renebilirsiniz.
MySQL veritaban renmek iin Learning MySQL
Tutorials Point MySQL veritaban eitimleri
PostgreSQL veritabani renmek iin PostgreSQL: Up and Running, 2nd Edition
Tutorials Point PostgreSQL veritaban eitimleri
H2 veritabani eitimleri
Oracle resmi JDBC eitimleri
JDBC renmek iin Tutorials Point JDBC eitimlerini tavsiye ederim.
JPA renmek iin Tutorials Point JPA egitimlerini tavsiye ederim.
Hibernate iin tavsiye kitap Java Persistence with Hibernate
Beginning Java EE 7 kitab Java Persistence API blm, Maven ve test yazarak, pratik
anlatlm.
Java Persistence with MyBatis 3

Java Desktop ve Rich Client Programlama


Oracle resmi Java Swing eitimleri.
Java Swing MVC tasarm kalb ile gelitirdiim, ak kaynak kodlu demo projesi: Customers
Java Swing Application
JGoodies sunumlar ve demolar, zellikle UI/UX iin ok iyi eitimler ieriyor. ounluu
Java Swing iin olsa da yeni sunumlarda JavaFX anlatmlar da bulunmaktadr. zellikle UI
ve Layout tasarmnda Java dnyasnda ok popler olduunu belirtmeliyim. Oracle kendi
rnlerinde de baz JGoodies Frameworklerini kullanmaktadr.
JGoodies Swing with Style
JGoodies First Aid for Swing
JGoodies Layout and Panel Building in Swing
JGoodies Layout Essentials
JGoodies Swing Data Binding
JGoodies Desktop Patterns and Data Binding
JGoodies Swing Data Validation
JGoodies Showcase 1.8.0 Java Swing ve JavaFX mimarileri de kodlanarak demoya eklenmi.
Oracle resmi JavaFX eitimleri
JavaFX 8: Introduction by Example
Pro JavaFX 8: A Definitive Guide to Building Desktop, Mobile, and Embedded Java Clients
Mastering JavaFX 8 Controls
7.Blm - Eitim Kaynaklar 62

Design Patterns - Tasarm Kalplar


Design Patterns, zcan Acar, zcan Acarn tasarm kalplar kitab, karmayn derim.
Tutorials Point Design Patterns eitimlerini tavsiye ederim.
Head First Design Patterns, Java tasarm kalplar denince akla ilk gelen kitap!
Head First Object-Oriented Analysis and Design, Head First Design Patterns kitabna ek olarak
okunabilir.
Java Design Patterns - A tour of 23 gang of four design patterns in Java
Design Patterns. Elements of Reusable Object-Oriented Software, klasik tasarm kalplar
kitab, kod rnekleri Java olmasa da klasik bir kitap.
Vogella Design Patterns eitimleri

Logging
The Complete Log4j Manual: The Reliable, Fast and Flexible Logging Framework for Java

Java Web Programlama


Html 5 renmek iin W3Schools Html 5,
Css 3 renmek iin W3Schools Css 3 ve
Temel JavaScript renmek iin W3Schools JavaScript eitimlerini tavsiye ederim.
Tutorials Point Http eitimleri ile temel Http ilemlerini ok hzl renebilirsiniz.
Java Servlets renmek iin Tutorials Point Servlets eitimlerine bakmanz tavsiye ederim.
Head First Servlets and JSP
Java Servlet Programming
JSP renmek iin Tutorials Point JSP eitimlerine bakmanz tavsiye ederim.
Java Code Geeks JSP Tutorial The ULTIMATE Guide
JSF renmek iin Tutorials Point JSF eitimlerine bakmanz tavsiye ederim.
Vogella JSF eitimleri
NetBeans Java EE JSP ve JSF eitimleri yeni balayanlar iin ok iyi. zellikle NetBeans IDE
iinde otomatik proje oluturma zellikleri ile anlatlmas size yeni renirken ok zaman
kazandrabilir.
OmniFacesi gelistiren Bauke Scholtzun blogu The BalusC Code JSF projeleri gelitirirken ok
iinize yarayacandan eminim.
Mastering JavaServer Faces 2.2
Beginning Java EE 7, JSF blm, zellikle TDD ile gelitirilmi JSF projesi kodlarinin ok
yardm olabilir.
Pro JSF and HTML5: Building Rich Internet Components
7.Blm - Eitim Kaynaklar 63

Core JavaServer Faces


JSF 2.0 Cookbook
Tekir projesi JSF ile gelitirilen ak kaynak kodlu n muhasebe yazlmdr. Kodlar iinize
yarayabilir.

Enterprise JavaBeans - EJB


Beginning Java EE 7, kitab kesinlikle en iyi EJB anlatan kitaplardan birisi. Okurken pratik
proje gelitirme ve test teknikleri ile ok zevk alacaksnz eminim. JPA, JSF, EJB, JAX-RS
projede kullanlarak anlatlyor.
EJB renmek iin Tutorials Point EJB eitimlerine bakmanz tavsiye ederim.
NetBeans Java EE eitimlerinde EJB ve Web Service projelerine bakabilirsiniz.
Java EE 7 Essentials Java EE dnyasnda Arun Gupta ismi bu kitab anlatmaya yeter.
Java Mimarisiyle Kurumsal zmler Rahman Ustann Trke kitab.
Java EE 7 Development with WildFly
Introducing Java EE 7: A Look at Whats New
Java EE Development with Eclipse - Second Edition
Enterprise JavaBeans 3.1, 6th Edition
EJB 3.1 Cookbook
Patterns of Enterprise Application Architecture Martin Fowlerin mimarileri anlatan ileri
dzey kitab.
Real World Java EE Patterns
Real World Java EE Night HacksDissecting the Business Tier
JAX-RS renmek iin Tutorials Point RESTful eitimlerine bakmanz tavsiye ederim.
RESTful Java with JAX-RS 2.0
Vogella - Apache Tomcat ve Vogella - Jetty start eitimleri
Domain-Driven Design: Tackling Complexity in the Heart of Software.
Vogella - Using dependency injection in Java.

Build Tools: Ant, Maven, Gradle


Maven renmek iin Tutorials Point Maven eitimlerine bakmanz tavsiye ederim.
Vogella Maven for building Java applications eitimleri
Vogella The Gradle build system eitimleri
7.Blm - Eitim Kaynaklar 64

Source Code Management - SCM


zcan Acarn Pratik GIT kitab kacmaz!
Tutorials Point GIT eitimleri.
Atlassian Become a GIT guru eitimleri
Tutorials Point Subversion eitimleri.

Spring Framework
zcan Acarn Pratik Spring Core kitab, geni ierik, proje pratikleri anlatm ile kamaz!
Tutorials Point Spring Framework eitimleri Spring versiyon 4 ile anlatlyor.
Spring in Action 4th Edition
Spring Boot in Action
Spring Data Modern Data Access for Enterprise Java Spring Data iin kesinlikle tavsiye
ederim.
Petri Kainulainen Spring Data eitimleri ok pratik.
[Petri Kainulainen Spring Social][] eitimleri
Spring Guides Spring resmi eitimleri, rnek projeler
Java Code Geeks Spring Batch The ULTIMATE Guide
Spring MVC + Thymeleaf rnek demo projesi, Spring MVC ve Html5 kullanmna gzel bir
rnek.
Spring MVC + ExtJS Sencha ExtJS ile rnek demo projesi.
JHipster Spring Boot ve AngularJs projeleri gelitiriyorsanz kullanm ok pratik.

Apache Wicket
Apache Wicket Cookbook
Pro Wicket
Wicket in Action

Google Web Toolkit - GWT


GWT in Action, Second Edition
Google App Engine Java and GWT Application Development
Google Web Toolkit 2 Application Development Cookbook
Essential GWT: Building for the Web with Google Web Toolkit 2
Tutorials Point GWT
7.Blm - Eitim Kaynaklar 65

Learning Google Guice Google Guice, GWT ile mehur olmu bir Dependency Injection
Library olduu iin buraya alnmtr. Google Guice, GWT haricinde JavaFX, JSF ve Java
Web ve EE projelerinde kullanlabilir.
ExtGWT Rich Internet Application Cookbook
Ext GWT 2.0: Beginners Guide
Developing with Ext GWT Enterprise RIA Development

Vaadin
Learning Vaadin 7, Second Edition
Vaadin 7 Cookbook
Vaadin 7 Recipes
Vaadin 7 UI Design By Example: Beginners Guide

Play Framework
Play Framework Cookbook
Learning Play! Framework 2
Introducing the Play Framework
Seyhan n muhasebe program Play Framework reniyorsanz Seyhan projesinin kodlarn
mutlaka inceleyin.

Raporlama - Reporting
Jasper Reports Ultimate Guide, cretsiz kitap, websitesinden gncellemelerine bakabilirsiniz.
JasperReports 3.5 for Java Developers
Jasper Reports renmek iin cretsiz Tutorials Point Jasper Reports eitimlerine bakmanz
tavsiye ederim.
BIRT: A Field Guide (3rd Edition)
Integrating and Extending BIRT (3rd Edition)
Pentaho Reporting renmek iin cretsiz Tutorials Point Pentaho eitimlerine bakmanz
tavsiye ederim. Eitimlerde Pentahonun eski srm kullanlmakta ama yine de baslang
iin gzel bilgiler iceriyor.
JFreeChart renmek iin cretsiz Tutorials Point JFreeChart eitimlerine bakmanz tavsiye
ederim.
7.Blm - Eitim Kaynaklar 66

Testing, Agile, XP
JUnit renmek iin cretsiz Tutorials Point JUnit eitimlerine bakmanz tavsiye ederim.
JUnit in Action.
Pragmatic Unit Testing in Java with JUnit.
Practical Unit Testing with JUnit and Mockito.
Practical Unit Testing with TestNG and Mockito.
zcan Acarn Pratik Agile kitab karmayn derim.
Clean Code: A Handbook of Agile Software Craftsmanship popler ve artk klasiklesmi Clean
Code kitab.
[Continuous Enterprise Development in Java][].
Arquillian Testing Guide.
Test Driven Development: By Example.

Android Programlama
Google Developer Training, cretsiz Google kurslar.
Udacity eitim platformu zerinden Google tarafndan verilen cretsiz Developing Android
Apps kursu.
Android renmek iin cretsiz Tutorials Point Android eitimlerine bakmanz tavsiye
ederim.
Head First Android Development.
Android 6 for Programmers: An App-Driven Approach.
Mastering Android Application Development.
Android User Interface Design: Implementing Material Design for Developers.
UI/UX tasarmnda kendisinden ok eyler rendiim, Google UI Engineer Kirill Grouchni-
kov video ve sunumlar:
Google I/O 2016 Designer & developer communication.
AnDevCon III 2012 Responsive Mobile Design in Practice.
AnDevCon II 2011 Responsive Mobile Design.
AnDevCon I 2011 Designing for the Mobile Form Factor.
Sonsz
Sayn okur, bu mini kitabn son satrlarna kadar okuma sabr gsterdiysen, Java yazlm gelitirme
uzman olmak iin yeterli sebeblere sahipsin demektir. Yazlm, Java ve ilgili teknolojilerin dinamik
gelitirildii bir dnyada, srekli yazlm trendlerini takip ederek kendini yenilemeli, farkl diller,
Frameworkler denemeli ve hereyden nce sadece okumakla kalmayp kendin de kodlamalsn.
Yazlm gelitirme, dier mhendislik veya mesleklerde olduu gibi bir kez renilip, emekli olana
kadar geerlilii olan bir meslek deil, aksine hergn yeni ve deiik eylerin renildii bir meslek,
Web ve mobil dnyasnda tasarmn da n plana kmasyla sanatsal bir boyut da kazanm bir
meslek. Bu yzden baz akademisyen ve yazarlar yazlm gelitirme iin programlama sanat
terimini de kullanmaktadr.
Peki bu kadar yeniliin olduu bir yazlm dnyasnda uzmanlktan bahsedilebilir mi? una emin
olabilirsiniz: Java ve ilgili teknolojilerde uzmanlamaya baladnzda, diger dil ve teknolojileri
ok basit renebilirsiniz ve hatta diger dil ve teknolojiler ok tandk gelmeye balar. Python
renirken SQLAlchemy ORMin JPAye ne kadar ok benzediini, Http ilemleri yaparken aslnda
her dil veya Frameworkun Java Servlet benzeri bir karl oldugunu, Serviceler yazarken aslnda
Facade tasarm kalbnn ne kadar yaygn kullanldn grrsnz. Ksaca salam temelleri olan bir
Java Ninja iin dier dil ve teknolojileri renmek, sadece odaklanarak almay gerektirir. Java
Ninja olduunuzu hissediyorsanz kesinlikle iin en zor ksmlarn sabrla rendiniz demektir,
dier ayrntlar sadece ksa zamanda geilebilecek birer engeldir.
Java rendiiniz son dil olmayacaktr! Yazlm dnyas hzla geliiyor, gnmzde Java birok
dil ve teknoloji ile birlikte kullanlabilmektedir. En basit rnei JavaScript ve Node.js teknolojileri
Java Frontend projelerinde etkin kullanlyor. Java ile yaplmas pratik olmayan baz ilemlerin
Python ile yapldna birok projede ahit olacaksnz, bu Javann zayflndan deil, dier Script
tabanl dillerin, baz grevleri daha hzl yapabilmek iin tasarlanm olmasndan kaynaklanr.
Yazlm gelitirme srelerinde herey zaman, o ie ayrlan bte ve kaynaklarla (resources) llr.
Java Ninja olduktan sonra JavaScript, Node.js ve Pyhon renmeniz, size farkl dnebilme ve
projelerde karlatnz sorunlar, sadece Javaca dnmemeniz gerektiini, farkl bak alaryla
yaklamanz gerektigini de retecektir.
Sayn okur, bu mini kitap benim 10 yldan fazla sren Java servenimin minimal bir zetidir.
Burdaki yazlanlar, ben bazen srayla, bazen de bilmediim ve deneme yanlma uygulayarak tekrar
geriye dnp rendiim iin, farkl sralamalarla rendim. rendiim ve kullandm birok
Framework, Libs ve benzeri yaplar gnmzde gncel olmad iin buraya almadm, zellikle
yeni renen veya Javada uzmanlamaya alan arkadalarn nne da gibi renilecekler listesi
karmaktansa, aslnda bu ilerin daha kolay renilebileceini zetle anlatmaya altm. Java
SE ve Java EE iin yazlm binlerce sayfalk kitaplardaki konular ksaca tanmlamak ve yeni
reneceklere yol gstermeye almak hi de kolay deil!
Sonsz 68

Javay yeni renen arkadalarn, bu kitapta anlatlan konular, renme sras ve ncelikleriyle
uygulayarak grlerini bildirmesi, Javada yazlm gelitiren, burdaki anlatlanlar uygulayarak
uzmanlamaya alan arkadalarn da, neri ve eletirilerini bildirerek bu kitabn gelimesine,
lkemizdeki yazlm gelitirme servenine katkda bulunacaklarn umut ediyorum.
Sayn okur, bu kitap ounlukla uyku tutmayan gecelerde, hibir cret beklentisi olmakszn yazld.
Bu kitab okuyup iyi bir Java Ninja olma yolunda almalara baladysan, stanbulda karlarsak,
bir Trk Kahvesine hayr demem ;))

yi almalar.
Cem Ikta

Вам также может понравиться