Java Programlama Dili

fav gif
Kaydet
Alıntıla
kure star outline
java.jpeg

Yapay Zeka ile Tasarlandı

Java Programlama Dili
Adı
Java
Tarih
1995
Alan/Tür
Hesaplama Platformu ve Programlama Dili
Temel Bileşenler
JREJVMJDKJava Eklentisi
Bağlı Olduğu Yapılar
Sun Microsystems (İlk Yayımlayan)Oracle Corporation(Güncel)

Java'nın Kullanım Alanları (Görsel Yapay Zeka ile Oluşturulmuştur)

Java, 1995 yılında Sun Microsystems bünyesinde James Gosling tarafından geliştirilmiş, çok platformlu ve nesneye dayalı bir programlama dilidir. Akıllı telefon işletim sistemlerinden kurumsal yazılımlara kadar geniş bir yelpazede milyarlarca cihaz üzerinde çalışmaktadır. Spotify ve Signal gibi mobil uygulamaların, nesnelerin interneti (IoT) cihazlarının ve ölçeklenebilir kurumsal yazılımların geliştirilmesinde yaygın olarak kullanılır. JavaScript'ten farklı olarak Java, çok platformlu geniş çaplı uygulamalar geliştirmek için kullanılan genel amaçlı, derlenen ve yorumlanan bir dildir (Gosling vd., 2014).

Kullanım Alanları ve Kurumsal Çözümler

Java; Spotify ve Signal gibi mobil uygulamaların, Twitter ve LinkedIn gibi web uygulamalarının, Minecraft ve RuneScape gibi oyunların, Nesnelerin İnterneti (IoT) cihazlarının ve ölçeklenebilir kurumsal yazılımların geliştirilmesinde kullanılır.


Kurumsal uygulamalar için geliştirilen Java SE platformu, Oracle Java SE Universal Subscription kapsamında Enterprise Performance Pack (EPP) ve Java Management Service gibi araçları barındırır. Ayrıca Oracle Cloud Infrastructure (OCI) bulut platformu, Java dağıtımlarının izlenmesi, optimize edilmesi ve OCI kaynaklarının yönetilmesi için OCI SDK dahil olmak üzere çeşitli altyapı hizmetleri sağlar.

Tarihi

Java'nın geliştirilme süreci 1991 yılında Sun Microsystems bünyesinde başlamıştır. Başlangıçta etkileşimli televizyonlar için "Oak" adıyla tasarlanan proje, dönemin dijital kablo teknolojisi için fazla gelişmiş bulununca programlama diline dönüştürülmüş ve adı "Java" olarak değiştirilmiştir. Geliştiricilerin kolay adapte olabilmesi amacıyla C++ diline benzer bir söz dizimiyle tasarlanan dilin ilk genel sürümü olan Java 1.0, 1996 yılında yayımlanmıştır (Arnold vd., 2005).

Sürümler

Java platformu, piyasaya sürüldüğü 1996 yılından bu yana sürekli evrim geçirmiştir. Başlangıçta 1.0 ve 1.1 gibi alt sürümlerle ilerleyen dil, Java 2 (J2SE 1.2) ile büyük bir yapısal değişikliğe gitmiştir. Günümüzde Oracle tarafından yönetilen Java ekosistemi, Uzun Vadeli Destek (Long-Term Support - LTS) stratejisiyle sürümlenmektedir. Java 8, Java 11, Java 17 ve Java 21, kurumsal dünyada en çok benimsenen ve uzun yıllar güvenlik yamaları alan LTS sürümleri olarak öne çıkmaktadır (Schildt, 2018).

Çalışma Mantığı

Java, "bir kez yaz, her yerde çalıştır" (WORA - Write Once, Run Anywhere) ilkesiyle faaliyet gösterir. Yazılan bir kaynak kod, doğrudan makine diline değil, Java derleyicisi (javac) tarafından Java Sanal Makinesi'nin (JVM) okuyabileceği bayt koduna (bytecode, .class uzantılı dosya) dönüştürülür. Bu sayede kodlar, tamamen yeniden yazılmaya gerek kalmadan, üzerinde JVM bulunan farklı işletim sistemlerine (Windows, Linux, macOS) kolayca aktarılabilir (Lindholm vd., 2014).

Bazı Kavramlar

  • İkili Uyumluluk (Binary Compatibility): Java platformu, bağlayıcının (linker) birleştirilecek ikili dosyaların bütünlüğünü kontrol ettiği esnek bir yapı sunar. Bir sınıfa yeni alanlar veya metotlar eklemek ikili uyumlu değişiklikler kabul edilir ve diğer kısımların yeniden derlenmesini gerektirmez (Drossopoulou vd., 1998).
  • Java Business Integration (JBI): Heterojen kurumsal ağlarda yer alan farklı uygulamaların entegrasyonunu sağlamak amacıyla Hizmet Odaklı Mimari (SOA) prensiplerini temel alan bir standarttır (Vinoski, 2005).
  • Java Çalıştırma Zamanı Ortamı (JRE): Java Sanal Makinesi (JVM), çekirdek sınıflar ve destekleyici kitaplıklardan oluşur. Uygulamanın çalışması için son kullanıcıya gereken ortamı sağlar.

Anında Derleme (JIT - Just-In-Time)

Yazılım sistemlerinde JIT (Just-In-Time) derleme teknikleri, bir programın çalışmaya başlamasının ardından dinamik olarak gerçekleştirilen her türlü çeviri işlemini kapsar. JIT derleme, statik derlemenin çalışma hızı avantajı ile yorumlayıcıların (interpreter) sunduğu avantajları bir araya getirmek için kullanılır. Bu teknik sayesinde derlenmiş programlar daha hızlı çalışırken , yorumlanan programlar ise genellikle daha küçük boyutlu olma ve yüksek taşınabilirlik gibi faydalar sağlar.


Java API

Java API (Application Programming Interface), geliştiricilere ağ bağlantıları, veri tabanı işlemleri, matematiksel hesaplamalar ve dosya giriş/çıkış (I/O) operasyonları gibi temel işlevleri hazır olarak sunan geniş bir standart sınıf kütüphanesidir. Geliştiriciler, java.lang, java.util, java.io gibi temel paketleri kullanarak tekerleği yeniden icat etmeden hızlıca ve güvenli bir şekilde kod üretebilirler (Schildt, 2018).

Atık Veri Toplayıcı (Garbage Collector)

Java'da bellek yönetimi otomatik olarak çöp toplayıcı tarafından gerçekleştirilir ve C/C++ dillerindeki gibi işaretçi (pointer) bazlı manuel tahliye ihtiyacını ortadan kaldırır. Gelişmiş derleyici mimarilerinde çöp toplama işleminin hatasız gerçekleştirilebilmesi için derleyici, çöp toplama için gerekli olan bilgileri toplar ve dışa aktarır. Bu süreç, çöp toplayıcının nesneleri güvenli bir şekilde inceleyebilmesi için, belirli güvenli noktalarda (safepoints) canlı kalan tüm nesne işaretçilerinin (object pointers) kesin konumlarının kaydedilmesini içerir.


Jar (Java Archive)

JAR (Java Archive), birden fazla Java sınıf dosyasını, ilişkili meta verileri ve resim/ses gibi kaynakları tek bir dosya içinde toplayarak sıkıştıran bir paketleme formatıdır. ZIP formatını temel alan bu yapı, Java uygulamalarının son kullanıcıya dağıtımını ve çalıştırılmasını büyük ölçüde kolaylaştırır (Schildt, 2018).

AWT ve Swing

AWT (Abstract Window Toolkit), Java'nın ilk yıllarında geliştirilen ve işletim sisteminin yerel (native) arayüz bileşenlerini kullanan grafiksel kullanıcı arayüzü (GUI) kütüphanesidir. AWT'nin platform bağımlı kısıtlamalarını aşmak için tamamen Java ile yazılmış, daha esnek, zengin ve hafif (lightweight) bileşenler sunan Swing kütüphanesi geliştirilmiştir (Loy vd., 2002).

SWT (Standard Widget Toolkit)

SWT, IBM tarafından geliştirilen ve Eclipse entegre geliştirme ortamının (IDE) da temelini oluşturan alternatif bir açık kaynaklı grafik kullanıcı arayüzü araç takımıdır. Swing'in aksine, bulunduğu işletim sisteminin yerel (native) arayüz araçlarını çağırarak çalışır; bu da uygulamalara daha "doğal" bir görünüm ve bazı senaryolarda daha yüksek bir performans kazandırır (Warner & Harris, 2004).

HotSpot Teknolojisi

Java HotSpot Sanal Makinesi, sık çalıştırılan uygulama kodlarını (hot spots) optimize ederek performansı artırmayı hedefleyen bir mimaridir. Çalışma zamanı ortamı (runtime environment), derleme çabalarını performansta kritik rol oynayan metotlara odaklamak için uyarlanabilir optimizasyon (adaptive optimization) stratejisi kullanır. Bu optimizasyonlar arasında sınıf hiyerarşisine duyarlı satır içi genişletme (inlining), hızlı-yol/yavaş-yol (fast-path/slow-path) yapıları, global değer numaralandırması (global value-numbering), graf renklendirmeli yazmaç tahsisi (graph-coloring register allocation) ve iyimser sabit yayılımı (optimistic constant propagation) yer alır. Dinamik sınıf yükleme (dynamic class loading) gibi çalışma zamanı değişiklikleri derleyicinin optimizasyon kararlarını geçersiz kılarsa, sistem bağımlı metotları deoptimize ederek (deoptimization) yürütmeyi güvenli bir şekilde yorumlayıcıya iade eder.


Küçük uygulama (Applet)

Java Applet'leri, web tarayıcıları içinde çalışmak üzere tasarlanmış küçük ölçekli Java uygulamalarıydı. Web'in ilk yıllarında interaktif içerikler sağlamak için popüler olsalar da, güvenlik açıkları ve HTML5/JavaScript gibi modern web teknolojilerinin gelişmesiyle günümüzde kullanımdan kalkmış ve Java ekosisteminden tamamen çıkarılmıştır.

WebStart

Java Web Start (JWST), kullanıcıların web tarayıcıları üzerinden Java masaüstü uygulamalarını tek tıklamayla indirip başlatmalarına olanak tanıyan bir teknolojiydi. Ağ üzerinden uygulamaların her zaman en güncel sürümünün çalıştırılmasını sağlayan bu teknoloji de modern dağıtım araçlarının gerisinde kalmış ve Java 11 sürümü itibarıyla resmi olarak kullanımdan kaldırılmıştır.

Java Yazımı (Sözdizimi)

Java, C ve C++ dillerini temel alan, söz dizimi açısından ayrıntılı (verbose) ve güçlü tipli (strongly typed) bir dildir. Her değişkenin veri tipi açıkça belirtilmelidir ve tüm kodlar mutlaka bir sınıf (class) bloğu içinde yer almalıdır.

Merhaba Dünya!

Java'nın katı nesne yönelimli yapısını gösteren geleneksel "Merhaba Dünya" programı aşağıdaki gibi yazılır:


public class MerhabaDunya {

public static void main(String[] args)

{ System.out.println("Merhaba, Dünya!");

} }

Kapsamlı Örnek

Java'da nesne yönelimli programlama (OOP) mantığını özetleyen, kalıtım ve sınıf yapısını barındıran basit bir araç örneği:

// Üst Sınıf

class Arac {

String marka; public void calistir() {

System.out.println("Araç çalışıyor."); }

}

// Alt Sınıf

class Araba extends Arac {

int kapiSayisi;

public Araba(String marka, int kapiSayisi) {

this.marka = marka; this.kapiSayisi = kapiSayisi;

} }

public class AnaSinif {

public static void main(String[] args) {

Araba benimArabam = new Araba("Volkswagen", 4);

benimArabam.calistir();

System.out.println("Marka: " + benimArabam.marka);

} }

Dokümantasyon

Java, kod içerisine yazılan özel yorum satırlarından (comments) otomatik olarak HTML formatında teknik belgeler üreten Javadoc aracına sahiptir. Geliştiriciler, /** ... */ blokları arasına yazdıkları açıklamalarla kodlarının kullanım kılavuzunu zahmetsizce standart bir formata dönüştürebilirler (Gosling vd., 2014).

Kullanım Alanları ve Kurumsal Çözümler

Java; Spotify ve Signal gibi mobil uygulamaların, Twitter ve LinkedIn gibi web uygulamalarının, Minecraft ve RuneScape gibi oyunların, Nesnelerin İnterneti (IoT) cihazlarının ve ölçeklenebilir kurumsal yazılımların geliştirilmesinde kullanılır.


Kurumsal uygulamalar için geliştirilen Java SE platformu, Oracle Java SE Universal Subscription kapsamında Enterprise Performance Pack (EPP) ve Java Management Service gibi araçları barındırır. Ayrıca Oracle Cloud Infrastructure (OCI) bulut platformu, Java dağıtımlarının izlenmesi, optimize edilmesi ve OCI kaynaklarının yönetilmesi için OCI SDK dahil olmak üzere çeşitli altyapı hizmetleri sağlar.

İkili Uyumluluk (Binary Compatibility)

Geleneksel ayrı derleme (separate compilation) süreçlerinde bir birimin imzası değiştirildiğinde, o birimi içe aktaran tüm birimlerin yeniden derlenmesi gerekir. Ancak Java platformu, bağlayıcının (linker) birleştirilecek ikili dosyaların (binaries) bütünlüğünü kontrol ettiği esnek bir yapı sunar. İkili uyumluluk, bir türde (sınıf veya arayüz) yapılan değişikliğin, daha önce hatasız bir şekilde bağlanan önceden var olan ikili dosyalarla yeniden derleme gerektirmeden hata vermeden bağlanmaya ve yürütülmeye devam etmesi durumunu ifade eder.

Güvenli Değişiklikler ve Sınırlamalar

Mevcut bir sınıfa yeni alanlar (fields) veya metotlar eklemek, ikili uyumlu değişiklikler olarak kabul edilir. Bu tür değişiklikler, uygulamanın diğer kısımlarının yeniden derlenmesini gerektirmez. Ancak dil spesifikasyonlarında belirtilen her ikili uyumlu değişiklik güvenli bir yürütmeyi garanti etmez; örneğin arayüzlere (interfaces) metot eklemek spesifikasyonlarda uyumlu olarak listelense de her zaman başarılı bir şekilde bağlanma ve hatasız yürütme sağlamayabilir.

JavaScript ile Farkı

Java, çok platformlu geniş çaplı uygulamalar geliştirmek için kullanılan genel amaçlı bir dildir. JavaScript ise, sayfanın yeniden yüklenmesine gerek kalmadan web sayfası animasyonları, açılır reklamlar veya kullanıcı davranışı günlükleri gibi tarayıcı tabanlı işlevleri çalıştırmak üzere betikler (scripts) oluşturmaya yarayan farklı bir teknolojidir.

Java Business Integration (JBI) ve Kurumsal Entegrasyon

Java Business Integration (JBI) veya diğer adıyla JSR 208, heterojen kurumsal ağlarda yer alan farklı işletim sistemleri ve uygulamaların entegrasyonunu sağlamak amacıyla geliştirilmiş bir standarttır. Geleneksel Kurumsal Uygulama Entegrasyonu (EAI) sistemleri, tescilli (proprietary) protokollere ve çoklu format dönüştürme işlemlerine dayandığı için düşük performanslı ve maliyetli yapılar olarak değerlendirilmiştir. Bu sorunların aşılması için JBI, Hizmet Odaklı Mimari (SOA) ve Web hizmetleri (Web services) prensiplerini temel alarak sistemler arası iletişimi soyut bir düzeye taşır.


JBI Mimarisi ve Bileşenleri

JBI, tek bir Java Sanal Makinesi (JVM) içinde çalışan, bir kapsayıcı (container) ve eklentilerden (plug-ins) oluşan tak-çıkar (pluggable) bir mimariye sahiptir. Sistemdeki bileşenler, belirli bir protokole bağlı kalmaksızın WSDL (Web Services Description Language) kullanılarak tanımlanmış soyut bir hizmet modeli üzerinden etkileşime girer. Mimari temel olarak şu birimlerden oluşur:


Bağlayıcı Bileşenler (Binding Components - BC)

JBI ortamı dışındaki harici hizmetlerin, sistemle iletişim kurmasını sağlayan adaptörlerdir.

Hizmet Motorları (Service Engines - SE): JBI ortamında doğrudan barındırılan alt kapsayıcılardır; XSLT motorları, BPEL sistemleri veya POJO'lar (Plain Old Java Objects) gibi çeşitli mesaj işleyicilerini çalıştırabilirler.

Normalleştirilmiş Mesaj Yönlendiricisi (Normalized Message Router - NMR): Hizmet tüketicileri ve sağlayıcıları arasındaki mesaj alışverişine aracılık eden ana bileşendir. NMR, iletilen mesajları opak (içeriği dönüştürülmeyen) veri olarak ele alır; böylece canonical (tek tip) formatlara dönüştürme zorunluluğunu ortadan kaldırarak performansı artırır.

Yönetim ve İzleme

JBI ortamında yer alan bileşenlerin kurulumu, dağıtımı, başlatılıp durdurulması ve yaşam döngülerinin izlenmesi gibi yönetimsel işlemler, Java Management Extensions (JMX) mimarisi aracılığıyla yürütülür.


Mesaj Değişim Kalıpları (MEP)

JBI ortamındaki iletişim, teslimat kanalları (delivery channels) üzerinden gerçekleştirilir. Tüketiciler ve sağlayıcılar, şu dört standart WSDL mesaj değişim kalıbını (Message Exchange Pattern) kullanır:

Java'nın Avantajları

  • Çoklu Platform Desteği (Taşınabilirlik): "Bir kez yaz, her yerde çalıştır" (WORA) ilkesi sayesinde, bir işletim sistemi (örneğin Windows) için yazılan kodlar, tamamen yeniden yazılmaya gerek kalmadan üzerinde Java Sanal Makinesi (JVM) bulunan cep telefonu gibi başka bir platforma kolayca aktarılabilir.
  • Nesneye Dayalı Yapı: Java, kodlarını işlevler ve komutlar yerine sınıflar ve nesneler etrafında düzenleyen ilk dillerden biridir. Bu yapı, C++ ve Python gibi modern dillerin de temelini oluşturur ve geliştiricilere daha düzenli bir kodlama imkânı sunar.
  • Çok Yönlülük: Java; akıllı telefonlardan akıllı televizyonlara, mobil ve web uygulamalarından Nesnelerin İnterneti (IoT) cihazlarına kadar çok geniş bir yelpazede kullanılabilen esnek ve kararlı bir platformdur.
  • Yüksek Ölçeklenebilirlik: Özellikle büyük gruplara veya kuruluşlara hizmet etmek için tasarlanan kurumsal yazılımlarda (faturalama sistemleri, tedarik zinciri yönetimi vb.) sahip olduğu yüksek ölçeklenebilirlik, Java'yı geliştiriciler için oldukça cazip kılmaktadır.
  • Öğrenim Kolaylığı ve Destek Ağı: Programlamanın temellerini atmak için harika bir ilk dil olarak kabul edilen Java'nın öğrenilmesi nispeten kolaydır. İnternet üzerinde eğitimler, bootcamp'ler ve geniş çevrimiçi topluluklar aracılığıyla uzmanlaşma sürecinde sürekli destek bulmak mümkündür.

Java'nın Dezavantajları

  • Performans ve Çalışma Hızı: Java uygulamaları, kodun doğrudan makine diline değil, bayt koduna (bytecode) derlenmesi ve Java Sanal Makinesi (JVM) üzerinde yorumlanarak çalıştırılması nedeniyle C veya C++ gibi doğrudan derlenen (native) dillere kıyasla genellikle daha yavaş bir yürütme performansına sahiptir. Ayrıca, uygulamaların ilk başlatılma süresi (startup time) diğer bazı dillere göre daha uzundur.
  • Bellek Tüketimi (Memory Consumption): Java, JVM'nin arka planda sınıf meta verilerini tutması ve genel sanal makine süreçleri nedeniyle diğer yerel programlama dillerine kıyasla daha fazla bellek (RAM) tüketmektedir.
  • Çöp Toplayıcı (Garbage Collection) Yükü: Java'da bellek yönetimi otomatik olarak çöp toplayıcı (garbage collector) tarafından gerçekleştirilir. Bu otomasyon bellek sızıntılarını azaltsa da geliştiricinin bellek tahliyesi üzerinde doğrudan kontrolü bulunmaz. Çöp toplama işlemleri sırasında CPU kaynaklarının kullanılması ve zaman zaman uygulamada yaşanabilen gecikmeler, düşük gecikme süresi (low-latency) gerektiren sistemlerde performans sorunlarına yol açabilir.
  • Düşük Seviyeli Programlama Desteğinin Olmaması: Java, güvenlik ve sağlamlık (robustness) amacıyla bellek adreslerine doğrudan erişimi sağlayan işaretçi (pointer) yapısını desteklemez. İşaretçi aritmetiği ve donanıma doğrudan müdahale gerektiren işletim sistemi veya cihaz sürücüsü geliştirme gibi düşük seviyeli programlama alanlarında Java yetersiz kalmaktadır.
  • Söz Dizimi Karmaşıklığı (Verbosity): Java, söz dizimi açısından ayrıntılı (verbose) bir dildir. Basit işlemleri gerçekleştirmek için dahi Python gibi dillere kıyasla daha fazla kod satırı yazılması gerekir. Bu durum, büyük projelerde kodun düzenlenmesini ve okunabilirliğini etkileyebilmektedir.
  • Grafik Kullanıcı Arayüzü (GUI) Geliştirme: Java (Swing, JavaFX gibi araçlar sunmasına rağmen) karmaşık masaüstü kullanıcı arayüzlerinin geliştirilmesi sürecinde diğer platformlara özgü (native) araçlara kıyasla daha hantal bir yapıya sahip olarak değerlendirilmektedir.

Ayrıca Bakınız

Yazarın Önerileri

C++

C++

Elektrik Ve Elektronik +1

Sen de Değerlendir!

0 Değerlendirme

Yazar Bilgileri

Avatar
YazarMuhammed NAZLIER14 Mart 2026 08:21

Etiketler

Tartışmalar

Henüz Tartışma Girilmemiştir

"Java Programlama Dili" maddesi için tartışma başlatın

Tartışmaları Görüntüle

İçindekiler

  • Kullanım Alanları ve Kurumsal Çözümler

  • Tarihi

  • Sürümler

  • Çalışma Mantığı

    • Bazı Kavramlar

  • Anında Derleme (JIT - Just-In-Time)

  • Java API

  • Atık Veri Toplayıcı (Garbage Collector)

  • Jar (Java Archive)

  • AWT ve Swing

  • SWT (Standard Widget Toolkit)

  • HotSpot Teknolojisi

  • Küçük uygulama (Applet)

  • WebStart

  • Java Yazımı (Sözdizimi)

    • Merhaba Dünya!

    • Kapsamlı Örnek

  • Dokümantasyon

  • Kullanım Alanları ve Kurumsal Çözümler

  • İkili Uyumluluk (Binary Compatibility)

  • JavaScript ile Farkı

  • JBI Mimarisi ve Bileşenleri

    • Bağlayıcı Bileşenler (Binding Components - BC)

    • Yönetim ve İzleme

    • Mesaj Değişim Kalıpları (MEP)

  • Java'nın Avantajları

  • Java'nın Dezavantajları

Bu madde yapay zeka desteği ile üretilmiştir.

KÜRE'ye Sor