Ç NDEK LER 1 G R fi 1 Bu Kitaba Neden htiyaç Duyuldu? 1 Kitap Nas l Takip Edilmeli? 2 Programlama Dili Nedir? 2 Programlama Dillerinin Tarihçesi 2 Programlama Dillerinin Türleri 4 Makina Dili 4 Assembly Dili 4 Script Dilleri 5 Yüksek Seviye Programlama Dilleri 5 Çok Kullan lan Programlama Dilleri Hakk nda Özet Bilgiler 5 Fortran 5 Cobol 6 Pascal 6 Basic 6 Visual Basic 6 Delphi 6 C 7 C++ 7 C# 7 Java Nedir? 7 Java n n Di er Programlama Dillerinden Fark 8 2 BAfiLAMADAN ÖNCE B L NMES GEREKENLER 9 JDK, JRE ve JVM Kavramlar 10 JDK (Java Development Kit-Java Gelifltirme Kiti) 10 JRE (Java Runtime Environment-Java Çal flma Ortam ) 11 JVM (Java Virtual Machine-Java Sanal Makinesi) 11 JVM ile JRE Aras ndaki Fark 11 JDK ve JRE Kurulumu 11 Windows flletim Sistemi Üzerinde JDK Kurulumu 11 Kurulan JDK n n flletim Sisteminin PATH De iflkenine Eklenmesi 15 Kurulan JDK için flletim Sisteminde JAVA_HOME De iflkeni Oluflturulmas 18 Linux flletim Sistemi Üzerinde JDK Kurulumu 19 JRE Kurulumu 21 Java Programlar n n Yap s 24 Java Programlar n n Komut Sat r ndan Derlenmesi ve Çal flt r lmas 25
viii JAVA VE JAVA TEKNOLOJ LER 3 JAVA PROGRAMLAMA D L TEMELLER 27 Girifl 27 Java Programlar n n Çal flma fiekli 28 Örnek Java Program 28 Temel (Primitif) Veri Tipleri 30 Tamsay lar 30 Ondal kl (Kayar Noktal ) Say lar 31 Primitif Veri Tiplerinin Varsay lan De erleri 32 Literaller (De erler) 32 Tamsay (int) Literaller 32 Kayar Noktal Say Tipindeki (float) Literaller 33 Karakter Literaller 33 Karakter Katarlar (String ve StringBuffer S n f ) 33 String S n f 33 StringBuffer S n f 34 De iflkenler ve De iflken Tan mlama 34 Tip Dönüflümleri (Type-Casting) 36 Primitif Say Tipleri ve Karakter Katarlar n n Birbirlerine Dönüfltürülmesi 37 Bir int i string e Dönüfltürmek 37 Bir string i int e Dönüfltürmek 37 Bir double veya float string e Dönüfltürmek 38 Bir string i double/float a Dönüfltürmek 38 De iflkenlerin Kullan m n Gösteren Örnek Bir Program 38 Operatörler 40 Atama Operatörü (=) 40 Aritmetik Operatörler (+, -, *, /, %) 40 Aritmetik Art rma ve Eksiltme Operatörleri (++, ) 43 Aritmetik Atama Operatörleri 44 liflkisel Operatörler (<,>,<=,>=,==,!=) 47 Mant ksal Operatörler 48 Bitwise (Bit-Tabanl ) Operatörler 49?: Operatörü: 50 Operatör Önceli i 51 Program Kontrol fadeleri 52 Kod Bloklar 52 If Cümleci i ve Yap s 53 If Cümleci inin ncelendi i Bir Program: HesapIslemleri.java 56 If-Else Yap s 57 If-Else Yap s n n ncelenmesi: HesapIslemleriV2.java 58
Ç NDEK LER ix If Cümleci i çerisinde Karmafl k Mant ksal fadeler Kullanmak 59 ç çe If-Else Yap lar 60 Else If Deyimi 61 switch-case Deyimi 63 Diziler 67 Tek Boyutlu Diziler 67 Çok Boyutlu Diziler 71 Döngüler 74 while Döngüsü 74 do while Döngüsü 76 For Döngüsü 78 Özelleflmifl for Döngüsü 80 ç içe Döngüler 83 break ve continue Deyimleri 86 Yorumlar 87 Tek Sat rdan Olufllan Yorumlar 87 Blok Yorumlar 88 4 JAVA LE NESNE TABANLI PROGRAMLAMAYA G R fi 89 Girifl 89 S n flar 90 Nesneler 92 public, private ve protected Anahtar Kelimeleriyle Üye De iflkenler ve Metotlar için Eriflim Seviyeleri Tan mlamak 93 new Operatörü 95 Nokta (.) Operatörü 95 Metotlar 96 Metotlar n Kullan m 98 Yap land r c Metotlar (Constructors) 99 Metotlar n Afl r Yüklenmesi (Method Overloading) 101 Statik Metotlar 102 static Anahtar Kelimesinin Di er Kullan mlar 103 Statik Üye De iflken Tan mlama 103 De eri De iflmeyen Sabit De iflkenler Tan mlama 105 Recursif Metotlar 105 stisna Yönetimi (Exception Handling) 108 Try-Catch Blo u 108 throws Anahtar Kelimesi 109 throw Anahtar Kelimesi 109
x JAVA VE JAVA TEKNOLOJ LER finally Anahtar Kelimesi 111 Paketler (Packages) 112 Baflka Paketteki S n flar Kullanmak 114 Bir S n f import Anahtar Kelimesini Kullanmadan Ça rmak 114 5 JAVA LE NESNE TABANLI PROGRAMLAMA TEMELLER 115 Girifl 115 Kal t m 115 Üst S n f (Super Class) ve Alt S n f (Sub Class) Kavram 121 super() Metodu ile Üst S n f n Yap land r c s n Ça rmak 121 this Anahtar Kelimesi 121 Kal t m Örne i 123 Object S n f 127 instanceof Anahtar Kelimesi 127 Çok Biçimlilik (Polymorphism) 128 Soyut S n flar (Abstract Classes) 131 Soyut Metotlar (Abstract Methods) 131 Arayüzler (Interfaces) 132 implements Anahtar Kelimesi 132 final Anahtar Kelimesinin Kal t mda Kullan m 133 S n flar Aras ndaki Kal t msal liflkiler 134 Kolleksiyonlar (Collections) 135 ArrayList Yap s 136 ArrayList Kullan m için Örnek Bir Program 137 6 JAVA ENTEGRE GEL fit RME ORTAMLARI VE NETBEANS KURULUMU 139 Girifl 139 Java Projelerini Elle Build Etmek ve Çal flt r labilir jar Uzant l Dosyalar Oluflturmak 140 Java Build Sisteml 144 Ant 144 Maven 148 Ant ile Maven n Karfl laflt r lmas 155 Java Entegre Gelifltirme Ortamlar (Java IDE leri) 155 Eclipse (MyEclipse) 156 IntelliJ Idea 157 JBuilder 158 JCreator 159 JDeveloper 160 Netbeans 160
Ç NDEK LER xi Netbeans IDE sinin Özellikleri 161 Netbeans Kurulumu 162 7 TEMEL JAVA UYGULAMA YAPILARI 171 Girifl 171 Java Konsol (Komut Sat r ) Uygulamalar 172 Java Masaüstü Uygulamalar 177 Java Masaüstü Uygulama Kütüphaneleri 178 AWT 178 SWT 178 Swing 178 SwingX Kütüphanesi 179 Netbeans ile Masaüstü Uygulamas Örne i 179 Masaüstü Uygulamalar n n Temel Özelliklerini De ifltirmek 189 Look and Feel ile Swing Uygulamalar n n Görünümlerini De ifltirmek 192 Java Web Uygulamalar 196 MVC (Model View Controller) Yap s 196 Java Web Frameworkleri (Uygulama Çat lar ) 197 Servlet 197 JSP (Java Server Pages-Java Sunucu Sayfalar ) 197 Struts 197 Spring 198 Seam 198 JSF (Java Server Faces-Java Sunucu Yüzleri) 198 Web Uygulamas na Geçmeden Önce Bilinmesi Gereken Kavramlar 198 POJO (Pla n Old Java Objects-Eski Düz Java Nesneleri) 198 JavaBean 199 Netbeans ile JSF Web Uygulamas 200 Temel JSF Bileflenleri 210 h:form Bilefleni 210 h:datatable Bilefleni 210 h:column Bilefleni 210 h: nputtext Bilefleni 211 h:outputtext Bilefleni 211 h:commandbutton Bilefleni 211 Expression Language (Deyim Dili) 211 Web Projelerini Çal flt rmak 212 CSS ile Web Sayfalar n Güzellefltirmek 213 Temel Netbans fllemleri 215
xii JAVA VE JAVA TEKNOLOJ LER Varolan Projeleri Açmak ve Kapamak 215 Netbeans de Ana Projeyi (Main Project) Belirlemek 216 Editörde Sat r Numaralar n Göstermek 217 Projede Hata Ay klamak 218 Netbeans de Bookmark (S k Kullan lan) Tan mlamak 221 8 VER TABANI TEMELLER VE BLOG UYGULAMASI Ç N VER TABANI TASARIMI 223 Girifl 223 Veritaban Kavram 224 liflkisel Veritabanlar 224 Veritaban Yönetim Sistemleri (DBMS-Database Management Systems) 224 liflkisel Veritaban Yönetim Sistemleri (RDBMS-Database Management Systems) 225 Bir liflkisel Veritaban Örne i 225 Primary Key (Birincil Anahtar) Kavram 226 SQL Dili 226 Create Komutu 227 Insert Komutu 227 Select Komutu 228 Where Anahtar Kelimesi 229 LIKE Operatörü 230 Where fadesi çerisinde Birden Fazla Koflul Kullanmak 231 Update Komutu 231 Delete Komutu 232 Drop Komutu 232 liflkisel Veritaban Tasar m 232 Blog Veritaban Tasar m 233 Foreign Key (Yabanc Anahtar) Kavram 234 MySQL Kurulumu 235 MYSQL in Yap land r lmas 239 MySQL Servisinin Otomatik Olarak Bafllat lmas 245 MySQL Komut Sat r stemcisi (MySQL Command Line Client) 247 Navicat Uygulamas ile MySQL fllemlerini H zland rmak 250 Navicat Uygulamas n n Kurulumu 251 Navicat ile MySQL Üzerinde Blog Veritaban n n Oluflturulmas 256 Netbeans ile Veritabanlar na Eriflim 264 9 JDBC LE VER TABANI PROGRAMLAMA TEMELLER 269 Girifl 269 JDBC (Java Database Connectivity) 269
Ç NDEK LER xiii Veritaban Sürücüsü (Database Driver) Kavram 270 MYSQL Veritaban Sürücüsü nün Netbeans Uygulamalar nda Kullan lmas 270 VeritabaniIslemleri.java S n f 273 Blog Veritaban ndaki Kay tlar n Tutulaca S n flar n Modellenmesi 274 Kullanici.java S n f 274 Blog.java S n f 276 Girdi.java S n f 277 Yorum.java S n f 279 Araclar.java S n f 280 JDBC fllemlerini Gerçeklefltirebilmek için Gerekli Olan Bileflenler 281 Connection (java.sql.connection) 282 Statement 282 PreparedStatement 282 CallableStatement 283 ResultSet 283 JDBC ile Select fllemi 284 JDBC ile Insert fllemi 286 JDBC ile Update fllemi 287 JDBC ile Delete fllemi 288 JDBC ile Tablo Kolon Bilgilerinin (Metadata) Elde Edilmesi 288 JDBC ile Transaction Yönetimi 289 VeritabaniIslemleri.java S n f n n Tam Kodu 290 BlogOlustur Uygulamas 300 10 SWING LE MASAÜSTÜ UYGULAMA TEMELLER 303 Girifl 303 Matisse Görsel Arayüz Yöneticisi (Matisse GUI Builder) 303 Design (Tasar m) Modu 304 Source (Kaynak Kod) Modu 305 Palette (Palet) Penceresi 306 Properties (Özellikler) Penceresi 306 Inspector Penceresi 307 Navigator Penceresi 307 Swing Temelleri 308 JFrame Bilefleni 308 JTextField Bilefleni 309 JTextArea Bilefleni 309 JButton Bilefleni 309 JComboBox Bilefleni 312
xiv JAVA VE JAVA TEKNOLOJ LER JTable Bilefleni 313 JDialog Bilefleni 315 JPanel Bilefleni 315 BlogYöneticisi Uygulamas 316 BlogYoneticisiView Penceresi 317 jdialogyeniblogolustur Penceresi 318 jdialogkullanicibilgisidetay Penceresi 319 jdialogkullanicibilgilerinidüzenle Penceresi 319 BlogYöneticisi Uygulamas nda Kullan lan Paketler 320 blogyoneticisi Paketi Alt nda Bulunan S n flar 320 blogyoneticisi.resources Paketi Alt nda Bulunan Dosyalar 321 blogyoneticisi.siniflar.genel Paketi Alt nda Bulunan S n flar 321 blogyoneticisi.siniflar.model Paketi Alt nda Bulunan S n flar 324 blogyoneticisi.siniflar.veritabani Paketi Alt nda Bulunan S n flar 326 BlogYoneticisiView S n f nda Kullan lan Önemli Üye De iflkenler 328 Ana Form (BlogYoneticisiView) Üzerinde Bulunan Bileflenler çin Tan mlanm fl Olaylar 328 BlogYoneticisiView çinde Kullan lan Yard mc Metotlar 333 jdialogyeniblogolustur Penceresi çindeki Bileflenler için Tan mlanm fl Olan Olaylar 335 jdialogkullanicibilgisidetay Penceresindeki Bileflenler için Tan mlanm fl Olan Olaylar 336 jdialogkullanicibilgilerinidüzenle Penceresi çindeki Bileflenler için Tan mlanm fl Olan Olaylar 336 Uygulaman n Çal flt r lmas 338 Uygulamaya Eklenebilecek Özellikler 339 11 JSF 2.0 LE WEB BLOG UYGULAMASI 341 Girifl 341 JSF (Java Server Faces-Java Sunucu Yüzleri) 342 Bir JSF Projesinin Temel Bileflenleri 342 Java S n flar 342 Web Sayfalar 343 XML Uzant l Ayar Dosyalar 344 Projede Kullan lan.jar Uzant l Yard mc Kütüphane Dosyalar 344 BlogWeb Uygulamas n n Oluflturulmas 344 BlogWeb Uygulamas n n Çal flt r lmas 345 Projenin Genel Yap s 345 Projedeki Web Sayfalar ve Stil Dosyalar 345 Projede Bulunan Paket ve S n flar 345
Ç NDEK LER xv Projede Bulunan Kütüphaneler 346 Projede Bulunan Yap land rma Dosyalar 347 BlogWeb Uygulamas nda Gerçeklefltirilen Temel JSF fllemleri 347 PrimeFaces için Yap land rma Ayarlar n n Eklenmesi 348 Sayfa Tasar mlar nda Taglib Etiket Kütüphanelerinin Tan mlanmas 348 Sayfa Tasar mlar nda CSS Dosyalar n n Kullan m 349 Butonlar ve CommandLink ler Arac l yla ManagedBean çindeki Metotlar n Ça r lmas 349 Managed Bean çindeki Metotlara Parametre Gönderme 351 Kullan c n n Girdi i Verilerin stenilen Biçimde Olup Olmad n n ncelenmesi (Form Validation fllemi) 351 Managed Bean ler çinde Tan mlanm fl Metotlardan Veritaban na Eriflim 353 Sayfada Tekrar Eden fllemler için <u :repeat> Etiketinin Kullan lmas 354 Yetkisiz Kullan c lar n fllem Yapmas n Önleyebilmek için Aktif Bileflenlerin rendered Özelli inin Kullan lmas 355 Kullan c ya Yapt fllem çin Onaylama (confirm) Diyalo u Gösterilmesi 356 Sayfa Yönlendirme fllemi 357 Girifl-Ç k fl fllemi 357 Yetkisiz Kullan c Giriflinin Önlenmesi 359 PrimeFaces Bilefleni Olan <p:editor> Bilefleninin Kullan lmas 362 BlogWeb Uygulamas ndaki Sayfalar ve Görünümleri 364 index.xhtml Sayfas 364 kullanici.xhtml Sayfas 366 tumgirdiler.xhtml Sayfas 368 blog.xhtml Sayfas 371 blogduzenle.xhtml Sayfas 376 girdiduzenle.xhtml Sayfas 378 yorumduzenle.xhtml Sayfas 380 BlogWeb Uygulamas ndaki Kullan lan S n flar 382 KullaniciBean.java 382 GirdiDetay.java 397 VeritabaniIslemleri.java S n f na Eklenen Metotlar 398 BlogWeb Uygulamas ndaki Kullan lan CSS Dosyalar 406 csslayout.css 406 default.css 409 12 JAX-WS KÜTÜPHANES VE NETBEANS LE XML TABANLI WEB SERV SLER OLUfiTURMAK 411 Girifl 411 Web Servisi Kavram 411
xvi JAVA VE JAVA TEKNOLOJ LER Web Servisi Teknolojisinin Temel Bileflenleri 412 UDDI (Universal Description, Discovery and Integration) 412 WSDL (Web Servis Description Language) 412 SOAP (Simple Object Access Protocol) 412 SOA (Service Oriented Architecture) 413 Bir Web Servis Uygulama Senaryosu 413 Web Servislerinin Çal flma Yap s 413 Netbeans ile Web Servisi Uygulamas 414 Netbeans ile Web Servisini Oluflturma 414 Netbeans ile Web Servis stemcisi Oluflturma 424 13 D ER UYGULAMA ÖRNEKLER 431 Java ile Temel Dosya fllemleri 431 Dosya Seçme fllemi (Dosya Seç Butonu) 432 Dizin Seçme fllemi (Dizin Seç Butonu) 433 Dosya Oluflturma fllemi (Dosya Olufltur Butonu) 434 Dizin Oluflturma fllemi (Dizin Olufltur Butonu) 435 Dosya Kopyalama fllemi (Seçili Yolu Kopyala Butonu) 435 Dosya Tafl ma fllemi (Seçili Yolu Tafl Butonu) 437 Dosya Silme fllemi (Seçili Yolu Sil Butonu) 438 Java ile Metin Dosyalar na Eriflim 440 Java ile Metin Dosyalar na Yazmak (Text Dosyas na Yaz Butonu) 440 Java ile Metin Dosyalar ndan Okumak (Text Dosyas ndan Oku Butonu) 442 Netbeans ile Java Applet Örne i 442 Uygulamalarda JFreeChart ile Çizelge (Grafik) Oluflturmak 454 Netbeans ile Otomatik Olarak JavaDoc Oluflturma 458 Java ile Raporlama 461 JasperReports Kütüphanesi 461 IReport Uygulamas 461 IReport ile Rapor Oluflturma 463 IReport ile De iflik Dosya Biçimlerinde Raporlar Almak 472 14 J2ME LE CEP TELEFONU VE MOB L C HAZLAR Ç N UYGULAMA GEL fit RME 475 Girifl 475 Önemli Kavramlar 475 J2ME 475 MIDP (Mobile Information Device Profile) 476 MIDlet 476 CLDC (Connected Limited Device Configuration) 476 CDC (Connected Device Configuration) 476
Ç NDEK LER xvii Netbeans Mobility Toolkit 477 Netbeans Mobility Toolkit Kullan m ve Örnek Bir Uygulama 478 Projenin Oluflturulmas 479 Mobility Toolkit Araçlar n n ncelenmesi 480 Palette Penceresi 483 Sihirbaz n Üretti i Haz r Projenin Simülatör Üzerinde Çal flt r lmas 483 Proje çeri inin De ifltirilmesi 484 Projenin Çal flt r lmas 486 15 JPA VE HIBERNATE LE VER TABANLARINA ER fi M 489 Girifl 489 ORM (Object Relational Mapping) Kavram 490 JPA (Java Persistence API) 490 JDBC Sürücüsü (JDBC Driver) veya JDBC Veri Kayna (JDBC Datasource) 491 Persistence.xml Dosyas 491 Entity S n flar (Entity Classes) 491 Entity Yöneticisi (Entity Manager) 491 Netbeans ile JPA Eriflimi 491 JPAHibernateSwing Projesinin Oluflturulmas 492 Sihirbaz Taraf ndan Otomatik Oluflturulan Dosyalar 496 persistence.xml Dosyas 497 JPAQL (JPA Query Language-JPA Sorgu Dili) 511 Normal Sorgu Örnekleri 511 Parametreli Sorgu Örnekleri 511 Annotation (Dipnot) Kavram ve JPA da Bulunan Önemli Dipnotlar 511 @Entity 512 @Table 512 @NamedQuery 512 @NamedQueries 512 @Column 513 @Id 513 @OneToMany 513 Eager ( stekli) Fetch (Veri Çekme) fllemi 514 Lazy (Tembel) Fetch (Çekme) fllemi 514 Lazy ve Eager Fetch fllemlerinin Performansa Etkisi 515 @ManyToOn 515 @OneToOne 516 @ManyToMany 516 JPA ile Temel Veritaban fllemleri 518 Entity Manager in Oluflturulmas 518
xviii JAVA VE JAVA TEKNOLOJ LER JPA ile SELECT fllemi 518 JPA Sorgular nda NamedQuery Kullan m 518 JPA Sorgular nda Parametre Kullan m 519 JPA ile UPDATE fllemi 519 JPA ile DELETE fllemi 519 JPAHibernateSwing Uygulamas n n çeri i 520 Programda Kullan lan Temel De iflkenler 522 Programda Kullan lan Yard mc Metotlar 522 Ana Penceredeki Bileflenler çin Tan mlanm fl Olan Olaylar 525 Blog fllemleri Penceresinde Tan mlanm fl Olan Olaylar 527 Kullan c fllemleri Penceresinde Tan mlanm fl Olan Olaylar 528 JFileChooser Kullan m 530 16 LER KONULAR 533 Gelifltirdi iniz Masaüstü Uygulamalar çin Kurulum Sihirbaz Oluflturma 533 Inno Setup Yaz l m n n ndirilmesi ve Kurulumu 534 Yaz l m Gelifltirme Yaklafl mlar 544 Waterfall (fielale) Modeli 545 Agile (Çevik) Yaz l m Gelifltirme Modeli 545 Scrum 545 Faydal Java Araç ve Kütüphanelerinin Bir Listesi 545 Apache/POI 545 Apache/Commons 546 Substance 546 JFreeChart 546 JESS 547 SAX 547 LUCENE 547 SOLR 547 Zemberek 547 RihFaces 547 ICEFaces 547 PrimeFaces 547 GWT (Google Web Toolkit) 547 JNI (Java Native Interface) 548 JNDI 548 JUnit 548 Quartz 548 SONSÖZ 549