Koray PEKER
Menu
  • Anasayfa
  • Kütüphane
  • Kategoriler
    • Java
    • Spring
    • Tasarım Şablonları
    • Git
    • Maven
    • ORM Çatıları
    • VCS
    • SDLC
    • DevOps
    • Algoritma
    • Eğitim
    • Diğer
  • Hakkımda
Menu

Java 8 : Nashorn JavaScript

2 Aralık 2018 tarihinde yayımlandı

Java 8, Nashorn motoru ile mevcut Rhino motorunu değiştirmek için geliştirilmiş bir javascript motoru tanıtıldı. Nashorn, kodu doğrudan bellekte derlediği ve bayt kodunu JVM’ye geçirdiği için 2 ila 10 kat daha iyi performans sağlar. Nashorn, performansı geliştirmek için Java 7’de tanıtılan invoke dinamikleri özelliğini kullanıyor. Ayrıca Nashorn motoru, javascript kodlarını konsolda yürütmek için yeni bir komut satırı aracı olan jjs komutunu tanıttı.

JDK’nın olduğu klasöre gidip bin klasörüne bakarsanız jjs.exe‘yi göreceksiniz.

Örneğin aşağı gibi küçük bir kod yazıp sonuçları görelim.

Java
1
<span class="kwd"><img class="wp-image-669 aligncenter" src="https://koraypeker.com/wp-content/uploads/2018/08/jjs2.png" alt="" width="1113" height="198" /></span>

Java içerisinden javascript kodlarını çalıştırma

Script.js dosyasımızı oluşturuyoruz.

Java
1
2
3
var sayHello = function(name) {
    print('Merhaba ' + name);
};

Sonrasında Main sınıfımızdan javascript dosyasını çağırıyoruz.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class deneme {
 
    public static void main(String[] args) throws FileNotFoundException, ScriptException, NoSuchMethodException {
 
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
        engine.eval(new FileReader("script.js"));
 
        Invocable invocable = (Invocable) engine;
 
        Object result = invocable.invokeFunction("sayHello", "Koray PEKER");
    }
 
}

Başka bir örnek

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
 
public class JavascriptTester  {
 
    public static void main(String[] args) throws ScriptException {
 
        ScriptEngine nashornEngine = new ScriptEngineManager().getEngineByName("nashorn");
 
        String name = "Koray PEKER";
 
        nashornEngine.eval("print('" + name + "')");
 
        Integer result = (Integer) nashornEngine.eval("15 + 2");
 
        System.out.println(result.toString());
    }
 
}

Javascript içerisinden java kodlarını çalıştırma

Java sınıfımızı oluşturuyoruz

Java
1
2
3
4
5
6
7
8
package com.koray;
 
public class JavaTest {
 
    static void sayHello(String name) {
        return "Merhaba " + name;
    }
}

Javascript dosyamızı düzenliyoruz.

Java
1
2
3
4
var JavaTestClass = Java.type('com.koray.JavaTest');
 
var result = JavaTestClass.sayHello('Koray PEKER');
print(result);

Kaynaklar

  • https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jjs.html
  • https://winterbe.com/posts/2014/04/05/java8-nashorn-tutorial/#scriptobjectmirror

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

POPÜLER YAZILAR

  • Bir Yazılımcının Sırt Çantası
  • CI (Continuous integration) ve CD (Continuous Delivery/Deployment)
  • NullPointerException’dan Kaçış
  • İlk işime veda :(
  • Yük Testi ve SoapUI
  • Project : Lombok
  • JAR, WAR, EAR Üçlemesi
  • Enumeration nedir ?
  • Mutable ve Immutable nedir ?
  • REST Mimarisi ve RESTful Servisler

Ara

Son Yazılar

  • Çalışma Masam
  • Apache Kafka
  • Postman API’ları Görselleştirme
  • MongoDB Cheat Sheet
  • Splunk 101 – Giriş
  • Yük Testi ve SoapUI
  • Modern Veri Tabanları
  • Senior Stajyer ?!
  • API Dokümantasyon Önemi ve Swagger
  • Kod Tekrarı(Code Duplication) ve DRY

TAKİP ET

©2023 Koray PEKER