Kim Korkar Javadan Enterprise Java Onizleme

Transkript

Kim Korkar Javadan Enterprise Java Onizleme
ENTERPRISE JAVA
Alper AKALIN
İçindekiler
İthaf ........................................................................................................... xvii
Teşekkür .................................................................................................... xix
Yazar Hakkında ......................................................................................... xxi
Kitap Hakkında ......................................................................................... xxiii
Kitap Konuları ........................................................................................... xxv
Kitap Nasıl Okunmalı ............................................................................... xxxi
Kullanım Sözleşmesi .............................................................................. xxxiii
1. ECLIPSE .................................................................................................. 1
1.1. Kurulum ......................................................................................... 2
1.2. Proje Oluşturma ............................................................................. 6
1.3. Perspective .................................................................................... 7
1.4. Plug-in .......................................................................................... 10
1.4.1. Marketplace ....................................................................... 10
1.5. Install New Software .................................................................... 12
1.6. Update ......................................................................................... 14
1.7. Eclipse Kısayolları ....................................................................... 14
1.8. Eclipse JDK Değişimi .................................................................. 16
2. XML İŞLEMLER ..................................................................................... 21
2.1. Xml Söz Dizim Kuralları ............................................................... 21
2.1.1. Tag - Etiket ........................................................................ 22
2.1.2. CData ................................................................................ 23
2.1.3. Attribute ............................................................................. 23
2.1.4. Child Element .................................................................... 24
2.1.5. Empty Element .................................................................. 24
2.1.6. Well Formed - Valid ........................................................... 24
2.1.7. Xsl ...................................................................................... 25
2.1.8. Namespace ........................................................................ 25
2.1.9. Prefix ................................................................................. 26
2.2. Xml Schema Definition ................................................................ 27
2.2.1. Element .............................................................................. 27
iii
ENTERPRISE JAVA
2.2.2. Attribute .............................................................................
2.2.3. Reference ..........................................................................
2.2.4. Type Oluşturma .................................................................
2.2.5. Maxoccurs - Minoccurs ......................................................
2.2.6. Group .................................................................................
2.2.7. Complex Element ..............................................................
2.2.8. Basit ve Complex Element ................................................
2.3. Eclispe Xml İşlemler ....................................................................
2.4. Java Xml Parser ..........................................................................
2.4.1. Sax Parser .........................................................................
2.4.2. Dom Parser .......................................................................
2.4.3. JDom Parser .....................................................................
2.4.4. Jaxp Api .............................................................................
2.4.5. PROJE 102.00-com.xml ....................................................
2.5. Jaxb Api .......................................................................................
2.5.1. Jaxb Binding Compiler ......................................................
2.5.2. Binding Runtime Framework .............................................
2.5.3. Marshalling ........................................................................
2.5.4. Unmarshalling ....................................................................
2.5.5. PROJE 102.01-com.xml.jaxb .............................................
2.5.6. Jaxb Anotasyon .................................................................
2.6. Marshalling - Unmarshalling ........................................................
2.6.1. PROJE 102.02-com.xml.jaxb.advanced ............................
3. MAVEN ..................................................................................................
3.1. Mavenin Geliştirme Sürecine Katkıları .........................................
3.2. Maven Yapısı ...............................................................................
3.2.1. Project Object Model .........................................................
3.2.2. Define Goals ......................................................................
3.2.3. Local - Remote Repository ................................................
3.2.4. Project Artifacts .................................................................
3.2.5. Maven Plugins ...................................................................
3.2.6. Custom Plugins .................................................................
iv
27
28
28
29
29
30
32
33
41
42
42
43
43
44
48
48
49
49
49
50
55
56
56
61
61
62
62
62
63
63
63
63
ENTERPRISE JAVA
3.2.7. Maven Build System .......................................................... 63
3.3. Maven Kurulum ........................................................................... 64
3.3.1. Komut Satırından Maven Kullanımı ................................... 68
3.4. Pom.xml ....................................................................................... 71
3.4.1. groupID .............................................................................. 71
3.4.2. artifatctId ............................................................................ 72
3.4.3. Version ............................................................................... 72
3.4.4. Packaging .......................................................................... 72
3.4.5. Properties .......................................................................... 75
3.4.6. Dependencies .................................................................... 75
3.5. Maven ve Eclipse ........................................................................ 76
3.5.1. Eclipse Maven Projesi ....................................................... 76
3.5.2. Maven Proje Yapısı ........................................................... 80
3.5.3. Proje Build ......................................................................... 82
3.5.4. Bağımlılıkların Tanımlanması ............................................ 90
3.5.5. Maven Proje Import ........................................................... 94
3.5.6. Maven Repository .............................................................. 95
4. INTERFACE YÖNELİM ......................................................................... 97
4.1. PROJE 105.00-com.interface ...................................................... 97
4.1.1. inheritancesample1 .......................................................... 101
4.1.2. inheritancesample2 .......................................................... 103
4.1.3. inheritancesample3 .......................................................... 104
4.1.4. interfacesample1 .............................................................. 106
4.1.5. interfacesample2 .............................................................. 107
4.1.6. Eclipse Comparison Tool ................................................. 108
4.1.7. interfacesample3 .............................................................. 111
4.1.8. Modülarite ........................................................................ 112
4.1.9. Kod Okuma Kalitesi ......................................................... 113
4.1.10. Nesne Davranışı ............................................................ 114
4.2. PROJE 105.01-com.interface.design ......................................... 115
4.3. Aslında ne oldu? ........................................................................ 118
4.3.1. Modülarite ........................................................................ 118
v
ENTERPRISE JAVA
4.3.2. Sadelik .............................................................................
4.3.3. Kompozisyon ...................................................................
4.3.4. İzolasyon ..........................................................................
4.3.5. Esnek Bağ .......................................................................
4.3.6. Çok Biçimlilik - Polymorphism .........................................
4.4. Interface Yönelik Programlama .................................................
5. REFLECTION ......................................................................................
5.1. PROJE 106.00-com.reflection ...................................................
5.2. Java Dynamic Proxy ..................................................................
5.2.1. PROJE 106.01-com.reflection.dynamicProxy ..................
5.3. Aslında Ne Oldu? ......................................................................
5.3.1. Invoke Metod ...................................................................
5.4. Compile Time ............................................................................
5.5. Runtime ......................................................................................
6. ANNOTATIONS ...................................................................................
6.1. Compiler İşlemler .......................................................................
6.1.1. @Deprecated ...................................................................
6.1.2. @Override .......................................................................
6.1.3. @SuppressWarnings .......................................................
6.2. Build Time İşlemler ....................................................................
6.3. Runtime İşlemler ........................................................................
6.4. Custom Anotasyonlar ................................................................
6.4.1. @Retention ......................................................................
6.4.2. @Target ...........................................................................
6.4.3. PROJE 107.00-com.annotation .......................................
6.4.4. PROJE 107.01-com.annotation.dynamic .........................
7. CONSTANT & ENUM ..........................................................................
7.1. Constant .....................................................................................
7.1.1. PROJE 108.00-com.constant ..........................................
7.1.2. Eclipse Debug .................................................................
7.2. Enum .........................................................................................
7.2.1. PROJE 108.01-com.enum ...............................................
vi
119
122
123
123
124
125
131
131
133
134
140
142
144
146
149
149
149
150
150
150
150
151
151
151
152
154
159
159
165
167
172
172
ENTERPRISE JAVA
8. LOGGING ............................................................................................
8.1. Log4j ..........................................................................................
8.1.1. PROJE 109.00-com.logging ............................................
8.2. Log4j Mimarisi ...........................................................................
8.2.1. Core Objects ....................................................................
8.2.2. Support Objects ...............................................................
8.3. Log Level ...................................................................................
8.3.1. PROJE 109.01-com.logging.level ....................................
8.3.2. Etki Alanı .........................................................................
8.4. Log Dosyası ...............................................................................
8.4.1. PROJE 109.02-com.logging.file .......................................
8.5. Log Dosyası Bölme ...................................................................
8.5.1. mTail ................................................................................
8.5.2. PROJE 109.03-com.logging.rollingFile ............................
9. JDBC ....................................................................................................
9.1. Java Database Connectivity ......................................................
9.1.1. Jdbc Driver ......................................................................
9.1.2. Driver Manager ................................................................
9.1.3. Jdbc Api ...........................................................................
9.1.4. Driver Manager ................................................................
9.2. Statements .................................................................................
9.3. Jdbc Ön Hazırlıklar ....................................................................
9.3.1. PROJE 110.00-com.jdbc .................................................
9.3.2. Timestamp .......................................................................
9.3.3. Batch Processing .............................................................
9.3.4. Commit ............................................................................
9.3.5. ResultSet .........................................................................
9.4. Refactoring .................................................................................
9.4.1. PROJE 110.01-com.jdbc.refactoring ................................
9.4.2. Veri tabanı Bağlantısı Kapama ........................................
9.4.3. Tekrarlı Yapılar ................................................................
9.4.4. PROJE 110.02-com.jdbc.refactoring.logging ...................
175
176
176
179
180
180
182
182
186
191
191
193
194
194
201
201
202
202
202
202
203
203
206
211
214
216
217
220
220
221
228
233
vii
ENTERPRISE JAVA
9.4.5. Refactoring ......................................................................
9.4.6. Dinamik Veri tabanı Bağlantısı ........................................
9.4.7. PROJE 110.03-com.jdbc.databaseChanging ...................
9.4.8. Transaction ......................................................................
9.4.9. Rollback ...........................................................................
9.5. Model Sınıflar ............................................................................
9.5.1. PROJE 110.04-com.jdbc.advanced .................................
9.5.2. Data Alanı ........................................................................
9.5.3. Static Metod .....................................................................
9.5.4. Static Block ......................................................................
9.5.5. ToString Metod ................................................................
9.6. Dao ............................................................................................
9.6.1. PROJE 110.05-com.jdbc.dao ..........................................
9.6.2. Dao ..................................................................................
10. HIBERNATE & JPA ...........................................................................
10.1. İlişkisel Veri Tabanı .................................................................
10.1.1. Primary Key ...................................................................
10.1.2. Foreign Key ...................................................................
10.2. Orm ..........................................................................................
10.2.1. Object Relational Mapping .............................................
10.2.2. Uygulama Seviyesi ........................................................
10.2.3. Veri Tabanı Seviyesi ......................................................
10.2.4. Orm Tools ......................................................................
10.3. Hibernate .................................................................................
10.3.1. SessionFactory ..............................................................
10.3.2. Session ..........................................................................
10.3.3. Persistent Objects ..........................................................
10.3.4. TransactionFactory ........................................................
10.3.5. Transaction ....................................................................
10.3.6. Connection Provider ......................................................
10.3.7. Pojo ................................................................................
10.3.8. Xml Mapping ..................................................................
viii
236
240
240
242
248
251
253
255
256
257
261
263
267
267
275
275
278
279
279
282
283
283
284
286
287
287
287
288
288
288
288
289
ENTERPRISE JAVA
10.3.9. Annotation Mapping .......................................................
10.4. Jpa ...........................................................................................
10.4.1. Jpa Mimarisi ..................................................................
10.4.2. Persistence Unit ............................................................
10.4.3. EntityManagerFactory ....................................................
10.4.4. EntityManager ................................................................
10.4.5. persistence.xml ..............................................................
10.4.6. Annotation Mapping .......................................................
10.4.7. Güvenli Parametre Geçişi ..............................................
10.4.8. Named Queries .............................................................
10.5. Object States ...........................................................................
10.5.1. Hibernate Nesne Durumları ...........................................
10.5.2. Session ..........................................................................
10.5.3. PROJE 111.04-com.orm.jpa.objectState .......................
10.5.4. Crud İşlem Statüleri .......................................................
10.6. Jpa More Annotations ..............................................................
10.6.1. @Embeddable ...............................................................
10.6.2. @Embedded ..................................................................
10.6.3. @Basic ..........................................................................
10.6.4. @Lob .............................................................................
10.6.5. Filtreleme .......................................................................
10.6.6. 111.05-com.orm.jpa.moreAnnotation .............................
10.6.7. Collections .....................................................................
10.7. Hibernate Object Access .........................................................
10.7.1. Object Levels .................................................................
10.7.2. Fetch Types ...................................................................
10.8. Relations ..................................................................................
10.8.1. Embedded .....................................................................
10.8.2. ElementCollection ..........................................................
10.8.3. OneToOne .....................................................................
10.8.4. OneToMany & ManyToOne ...........................................
10.8.5. ManyToMany .................................................................
312
321
322
322
322
323
323
323
329
336
338
339
340
343
349
352
352
352
353
353
353
353
357
370
371
382
388
388
388
389
389
390
ix
ENTERPRISE JAVA
10.8.6. Cascade Types ..............................................................
10.8.7. Unidirectional .................................................................
10.8.8. Bidirectional ...................................................................
10.8.9. OneToOne .....................................................................
10.8.10. OneToMany .................................................................
10.8.11. ManyToMany ...............................................................
10.9. Inheritance ...............................................................................
10.9.1. Single Table ...................................................................
10.9.2. Sperate Table ................................................................
10.10. Connection Pooling ................................................................
10.10.1. C3P0 Connection Pool ................................................
10.11. Dao ........................................................................................
10.11.1. PROJE 111.13-com.orm.jpa.dao .................................
11. WEB SERVICES ................................................................................
11.1. Soa ..........................................................................................
11.1.1. Xml ................................................................................
11.1.2. Xsd ................................................................................
11.1.3. Web Service ..................................................................
11.1.4. Soap Web Services .......................................................
11.1.5. Wsdl ...............................................................................
11.1.6. Java Web Services ........................................................
11.1.7. Web Service Interface ...................................................
11.1.8. Client Side .....................................................................
12. RESTFUL SERVICES .......................................................................
12.1. Rest .........................................................................................
12.1.1. Http ................................................................................
12.1.2. Html ...............................................................................
12.1.3. Resources ......................................................................
12.1.4. Resource Locations .......................................................
12.1.5. Http Methods .................................................................
12.1.6. Meta Data ......................................................................
12.1.7. Status Code ...................................................................
x
390
390
390
390
408
425
430
430
435
437
438
440
440
445
445
447
447
449
450
455
457
500
507
517
519
520
520
520
523
524
524
525
ENTERPRISE JAVA
12.1.8. Message Format ............................................................ 526
12.1.9. Resource Tasarımı ........................................................ 527
12.2. Jax-Rs ...................................................................................... 530
12.2.1. Annotations .................................................................... 531
12.2.2. PROJE 113.00-com.jaxrs .............................................. 533
12.3. Response ................................................................................. 556
12.3.1. Json ............................................................................... 559
12.4. Http Methods ........................................................................... 560
12.4.1. Get ................................................................................. 561
12.4.2. Post ................................................................................ 562
12.4.3. Put ................................................................................. 563
12.4.4. Delete ............................................................................ 563
12.4.5. PROJE 113.01-com.jaxrs.methods ................................ 564
12.5. Idempotent ............................................................................... 573
12.5.1. Get ................................................................................. 574
12.5.2. Delete ............................................................................ 574
12.5.3. Put ................................................................................. 575
12.5.4. Post ................................................................................ 575
12.6. Filtering & Pagination .............................................................. 576
12.6.1. @QueryParam ............................................................... 576
12.6.2. @BeanParam ................................................................ 576
12.6.3. PROJE 113.02-com.jaxrs.pagination ............................. 577
12.6.4. PROJE 113.03-com.jaxrs.beanFiltering ......................... 581
12.7. Sub Resources ........................................................................ 583
12.7.1. PROJE 113.04-com.jaxrs.subResources ....................... 584
12.8. Status Codes & Location Headers .......................................... 591
12.8.1. Response & Response Builder ...................................... 592
12.8.2. PROJE 113.05-com.jaxrs.statusLocation ....................... 593
12.8.3. Generic Entity ................................................................ 603
12.8.4. Refactoring .................................................................... 606
12.9. Exceptions & Error Handling ................................................... 613
12.9.1. PROJE 113.06-com.jaxrs.exception .............................. 614
xi
ENTERPRISE JAVA
12.9.2. Mapper ........................................................................... 617
12.9.3. Web Application ............................................................. 621
12.10. Hateoas .................................................................................. 624
12.10.1. PROJE 113.09-com.jaxrs.hateoas ............................... 626
12.11. Richardson Maturity Model .................................................... 634
12.11.1. PoX .............................................................................. 635
12.11.2. Resources .................................................................... 636
12.11.3. Http Verbs .................................................................... 636
12.11.4. Hypermedia Controls ................................................... 636
12.12. Server & Client ...................................................................... 637
12.12.1. Server .......................................................................... 637
12.12.2. Client ............................................................................ 639
12.12.3. Client & Server Mimarisi .............................................. 640
13. DEPENDENCY INJECTION .............................................................. 643
13.1. Dependency ............................................................................. 643
13.2. Dependency Injection .............................................................. 644
13.2.1. PROJE 114.00-com.injection.classic ............................. 645
13.2.2. PROJE 114.01-com.injection.polymorphism .................. 647
13.2.3. PROJE 114.02-com.injection.methodParameter ............ 648
13.2.4. PROJE 114.03-com.injection.composition ..................... 650
13.3. Design Patterns ....................................................................... 652
13.3.1. Factory Design Pattern .................................................. 653
13.4. Dependency Inversion ............................................................. 659
14. SPRING FRAMEWORK ..................................................................... 663
14.1. Spring Framework ................................................................... 663
14.1.1. Inversion of Control ....................................................... 663
14.1.2. Spring & J2EE ............................................................... 665
14.1.3. Spring Modülleri ............................................................. 665
14.2. Spring Framework Core ........................................................... 668
14.2.1. Bean Tanımları .............................................................. 669
14.2.2. Bean Factory ................................................................. 675
14.2.3. Spring Container ............................................................ 676
xii
ENTERPRISE JAVA
14.2.4. Setter Injection ...............................................................
14.2.5. Constuctor Injection .......................................................
14.2.6. Data Types ....................................................................
14.2.7. Object Injection ..............................................................
14.2.8. Spring Life Cycle ...........................................................
14.2.9. Hangi Injection Yöntemi .................................................
14.2.10. Context Kapama ..........................................................
14.2.11. Collections ...................................................................
14.2.12. Inner Beans .................................................................
14.2.13. Alias & Name ...............................................................
14.2.14. Autowiring ....................................................................
14.2.15. Bean Scopes ...............................................................
14.2.16. Inheritance ...................................................................
14.2.17. Bean Initialization .........................................................
14.2.18. Bean Destruction .........................................................
14.2.19. Bean Post Processor ...................................................
14.2.20. Spring Life Cycle .........................................................
14.2.21. Placeholder ..................................................................
14.2.22. Interface .......................................................................
14.2.23. Spring Annotations ......................................................
14.2.24. Streotypes ....................................................................
14.2.25. Message Source ..........................................................
14.2.26. Event Handling ............................................................
14.2.27. Java Annotations .........................................................
14.2.28. Java Base Annotations ................................................
15. SPRING AOP ....................................................................................
15.1. Aspect Oriented Programming .................................................
15.1.1. Seperation of Concerns .................................................
15.1.2. Code Scattering & Tangling ...........................................
15.1.3. Croscutting Concerns ....................................................
15.1.4. Croscutting Concerns ....................................................
15.1.5. Aspect Oriented Programming ......................................
678
681
686
690
695
697
698
699
701
702
703
708
712
715
720
721
726
728
730
732
740
741
745
749
752
757
757
757
760
762
763
764
xiii
ENTERPRISE JAVA
15.1.6. Aspect Oriented Programming ......................................
15.1.7. Aop Terminolojisi ...........................................................
15.1.8. Aop Türleri .....................................................................
15.2. AspectJ ....................................................................................
15.3. Spring AOP ..............................................................................
15.3.1. Spring Aop Sınırları .......................................................
15.3.2. Advice Türleri .................................................................
15.3.3. Before Advice ................................................................
15.3.4. After Advice ...................................................................
15.3.5. Pointcut ..........................................................................
15.3.6. JoinPoint ........................................................................
15.3.7. Passing Parameters ......................................................
15.3.8. AfterReturning & AfterThrowing .....................................
15.3.9. Around ...........................................................................
15.3.10. Custom Advice ............................................................
15.3.11. Java Proxy ...................................................................
15.3.12. Java Aop .....................................................................
15.3.13. Spring Aop Life Cycle ..................................................
15.3.14. PROJE 117.10-com.spring.aspectj.logging ..................
16. SPRING JDBC ...................................................................................
16.1. Spring Jdbc ..............................................................................
16.1.1. Spring Jdbc Template ....................................................
16.1.2. Row Mapper ..................................................................
16.1.3. Crud Operations ............................................................
16.1.4. Named Parameter .........................................................
16.1.5. Dao Support ..................................................................
16.1.6. Batch ..............................................................................
16.1.7. Transaction ....................................................................
16.1.8. Spring Transaction Mekanizması ...................................
16.1.9. Spring Exception Handling ............................................
16.1.10. Spring Transaction .......................................................
16.1.11. Dao ..............................................................................
xiv
766
768
769
770
771
771
772
773
781
784
790
792
794
799
802
805
806
810
811
813
813
814
824
830
831
832
835
838
842
848
850
855
ENTERPRISE JAVA
17. SPRING ORM .................................................................................... 859
17.1. Spring Orm .............................................................................. 859
17.1.1. Jpa ................................................................................. 859
17.1.2. PROJE 119.03-com.spring.orm.jpa.dao ........................ 864
18. SPRING MVC .................................................................................... 867
18.1. Model View Controller ............................................................. 867
18.1.1. Model ............................................................................. 867
18.1.2. View ............................................................................... 868
18.1.3. Controller ....................................................................... 868
18.1.4. Mvc Şablonu ile ............................................................. 869
18.2. Spring Mvc ............................................................................... 869
18.2.1. DispatcherServlet ........................................................... 870
18.2.2. Handler Mapping ........................................................... 870
18.2.3. Controller ....................................................................... 870
18.2.4. Model ............................................................................. 870
18.2.5. Controller ....................................................................... 870
18.2.6. DispatcherServlet ........................................................... 871
18.3. Çalışan Proje Örneği ............................................................... 871
18.3.1. Spring Tool Suite ........................................................... 872
18.3.2. Model ............................................................................. 872
18.4. Spring Mvc ............................................................................... 874
18.4.1. Spring Mvc Kurulum ...................................................... 874
18.4.2. Controller Yazma ........................................................... 881
18.4.3. View Resolvers .............................................................. 885
18.4.4. Resource Url Tanımları ................................................. 887
18.4.5. Form .............................................................................. 887
18.4.6. @RequestMapping ........................................................ 888
18.4.7. @PathVariable ............................................................... 892
18.4.8. Form Validation ............................................................. 893
18.4.9. Playing Data .................................................................. 903
18.4.10. ModelAndView ............................................................. 904
18.4.11. @ModelAttribute .......................................................... 904
xv
ENTERPRISE JAVA
18.4.12. Custom Validation ........................................................ 905
18.4.13. @InitBinder .................................................................. 906
18.4.14. Exception Handling ...................................................... 906
18.4.15. Global Exception Handling .......................................... 908
18.4.16. Session ........................................................................ 909
18.4.17. Interceptors .................................................................. 910
18.4.18. Internationalization ....................................................... 912
18.5. Spring Restful Services ........................................................... 914
18.5.1. @ResponseBody ........................................................... 915
Kapanış ................................................................................................ cmxvii
Tasarım Şablonları ................................................................................ cmxix
Kim Korkar Javadan Temel Java .......................................................... cmxxi
xvi
İthaf
Var olmak ve Yâr olmak ihtimam ister.
Hüdâvendigâr’a
xvii
xviii
Teşekkür
Kitabın yazım sürecinde sürekli yanımda olan ve düzeltme işlemlerinde
yardımlarını esirgemeyen kardeşim Yusuf İsmail Burak Kakı 'ya
Kitabın bitmesi için psikolojik baskılarını üzerimden eksik etmeyen
kardeşlerim Mehmet Özberk ve Yaşar Akkaya 'ya
en içten teşekkürlerimi sunarım.
xix
xx
Yazar Hakkında
Alper Akalın
Konya doğumlu
İlk – Orta – Lise
Konya bozkırında, buğday başakları ile okumuş.
xxi
Üniversite
Biraz babasının izinden gitmek. Belki de çok fazla sevdiğinden Fizik okumayı
seçmiş.
Gözü bilgisayar denen icadı sürekli takipte. Hep bir garip merak içinde acaba
bu aletin içinde ne var diye.
2002 yılında IT sektörüne adım atmış.
Dönemin rüzgârı na kapı larak, 2005 yı lı nda C# ile yazı lı m/web sektörüne
zaman harcamış.
2007 yılında iç huzura erip Java dünyasında kelebek uçurmaya başlamış.
• Web projeleri
• Hastane Bilgi Yönetim Sistemleri
• Tele Radyoloji Sistemleri
• Doküman Yönetim Sistemleri, OCR
• E-Belediye
• İş Zekası
• Telekomünikasyon
• Finans/Bankacılık
sektörlerinde ufak ufak geliştirmeler yapmış.
Azıcık ucundan Eğitmen ve Yazar
En çok da Java Programcısı
xxii
Kitap Hakkında
İleri seviye Java bilgileri ve Enterprise Java Framework ’lerini içermektedir.
Kitap konuları bir Java projesiymişçesine tasarlanmıştır. Bir projede nasıl end
to end gereksinimler belirlenir, tasarım ona göre yapılırsa kitapta da Enterprise
Java teknolojilerin aynı şekilde ele alınmıştır.
Bir projede gerekli olabilecek frameworkler belirlenmiş ve bu frameworkler alt
yapıları ile birlikte ele alınmıştır. Sadece framework incelemesi yapılmamıştır.
Frameworklerin alt yapıları veya nasıl tasarlandıkları karşılaştırmalı olarak
incelenmiştir. Böylece ezber tanımlardan ziyade işin özüne inilmeye
çalışılmıştır.
Java frameworklerinin temeli olan reflection api, dynamic proxy ve interface
yönelimli programlama gibi konular en başta incelenmiş. İncelenen her
frameworkte nasıl kullanıldıklarına sık sık vurgu yapılmıştır. Böylece
frameworkler temellerinden incelenmiştir.
Örneğin Jdbc, Hibernate ya da Spring Jdbc template incelenirken bu
teknolojilerin karşılaştırmasının yapıldığı bir kaynak yoktur. Bu kitapta
konularla ilgili örnekler hep birbirleri ile karşılaştırılarak ya da atıfta bulunularak
incelenmiştir. Yetmemiş bu konuların son proje örnekleri benzer tasarım
altında incelenerek karşılaştırmaları yapılmıştır. Böylece sizlere teknolojilerin
avantaj ve dezavantajları aktarılmaya çalışılmıştır.
Konu incelemeleri kötü tasarım ile başlamış ve iyi tasarım ile sonlandırılmaya
çalışılmıştır. Aslında konular refactoring mantığı çerçevesinde incelenmiştir.
Kötü başlayan proje bileşenleri ile konular derinlemesine incelenmiş. Konular
hakkında yeterli bilgi verildikten sonra refactoring ile bir kez de güzel tasarım
altında ele alınmışlardır. Böylece incelenen konular hakkında sadece bilgi
verilmemiş. Proje içerisinde nasıl kullanılmaları gerektiğine ışık tutulmaya
çalışılmıştır.
xxiii
Aslında kitap çalışan bir proje içerisinde ele alınmıştır. Yani tüm
konular bir projenin modülü gibi düşünülerek sürekli refactoring içerisinde
incelenmişlerdir. Bunun sonucunda “Çalışan bir proje nasıl olmalıdır” sorusuna
yanıt aranmıştır. Örneğin bir veri tabanı katmanı ya da bir servis katmanı konu
anlatımlarından sonra iyi bir tasarım altında incelenerek çalıştırılmıştır.
Bu kitap bir başlangıç noktası olarak tasarlanmıştır. İşlediği konular hakkında
çok ince ve detay bilgiler vermeye çalışırken incelemediği konular hakkında da
ip uçları verilmeye çalışılmıştır. Böylece Java dünyasının ikinci büyük sorusu
olan “hangi teknoloji ya da framework seçilmelidir” başlığı incelenmiştir.
Bu kitap bir başlangıç noktası olarak okuyucusuna Java’daki ileri konulara
hakim olunduğunda her şeyin yapılabileceğini göstermeyi hedeflemektedir.
Ülkemizde henüz Enterprise Java konularını bu seviyede ele alan bir
kaynak bulunmamaktadır. Yazım metodolojisi ile henüz dünya da benzerine
rastlamadığımı söyleyebilirim.
xxiv
Kitap Konuları
Eclipse Ide
Java geliştirme ortamı olarak nasıl kullanılır. Kısayolları ve ileri seviye kullanım
şekilleri incelenmiştir.
Xml
Java ile doğrudan ilgili olmayıp Java teknolojilerinin tamamında kullanılan bir
araçtır. Java dünyası ve kitapta birçok yerde kullanıldığından temel düzeyde
incelenmektedir.
Java Xml Parser
Java’da xml işlemleri incelenmiştir. Örnek projeler geliştirilirken Eclipse IDE
özelliklerinden yaralanma incelenmektedir.
Maven
Java projelerinin yönetiminde kullanılan araçtır. Oldukça popüler bir araç olan
Maven komut satırından nasıl kullanılacağı incelenmektedir.
Eclipse Ide – Maven
Eclipse - Maven ilişkisini ele alınmıştır. İleri serviye eclipse ve maven bilgileri
taşıyan örnek projeler ile tek maven projesi ile 100’lerce projenin nasıl
yönetilebileceği incelenmektedir.
Interface Yönelimli Programlama
Object Oriented Programming yapısına Java dünyası için ileri seviye
bilgiler ele alınmaktadır. Design Patterns’in ve esnekliğin temeli olduğundan
incelenmesi elzemdir. Kitabın bu noktadan sonraki tüm konularındaki örnekler
xxv
bu metodolojiye sahip olacak şekilde incelenmektedir. Her konunun sonundaki
örnek proje interface dönük olarak tekrar ele alınarak güzel tasarım örnekleri
incelenmeye çalışılmıştır.
Reflection API
Ülkemizde çok az bilinip kullanılmayan ancak tüm Java Framework’lerinin
temelini tasarım şablonları ile birlikte oluşturulan yapıdır. Reflection Api ve
içerisindeki Java Dynamic Proxy bilinmeden ne Hibernate ne de Spring
frameworkü tam anlaşılamayacaktır. Bu frameworkler sadece ezberlenecektir.
Bu frameworkler anlatılırken reflection ve proxy’e oldukça çok atıf yapılarak
birlikte incelenmektedirler.
Annotation
Neredeyse Java Framework’lerinin yönetilmesi artık sadece anotasyonlar
üzerindedir. Reflectin ve Proxy gibi bu konunun da bilinmesi elzemdir.
Java Enum ve Constant
Core Java olsa da gözlerden uzak bir konudur. Parametrik yapılar için oldukça
yararlıdır. Enum, constant arasındaki farklar incelenmiş. Fark incelemesinde
eclipse debug yöntemi kullanılarak debug özelliği ele alınmıştır. Örnek projede
interface karşı programlama, reflection api, anotasyonlar kullanılarak basit bir
loglama api geliştirilmiş. Böylece bir api ya da framework nasıl geliştirilir sorusu
incelenmektedir.
Loglama
Log4j2 framework ile loglama nasıl yapılır. Projelerde loglamanın önemi
ele alınmıştır. Bunların yanında proje isimlendirmede seviyelendirme yapısı
incelenmektedir.
Jdbc
xxvi
Java database işlemleri tek tek incelenmiştir. Aşama aşama refactoring
yapılarak iyi bir tasarım ile Jdbc yetenekleri ele alınmıştır. Bu bölüm sonunda
güzel tasarım ile geliştirilen Dao katmanı ilerideki bölümlerde Hibernate ve
Spring ile karşılaştırılarak özün özü incelenmektedir.
Hibernate
ORM nedir? Hangi şartlarda kullanılmalıdır. Hibernate JPA implementasyonu
ele alınmıştır. Özellikle Hibernate Lazy Loading vb konularındaki yanlış
anlaşılmalara sebep olan tanımlamalara dikkat çekilmiştir. Java Dynamic
Proxy hakkında bilgi sahibi olunmadan Hibernate bilgisi daima eksik kalacaktır.
Bu nedenle tüm örnekler proxy konusu ile birlikte incelenmektedir. Jdbc ile
karşılaştırılarak aralarındaki farklar da incelenmektedir.
Web Servis
Web servis bileşenleri, Wsdl yapısı ve Servis endpoint gibi kavramlar en ileri
seviyede ele alınmaktadır. Contract First ve Contract Last yaklaşımı detaylıca
ele alınmaktadır. Service interface ile Java interface kavramı karşılaştırılması
yapılarak güzel tasarlanmış service interface yapısı incelenmektedir. Servis
incelemeleri yapılırken Jax-Ws kullanılmaktadır.
Rest Servis
Rest bir servisi tasarlamak geliştirmekten zordur. Bu bağlamda iyi bir restful
servisin sahip olması gereken bileşenler derinlemesine incelenmektedir.
İnceleme http metodlardan tutunda Resource tanımı ve Hateoas gibi
bileşenlere kadar tüm rest dünyasını ele almaktadır.
Servisler
Servis konuları ele alınırken özellikle bir servisin sahip olması gereken ve
kesinlikle sahip olmaması gereken bileşenler incelenmektedir. Bu bileşenler
örnekler ile tek te açıklanmaktadır. Dependency Injection Bağımlılıklar Spring
xxvii
frameworke girilmeden Java ile incelenmektedir. Bu bölümde reflection
ve dynamic proxy ile birlikte basit bir dependency injection mekanizması
kurulmaktadır. Böylece dependency injection mekanizmasının tam olarak ne
olduğu incelenmektedir. Doğrudan Spring gibi bir framework ile dependenc
injection incelemesi konunun anlaşılmasında yetersiz kalacaktır.
Spring Framework
Spring framework nedir ne değildir. Neden ortaya çıktı? Dependency injection
mekanizmasının çalışması birden çok interface ile birlikte ele alınmaktadır.
Spring yaşam döngüsün nasıl çalıştığı ve yetenekleri incelenmektedir. Spring
hem xml hem anotasyon konfigürasyon altında incelenmektedir.
Spring AOP
Aspect Oriented Programming nedir? Gerçekten de İlgiye Yönelik
Programlama mıdır? Bir metod yapacağı işi tamamlamak için ilgi mi duyar
endişe mi duyar? Refelction ve Dynamic Proxy ile ilişkisi nedir? Bu bölümde
Java Dependency injection ve Spring Dependency injection karşılaştırılması
da ileri düzeyde yapılmaktadır. Bu bölüm kitap boyunca incelenen
teknolojilerin meyvesinin alındığı ilk duraktır. Çok dikkatli incelenmelidir.
Transaction
Transaction mekanizmasının sahip olması gereken özellikler incelenmektedir.
Spring Jdbc Template
Jdbc ile yapılan işlemler Spring Jdbc Template altında birebir ele alınmakta
ve Jdbc ile karşılaştırılmaktadır. Böylece gerçekten bir frameworke ihtiyacımız
olup olmadığı incelenmektedir. Spring’in transaction mekanizmasına
yaklaşımı ele alınmaktadır.
Spring Hibernate Template
xxviii
Hibernate, Spring altında incelenmektedir. Bu inceleme ile kitaptaki çalışan
web projesinin ilk adımı atılmaktadır.
Spring MVC
Model View Controller tasarım şablonu incelenmektedir. Spring’in bu şablonu
gerçeklemesi ve kullandığı bileşenler derinlemesine ele alınmıştır.
Çalışan Proje
Spring MVC örnekleri gerçekten çalışan bir projeye hazırlık olarak
tasarlanmıştır. Bölümdeki son örnek proje ile çalışan bir örnek projenin nasıl
olabileceği resmedilmiştir.
xxix
xxx
Kitap Nasıl Okunmalı
Kitap Temel Java bilgisine sahip okuyuculara hitap etmektedir. Okuyucunun
1
temel Java bilgisi yok ise Kim korkar Javadan Temel Java kitabımızı
incelmesini tavsiye ederim.
2
Kitap için hazırlanan örnekler Kim Korkar Javadan adresinde yayınlanacaktır.
Satış sözleşmesinde de belirtildiği üzere kitap satın alınmadan örneklere
erişim imkanı sunulmamaktadır.
Örnekler kitaptaki akış sıralamasını takip edecek şekilde incelenmelidir.
Bir sonraki örnek bir önceki örneği geliştirecek şekilde yani refactore
edilerek tasarlanmıştır. Bu nedenle kitaptaki sıralamaya uyulması kolaylık
sağlayacaktır.
Kitaptaki tüm konular birbirlerine atıf yapmaktadırlar. Böylece kitap bir bütün
olarak bir Java projesini andırmaktadır. Ancak tüm konular birbirinden
bağımsız olarak incelenebilir. Örneğin sadece Restful Web Servislerine ait
bilgiye ihtiyacı olan bir okuyucu bu bölümü doğrudan inceleyebilir.
Aslında Interface Yönelimli Programlamadan son bölüme kadar olan kısımlar
atlanmadan dikkatlice incelenmelidir. Böylece okuyucu Enterprise Java
dünyası hakkında ileri seviye bilgiye sahip olacaktır.
Allah yardımcınız olsun.
Alper
1
http://kimkorkarjavadan.com/temel-java/
2
http://kimkorkarjavadan.com/enterprise-java/
xxxi
xxxii
Kullanım Sözleşmesi
Mesafeli Satış Sözleşmesi
Madde 1 : SÖZLEŞMENİN TARAFLARI İş bu sözleşmenin bir
taraftan; SATICI: (Alper Akalın Bilişim ve Danışmanlık Hizmetleri,
Küçükbakkalköy Mh.Ali Ay.Sk.No:5/12 Ataşehir / İstanbul , Email :
1
[email protected] ) Diğer Taraftan; ALICI: Son Kullanıcı (Müşteri)
Madde 2: KONU İşbu sözleşmenin konusu, ALICI’nın SATICI’ya ait http://
kimkorkarjavadan.com/ internet sitesinden elektronik ortamda sipariş verdiği,
sözleşmede bahsi geçen nitelikleri haiz ve satış fiyatı belirtilen ürünlerin satışı
ve teslimi ile ilgili olarak 4077 sayılı Tüketicilerin Korunması Hakkındaki Kanun
ve Mesafeli Sözleşmeler Uygulama Esas ve Usulleri Hakkında Yönetmelik
hükümleri gereğince tarafların hak ve yükümlülüklerinin saptanmasıdır. ALICI,
satışa konu ürünlerin temel nitelikleri, satış fiyatı, ödeme şekli, teslimat
koşulları vs. satışa konu ürün ile ilgili tüm ön bilgiler ve cayma hakkı
konusunda bilgi sahibi olduğunu, bu ön bilgileri elektronik ortamda teyit ettiğini
ve sonrasında ürünü sipariş verdiğini, işbu sözleşme hükümlerince kabul ve
beyan eder. http://kimkorkarjavadan.com/ sitesinde yer alan ön bilgilendirme
ve fatura işbu sözleşmenin ayrılmaz parçalarıdır. Sipariş gerçekleştiği anda
ALICI bu sözleşmenin tüm koşullarını kabul etmiş sayılır.
Madde 3: ÜRÜNÜN TESLİMİ, SÖZLEŞMENİN İFA YERİ VE TESLİM
ŞEKLİ Ürün http://kimkorkarjavadan.com/ sitesi üzerinden online olarak ekitap
şeklinde ve internet sayfasında yer alan örneklerden faydalanabilmesi için
şifre ile birlikte alıcının hesabına tanımlanacak yani alıcıya ekitap olarak teslim
edilecektir.
1
mailto:[email protected]
xxxiii
Madde 4: TESLİMAT MASRAFLARI VE İFASI Teslimata ait herhangi
bir masraf oluşmayacaktır. ürün ekitap olarak http://kimkorkarjavadan.com/
sitesinde alıcının hesabından indirilecektir. Sözleşme konusu ürünün teslimatı
için işbu sözleşmenin E-imzalı bir nüshasının SATICI’ya ulaştırılmış olması ve
bedelinin ALICI’nın tercih ettiği ödeme şekli ile ödenmiş olması şarttır. Ödeme
gerçekleştiği anda ALICI bu sözleşmenin tüm koşullarını kabul etmiş sayılır.
Herhangi bir nedenle ürün bedeli ödenmez veya banka kayıtlarında iptal edilir
ise, SATICI ürünün teslimi yükümlülüğünden kurtulmuş kabul edilir.
Madde 5: ALICININ BEYAN VE TAAHHÜTLERİ ALICI, sözleşme konusu
ürünü teslim almadan önce muayene edecek indirdiği dosyada herhangi bir
2
bozulma var ise satıcı ile [email protected] adresinden irtibata
geçecektir. Teslimden sonra ürünün özenle korunması borcu, ALICI’ya aittir.
Ürünün tesliminden sonra ALICI’ya ait kredi kartının ALICI’nın kusurundan
kaynaklanmayan bir şekilde yetkisiz kişilerce haksız veya hukuka aykırı
olarak kullanılması nedeni ile ilgili banka veya finans kuruluşunun ürün
bedelini Satıcıya ödememesi halinde, ALICI’nın siteye erişimini bloke edebilir.
Ayrıca ALICI, ALICI’nın gösterdiği üyelik hesabına tanımlanan ekitap’a
erişim yetkilerine binaen yapılan teslimatın, ALICI’ya yapılmış teslimat
sayılacağını kabul etmektedir. Kitabı alan kullanıcılar internet sayfasından
faydalanabileceği örnekleri, kitabı aldıkları tarihten itibaren 15 ay süreyle
inceleyebileceklerdir. Örnekleri inceleme süresini uzatmak isteyenler satıcının
belirleyeceği uzatma ücretini ödeyerek 12 ay daha uzatabilirler. Süre uzatımı
satıcının belirlediği uzatma ücreti ödenerek 12’şer aylık periyotlar için
tekrarlanabilir.
Madde 6: SATICININ BEYAN VE TAAHHÜTLERİ Satıcı, sözleşme konusu
ürünü sağlam, eksiksiz, siparişte belirtilen niteliklere teslim edilmesinden
sorumludur. Sözleşme konusu ürün, ALICIdan başka bir kişi/kuruluşa teslim
2
mailto:[email protected]
xxxiv
edilecek ve/veya hesabına tanımlanacak ise, teslim edilecek kişi/kuruluşun
teslimatı kabul etmemesinden Satıcı sorumlu tutulamaz.
Madde 7: SÖZLEŞMEYE KONU ÜRÜNÜN ÖZELLİKLERİ Ürünün Cinsi
ve türü, Miktarı, Marka/Modeli, Rengi ve Tüm Vergiler Dâhil Satış Bedeli
http://kimkorkarjavadan.com/ sitesindeki ürünün tanıtım sayfasında yer alan
bilgilerde ve işbu sözleşmenin ayrılmaz parçası sayılan faturada belirtildiği
gibidir. Satıcı teknik nedenlerden kaynaklanan fiyat güncelleme hatalarından
sorumlu değildir.
Madde 8: ÜRÜNÜN PEŞİN FİYATI fatura içeriğinde mevcuttur.
Madde 9: CAYMA HAKKI, ürün online olarak e-kitap olarak pdf formatında
elektronik ortamda ALICI’ya anında teslim edilmektedir. Elektronik ortamda
e-kitapların çoğaltılması ve kopyalanması oldukça kolay olduğundan
alınan üründe iade işlemi yapılmayacaktır. Ürün dosyasında oluşabilecek
hatalardan dolayı ürünün açılamaması, okunamaması gibi durumlarda
3
[email protected] adresinden SATICI ile irtibata geçilecektir.
SATICI, ALICIya yeni bir indirme linki oluşturarak ALICI’nın e-kitaba sahip
olmasını sağlayacaktır.
Madde 10: TEMERRÜT HALİ VE HUKUKİ SONUÇLARI ALICI, kredi kartı ile
yapmış olduğu işlemlerinde temerrüde düşmesi halinde kart sahibi bankanın
kendisi ile yapmış olduğu kredi kartı sözleşmesi çerçevesinde faiz ödeyecek
ve bankaya karşı sorumlu olacaktır. Bu durumda ilgili banka hukuki yollara
başvurabilir; doğacak masrafları ve vekâlet ücretini ALICI dan talep edebilir
ve her koşulda ALICInın borcundan dolayı temerrüde düşmesi halinde, ALICI,
borcun gecikmeli ifasından dolayı Satıcının oluşan zarar ve ziyanını ödemeyi
kabul eder.
3
mailto:[email protected]
xxxv
Madde 11: Lisans Hakları ALICI tarafından satın alınan ürün/ürünlerin tamamı,
bir kısmı ve/veya üründen elde edilen herhangi bir bilgi, yazılım veya hizmet
değiştirilemez, kopyalanamaz, dağıtılamaz, çoğaltılamaz, yayınlanamaz, türev
niteliğinde çalışmalara konu edilemez, aktarılamaz veya satılamaz.
ALICI tarafından site üzerinden alınan ürün bireysel kullanım içindir. Ürünün
eğitim, sunum vb her nevi toplu kullanımı için SATICI ile irtibata geçilmeli ve
uygun lisans alınmalıdır.
ALICI işbu sözleşme ile satın aldığı ürünü yasa dışı amaçlar için ve/veya bu
yasaklanan şekillerde kullanmayacağını kabul ve taahhüt eder. Aksi halde
doğabilecek tüm hukuki ve cezai sorumluluk ALICI’ya ait olmakla beraber hak
sahibi satıcı, üçüncü kişiler veya yetkili merciler tarafından SATICI’ya karşı ileri
sürülebilecek tüm iddia ve taleplere karşı ve yine SATICI’nın söz konusu izinsiz
kullanımdan kaynaklanan her türlü tazminat ve sair talep hakkı saklıdır.
Örneklerin ve kitabın güvenliğini korumak adına aynı anda, aynı ya da farklı IP
adreslerinden, aynı kullanıcı bilgileri ile 4 defa login olan kullanıcıların üyelikleri
lisans hakkının ihlali olarak kabul edilecektir ve bu durumda ALICI’nın satın
almış olduğu e-kitap ile birlikte sitede mevcut örneklerden yararlanma hakları
süresiz sonlandırılacaktır.
Madde 12: YÜRÜRLÜK Site üzerinden verilen siparişe ait ödemenin
gerçekleşmesi durumunda ALICI işbu sözleşmenin tüm koşullarını kabul etmiş
sayılacaktır.
Ödeme ve Teslimat Koşulları
Siparişleriniz, kredi kartıyla ödeme yaptıktan sonra ya da Banka yolu ile
EFT/Havale yapmanız durumunda banka onayı alındıktan sonra 3 ( üç ) iş
günü içerisinde e-kitap olarak ALICI’nın hesabına tanımlanarak teslim edilir.
Tüm ürünlerimize yani kitaplarımıza ALICI online olarak sahip olabileceğinden
herhangi bir kargo vb gönderimine ve ücretine gerek yoktur. Tüm ürünlerimizde
K.D.V. fiyatlara dahildir. KDV oranları diğer resmi harç vergi gibi tutarlar
xxxvi
değiştiğinde fiyatlara yansıtılır. Siparişlerinize ait faturalarınızı daha sağlıklı
gönderebilmemiz için açık adres, vergi no’su ,vergi dairesi ve kart sahibine ait
bir sabit veya cep telefon numarası belirtilmesi gereklidir. Tipografik hatalar
ve fiyat hatalarından firmamız sorumlu tutulamaz. Firmamız, sitede görülen
ürün görsellerini ve fiyatlarını herhangi bir duyuru yapmaksızın değiştirme
hakkını saklı tutar. http://kimkorkarjavadan.com/ on-line alışveriş sitesidir. Aynı
anda birden çok kullanıcıya alışveriş yapma imkanı tanır. Ürün online olarak
satılıp online olarak dağıtıldığından stoklarda tükenme durumu söz konusu
değildir. Ürünün ödemesi yapılmış ve teknik nedenlerden dolayı ürün temin
edilemiyorsa 3 ( üç ) iş günü içerisinde ALICIya yaptığı ödeme geri iade edilir.
Garanti Koşulları
Tüm ürünler aksi belirtilmediği takdirde üretici firmaların garantisi
altındadır.
Herhangi
bir
hasar
veya
bozulma
gördüğünüzde
4
[email protected] adresi üzerinden bizimle irtibata geçiniz.
Bozuk ya da hasarlı ürünü tarafımıza iletmeniz durumunda 3 ( üç ) iş
günü içerisinde yeni ürün sizlere tanımlanacaktır. Ürün üzerinde yapılan
değişiklikler, ürünün deforme olması ya da ürünün orijinal dizaynının ALICI
tarafından bozulması garanti kapsamı dışındadır.
İade Koşulları
Ürün online olarak e-kitap olarak pdf formatında elektronik ortamda ALICI’ya
teslim edilmektedir. E-kitapların çoğaltılması ve kopyalanması oldukça kolay
olduğundan satılan üründe iade işlemi yapılmayacaktır. Ürün dosyasında
oluşabilecek hatalardan dolayı ürünün açılamaması, okunamaması gibi
5
durumlarda [email protected] adresinden SATICI ile irtibata
geçilecektir. Bozuk ya da hasarlı ürünü tarafımıza iletmeniz durumunda 3 ( üç )
4
mailto:[email protected]
5
mailto:[email protected]
xxxvii
iş günü içerisinde yeni ürün sizlere tanımlanacaktır. SATICI, ALICIya yeni bir
indirme linki oluşturarak ALICInın kitaba sahip olmasını sağlayacaktır.
Genel Hükümler
18 yaşından küçük kişiler ile ayırt etme gücünden yoksun veya kısıtlı erginler
SATICI’dan alış-veriş yapamaz.
Yetkili Mahkeme
İşbu mesafeli satış sözleşmesinin uygulanmasından doğacak uyuşmazlıklarda
Gümrük ve Ticaret Bakanlığı’nca her yıl Aralık ayında ilan edilen
parasal sınırlar dahilinde ALICI’nın mal veya hizmeti satın aldığı veya
ikametgahının bulunduğu yerdeki Tüketici Sorunları Hakem Heyeti veya
Tüketici Mahkemeleri yetkilidir. İşbu mesafeli satış sözleşmesi elektronik
ortamda taraflarca okunup, kabul edilip, teyit edilmiştir. İşbu mesafeli satış
sözleşmesinde düzenlenmemiş hususlarda 6502 sayılı Tüketicinin Korunması
Hakkında Kanun ve ilgili mevzuat hükümleri uygulanır.
xxxviii
Kapanış
Uzun bir yolculuğun sonuna gelmiş bulunmaktayız. Buraya kadar birlikte
incelediğimiz tüm konuları gerek internet gerek diğer kaynaklardan
araştırmanızı tavsiye ederim.
Araştırmalarınızı sadece frameworkler ya da popüler teknolojiler üzerinde
yoğunlaşmamalısınız. Bu framework ve teknolojilerin alt yapıları da ileri
derecede bilinmelidir. Unutmayalım ki gün gelir xxx frameworkü popülerliğini
yitirir ve yyy frameworkü popüler olabilir. Ancak Java uzun yıllar bizlerle
beraber olacaktır. Ve popüler olan her framework Java üzerinde kurgulanmış
olacaktır. Bu nedenle tasarım şablonları altında Java’nın yapabileceklerine
odaklanmak faydalı olacaktır.
Bu noktadan sonra kı sa süre sonra yayı nlamayı düşündüğümüz Tasarı m
Şablonları kitabımızın da müjdesini vermek isterim.
Bu bölümden sonraki Tasarım Şablonları başlığında içerik hakkında kısa bir
tanımtım bulabilirsiniz.
Hakkınızı helal etmeniz ümidiyle…
Alper
cmxvii
cmxviii
Tasarım Şablonları
Problem, yazılımcı ve kullanıcı için farklı anlamlar ifade etmektedir. Kullanıcı
için çalışma hayatında karşılaştığı bir zorluk ya da işini yapmasını engelleyen
bir sorun olabilir. Yazılımlar bu gibi sorunlara çözüm ihtiyaçlarından
doğmaktadır. Kullanıcının sorunlarını çözmede kullanılan yazılımların
projelendirmesi de yazılımcının problemidir. Bu problem çözümünde
kullanılabilecek metodolojilere Tasarım Şablonları denilmektedir.
Tasarım şablonları ya da modellemeleri problem çözen yöntemler olmayıp
problemlerden uzak durmamıza yarayan metodolojilerdir. Yani problem
çözmek yerine en baştan problemden uzak durmayı öğütleyen yapılardır.
cmxix
Tasarım şablonları kesin kanun gibi algılanmamalıdır. Bu şablonlar problem
çözümlerinde bizlere yol gösteren rehberlerdir. Ancak kesin kanun hükmünde
değildirler.
Hazırlamakta olduğumuz yeni kitabımızda kardeşim Kubilay Kulaoğlu ile
birlikte Tasarım Şablonlarını Java, C# ve JavaScript örnekleri ile inceliyoruz.
Her zaman olduğu gibi tüm şablonlar ayrı ayrı örnek projeler ile ele
alınmaktadır. Bu örnekler ile yazılım geliştirme süreçlerinde ortaya çıkabilecek
sorunlardan uzak durma yöntemleri incelenmektedir.
Yayına hazırladığımız Tasarım Şablonları kitabımızda gerek nesneye
yönelimli programlama mantığı gerek ise fonksiyonel bir dil olan javascript için
hatalardan uzak durma yöntemlerini inceleyebileceksiniz.
cmxx
Kim Korkar Javadan Temel Java
cmxxi
Java ve Nesneye Yönelim
Java Temel Bilgiler
İlk Program
Temel - İlkel (Primitif) Veri Tipleri
Tip Dönüşümleri, Casting
Java SE7 Temel Veri Tipleri
Kod Blokları
Kontrol Yapıları
Java SE7 - String İfadeler ve Switch Yapısı
Klavyeden Basit Giriş - Çıkış İşlemleri
Algoritma, Math Sınıfı
Metotlar, Diziler, Stringler
Nesne Yönelimli Programlama
Yapılandırıcılar - Constructors
Kalıtım - Inheritance,
Çok Biçimlilik - Polymorphism
Soyut-Abstract Sınıflar ,
Arabirimler - Interface
İstisnalar - Exceptions, Dosya İşlemleri
cmxxii
JavaSE7 ve Try Catch Blokları
Java7 Kaynak Kapama,
İç Sınıflar (Inner Class)
Generics - Jenerik Sınıflar,
Kolleksiyonlar - Collections
JavaSE7 Diamond Inference ve Generic Tipler
Multithreading
Java 8 ve Getirdikleri
Swing ile GUI Programlama,
Ağ Programlama
Veritabanlarına Giriş,
JDBC
cmxxiii
cmxxiv

Benzer belgeler

Spring ve Hibernate Entegrasyonu

Spring ve Hibernate Entegrasyonu üzerinden yapılan veri erişim işlemlerinin artısı, ihtiyaç duyulan kaynaklara, JNDI lookup gibi kod içerisinde doğrudan lookup yapılmamasıdır. veri erişim metotları içerisinden checked Veri erişim ...

Detaylı

1.Bölüm - Pratik Programcı Yayınları

1.Bölüm - Pratik Programcı Yayınları Aklınıza bu kadar geniş bir kapsama alanına sahip bir teknolojinin yanında nasıl olur da Spring gibi popüler bir çatı var olabilir sorusu gelebilir. Öncelikle şunu belirtelim: JEE (Java Enterprise ...

Detaylı