1.1 NİÇİN JAVA PROGRAMLAMA DİLİ
1.2 JAVA PROGRAMINI YAZMA VE ÇALIŞTIRMA
1.3 JAVA PROGRAMLAMA DİLİ TEMEL DEĞİŞKEN TÜRLERİ
1.3.2 char (harf) değişken türü
1.3.3 Tam sayı değişken türleri (byte, short,int,long)
1.3.4 Gerçek sayı değişken türleri (float, double,long double)
1.4 JAVA NESNESİ OLARAK TANIMLANMIŞ TEMEL DEĞİŞKENLER
1.4.1 String nesne tipi değişkeni
1.4.2 Integer nesne tipi değişkeni
1.4.3 Double nesne tipi değişkeni
1.4.4 diğer nesne temelli değişken türleri
1.8 JAVA DİLİNDEKİ BİT KOMUTLARI VE İŞLEMLERİ
1.9 JAVA DİLİNİN TEMEL KOMUTLARI
1.9.1 if - elseif - else mantıksal karşılaştırma yapısı
1.10 ARİTMETİK İŞLEMLERDE DEĞİŞKEN TÜRÜ DEĞİŞTİRME (CASTİNG) OPERASYONU
1.11 SAYI DEĞİL VE SONSUZ SONUÇLARI
BÖLÜM 2 : METODLAR VE OBJECT KULLANIMI
2.3 NESNE (OBJECT) TANIMI VE METOTLARDA KULLANIMI
2.4 METOTLARIN KENDİ KENDİNİ ÇAĞIRMASI (RECURSION)
2.5 AYNI ADLI METOTLARIN BİR ARADA KULLANILMASI (OVERLOADİNG)
2.6 METOT (METHOD) VE SINIF(CLASS) DEĞİŞKENLERİ
BÖLÜM 3 . SINIF (CLASS) YAPILARINA GİRİŞ
3.0 STANDART KAVRAMLARIN TÜRKÇE KARŞILIKLARI
3.1 SINIF YAPISININ GENEL TANIMI
3.2 KURUCU ( CONSTRUCTOR ) METOT
3.5 SINIF DEĞİŞKENLERİNİN DIŞ DÜNYADAN GİZLENMESİ
3.6 SINIFLARDA KALITIM (INHERITANCE)
3.7 SINIFLARI BAŞKA BIR SINIFTA NESNE OLARAK ÇAĞIRARAK BiR ARAYA GETiRME (COMPOSITION)
3.8 KALITIM YOLUYLA ALT SINIFA BAĞLANMIŞ ÜST SINIF REFERANSI ÜZERINDEN ALT SINIFI ÇAĞIRMA
3.9 NESNEYi DiNAMiK OLARAK SiLMEK FINALIZE() METOTU
BÖLÜM 4 : BOYUTLU DEĞİŞKENLER VE NESNELER (ARRAYS)
4.2 TEK BOYUTLU NESNE TiPi DEĞiŞKENLER
4.4 BOYUTLU DEĞİŞKENLERİN METOTLARA AKTARIMI
4.5 BOYUTLU DEĞİŞKENLERDE BOYUT DEĞİŞTİRME
BÖLÜM 5 : SINIFLARDA HİYERARSİ, ABSTRACT SINIF VE
İNTERFACE
BÖLÜM 6 : GRAFİKLER, FONTLAR VE RENKLER
6.2 GRAPHICS VE GRAPHICS2D SINIFLARI
6.7 ÇİZİLEN ŞEKİLLERİN DEĞİŞTİRİLEREK ÇİZİMİ (TRANSFORM)
6.9 ÇİZİMİN SEÇİLEN BİR RESİMLE DOLDURULMASI
6.11 GENELLEŞTİRİLMİŞ EĞRİ ÇİZİMİ
7.1 GRAPHIC KULLANICISI ARABİRİM PROGRAMLARI, GUI,
(GRAPHICS USER INTERFACE)
7.2 AWT LABEL (ETİKET) SINIFI , JAVAX JLABEL VE ICON SINIFLARI
7.3 BUTTON VE JBUTTON (DÜĞME) SINIFLARI
7.4 TEXTFIELD (YAZIM ALANI) SINIFI
7.5 YAZIM ALANI AWT TEXTAREA VE SWING JTEXTAREA SINIFLARI
7.6 AWT CHOICE , SWING JCOMBOBOX SEÇIM SINIFLARI
7.7 AWT, CHECKBOX VE CHECKBOXGROUP VE SWING JCHECKBOX VE JRADIOBUTTON SINIFLARI
7.8 MOUSE(FARE) KONTROLU
7.9
SWING JTABLE
SINIFI
7.10 AWT, LIST SINIFI VE JAVA SWING JLIST SINIFI , LİSTEDEN SEÇİM
7.12 SWING JSLIDER SINIFI VE JPANEL TEMEL ÇİZİM ELEMANI (PANELİ)
7.13 FLOWLAYOUT SINIFI KULLANARAK GUI FORMATLANMASI
7.14 BORDERLAYOUT SINIFI KULLANARAK GUI FORMATLANMASI
7.15 GRIDLAYOUT SINIFI KULLANARAK GUI FORMATLANMASI
7.16
JTABBEDPANE
SINIFI KULLANILARAK FORMATLAMA
7.17 JSPLITPANE SINIFI KULLANILARAK FORMATLAMA
7.18
JSPLITPANE SINIFI KULLANILARAK FORMATLAMA
7.20 JOPTIONPANE SINIFI
7.21
SWING, JCOLORCHOOSER
SINIFI
7.22 JFILECHOOSER SINIFI
7.23 JAVA JAR (JAVA ARCHIVES - JAVA ARŞİVİ) YAPILARININ KULLANIMI
8.
JAVADA HATA ANALİZİ VE YAKALANMASI
9. PARALEL KULLANIM (MULTITHREADING) , GERÇEK ZAMAN UYGULAMALARI, ANİMASYON
9.1 PARALEL KULLANIM(MULTITHREADING) VE GERÇEK ZAMAN
PROGRAMLANMASI
9.2 PARALEL PROGRAM KULLANIMIDA HAFIZA SİNKRONİZASYONU
BÖLÜM 10 JAVA GİRDİ - ÇIKTI PROGRAMLANMASI
10.1 JAVANIN I/O (GİRDİ ÇIKTI ) KÜTÜPHANESİNDE YER
ALAN SINIFLAR VE İNTERFACE’LER
10.3 ARDIŞIK (SEQUENTIAL) DOSYA YARATILMASI
10.4 RASLANTISAL ULAŞIM DOSYASI OKU (RANDOM ACCESS FILE)
10.5 DOSYA SIKIŞTIRILMASI (GZIP,GUNZIP,ZIP,UNZIP)
BÖLÜM 11 GELİŞMİŞ JAVA BİLGİ İŞLEME YAPILARI
11.8 DICTIONARY ve HASHTABLE SINIFLARI
11.9 ARRAYS SINIFI VE SIRALAMA
BÖLÜM 12 ÖRNEKLERLE SAYISAL ANALİZ
12.3 MATRIX SINIFI ÖRNEK PROGRAMLARI
12.4 NUMERIC SINIFI (SAYISAL ANALIZ PAKETİ) ÖRNEK PROBLEMLERİ
BÖLÜM 13 DATABASE (VERİ TABANI) PROGRAMLAMASINA GİRİŞ
BÖLÜM 14 JAVA ANADİL (NATIVE LANGUAGE)
PROGRAMLAMASINA GİRİŞ
C++ ve C PROGRAMLAMA DİLLERİNİN JAVA İLE BİRLİKTE KULLANIMI
14.2 DEĞİŞKENLERİN VE JAVA NESLERİNİN AKTARILMASI
BÖLÜM 15 JAVA BEANS (JAVA FASULYELERİ)
PROGRAMLAMA
16. NETWORK PROGRAMLAMAYA GİRİŞ
16.2 ALT SEVİYE İLETIŞIM : UDP KULLANIMI
16.3 TCP BİLGİ İLETİMİ, SOCKET SINIFI
16.4 İNTERNET SİTELERIYLE BİLGİ ALIŞVERİŞİ, URL SINIFI
17.2 KONSOL PROGRAMLARINDA GÜVENLİK
17.4 JAR DOSYALARININ GÜVENLİK KODUYLA İMZALANMASI
EK B JAVA DERSİ SINAV SORULARI
JAVA PROGRAMLAMA DİLİ GEBZE YÜKSEK TEKNOLOJİ ENSTİTÜSÜ
GÜZ DÖNEMİ 2000 BİTİRME SINAVI SORULARI
JAVA PROGRAMLAMA DİLİ GEBZE YÜKSEK TEKNOLOJİ ENSTİTÜSÜ 20 OCAK 2000 BİTİRME SINAVI SORULARI
Bilgisayar programlaması günümüz teknolojisinin önemli bir öğesidir. Benim için bu yolculuk 1975 de aldığım ilk Fortran IV programlama dili kurduyla başladı diyebilirim. O dönemde genelde teorik bazda gördüğümüz programlama dersinde yaptığımız tek gerçek program örneği kartlara delerek verdiğimiz ve sonuçları ertesi gün aldığımız ikinci dereceden denklemin köklerini hesaplar bir programdı.Kullandığımız ege üniversitesi bilgisayar merkezindeki IBM tabanlı bir "mainframe" bilgisayardı. 1978 yılının sonlarında Unix tabanlı siyah beyaz monitörler veya kağıt yazıcılı monitorler aracılığıyla çalışan IBM makinalarla çalışmaya başladım. Tabii yıl gereği Fortran 77 versiyonuna ulaşmıştı. 1982 yılında Digital VAX bilgisayarlarında programlamaya ve aynı zamanda sistem görevlisi olarak çalışmaya başladım. Bu bilgisayarlar virtual (sanal) hafıza özellikleriyle çok büyük programların kullanılmasına izin veriyorlardı. Dil olarakta Fortranın yanında Pascal da vardı. Üç boyutlu çizim ortamı için özel olarak gerliştirilmş evans-sutherland bilgisayarı ile de bu dönemde tanışma fırsatım oldu. Bu arada Commodore 64 bilgisayarları piyasaya çıkmıştı. Evimde kullandığım bu küçük aletle asembler ve basic dillerini kullanarak birçok program geliştirdim. hatta assembler da yazılmış türkçe bir kelime işlem programı bile vardı. 80 li yılların sonu ve 90 lı yılların başında Pc ler, dos ortamı ve diliyle tanıştım. sonra PC ortamı Machintosh ve Amigadan çok sonra grafik programlama ortamını büyük bir buluş olarak ortaya attı ve Windows sistemlerini çıkardı. Ve ikinci bilgisayarımı param oldukça aldığım parçaları birleştirerek kendim oluşturdum. Bu bir 80386 Pc bilgisayarı idi. Artık genelde c dilini kulanıyordum. C++ dilini gerçek anlamda kullanmaya başlamam, bilgisayar konusundaki lisans üstü kursunu alırken oldu. Bundan sonraki tüm programlama uygulamalarımda nesne kökenli olan bu dili kullanır oldum. Aynı kursta Lisp, Parallaxis gibi değişik dillerle de çalışmıştım. Bu arada evde de yine PC tabanlı Pentium 100 bilgisayarına terfi ettik. Bana Java dilini eşimin aldığı lisans üstü kursundaki Java kursu gösterdi. Java dili yeni çıkmış, fakat yeni olmasına rağmen okullardaki bilgisayar bölümleri eğitimde hızla bu dile yönelmişlerdi. Bu dile başlar başlamaz da çok sevdim. Her şey tüm diğer dillere göre çok daha iyi düşünülmüş ve planlanmıştı. Orijinal olarak C++ da yazılmış bir çok kodu fazla bir gayrete gerek duymadan java koduna çevirerek iş ortamımda kullanmaya başladım. 1998 yılında Dokuz eylül üniversitesinde mühendislik bilimleri fakultesinde öğretim üyeleri ve master ve doktora öğrencileri için "Java programlamlama dili" dersi açtım. Bu kitabın temelini bu ders için hazırladığım ders notları oluşturmuştur. 1999 yılında Gebze ileri teknoloji Enstitüsünde aynı dersi yinelerken ders notları ilave problemlerle de zenginleşerek biraz daha kitap halini aldı. Son bir gözden geçirmeden sonra elinizdeki haline geldi.
Java dili yapısı, kullanım olasılıkları ve kolay kullanımı, zengin kütüphaneleriyle geleceğin dili olacağına programcıların çoğunun inandığı bir dildir. C++ şu an itibariyle çok daha fazla kullanılan bir dil olam özelliğini sürdürmektedir, fakat C++ hatalara izin veren yapısıyla başlangıç seviyesi programcılara hitap eden bir dil değildir. Rahatlıkla hata yapabilirsiniz, ve yaptığınız bu hatalar rahatlıkla gözden kaçabilir. Hemen şunu ilave edeyim, java daha yeni emeklemeye başlamış bir bebektir, ama gelecek on yıl içinde çok iyi bir konuma yerleşmenin işaretlerini şimdiden vermektedir.
Türkiyede de programcılık henüz yeni yeni oluşmaya başlayan bir dal. Hem programcı kapasitesi, hem de isteklere cevap vermek için yeterli boyutta değil henüz.Programlama teknolojisinde iyi bir boyuta gelebilmek paket kullanımından değil programlamadan geçmektedir. Bu yüzden bu kitap eğer yeni programlamacılarımıza bir şeyler verebilir ve onların gelecekte daha iyi bir noktada olabilmelerini sağlayabilirse ben emeğimin karşılığını almış olurum.
Yeni başlayanlara bir tavsiye bilgisayar dillerini öğrenme biraz insan dillerini öğrenmeye benzer. Temel mantığını kapana kadar biraz zorlanabilirsiniz. Sakın ümitsizliğe kapılıp bırakmayın. Bir kere temel mantığını anladıktan sonra ne kadar kolay olduğunu göreceksiniz. İyi çalışmalar.
Dr. Turhan Çoban
TÜBİTAK, MAM
21 Mart 2000, 21.36
turhan@mam.gov.tr
İKİNCİ BASKININ ÖNSÖZÜ
Bu Java kitabının birinci baskısı umduğumun çok üstünde ilgi gördü. Sanıyorum bunun temel sebebi türkçe kaynak eksikliğinin oldukça fazla olması. Bu ilgi üzerine kendimi biraz daha ciddi bir çalıştırma oluşturmak için sizlere borçlu hissettim. Umuyorum bu ikinci baskı çok daha fazla işinize yarayacak ve sadece bir ders notu olmanın dışında biraz daha bir referans kitabına yaklaşacak bir eser olacak. Kitabın ilk baskısında okuyuculardan oldukça yoğun mektuplar aldım, bu mektuplarda beğenilerinin yanı sıra benim de haklı bulduğum eleştiriler de yer alıyordu. Gelen eleştirilerden en yoğunu kitabıniçindeki kodların bir CD olarak sunulmamış olmasıydı. Bu ikinci baskıda bunu sağlayabilmek için elimden geleni yapacağım, fakat başarılı olamazsam kodları www.oocities.org/turhan _ coban/ adresi üzerinden yayınlamaya çalışacağım. İkinci eleştiri Text sınıfını bulamamak veya çalıştıramamak idi. Text sınıfını ben özellikle eklerde de vermiştim. Bu sınıfın amacı javanın çok yoğun kullandığı hata analizini aşarak en azından başlangıçta okuyuculara (öğrenicilere?) kolaylık sağlamaktı. Derslerde öğrenciler için bu kolaylığı sağladı da, fakat sanırım kitapta kodların verilmeyişiyle birlikte kolaylık yerine zorluk getirdi. Bu ikinci baskıda birinci bölümden itibaren girdi çıktıda birden fazla alternatif bulacaksınız. Bunların birisi de swing sınıfından olan JoptionPane sınıfı, kullanılması gayet basit olan pencere tipi bir girdi çıktı sınıfı.Swing sınıfını bu baskıda bir öncekine göre oldukça yoğun kullandım. Bazı programlarında aradaki benzerlik ve farkları görebilmeniz amacıyla swing ve awt versiyonlarını arka arkaya koydum. Swing awt’ye göre çok daha kompleks bir yapı, yalnız olasılıkları arttırdığı için java dünyasına şimdiden tamamen hakim olmuş durumda. Bu baskıda ilk baskıda olmayan java güvenlik ve java anadil programlama bölümlerini bulacaksınız. Ayrıca daha öce ayrı bir bölüm olarak verdiğimiz swing ve 2D grafik programlama bölümünü de ilgili konulara yayarak kaldırdım. Bence ilk baskıya göre elinizde daha kullanışlı bir kitap var. Elbette mükemmel değil, ama ilk baskının en azından dört katı bir emeğin sonucu. Umarım sizlere java öğrenme yolunda bir ilk adım olarak faydalı olur.
Bu yeni baskıyı geliştirmemde büyük payları olan Gebze Yüksek Teknoloji Üniversitesi, java dersi öğrencilerine, ayrıca bana iyi bir eğitim vermek için ellerinden gelen çabayı harcayan babam Osman ve annem Hatice’ye, Kardeşlerim Birsen, Nurhan ve İrfan’a ve bu kitabın yazılması sırasında verdiği destek için eşim Meral’e teşekkürlerimi bildirmek isterim.
Dr. Turhan Çoban
TÜBİTAK, MAM
11 Mart 2001, 23.34
Turhan.Coban@posta.mam.gov.tr