İçeriğe atla

Java

Java
Java logosu
ParadigmasıNesne yönelimli (çok paradigmalı), yapısal, fonksiyonel, zorunlu
İlk çıkışı23 Mayıs 1995 (29 yıl önce) (1995-05-23)
TasarımcıJames Gosling & Sun Microsystems
GeliştiriciOracle Corporation
Önemli uygulamalarıOpenJDK, HotSpot ve daha fazlası
LehçeleriGeneric Java, Pizza
EtkilendikleriAda 83, C++, Delphi Object Pascal, Eiffel, Generic Java, Mesa, Modula-3, Oberon, Objective-C, UCSD Pascal, Smalltalk
EtkiledikleriAda 2005, BeanShell, C#, Clojure, D, ECMAScript, Groovy, J#, JavaScript, PHP, Python, Scala, Seed7, Vala
PlatformuÇapraz platform
LisansGNU Genel Kamu Lisansı / Java Community Process
Olağan dosya uzantıları.java, .class, .jar, .jmod
Web sitesiJava geliştiricileri için

Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kaynak kodlu, nesneye yönelik, platform bağımsız, yüksek verimli, çok işlevli, yüksek seviye, hem yorumlanan hem de derlenen bir dildir.[1]

Java, Sun Microsystems'den James Gosling tarafından geliştirilen bir programlama dilidir ve 1995 yılında Sun Microsystems'in çekirdek bileşeni olarak piyasaya sürülmüştür. Bu dil C ve C++'dan birçok sözdizim türetmesine rağmen bu türevler daha basit nesne modeli ve daha az düşük seviye olanaklar içerir. Java uygulamaları bilgisayar mimarisine bağlı olmadan herhangi bir Java Sanal Makinesi (Java Virtual Machine - JVM) üzerinde çalışabilen tipik bytecode'dur (sınıf dosyası).

Java'nın sık kullanılan sloganlarından biri olan, çevirisi "bir defa yaz, her yerde çalıştır" olan "write once, run anywhere - WORA",[2] Java'nın; derlenmiş Java kodunun, Java'yı destekleyen bütün platformlarda tekrar derlenmeye ihtiyacı olmadan çalışabileceğini ima eder.[3] 2016 yılında bildirilen 9 milyon geliştiricisi ile, özellikle istemci sunucu web uygulamaları için olmak üzere, kullanımda olan en popüler programlama dillerinden birisidir.[4][5][6][7]

Java ilk çıktığında daha çok küçük cihazlarda kullanılmak için tasarlanmış ortak bir düzlem dili olarak düşünülmüştü. Ancak düzlem bağımsızlığı özelliği ve tekbiçim kütüphane desteği C ve C++'tan çok daha üstün ve güvenli bir yazılım geliştirme ve işletme ortamı sunduğundan, hemen her yerde kullanılmaya başlanmıştır. Özellikle kurumsal alanda ve mobil cihazlarda son derece popüler olan Java özellikle J2SE 1.4 ve 5 sürümü ile masaüstü uygulamalarda da yaygınlaşmaya başlamıştır.

Java'nın ilk sürümü olan Java 1.0 (1995) Java Platform 1 olarak adlandırıldı ve tasarlama amacına uygun olarak küçük boyutlu ve kısıtlı özelliklere sahipti. Daha sonra düzlemin gücü gözlendi ve tasarımında büyük değişiklikler ve eklemeler yapıldı. Bu büyük değişikliklerden dolayı geliştirilen yeni düzleme Java Platform 2 adı verildi ama sürüm numarası 2 yapılmadı, 1.2 olarak devam etti. 2004 sonbaharında çıkan Java 5, geçmiş 1.2, 1.3 ve 1.4 sürümlerinin ardından en çok gelişme ve değişikliği barındıran sürüm oldu. Java SE 8 ise Java teknolojisinin günümüz sürümüdür. 13 Kasım 2006'da Java düzlemi GPL ruhsatıyla açık kodlu hale gelmiştir.

Tarihi

James Gosling ve Patrick Naughton Java projesini Haziran 1991'de başlattı. Java ilk olarak interaktif televizyonlar için tasarlandı ancak dijital kablo televizyon endüstrisi için o zamanlar çok gelişmişti. Java'nın ilk hali Oak ismini taşıyordu ve bu isimi Gosling'in ofisinin hemen yanında bulunan bir meşe ağacından almıştı. Daha sonra projenin ismi Green oldu ve en son Java adını aldı. Gosling, Java'yı C/C++'a benzer bir sözdizimi ile tasarladı ve böylece programcılar için kolaylıkla öğrenilebilen bir dil oldu.

Sürümler

Mayıs 2022 itibarıyla resmî olarak Java SE 8, Java SE 11 ve Java SE 17 sürümleri uzun vadeli (LTS) olarak, Java SE 18 ise süreli bir şekilde desteklenmektedir. Java'nın ana sürümleri aşağıdaki gibidir:

Versiyon Yayın Tarihi
JDK Beta 1995
JDK1.0 23 Ocak 1996
JDK 1.1 19 Şubat 1997
J2SE 1.2 8 Aralık 1998
J2SE 1.3 8 Mayıs 2000
J2SE 1.4 6 Şubat 2002
J2SE 5.0 30 Eylül 2004
Java SE 6 11 Aralık 2006
Java SE 7 28 Temmuz 2011
Java SE 8 (LTS) 18 Mart 2014
Java SE 9 21 Eylül 2017
Java SE 10 20 Mart 2018
Java SE 11 (LTS) 25 Eylül 2018
Java SE 12 19 Mart 2019
Java SE 13 17 Eylül 2019
Java SE 14 17 Mart 2020
Java SE 15 15 Eylül 2020
Java SE 16 16 Mart 2021
Java SE 17 (LTS) 14 Eylül 2021
Java SE 18 22 Mart 2022
Java SE 19 13 Eylül 2022
Java SE 20 07 Haziran 2022 **
Java SE 21 (LTS) 07 Aralık 2022 **
    • Çalışmaları devam etmektedir.[8][9]

LTS (Long-Term Support), "Uzun Vadeli Destek" anlamına gelir. Bir programın veya yazılımın dağıtıcısı tarafından uzun vade de desteklenecek olan sürümüdür.

Çalışma mantığı

Bir Java yazılımı şu şekilde geliştirilir:

  • Yazılımcı Java kodunu yazar.
  • Bu kod bir Java derleyicisi ile derlenir. Derleme sonucunda "bytecode" adı verilen bir tür sanal makine kodu ortaya çıkar. Platform bağımsızlığını sağlayan bytecode'dur. Çünkü bir kere bytecode oluştuktan sonra yazılım, sanal makine içeren tüm işletim sistemlerinde çalışabilmektedir.
  • Bu bytecode Java Sanal Makinesi (Java Virtual Machine - JVM) tarafından işletilir. Bu aşama, her bir bytecode komutunun teker teker yorumlanması ile icra edilebileceği gibi, anında derleme (Just-in-time compilation - JIT) kullanılarak da gerçekleştirilebilir.

Bazı kavramlar

Nesneye yönelik yazılımlama mantığı:

Anında Derleme

Java ilk çıktığında bytecode işletme hızı çok iyi değildi. Yerine göre sistemin öz yazılımlarından 5-10 kat yavaş çalışıyordu. Bu nedenle bazı yazılım geliştirme şirketleri JIT yani "Just-in-time compilation", "anında derleme" araçları üretmeye başladılar. Yapılan şey bytecode'u sanal makinenin kurulu olduğu gerçek sistemin diline anında derleme yaparak dönüştürmesiydi. Bu sayede verimde ciddi artışlar sağlandı. Ama 2000 yılından sonra geliştirilen sanal makinelerde (HotSpot gibi) JIT'in işlevi VM içinde yer almaya başlamış, işlemci hızı ve bellek miktarının dramatik biçimde artması ile dış JIT yazılımları popülerliğini kaybetmiştir. Bugün hâlen birkaç ürün (Excelsior JET gibi) pazarda bulunsa da genellikle bu yöndeki ihtiyaç azalmıştır.

Java API

Java API, Java yazılımlarında kullanılan yazılım kütüphanelerine genel olarak verilen isimdir. Java API ile disk, grafik, ağ, veri tabanı, güvenlik gibi yüzlerce konuda kullanıcılara erişim imkânı sunulur. Java API J2SDK'nın bir parçasıdır.

Atık veri toplama teknolojisi (Garbage Collection) Java'dan önce de var olan ama Java ile adını duyurmuş ve yaygın olarak kullanılmaya başlanmış bir kavramdır. C++, C gibi dillerin en büyük engellerinden birisi dinamik bellek yönetimidir. Yazılımda gösterici (işaretçi - pointer) kullanarak dinamik olarak bellek ayırdıktan sonra o bellek ile işiniz bittiğinde mutlaka ayrılan belleği bellek yöneticiye özel alt yordamlar yardımıyla (delete, free...) iade etmeniz gerekir. Yoksa bellek sızıntısı (memory leak) oluşur ve bu bir süre sonra yazılımın ve işletim sisteminin beklenenden farklı davranmasına yol açabilir. Sızıntıların saptanması oldukça güçtür ve bulunması zor hatalara yol açar. Bu nedenle bugünün tüm büyük C ve C++ yazılımları az da olsa bellek sızıntısı içerir (işletim sistemleri dahil).

Atık veri toplayıcı sayesinde Java'da bir nesne oluşturulduktan sonra o nesne ile işiniz bittiğinde hiçbir şey yapmanız gerekmez: Sanal makine akıllı bir biçimde kullanılmayan bellek bölümlerini belirli aralıklarla ya da uyarlamalı yöntemlerle otomatik olarak temizler ve sisteme iade eder. Bu işleme çöp toplama (atık toplama - garbage collection) adı verilir. Çöp toplama sistemlerinin yapısı oldukça karmaşıktır ve geçen yıllar içinde büyük gelişmeler kaydedilmiştir. Çöp toplayıcının varlığı Java'da bellek sızıntısı olmayacağı anlamına gelmez, ama bellek sızıntıları daha ender olarak ve farklı şekillerde karşınıza çıkar ve genellikle tedavi edilmesi daha kolaydır.

Jar

Jar (Java Arşivi - Java Archive), aslında bir tür sıkıştırma formatıdır. Jar ile derlenen Java kodları ile oluşan yazılımın paketlenip taşınması kolay bir hale getirilir. Jar dosyaları temelde bytecode blokları içerir. Jar dosyaları genellikle kütüphane oluşturmada ya da uygun biçimde hazırlanırsa işletim sisteminden doğrudan çalıştırılabilecek bir şekilde kullanılabilir (çalıştırılabilir jar - executable jar). Jar dosyalarının içeriğini sıkıştırma yazılımları ya da Java yazılım geliştirme araçları ile inceleyebilirsiniz. Java 1.5 ile yeni bir tür jar oluşturma metodu da kullanıma girdi. Pack200 adı verilen hiper-sıkıştırma (hyper-compression) algoritması ile jar dosyaları daha küçük boyutlara indirgenebiliyor. Ancak bu teknoloji daha çok ağ üzerinden yapılan transferlerde kullanılıyor. Daha fazla ayrıntı için: buraya bakınız 24 Ocak 2012 tarihinde Wayback Machine sitesinde arşivlendi.

AWT ve Swing

AWT, ilk Java ile birlikte geliştirilen temel grafik arayüz oluşturma kütüphanesine verilen isimdir. AWT işletim sisteminin doğal grafik yapılarına erişimi sağlar. Ancak Java 2 platformu ile birlikte AWT yetersiz görülmüş ve çok daha geniş ve gelişmiş özelliklere sahip Swing kütüphanesi sisteme eklenmiştir. Özellikle çok platform destekleyen yazılımlarda kullanıcı arayüzü geliştirme aracı olarak swing hâlen önemini korumaktadır. Swing önceleri işletim sisteminin kullandığı donanım grafik hızlandırma araçlarını kullanmadığından yavaşlığı ile eleştirilere hedef olmuştu. Özellikle Java 1.4 ile Swing, hem genel olarak sanal makinenin hızlanması ve kısmen donanım hızlandırmayı kullanması ile bu kötü şöhretinden sıyrılmaya başladı. AWT hâlen Swing'in bir alt katmanında, temel iki boyutlu grafik işlemlerinde kullanılmaya devam ediyor.

SWT

SWT Swing'e bir alternatif olarak IBM tarafından geliştirilen bir gösterim sistemidir. Swing'den en büyük farkı çalıştığı işletim sisteminin grafik kütüphanesi ve komutlarını kullanmasıdır. Bu nedenle SWT uygulamaları Swing'e göre çoğu yerde daha hızlı ve işletim sistemindeki diğer uygulamaları andıran bir şekilde çalışmasını sağlar. Swing'in Java 1.5 ile performans açığını kapattığı iddia edilse de SWT'nin de artık Java camiasında kabul görmüş bir sistem olduğu açıktır. SWT'nin dezavantajı ise Java'nin bir parçası olmamasıdır. Yani SWT uygulamaları SWT kütüphanesi ile birlikte dağıtılmaktadır. Ayrıca SWT farklı işletim sistemlerinde farklı olgunluk ve performansta işlemektedir ve özellikle Windows dışı sistemlerde henüz yeterince olgunlaşamamıştır. En bilinen SWT uygulamaları, ünlü Java yazılım geliştirme aracı (IDE) Eclipse ve BitTorrent uygulaması Azureus'tur.

HotSpot Teknolojisi

Sun Microsystems tarafından geliştirilen Java sanal makinesi, HotSpot adı verilen özel bir teknolojiyi içinde barındırır. HotSpot, yani "sıcak nokta", bir yazılımda sürekli olarak tekrarlanan ve üzerinden geçilen kod bölümlerine verilen bir isimdir. HotSpot sanal makinesi şu anda iki ayrı modda sanal makinenin çalışmasını sağlamaktadır: İstemci (Client) ve Sunucu (Server) modları. İstemci modunda bytecode büyük ölçüde daha başlangıçta JIT ile sistemin öz makine koduna dönüştürülerek işletilir ama çalışma anında daha fazla iyileştirme işlemi gerçekleştirilmez. Bir uygulamanın hızı istemci modunda zaman içinde bu nedenle değişmez. Sunucu modunda ise sanal makine başlangıçta bytecode'unu sistemin öz koduna dönüştürmekte acele etmez. Bu nedenle sunucu modu başlangıçta istemci modundan oldukça yavaştır. Yazılım çalışmaya devam ettikçe sanal makine yazılımdaki sıcak noktaları tespit edip bytecode'u sadece JIT ile makine koduna dönüştürmekle kalmaz, ayrıca oldukça yoğun bir iyileştirmeye de tabi tutar. Sonuçta sunucu modunda uygulamalar zaman içinde hızlanır, uzun soluklu uygulamaların bu nedenle sunucu modunda işletilmesi önerilir. Mustang kod adlı Java SE 6'da istemci modunda da benzeri bir teknolojinin kullanılması bekleniyor. Dolphin kod adlı Java SE 7'de ise bu iki mod arasındaki fark azalacağından sistemin tek modda çalışması bekleniyor.

Uygulamacık

Uygulamacık (applet 12 Nisan 2011 tarihinde Wayback Machine sitesinde arşivlendi.), uzaktaki sistem üzerinden indirilip internet tarayıcı üzerinde çalıştırılabilen Java uygulamalarına verilen isimdir. Java'nın son kullanıcılar tarafından tanınması uygulamacık sayesinde olmuştur dersek yanlış olmaz. Uygulamacıklar sisteme zarar veremeyecek bir şekilde tasarlanmıştır. İçerisinde uygulamacık olan bir sayfayı açmaya çalıştığınızda tarayıcınız otomatik olarak Java sanal makinesini çalıştırıp ekranın uygulamacığa ayrılan bölümünde uygulamanın çalışmasını sağlar.

Fakat, son yıllarda birçok Java programcısı Uygulamacıklar üzerinden gözünü çekmiştir. Artık HTML, CSS ve JavaScript sayesinde çok daha hızlı, pratik, güvenli ve kusursuz uygulamalar/web hizmetleri yapılabiliyor olması bunun en önemli sebebidir.[10]

WebStart

WebStart teknolojisi uygulama kurulum, güncelleme ve silme dertlerine deva olmak üzere tasarlanmış bir sistemdir. WebStart teknolojisi kısaca yazılımların uzaktan yerel sisteme güvenli olarak kurulmasını ve korumalı bir alanda çalıştırılmasını sağlar. Applet'lerin bir sonraki adımı olarak görülebilir. Bir WebStart uygulamasını kurmak için internet üzerindeki özel bir bağlantıya tıklamak yeterlidir. Sistem otomatik olarak WebStart sistemini çalıştırıp yazılımı Java cep belleğine indirir. İstenirse masaüstüne kısayol koymasını da sağlar. Daha sonra sistem çevrimiçi (online) ya da çevrimdışı (offline) olarak çalıştırılabilir ve uzaktaki yazılım güncellendiğinde otomatik olarak -istenirse- yerel makinedeki yazılımın da güncellenmesi sağlanabilir. Kullanıcının özel olarak izin vermesi halinde uygulama yerel sisteme erişim hakkı kazanabilir. Aksi takdirde WebStart uygulamaları sisteme yazma işlemi gerçekleştiremezler.

Bu Java teknolojisi de, günümüzdeki programcıların takibinde değildir.[11]

Java yazımı (Sözdizimi)

Sınıf temelli nesneye yönelik bir dil olan Java, yazım olarak C++ ile benzerlikler arz eder. Java'nın yanında C#, Perl, JavaScript gibi diller de aynı dil ailesine aittir. "{}" şeklinde süslü parantezler içerisindeki bloklar, ++ arttırma ve—azaltma işleçleri bu dilin belirgin özelliklerindendir.

Merhaba Dünya!

 // MerhabaDünya.java
 public class MerhabaDünya{
     public static void main(String[] args) {
         System.out.println("Merhaba Dünya!");
     }
 }
  • "MerhabaDünya.java" ile "public class MerhabaDünya" bu kısımda iki isim aynı olmalıdır aksi takdirde uygulama çalıştırılamaz.
  • class: Sınıf tanımlayabilmek için class ön eki şarttır.
  • public: Sınıfın dışarıdan erişebilir olduğu,
  • static: Sınıf tarafından paylaşıldığı,
  • void: Bir değer döndürmediği anlamına gelir.
  • Public ve Static'e erişim belirleyicisi (access specifier) de denir.
  • Void'e dönüş tipi (return type) de denir.
  • String args[]: Parantezin içinde yöntemin aldığı parametreleri belirleriz. "String" sınıf adı, "args" da parametre adıdır. "[]" ise args'ın bir dizi (array) olduğunu belirtiyor.
  • "System.out.println();" ile yazımızı yazdırıyoruz ve yeni satıra geçmesini sağlıyoruz.
  • Yazımızı "System.out.print("Merhaba Dunya!");" ile de yazdırabilirdik. Fakat imleç yeni satıra geçmezdi.
  • Java Türkçe karakterleri (C# gibi) "değişken adlarında, sınıf adlarında" da kullanmamıza imkân tanır.

Java'da yazdığımız yazılımları derlememiz için öncelikle sınıf adı ile aynı adı taşıyan dosya ismine sahip olmamız gerekmektedir. Yukarıdaki örnek yazılımı sınıf ismi olan "MerhabaDünya" ifadesini kullanıp uzantısı ile beraber "MerhabaDünya.java" ismi ile kaydedebiliriz. J2SDK veya benzer bir Java geliştirme ortamı kurulu sistemimizde yazılan uygulama aşağıdaki şekilde derlenebilir.

javac -encoding UTF-8 MerhabaDünya.java

javac, yazılan programı derleyerek ".class" uzantılı bir dosya üretir. ".class" sınıf dosyaları JVM'de çalışabilecek bytecode'lar içeren sınıf dosyalarıdır. Örnek uygulamayı çalıştırmak için:

java MerhabaDünya

yazabiliriz. Java komutu öncelikle sınıf yolunda (Bkz. Classpath) "MerhabaDünya" sınıfını arayacaktır. Bulduğu takdirde "MerhabaDünya" sınıfında "main" metodunu arayacaktır. Eğer metot bulunur ise bu metot icra edilecektir.

Kapsamlı örnek

package TekCift;

import javax.swing.JOptionPane;

public class TekCift {

	/**
	 * Tam sayı (int ingilizce de integer’ın kısaltmasıdır)
	 */
	private int kullanicininGirdigi;

	/**
	 * Bu yapıcı fonksiyondur. TekCift objesi yaratılırken çağrılır.
	 */
	public TekCift() {
	}

	/**
	 * Aşağıdaki ana fonksiyondur. Java yorumlayıcısı programı çalıştırmak için
	 * ilk bu fonksiyonu çağırır.
	 * 
	 * @param argumanlar
	 *            Komut satırı argümanları (kullanılmıyor)
	 */
	public static void main(final String[] argumanlar) {
		TekCift obje = new TekCift();
		obje.pencereGoster();
	}

	/**
	 * Aşağıdaki fonksiyon "Sayı giriniz" diyaloğunu gösterir
	 */
	public void pencereGoster() {
		try {
			kullanicininGirdigi = Integer.parseInt(JOptionPane.showInputDialog("Lütfen bir sayı giriniz."));
			hesapla();
		} catch (final NumberFormatException e) {
			System.err.println("HATA: Geçersiz bir değer girdiniz. Lütfen sayısal bir değer giriniz.");
		}
	}

	/**
	 * Aşağıdaki fonksiyon kullanıcının girdiği değere göre çift ya da tek
	 * penceresi gösterir.
	 */
	private void hesapla() {
		if ((kullanicininGirdigi % 2) == 0) {
			JOptionPane.showMessageDialog(null, "Çift");
		} else {
			JOptionPane.showMessageDialog(null, "Tek");
		}
	}
}
  • package anahtar kelimesi dosyanın başında paket belirtmek için kullanılır.
  • kullanıcı arayüzü gösterebilmek içın javax.swing.JOptionPane kütüphanesine ihtiyacımız var. Dosyanın başındaki import cümlesi tam bu işe yarar.
  • TekCift sınıfı kullanıcının girdiği bir tam sayıyı hafızasında tutmak için kullanıcının girdiği değişkenini tanımlıyor. Diğer sınıfların bu değişkeni görmemesi için private (özel) anahtar kelimesini kullanılıyoruz.

Dokümantasyon

Sun Microsystems tarafından geliştirilen Javadoc, Java kodlarının HTML formatında dokümantasyonun oluşturulması için kullanılan kapsamlı bir sistemdir.

Ayrıca bakınız

Kaynakça

  1. ^ "About the Java Technology (The Java™ Tutorials > Getting Started > The Java Technology Phenomenon)". docs.oracle.com. 15 Aralık 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Ocak 2023. 
  2. ^ "Arşivlenmiş kopya". 29 Mart 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 14 Şubat 2017. 
  3. ^ "Arşivlenmiş kopya". 23 Ocak 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 14 Şubat 2017. 
  4. ^ "Arşivlenmiş kopya". 15 Şubat 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 14 Şubat 2017. 
  5. ^ "Arşivlenmiş kopya". 26 Mart 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 14 Şubat 2017. 
  6. ^ "Arşivlenmiş kopya". 16 Ocak 2009 tarihinde kaynağından arşivlendi. Erişim tarihi: 14 Şubat 2017. 
  7. ^ "Arşivlenmiş kopya". 26 Aralık 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 14 Şubat 2017. 
  8. ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 395". www.jcp.org. 2 Ocak 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Ocak 2023. 
  9. ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 396". www.jcp.org. 8 Aralık 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Ocak 2023. 
  10. ^ "Arşivlenmiş kopya". 10 Aralık 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 3 Mayıs 2020. 
  11. ^ "Arşivlenmiş kopya". 10 Haziran 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 3 Mayıs 2020. 

Dış bağlantılar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Derleyici</span> kaynak kodunu bilgisayarın işleyebileceği koda dönüştüren program

Derleyici, kaynak kodu makine koduna dönüştüren yazılımdır. Bir programlama dilinin derleyicisi, o programlama dili kullanılarak yazılmış olan kodu hedef işlemci mimarisine göre uygun şekilde makine koduna derler ve genellikle çıktı olarak yürütülebilir dosyanın oluşturulmasını sağlar. Bu eyleme derleme denir. Bir başka ifadeyle derleyici, bir tür yazı işleyicidir; girdi olarak yazı alır ve çıktı olarak yazı verir.

<span class="mw-page-title-main">Yazılım</span> bilgisayarın somut olmayan çalıştırılabilir bileşeni

Yazılım, değişik ve çeşitli görevler yapma amaçlı tasarlanmış elektronik aygıtların birbirleriyle haberleşebilmesini ve uyumunu sağlayarak görevlerini ya da kullanılabilirliklerini geliştirmeye yarayan makine komutlarıdır.

<span class="mw-page-title-main">Mikro çekirdek</span>

Bilgisayar biliminde, bir mikro çekirdek, bir işletim sistemini uygulamak için gereken mekanizmaları minimuma yakın sağlayan işletim sistemi çekirdeği türüdür. Ana çekirdek sadece birimler arası iletişim ve süreçleri sıralama işlerini yapar. Bellek yönetimi, kayıt ortamı yönetimi, sürücüler ve ağ ile ilgili çok sayıda sürec birbirleriyle iletişim kurarak haberleşir. Bu sayede; parçalardan oluşan yapı ve tasarımın sadeleştirilmesi, bir parçadaki hatanın diğer parçaları etkilememesi ve çalışma anında işletim sisteminin güncelleştirilebilmesi mümkün olabilmektedir.

<span class="mw-page-title-main">Emacs</span> genişletilebilirlik yönünden birbirine benzeyen ve ilişkili metin editörlerinin genel adı

Emacs, özellikle genişletilebilirlik yönünden birbirine benzeyen ve ilişkili metin düzenleyicilerin genel adıdır. Bu metin düzenleyicilerin en yaygını GNU Emacs olduğundan, sıklıkla GNU Emacs yerine kullanılır.

<span class="mw-page-title-main">Bellek yönetimi</span>

Ana belleğin işlemler arasında paylaştırılmasına ana bellek yönetimi ya da bellek yönetimi adı verilir. İşletim sisteminin bu amaçla oluşturulan kesimine de bellek yöneticisi adı verilir.

Sanal bellek, fiziksel belleğin görünürdeki miktarını arttırarak uygulama programına (izlence) fiziksel belleğin boyutundan bağımsız ve sürekli bellek alanı sağlayan bilgisayar tekniğidir. Ana belleğin, diskin (ikincil saklama) önbelleği (cache) gibi davranmasıyla; yani disk yüzeyini belleğin bir uzantısıymış gibi kullanmasıyla gerçekleştirilir. Ancak gerçekte, yalnızca o anda ihtiyaç duyulan veri tekerden ana belleğe aktarılıyor olabilir. Günümüzde genel amaçlı bilgisayarların işletim sistemleri çoklu ortam uygulamaları, kelime işlemcileri, tablolama uygulamaları gibi sıradan uygulamalar için sanal bellek yöntemi kullanılmaktadır.

<span class="mw-page-title-main">Apache Ant</span>

Apache Ant, yazılım inşası süreçlerini otomatikleştirmeye yarayan bir araçtır. Make'e benzeyen uygulama, Java ile geliştirilmiş olup Java platformunu gerektirmekte ve Java projelerinde sıkça kullanılmaktadır.

<span class="mw-page-title-main">Java (yazılım ortamı)</span>

Java, Sun Microsystems tarafından üretilen ve yazılım uygulamaları geliştirmeye yardımcı yazılımlar bütünüdür. Java'nın kullanım alanı gömülü aygıtlardan cep telefonlarına, kurumsal sunuculardan süper bilgisayarlara uzanmaktadır. Cep telefonları, Web sunucuları ve kurumsal uygulamalarda sıkça kullanılan Java'nın masaüstü bilgisayarlardaki kullanımı daha az yaygındır. Ne var ki, bu ortamda çalışan Java uygulamacıkları Dünya Çapında Ağ üzerinde gerçekleştirilen işlemlerde kullanım kolaylığı sağlamaktadır.

<span class="mw-page-title-main">Java sanal makinesi</span>

Java Sanal Makinesi (JSM), Java platformunun nesne modülü formatı olan class uzantılı sınıf dosyalarının belleğe yüklenip çalıştırılması için gereken hizmetleri sunan bir sistem programıdır ve temel görevinin sınıf dosyalarını yorumlamak olduğu söylenebilir. Ancak, JSM'ni salt bir yorumlayıcı olarak görmek büyük haksızlık olur. Zira, yorumlama ile birlikte JSM'nin şu görevleri de vardır.

<span class="mw-page-title-main">Anaçatı bilgisayar</span>

Bir anaçatı bilgisayar milyonlarca kullanıcıya eş zamanlı olarak farklı hizmetler verebilen, büyük, güçlü ve pahalı bir bilgisayardır. Anaçatı bilgisayarların gücü şu nedenlerden kaynaklanmaktadır:

Java Geliştirme Kiti (JDK) Java geliştiricilerine yönelik bir Oracle Corporation ürünüdür. Java'nın kullanıma sunulmasından beri en geniş kullanım alanı bulan Java SDK'dır. 17 Ekim 2006'da, Sun GNU General Public License (GPL) altında sunulacağını duyurdu ki bu özgür yazılım olacağı anlamına geliyordu. Bunun gerçekleşmesi ise 8 Mayıs 2007'de oldu; Sun kaynak kodu OpenJDK'ya bağışladı.

Bilgi işlem platformu, bir uygulama yazılımı çalıştırmak için donanım mimarisi ve bir yazılım çerçevesi, yazılım, çeşitli bazı kombinasyon veya sıralamalarını içermektedir. Tipik platformlarda bir bilgisayar mimari, işletim sistemi, programlama dilleri ve ilgili kullanıcı arabirimi içerir.

<span class="mw-page-title-main">Gömülü sistem</span> Belli bir fonksiyonu yapmaya yönelik bilgisayar sistemi

Gömülü sistem, bilgisayarın kendisini kontrol eden cihaz tarafından içerildiği özel amaçlı bir sistemdir. Genel maksatlı, örneğin kişisel bilgisayar gibi bir bilgisayardan farklı olarak, gömülü bir sistem kendisi için önceden özel olarak tanımlanmış görevleri yerine getirir. Sistem belirli bir amaca yönelik olduğu için tasarım mühendisleri ürünün boyutunu ve maliyetini azaltarak sistemi uygunlaştırabilirler. Gömülü sistemler genellikle büyük miktarlarda üretildiği için maliyetin düşürülmesinden elde edilecek kazanç, milyonlarca ürünün katları olarak elde edilebilir.

Dart, ilk kez Google tarafından geliştirilen ve daha sonraları ECMA tarafından standart (ECMA-408) haline getirilen açık kaynaklı ve genel-amaçlı bir programlama dilidir. Dart dili kullanılarak web, sunucu, mobil uygulamalar ve IoT cihazları geliştirilebilir.

<span class="mw-page-title-main">Android Runtime</span>

Android Runtime veya ART, Google tarafından geliştirilen, Android işletim sistemi tarafından kullanılan Bir uygulama çalıştırma ortamıdır. Android tarafından kullanılan işlem sanal makine, Dalvik-in yerini almıştır. ART yerli talimatlar içine uygulamanın bayt çevirisini (Bytecode) gerçekleştirir, daha sonra cihazın çalışma ortamını yürütür.

<span class="mw-page-title-main">Dalvik (yazılım)</span> Google tarafından yazılmış android için programlama dili

Dalvik yazılımı Google tarafından geliştirilmiş, Android için yazılmış uygulamaları yürüten ve şu an durdurulan sanal makine (VM) 'dir. Dalvik, Android 4.4 "KitKat" ve önceki Android sürümlerinin yazılım yığınının ayrılmaz bir parçasıdır; tipik olarak cep telefonları ve tablet bilgisayarlar gibi mobil cihazlarda ve daha yakınlarda Smart TV'ler ve giyilebilir bilgisayar gibi cihazlarda kullanılırdı. Dalvik, açık kaynaklı yazılım, Dan Bornstein tarafından yazılmıştır ve ismini Eyjafjörður, İzlanda da yerleşen Dalvik balıkçı köyünden almıştır. Android için programlar yaygın olarak Java ile yazılmış ve Java sanal makinesi için baytkodu derlemiştir. Daha sonra Dalvik bytecodeye çevrilmiş ve .dex ve .odex dosyalarında saklanır. Kompakt Dalvik yürütülebilir biçimi sistemleri için tasarlanmış, bellek ve işlemci hızı açısından sınırlandırılmıştır.

<span class="mw-page-title-main">Windows NT mimarisi</span>

Microsoft tarafından üretilen ve satılan bir işletim sistemi satırı olan Windows NT'nin mimarisi, kullanıcı modu ve çekirdek modu olmak üzere iki ana bileşenden oluşan katmanlı bir tasarımdır. Tek işlemcili ve simetrik çok işlemcili (SMP) tabanlı bilgisayarlarla çalışmak üzere tasarlanmış, önleyici, yeniden gelen bir işletim sistemidir. Giriş/çıkış isteklerini işlemek için, I / O istek paketlerini (IRP'ler) ve zaman uyumsuz G / Ç'yi kullanan paket odaklı G / Ç kullanırlar. Windows XP'den başlayarak, Microsoft Windows'un 64 bit sürümleri hazırlanmaya başladı; Bundan önce, bu işletim sistemleri yalnızca 32-bit sürümlerde mevcuttu.

JIT ; bilgisayar kodunu çalıştırmanın bir yoludur. Yürütülmeden önce bir program yürütülürken çalışma zamanında derleyici içerir. Genellikle bu, kaynak kodu ve daha sonradan makine diline bytecode kod çevirisini içerir ve bu kod doğrudan doğruya çalıştırılır. Bir JIT derleyicisi uygulayan bir sistem genellikle yürütülen kodu sürekli olarak analiz eder, daha sonra derleme veya tekrar derlemeden elde edilen hızlanmanın bu kodun derlenmesinin yükünden daha ağır olacağı kod bölümlerini tanımlar.

AOT derlemesi C veya C++ gibi daha üst düzey bir programlama dili, Java bytecode veya .NET Framework Ortak Ara Dil kodu gibi bir ara temsilciliğin yerli bir makine diline derleme eylemidir. Sonuçta ortaya çıkan ikili dosya yerel olarak çalıştırılabilir.

<span class="mw-page-title-main">Phantom OS</span>

Phantom OS, çoğunlukla Rus programcılar tarafından yapılan bir işletim sistemidir. Kalıcı sanal bellek kavramına dayalıdır ve bir sanal makine, yönetilen kod ve bayt kodları kullanır. Unix benzeri sistemlerin klasik kavramlarına dayanmayan birkaç işletim sisteminden biridir. Öncelikli hedefi hem işletim sisteminde hem de uygulama yazılımında aynı anda basitlik ve etkinlik sağlamaktır. GNU Kısıtlı Genel Kamu Lisansı (LGPL) altında yayınlanan ücretsiz ve açık kaynaklı bir yazılımdır (FOSS).