Ders İçeriği

Java, Sun Microsystems tarafından geliştirilen ve 1995 yılında piyasaya sürülen, nesne yönelimli, sınıf tabanlı, eş zamanlı (concurrent), güvenli ve platformdan bağımsız bir programlama dilidir. James Gosling liderliğindeki ekip tarafından tasarlanmıştır. Başlangıçta Oak olarak adlandırılan bu dil, daha sonra Java olarak yeniden adlandırılmıştır. Java'nın temel felsefesi, "Bir Kez Yaz, Her Yerde Çalıştır" (Write Once, Run Anywhere - WORA) ilkesine dayanır. Bu, Java kodunun bir platformda derlendikten sonra, Java Sanal Makinesi (JVM) yüklü olan herhangi bir platformda değişiklik yapmadan çalışabileceği anlamına gelir.

Java'nın Tarihçesi

Java'nın hikayesi, 1990'ların başında, Sun Microsystems'in küçük bir ekibi olan Green Team ile başlar. James Gosling, Mike Sheridan ve Patrick Naughton gibi isimlerin yer aldığı bu ekip, başlangıçta interaktif televizyonlar gibi tüketici elektroniği cihazları için bir programlama dili geliştirmeyi amaçlamıştır. Projenin ilk adı Oak idi ve bu isim, Gosling'in ofisinin dışındaki bir meşe ağacından geliyordu. Ancak, Oak isminin zaten tescilli olduğu ortaya çıkınca, dilin adı Java olarak değiştirildi. Java, Endonezya'da kahve çekirdeklerinin yetiştirildiği bir adadır ve kahve, dilin logosunda ve geliştiricileri arasındaki popülerliğinde önemli bir yer tutar.

Java'nın ilk halka açık sürümü olan Java Development Kit (JDK) 1.0, 1996 yılında piyasaya sürüldü. Bu sürüm, Java'nın internet üzerindeki potansiyelini ortaya koydu ve özellikle web uygulamaları için bir devrim niteliği taşıdı. Applet'ler sayesinde web sayfalarına dinamik içerikler eklenebiliyordu. Java, kısa sürede kurumsal uygulamalar, mobil cihazlar (özellikle Android), büyük veri işleme, bilimsel uygulamalar ve gömülü sistemler gibi birçok alanda yaygın olarak kullanılmaya başlandı.

Java'nın Temel Özellikleri

Java'yı diğer programlama dillerinden ayıran ve onu bu kadar popüler yapan birçok temel özellik bulunmaktadır:

  • Nesne Yönelimli (Object-Oriented): Java, tamamen nesne yönelimli bir dildir. Her şey nesneler etrafında döner. Bu, kodun daha modüler, yeniden kullanılabilir ve bakımı kolay olmasını sağlar. Sınıflar, nesneler, kalıtım, polimorfizm, soyutlama ve kapsülleme gibi OOP prensiplerini destekler.
  • Platformdan Bağımsız (Platform Independent): Java'nın en önemli özelliklerinden biridir. Java kodu, derlendikten sonra bytecode adı verilen bir ara forma dönüştürülür. Bu bytecode, Java Sanal Makinesi (JVM) tarafından yorumlanır ve JVM'in kurulu olduğu herhangi bir işletim sisteminde (Windows, macOS, Linux vb.) çalışabilir. Bu, geliştiricilerin farklı platformlar için ayrı ayrı kod yazma ihtiyacını ortadan kaldırır.
  • Basit (Simple): Java, C++ gibi dillerin karmaşık özelliklerini (örneğin, işaretçiler, operatör aşırı yüklemesi) ortadan kaldırarak daha basit ve anlaşılır bir sözdizimi sunar. Bu, öğrenmeyi ve kullanmayı kolaylaştırır.
  • Güvenli (Secure): Java, güvenlik göz önünde bulundurularak tasarlanmıştır. JVM, bytecode'u çalıştırmadan önce güvenlik kontrolleri yapar. Ayrıca, işaretçilerin olmaması ve otomatik bellek yönetimi (çöp toplama) gibi özellikler, yaygın güvenlik açıklarını azaltır.
  • Sağlam (Robust): Java, hata toleransını artırmak için güçlü hata yönetimi mekanizmalarına sahiptir. Özellikle istisna yönetimi (exception handling), programların beklenmedik durumlarla başa çıkmasına yardımcı olur. Otomatik çöp toplama (Garbage Collection) ise bellek sızıntılarını önler.
  • Çok İş Parçacıklı (Multithreaded): Java, aynı anda birden fazla görevi yürütebilen çok iş parçacıklı uygulamalar geliştirmeyi destekler. Bu, özellikle performans gerektiren uygulamalar ve sunucu tarafı programlama için önemlidir.
  • Yüksek Performanslı (High Performance): Java, derlenmiş bytecode'u ve JIT (Just-In-Time) derleyicisi sayesinde yüksek performans sunar. JIT derleyicisi, çalışma zamanında bytecode'u makine koduna çevirerek performansı artırır.
  • Dağıtık (Distributed): Java, ağ üzerinde dağıtık uygulamalar geliştirmek için güçlü özelliklere sahiptir. RMI (Remote Method Invocation) ve EJB (Enterprise JavaBeans) gibi teknolojiler, ağ üzerindeki farklı makinelerde çalışan bileşenlerin birbiriyle iletişim kurmasını sağlar.

Java Geliştirme Ortamı (JDK, JRE, JVM)

Java ile uygulama geliştirmek ve çalıştırmak için bazı temel bileşenlere ihtiyacımız vardır:

  • Java Sanal Makinesi (JVM - Java Virtual Machine): Java'nın platform bağımsızlığını sağlayan temel bileşendir. Java bytecode'unu makine koduna çevirir ve çalıştırır. Her işletim sistemi için farklı bir JVM uygulaması bulunur.
  • Java Çalışma Zamanı Ortamı (JRE - Java Runtime Environment): JVM'i ve Java uygulamalarını çalıştırmak için gerekli olan temel kütüphaneleri içerir. Sadece Java uygulamalarını çalıştırmak isteyen son kullanıcılar için yeterlidir.
  • Java Geliştirme Kiti (JDK - Java Development Kit): Java uygulamaları geliştirmek için gerekli tüm araçları (derleyici - javac, hata ayıklayıcı - jdb, arşivleyici - jar vb.) ve JRE'yi içerir. Java geliştiricileri için olmazsa olmazdır.

Özetle, Java öğrenmek, geniş bir uygulama yelpazesinde kariyer yapmak isteyenler için güçlü bir temel sunar. Bu ders serisinde, Java'nın temellerinden başlayarak ileri seviye konulara kadar adım adım ilerleyeceğiz. Hazırsanız, Java dünyasına dalmaya başlayalım!

Bu dersin alıştırmalarını görmek ve çözmek için lütfen giriş yapın.