Javascript son 10 yılda pek sevilmeyen bir dil. Sevilmeyen fakat mecburen geliştirme yapılan bir dil iken hızlı şekilde ve zevkle geliştirme yapılan, her yerde kullanılabilen ve gün geçtikçe daha da zevkli hale gelen bir dil olmuştur.Javascript engine, yazılan kodların makine diline çevrildiği bir programdır. Yani bilgisayarın anlayacağı dile çevrilen bir çeşit programdır. Bu yazımızda sizler için javascript engine nedir, ne işe yarar, nasıl çalışır, gibi soruları araştırıp derledik. İşte detaylar…

 

Javascript engine nedir?

Javascript genel olarak basit bir dildir. Fakat Javascript’in çalıştığı ortamın detaylarına dikkat etmeliyiz. Eğer gereken önem verilmezse geliştirdiğimiz uygulamalar beklediğimiz performans ve akıcılıkta olmayacaktır. Javascript’in üzerinde çalıştığı Javascript motorunun detaylarını inceleyeceğiz. Dolayısıyla etkili Javascript uygulamaları geliştirmek için faydalı bilgiler öğreneceğiz.

Bu program dilini makine diline çevirme süreci şu şekilde işler. Bunu yaparken farklı adımlar devreye girer. Javascript engine’in modeline göre değişeceği gibi genellikle Google’ın geliştirdiği V8 Engine üzerinde duracağız. SpiderMonkey çalışma metodu hakkında da bilgi vermeye çalışacağız. Peki nedir bu Spidermonkey? SpiderMonkey, Mozilla’nın Firefox, Servo ve diğer çeşitli projelerde kullanılan JavaScript ve WebAssembly motorudur. C++, Rust ve JavaScript ile yazılmıştır.

Peki V8 nedir? V8, Google’ın C++ ile yazılmış açık kaynaklı yüksek performanslı JavaScript ve WebAssembly motorudur. Diğerlerinin yanı sıra Chrome’da ve Node.js’de kullanılmaktadır. ECMAScript de kullanılacağı için büyük önem kazanır. Peki Ecmascript nedir? Bu script, farklı ortamlarda çalışabilirliğini sağlamayı amaçlayan bir JavaScript standardıdır.

Javascript kodları JS engine dediğimiz yapı ile çalıştırılmaktadır. JS Motorlarının en bilineni Google Chrome için geliştirilen V8 motorudur. Javascript motoru tek başına çalıştırılacak bir uygulama değildir daha çok bir kütüphane şeklinde kullanılmaktadır ve içinde bulunduğu ortam ile entegre edilir. Örneğin tarayıcı içine JS motoru entegre edilmiş ise tarayıcı location, window, history gibi çeşitli yapılarını JS motoru ile entegre eder ve bu sayede JS motoru tarayıcıya ait olan bu yapıları görebilir hale gelir.

Javascript motoru nasıl çalışır?

Javascript motoru genellikle C++ ile yazılmakta ve embed edilmekte olan kütüphanelerdir. Tek başına çalıştırılamamaktadırlar.

2 tipe ayırırsak; Interpreter ve Interpreter + Compiler.

Eğer JS Engine Interpreter tipindeyse, text tabanlı JS kodlarını syntax tree haline getirip çalıştıracaktır. Ya da ilerleyen aşamalarda bytecode haline dönüştürüp çalıştıracaktır. Bu syntax tree veya bytecode üzerinden ekstra bir işlem yapmaz yani performans iyileştirmesi uygulamaz.

Interpreter + Compiler tipinde ise, javascript motorları ekstra olarak Interpreter’a denk ve paralel çalışan Compiler’a sahiptir. Bu compiler sürekli çalışacak uygun kod bölgelerini native olarak derleyecektir. Uzun vadede kodların daha performanslı bir çalışmasını sağlar. Compiler’in etkisini göstermesi için kodun bir süre çalışması gerekmektedir aksi takdirde performans optimizasyonu uygulayamaz.

Sistem şöyle işliyor, Javascript engine içinde bulunduğu ortamdan kodları okur ve gönderir. Bu sayede JS Motoru öncelikle saf metin olan JS kodunu parse edecektir ve bir syntax tree oluşturacaktır.