Çalışma zamanı ortamı nedir?
Çalışma zamanı ortamı (runtime environment), bir programın çalışırken çevresinde ihtiyaç duyduğu yazılımdır: kodunu yürüten motor, çağırdığı standart kütüphaneler ve belleği, hataları ve işletim sistemine erişimi yöneten servisler. JVM, Node.js ve CPython buna örnektir.
Güncellendi: 24 Eylül 2026
Node.js'te console.log(typeof process) çalıştır, object yazdırır. Aynı satırı Chrome konsoluna yapıştır, undefined yazdırır. İki yerde de dil aynı JavaScript'tir, ama program iki farklı çalışma zamanı ortamında çalışır ve her biri ona farklı araçlar verir.
console.log(typeof process); // "object" in Node.js, "undefined" in a browser
console.log(typeof document); // "undefined" in Node.js, "object" in a browser
Çalışma zamanı ortamı ne sağlar
Kodun yalnızca ne yapılacağını anlatır. Çalıştığında, sen tek bir satır yazmadan önce kurulmuş bir yazılım katmanına dayanır. Bu katmanın genellikle beş parçası vardır:
- Bir yürütme motoru. Kodu bir şeyin çalıştırması gerekir: bir yorumlayıcı, bir sanal makine ya da bir just-in-time derleyici. CPython, Java Sanal Makinesi (JVM) ve V8 birer yürütme motorudur.
- Bir standart kütüphane. Metin, matematik, tarih, dosya ve ağ işlemleri için hazır fonksiyonlar; örneğin Python'un
jsonmodülü ya da Java'nınjava.utilpaketi. - Bellek yönetimi. Çalışma zamanı nesnelerin için bellek ayırır ve Python, Java ve JavaScript'te artık hiçbir şey kullanmadığında bu belleği bir çöp toplayıcıyla (garbage collector) geri verir.
- Hata yönetimi. Bir şeyler ters gittiğinde çalışma zamanı programı kontrollü bir şekilde durdurur ve hatanın nerede olduğunu bir traceback ya da stack trace olarak bildirir.
- İşletim sistemine erişim. Dosya okumak, ağ bağlantısı açmak, ortam değişkenlerini ve komut satırı argümanlarını okumak hep çalışma zamanı üzerinden geçer; çalışma zamanı da bunları programın adına işletim sisteminden ister.
Python çalışma zamanına kendisi hakkında soru sorabilirsin:
Cevaplar kodun nerede çalıştığına bağlıdır. Bir Linux sunucusunda platform.system() 'Linux', bir Mac'te 'Darwin', Windows'ta 'Windows' döndürür. Özyineleme sınırı (CPython'da varsayılan olarak 1000) Python dilinin değil, çalışma zamanının koyduğu bir kuraldır; ilk satırından önce yüklenmiş düzinelerce modül de çalışma zamanının kendini hazırladığını gösterir.
Java: JDK, JRE ve JVM farkı
Java katmanları görünür kılar, çünkü her birinin kendi adı vardır:
| Ad | Açılımı | İçeriği | Kimin işine yarar |
|---|---|---|---|
| JVM | Java Virtual Machine (Java Sanal Makinesi) | Bytecode'u (.class dosyaları) çalıştıran ve belleği yöneten motor | Aşağıdaki ikisinin parçasıdır |
| JRE | Java Runtime Environment (Java Çalışma Zamanı Ortamı) | JVM ve standart sınıf kütüphaneleri | Yalnızca Java programı çalıştıranlar |
| JDK | Java Development Kit (Java Geliştirme Kiti) | JRE ve geliştirici araçları: javac, jar, javadoc, jdb | Java programı yazanlar |
Akış şöyledir: javac Main.java (bir JDK aracı, yani derleyici) kaynak kodu Main.class dosyasına çevirir, java Main de JVM'i başlatır; JVM sınıfı yükler ve çalışma zamanı ortamının kütüphaneleriyle çalıştırır. Tek bir .class dosyasının Windows, macOS ve Linux'ta çalışmasının nedeni JVM'dir: her işletim sisteminin kendi JVM'i vardır ve hepsi aynı bytecode'u anlar.
Java 11'den beri Oracle yalnızca JDK dağıtıyor, ayrı bir JRE indirmesi yok. Eclipse Temurin gibi bazı dağıtımlar hâlâ bir JRE paketi yayımlıyor. Java öğreniyorsan bir JDK kur: JRE'nin içerdiği her şey onda da var. Java kurulumu rehberi bunu adım adım anlatır.
JavaScript: tarayıcı ve Node.js
JavaScript web sayfalarının içinde çalışmak için tasarlandı, bu yüzden ilk çalışma zamanı ortamı tarayıcıydı. Tarayıcı çalışma zamanı, koduna sayfanın document nesnesini, window nesnesini, zamanlayıcıları ve ağ istekleri için fetch fonksiyonunu verir; dosyalarına doğrudan erişimi ise bilerek engeller.
Node.js, Google'ın V8 motorunu tarayıcıdan çıkarıp farklı bir çalışma zamanıyla sarar: document yoktur, ama dosyalar için fs, sunucular için http gibi modüller ve ortam değişkenleri ile argümanlar için process nesnesi vardır. Deno ve Bun, aynı dil için kendi araçlarını getiren daha yeni çalışma zamanlarıdır. Hepsi aynı çekirdek JavaScript'i çalıştırır; fark onu neyin çevrelediğindedir. Node.js çalışma zamanı ve event loop sayfaları konuyu daha ileri götürür.
Python: CPython ve diğerleri
İnsanlar "Python kur" dediğinde bir çalışma zamanı ortamı kurmayı kastederler: CPython yorumlayıcısı, standart kütüphane ve paket eklemek için pip. Aynı dil için başka çalışma zamanları da vardır. PyPy hız için bir JIT derleyici ekler, MicroPython ise mikrodenetleyicilerde çalışacak kadar küçüktür.
Bir sanal ortam (python3 -m venv .venv) yeni bir çalışma zamanı değildir. Var olan bir yorumlayıcıyı gösterir ve bir projeye kendi kurulu paketlerini verir; böylece iki proje aynı kütüphanenin farklı sürümlerini kullanabilir. Sanal ortamlar sayfasına bak.
Derleme zamanı ve çalışma zamanı
"Çalışma zamanı" bir anın da adıdır: kaynağın çevrildiği derleme zamanının karşıtı olarak, programın çalıştığı süre. Derleyicinin reddettiği bir hata derleme zamanı hatasıdır; sıfıra bölmek gibi yalnızca program çalışırken ortaya çıkan bir hata ise bir çalışma zamanı hatasıdır. Çalışma zamanı ortamı, bu ikinci süre boyunca var olan yazılımdır.
Doğrudan makine koduna derlenen C'nin bile küçük bir çalışma zamanı vardır. Bir C programı, derleyici araç zincirinin sağladığı başlangıç kodunda başlar; printf ve malloc gibi fonksiyonlar da C standart kütüphanesinden gelir (çoğu Linux sisteminde glibc, Windows'ta Universal C Runtime). Yalnızca sanal makine ve çöp toplayıcı yoktur.
Yaygın yanlış inanışlar
- "Çalışma zamanı ortamı işletim sistemidir." İşletim sistemi donanımı her program için yönetir. Çalışma zamanı ortamı ise tek bir programın onun üzerindeki katmanıdır. JVM'in kendisi Windows, macOS ya da Linux'un çalıştırdığı bir programdır; onların yerini almaz.
- "Node.js bir dil ya da framework'tür." Node.js, JavaScript için bir çalışma zamanı ortamıdır. Express gibi framework'ler onun içinde çalışan kütüphanelerdir.
- "IDE kurmak çalışma zamanını da kurar." VS Code, Python ya da Java içermez. Düzenleyici ve çalışma zamanı ortamı ayrı kurulumlardır, gerçi IntelliJ IDEA gibi bazı IDE'ler senin için bir JDK indirebilir.
- "Aynı dil her yerde aynı davranır." Dosya erişimi, varsayılan sınırlar ve kullanılabilir modüller gibi çalışma zamanının sağladığı özellikler farklı olabilir. Node.js'te çalışan kod tam da bu yüzden tarayıcıda hata verebilir.
Sırada ne var
Çoğu çalışma zamanının içindeki yürütme motoru bir yorumlayıcıdır; o sayfa onu bir derleyiciyle de karşılaştırır. Her çalışma zamanının altında işletim sistemi bulunur. Henüz kullanmadığın bir çalışma zamanında pratik yapmak için Java kursuna ya da JavaScript kursuna başla.
Sıkça Sorulan Sorular
Çalışma zamanı ortamına bir örnek verebilir misin?
Node.js bir çalışma zamanı ortamı mı?
Runtime tam olarak ne demek?
JRE mi kurmalıyım, JDK mı?
javac derleyicisini ve JRE'deki her şeyi içerir. JRE tek başına yalnızca var olan Java programlarını çalıştırır. Java 11'den beri Oracle yalnızca JDK dağıtıyor, bu yüzden güncel Java sürümlerinde normal seçim JDK'dır.JDK, JRE ve JVM kısaltmaları neyin açılımıdır?
javac gibi geliştirme araçlarının eklenmiş hâlidir.