Derleyici özel bir programdır; belirli bir programlama dilinde yazılan komutları işleyen ve onları makine diline veya bilgisayar işlemcisinin kullandığı koda çevirir. Bir programcı tipik olarak dil komutlarını Pascal veya C gibi bir dilde düzenleyici kullanarak her seferinde bir satır yazar. Oluşturulan dosya kaynak komutlarını içerir. Sonra programcı kaynak komutlarını içeren dosyanın adını belirterek derleyiciyi çalıştırır.
Derleyici, çalıştırıldığında ilk olarak bütün dil komutlarını birbiri ardına sözdizimsel olarak ayrıştırır, sonra bir veya daha fazla ardışık bölümlerde çıktı kodunu oluşturur, diğer komutlara bağlı olan komutların doğru bir şekilde bağlandığından emin olur. Geleneksel olarak, derlemenin çıktısı nesne kodu ya da bazen nesne modülü olarak adlandırılır. (Bu cümledeki nesne terimi, nesne yönelimli programlama ile alakalı değildir) Nesne kodu işlemcinin her seferinde bir yönergeyi çalıştırabildiği makine kodudur.
Java programlama dili nesne yönelimli programlamada kullanılan bir dildir ve Java, bir Java Sanal Makinesi (JVM) ya da bytecode yorumlayıcısı sağlayan bütün bilgisayar sistem platformlarında çalışabilen derlenmiş çıktının (yani bytecode’nin) imkanlı olduğunu gösterdi. Bu sanal makineyi kullanıldığında bytecode isteğe bağlı olarak çalıştırma platformu olan Just In Time Compiler’de(tam zamanında çevirici) yeniden derlenebiliyordu.
Geleneksel olarak bazı işletim sistemlerinde -aynı anda birden fazla nesne modülünün çalıştırılacağını ve birbiriyle kesiştiği durumlarda talimatların ve verilerin göreceli konumunu çözmek gerektiğinde- birbirlerinin talimat dizilerine ya da verilerine bağlı olarak derlemeden sonra fazladan bir adım gerekiyordu. Bu süreç bazen bağlantı düzenleme olarak adlandırılıyordu ve çıktı da yükleme modülü olarak biliniyordu.
Bir derleyici bazen üçüncü nesil dil(3GL) diye adlandırılan ve daha yüksek seviyeli dillerle çalışır. Bir çevirici bir işlemcinin çevirici dilini kullanarak yazılan programlarda çalışır.
Çevirici rolünü üstlenen birçok program var. Assembler, interpreter, compiler programları birbirine benzemekle birlikte birbirinden farklı yerlerde görev alırlar. Sonraki yazılarda bunların arasındaki farkları ve benzerlikleri yazabilirim.
Bu yazımda genel olarak https://whatis.techtarget.com/definition/compiler adresindeki ‘compiler’ teriminin tanımını Türkçe’ye çevirerek sizlere aktarmaya çalıştım.
Yukarıda değindiğimiz JVM’ in ne olduğunu ise Özcan Acar hocamızın kendi yazısı ile aşağıda paylaşalım:
“JVM (Java Virtual Machine – Java Sanal İşlemcisi) C++ dilinde yazılmış bir programdır. Bir Java programı javac.exe ile derlendikten sonra byte code ismi verilen bir ara sürüm oluşur. Byte code, ana işlem biriminin (CPU – Cental Processing Unit) anlayacağı cinsten komutlar ihtiva etmez, yani klasik Assembler değildir. Java byte code sadece JVM bünyesinde çalışır. JVM, derlenen Java programı için ana işlemci birimi olma görevini üstlenir. Bu özelliğinden dolayı Java programlarını değişik platformlar üzerinde çalıştırmak mümkündür. Her platform için bir JVM sürümü Java programlarını koşturmak için yeterli olacaktır. Bu sebepten dolayı Java “write once, run anywhere – bir kere yaz, her yerde koştur” ünvanına sahiptir. “(Özcan Acar – http://www.kurumsaljava.com/)