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