Java'ya Giriş ve İlk Program
Giriş
Öğrenme Çıktıları
Programı veri ve işlemler bütünü olarak açıklamak.
Kaynak kod, bytecode ve JVM ilişkisini kurmak.
Java dosyasını yazıp derlemek ve çalıştırmak.
Söz dizimi, çalışma zamanı ve mantık hatalarını ayırt etmek.
Temeller
Program Nedir?
- Bilgisayarın belirli bir görevi yerine getirmesi için yürüttüğü komutlar bütünüdür.
- Girdi alabilir, veriyi işler, durum saklar (bellekteki değerler) ve çıktı üretir.
- Davranışı dilin kuralları ve yazılan algoritma belirler.
- Örnek: iki notun ortalaması → girdi 70, 90; çıktı 80.
Temeller
Programlama Dilinin Yönleri
- Söz dizimi geçerli biçimi, anlam çalıştırıldığında ne olacağını tanımlar.
- Tür sistemi işlemleri sınırlar; çalışma modeli belleğin ve komutların nasıl yürütüldüğünü belirler.
- Derleyici söz dizimini ve türleri çalıştırmadan önce denetler.
Diller
Programlama Paradigmaları
- Zorunlu yaklaşım işlemlerin nasıl yapılacağını adım adım belirtir.
- Nesne yönelimli yaklaşım veri ve davranışı nesnelerde birleştirir.
- Fonksiyonel yaklaşım dönüşümleri ve değişmez veriyi öne çıkarır.
- Java birden fazla yaklaşımı birlikte kullanabilir.
Kaynak Kod
Düz Metin Kaynak Dosyası
- .java dosyası düz metindir; Not Defteri, VS Code veya IDE ile açılabilir.
- Sürüm kontrol sistemleri satır değişikliklerini izleyebilir.
- Karakter kodlaması (UTF-8), satır sonu ve dosya adı tutarlı olmalıdır: Türkçe karakterler yanlış kodlamada bozulur.
Kaynak Kod
Programlama Araçları
Kaynak kodu yazma.
Proje, tamamlama, derleme ve hata ayıklama.
Kaynak kodu bytecode'a derleme.
Sınıfı JVM üzerinde çalıştırma.
API belgesi üretme.
Değişiklik geçmişi.
Java
JDK, JRE ve JVM
- JVM (Java Virtual Machine) bytecode'u yürüten sanal makinedir.
- JRE = JVM + sınıf kütüphanesi: programı çalıştırmak için gerekenler.
- JDK = JRE + geliştirme araçları (javac, jar, javadoc…). Geliştirici JDK kurar.
- Java 11'den beri ayrı JRE dağıtılmaz; JDK kurulur.
Java
İlk Java Programı
her yerden erişilebilir
nesne oluşturmadan çağrılır
değer döndürmez
komut satırı argümanları
Java · Kodu adım adım çalıştır
Kod İzleme: Merhaba
java Merhaba komutuyla JVM başlar ve Merhaba sınıfını (Merhaba.class) belleğe yükler.
JVM main metodunu çağırır: yığında main çerçevesi açılır. Komut satırında argüman verilmediği için args boştur.
Deyim çalışır: "Merhaba" metni System.out.println metoduna gönderilir.
println metni yazar ve satır sonu ekler: imleç alt satıra geçer. Metot biter, main'e dönülür.
main bloğunun } karakterine gelindi: main biter, çerçevesi yığından kaldırılır.
Çalışacak başka kod yok: JVM kapanır, program sonlanır. Toplam 1 deyim çalıştı, 1 satır çıktı üretildi.
public class Merhaba { public static void main(String[] args) { System.out.println("Merhaba"); } }
Java · Kodu adım adım çalıştır
Kod İzleme: print ve println
JVM main metodunu çağırır; konsol henüz boş, imleç 1. satırın başında.
print "Merhaba " yazar ama satır sonu eklemez: imleç aynı satırda, boşluğun hemen arkasında kalır.
println "Dünya" yazar ve satır sonu ekler: sonraki çıktı alt satırdan başlar.
println "Java" yazar ve satır sonu ekler: sonraki çıktı alt satırdan başlar.
main biter; konsolda 2 satır var: 3 çağrı yapıldı ama yalnızca println satırı bitirdi.
public class Selam { public static void main(String[] args) { System.out.print("Merhaba "); System.out.println("Dünya"); System.out.println("Java"); } }
Kaynak Kod
Java Dosyasının Yapısı
package okul; import java.util.Scanner; public class Program { public static void main(String[] args) { System.out.println("Merhaba"); } }
- package ve import bildirimleri sınıftan önce gelir; public sınıf adı dosya adıyla eşleşir.
package okul;→ dosyaokul/klasöründe durur; çalıştırma:java okul.Program.
Çalıştırma
Derleme Hattı Adım Adım
1. Yaz: kaynak kod Merhaba.java adıyla kaydedilir. Dosya adı public sınıf adıyla aynı olmalıdır.
2. Derle: javac (JDK'daki derleyici) tüm dosyayı çalıştırmadan önce denetler.
3. Bytecode: derleme başarılıysa aynı klasörde Merhaba.class oluşur. Bu dosya Windows, Linux ve macOS'ta aynıdır.
4. Çalıştır: java Merhaba JVM'yi başlatır. Sınıf adı yazılır; .class uzantısı yazılmaz.
5. Çıktı: konsolda Merhaba görünür. Değişiklik yaparsanız yeniden derlemeniz gerekir.
Hata olursa: javac satır numarasıyla hata bildirir ve .class üretmez. Önce derleme hataları giderilir.
Çalıştırma
Bytecode ve JVM
- Derleyici işlemciye özel makine kodu yerine bytecode üretir.
- Her platformun kendi JVM'si bytecode'u o işlemcinin makine koduna çevirerek yürütür.
- Sınıf yükleme, doğrulama ve bellek yönetimi (çöp toplama) çalışma ortamının parçalarıdır.
Dil Yapısı
Temel Programlama Unsurları
- Derleyici kodu önce belirteçlere (token) ayırır: anahtar kelime, tanımlayıcı, sabit değer, işleç, ayırıcı.
- Java büyük-küçük harfe duyarlıdır:
sayiveSayifarklı adlardır. - Deyimler çoğunlukla noktalı virgülle biter; bloklar süslü parantezle çevrilir.
Dil Yapısı
İfadeler ve Deyimler
- İfade bir değer üretir:
2 + 3→ 5,sayi > 0→ true. - Deyim bir işlemi tamamlar:
toplam = 5;veyaSystem.out.println(toplam); - Blok, süslü parantez içindeki deyimleri tek yapı olarak gruplar.
- Bir deyimin içinde bir veya daha çok ifade bulunabilir.
Dil Yapısı · Kodu adım adım çalıştır
İfade, Deyim ve Blok Adım Adım
fiyat için bellekte int kutusu ayrılır ve 120 yazılır.
adet kutusu oluşur: 3.
Önce sağdaki ifade değerlendirilir: fiyat * adet → 120 * 3 → 360.
Üretilen değer toplam kutusuna atanır: toplam = 360.
Koşul ifadesi: toplam > 300 → 360 > 300 → true. Doğru olduğu için bloğa girilir.
Blok içindeki deyim çalışır: konsola İndirim yazılır.
Blok biter. adet = 2 olsaydı toplam 240 olur, koşul false olur ve blok hiç çalışmazdı.
int fiyat = 120; // tanımlama deyimi int adet = 3; // tanımlama deyimi int toplam = fiyat * adet; // ifade + atama if (toplam > 300) { // koşul + blok System.out.println("İndirim"); }
Kaynak Kod
Açıklamalar
//satır sonuna kadar açıklamadır./* ... */birden fazla satırı kapsar./** ... */Javadoc (API belgesi) açıklamasıdır.- Derleyici açıklamaları atlar; bytecode'a girmezler.
- Açıklama kodun ne yaptığını tekrarlamak yerine nedenini açıklamalıdır.
/** Merhaba programı (Javadoc). */ public class Merhaba { /* Birden fazla satıra yayılan açıklama */ public static void main(String[] args) { // selamı yaz System.out.println("Merhaba"); } }
Temeller
Hata Türleri
| Hata | Ne zaman? | Örnek |
|---|---|---|
| Söz dizimi | Derleme sırasında | Eksik noktalı virgül |
| Tür | Derleme sırasında | Metni sayıya atama |
| Çalışma zamanı | Program çalışırken | Sıfıra bölme |
| Mantık | Program çalışır ama sonuç yanlıştır | Yanlış koşul |
Temeller · Adım adım
Hata Türleri Örneklerle
Söz dizimi hatası
public class Hata1 { public static void main(String[] args) { System.out.println("Merhaba") } }
Hata1.java:3: error: ';' expected
System.out.println("Merhaba")
^
1 errorDerleyici kuralı bozulan yeri satır numarasıyla gösterir; .class üretilmez. Düzeltme: satır sonuna ; ekle.
Tür hatası
public class Hata2 { public static void main(String[] args) { int sayi = "42"; } }
Hata2.java:3: error: incompatible types:
String cannot be converted to int
int sayi = "42";
^Metin (String) int kutusuna konamaz. Türler derleme sırasında denetlenir. Düzeltme: int sayi = 42;
Çalışma zamanı hatası
public class Hata3 { public static void main(String[] args) { int a = 10, b = 0; System.out.println(a / b); } }
Exception in thread "main"
java.lang.ArithmeticException: / by zero
at Hata3.main(Hata3.java:4)Kod derlenir, ancak çalışırken tam sayı sıfıra bölünür: JVM bir istisna fırlatır ve program durur.
Mantık hatası
public class Hata4 { public static void main(String[] args) { int a = 70, b = 90; System.out.println(a + b / 2); } }
115
Hata iletisi yok, ama sonuç yanlış: beklenen 80. / önce yapılır: 70 + 45. Düzeltme: (a + b) / 2.
Tasarım
Program Bir Tariftir
- Her adımın ön koşulu ve ürettiği değer belirlenmelidir.
- Büyük tarifler alt görevlere ayrılır (Java'da bunlar ileride metot olacak).
Tasarım
Kodlamadan Önce
- Örnek girdi ve beklenen çıktıyı yazın.
- Çözümü doğal dil veya sözde kodla adımlara ayırın.
- Sınır durumlarını ve hata davranışını belirleyin.
- Ardından adımları Java yapılarına dönüştürün.
| Örnek girdi | Beklenen çıktı | Neden? |
|---|---|---|
| 70, 90 | 80 | olağan durum |
| 0, 0 | 0 | alt sınır |
| 101, 50 | hata iletisi | geçersiz girdi |
Özet
Bölüm Özeti
- Program, bilgisayarın bir görevi yerine getirmek için yürüttüğü komutlar bütünüdür.
- Java kaynak dosyası javac ile bytecode'a derlenir ve JVM üzerinde çalışır.
- public sınıf adı dosya adıyla eşleşir; main programın başlangıç noktasıdır.
- İfadeler değer üretir, deyimler işlemi tamamlar, bloklar deyimleri gruplar.
- Kodlamadan önce örnek girdi, beklenen çıktı ve sınır durumları belirlenir.
Özet
Kontrol Soruları
- JDK, bytecode ve JVM arasındaki ilişki nedir?
- Merhaba.java dosyası hangi komutlarla derlenip çalıştırılır?
- main metodunun görevi nedir?
- İfade ile deyim arasındaki fark nedir?
- Söz dizimi hatası ile mantık hatası nasıl ayrılır?
Son
← → veya boşluk ile gezinin · F: tam ekran · Home/End: ilk/son slayt