Skip to main content

☕ Java Programlarının Başlangıç Noktası: public static void main(String[] args) Nedir?

Anahtar Kelime: public static void main
Meta Açıklaması: Java'da public static void main(String[] args) yapısının her bir anahtar kelimesini öğrenin. JVM'in programı nasıl başlattığını, komut satırı argümanlarını ve sık karşılaşılan hataları keşfedin.


🎯 Bu Rehberde Ne Öğreneceksiniz?

Java sanal makinesinin (JVM) bir uygulamayı çalıştırmaya başladığı main metodu, her Java geliştiricisi için temeldir.
Bu rehberde:

  • public static void main(String[] args) yapısındaki her kelimenin ne işe yaradığını,
  • JVM’in neden bu imzayı aradığını,
  • Komut satırı argümanlarını nasıl kullanabileceğinizi,
  • Ve en yaygın hataları nasıl çözeceğinizi öğreneceksiniz.

🧠 Teknik Özeti

KriterAçıklama
Ana Teknik KonuJava’da program yürütme başlangıç noktası olan public static void main(String[] args) metodunun işlevi.
Çözülen ProblemJVM'in neden tam olarak bu imzayı (signature) aradığını ve geliştiricilerin sık yaptığı hataları anlamak.
Teknik Özetmain() metodu Java programının zorunlu başlangıç noktasıdır. public erişimi JVM’in metodu görmesini sağlar. static, nesne yaratılmadan çağrılabilmesini mümkün kılar. void, değer döndürülmeyeceğini belirtir. String[] args, dışarıdan veri almayı sağlar.

🧩 public static void main(String[] args) İfadesinin Analizi

Bu imza, JVM ile programınız arasındaki sözleşmedir. JVM yalnızca bu metodu bulduğunda uygulamayı başlatabilir.

1. public

Erişim belirtecidir. JVM harici bir süreç olduğundan, metodu çağırabilmesi için public olması gerekir.

Aksi halde:
Error: Main method not found in class Test

2. static

Metodun sınıfa ait olduğunu belirtir.
Uygulama başladığında henüz nesne yaratılmadığı için JVM main() metodunu doğrudan sınıf üzerinden çağırır.

3. void

Metodun dönüş tipi yoktur. Program bittiğinde JVM’e değer dönmez.
Programı elle sonlandırmak için System.exit(0) kullanılabilir.

4. main

JVM’in aradığı standart isimdir.
Yalnızca küçük harfli main olarak tanınır; farklı yazımlarda JVM hata verir.

5. String[] args

Komut satırından girilen parametreleri taşır.
Örneğin:

java ProgramAdi param1 param2

Burada args[0] = "param1", args[1] = "param2" olur.


💻 Komut Satırı Argümanlarını Kullanma

Aşağıdaki örnek, çalıştırma sırasında girilen argümanları yazdırır:


public class UygulamaBaslatma {

public static void main(String[] args) {
// args dizisindeki her bir argümanı ekrana yazdırır
for (String s : args) {
System.out.println("Gelen Argüman: " + s);
}
}
}

Çalıştırma:


javac UygulamaBaslatma.java
java UygulamaBaslatma tr1-node01 8080 "Rabisu Bulut"

Çıktı:


Gelen Argüman: tr1-node01
Gelen Argüman: 8080
Gelen Argüman: Rabisu Bulut

🚨 Yaygın Hatalar ve Çözümleri

Hata MesajıSebepÇözüm
Main method not found...public, static veya void eksik.Tam imzayı kullanın: public static void main(String[] args)
Main method is not static...static anahtar kelimesi unutulmuş.public ve void arasına static ekleyin.
ArrayIndexOutOfBoundsExceptionArgüman girilmeden args[0] gibi bir elemana erişiliyor.if (args.length > 0) kontrolü yapın.
incompatible types: unexpected return valuereturn 0; kullanılmış.System.exit(0) tercih edin.

🧭 En İyi Uygulamalar

Main metodunu sade tutun: Karmaşık iş mantığını burada değil, başka sınıflarda yönetin.

Argümanları kontrol edin: args.length ve try-catch ile güvenlik ekleyin.

Ayrı başlatma sınıfı kullanın: Büyük projelerde Main yerine Baslatma.java gibi ayrı bir giriş sınıfı tanımlayın.


❓ Sıkça Sorulan Sorular (SSS)

  1. main imzasında esneklik var mı?

Evet. args yerine farklı isimler kullanılabilir (String... args veya String args[]). Ancak public static void main sırası değişmemelidir.

  1. Neden main metodu static olmalı?

JVM, nesne yaratmadan metodu çağırabilmek için static anahtar kelimesine ihtiyaç duyar.

  1. Bir sınıfta birden fazla main olabilir mi?

Evet, ama yalnızca String[] args parametreli olanı JVM giriş noktası olarak kabul eder.

  1. main yerine başka giriş noktası kullanabilir miyim?

Hayır. Ancak web veya Android gibi container ortamlarında farklı yaşam döngüsü metotları kullanılabilir.


🧩 Örnek Hatalar ve Çözümleri

DurumHatalı KodDoğru Kod
public eksikstatic void main(...)public static void main(...)
static eksikpublic void main(...)public static void main(...)
void yanlışpublic static int main(...)public static void main(...)

🚀 Sonuç

public static void main(String[] args) yapısı, Java programlarının zorunlu başlangıç noktasıdır. Her kelimesi, JVM’in uygulamayı başlatabilmesi için özel bir role sahiptir.

Bu yapıyı doğru anladığınızda, Java’da sağlam, ölçeklenebilir ve hatasız uygulamalar geliştirmenin temellerini atmış olursunuz.

💡 Bu konseptleri Rabisu Bulut platformunda hemen test edebilir, kendi Java uygulamanızı bulut ortamında çalıştırabilirsiniz!