Академический Документы
Профессиональный Документы
Культура Документы
Cem Ikta
Bu kitap http://leanpub.com/java-ninja-rehberi adresinde sattadr.
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.
Yazar Hakknda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i
nsz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii
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
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.
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.
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.
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.
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
pucu
Java SE daha nce J2SE ksaltmasyla kullanlyordu.
pucu
Java EE daha nce J2EE ksaltmasyla kullanlyordu. Bu yzden hala baz i ilanlarnda
J2EE olarak gemektedir.
1.Blm - Javaya Balarken 4
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.
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:
Use the right tools for the right job! - Doru ie, doru ara gereleri kullan!
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
PostgreSQL
H2
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.
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.
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.
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!
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.
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 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!
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.
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!
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.
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.
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:
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 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, 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:
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
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
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
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:
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.
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.
Java 5/6/7 versiyonlaryla hala sertifika snav yaplsa da, Java 8 son versiyon olduu iin bu snava
girmenizi tavsiye ederim.
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.
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.
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
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.
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.
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
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.
Logging
The Complete Log4j Manual: The Reliable, Fast and Flexible Logging Framework for Java
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
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