java 8 nashorn ve avatar.js
TRANSCRIPT
![Page 2: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/2.jpg)
Nashorn Nedir?
• Java 8 için geliştirilen bir JS motorudur.
• JVM ortamında, Javascript dilini kullanmaya olanak tanır.
• ECMAScript 5.1’i destekler.
![Page 3: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/3.jpg)
Nashorn Nedir?
• Dünyanın en popüler 2 dilini birlikte kullanmaya olanak tanır.
• 2 dilin sahip olduğu geniş değer ırmağını birleştirir. (Bilgi, tecrübe, framework, tools)
![Page 4: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/4.jpg)
Nashorn neyi hedefler?
• ECMAScript-262 sürüm 5.1’i desteklemeli.– Uyumluluk testi sürecinde
• JSR 223 «javax.script» API’lerini desteklemeli.
• Java2JS ve JS2Java desteği olmalı.
• Bir shell aracı olmalı (JJS)
• Performans ve bellek tüketimi büyük ölçüde daha iyi olmalı (Rhino’a göre)
![Page 5: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/5.jpg)
Nashorn neyi hedeflemez?
• Henüz ECMAScript 6 özelliklerini desteklemez.
• Standart olmayan özellikleri desteklemez.
• Nashorn bir browser ortamı değildir.– DOM,CSS, Jquery, Dojo desteklemez.
![Page 6: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/6.jpg)
Neden Nashorn?
• Rhino diğer JS motorlarına göre düşük performans sunuyordu.
• Nashorn bu amaçla sıfırdan yazıldı.
• Rhino JS motoruna göre, 5x performans sunuyor.
![Page 7: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/7.jpg)
JJS aracı
![Page 8: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/8.jpg)
JSR 223 "javax.script" paketi
• Java ortamından Script dillerine erişmek ve kullanmak için özel bileşenler sunar.
![Page 9: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/9.jpg)
Java API – Evaluate Script
ScriptEngineManager em= new ScriptEngineManager();ScriptEngine engine = em.getEngineByName("Nashorn");
engine.eval(" var a=5; var b=6; ");engine.eval(" var c=7; print("Toplam:"+(a+b+c))");
![Page 10: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/10.jpg)
Java API – Object Binding
• Java ortamındanki nesnelerin, JS ortamına eriştirilmesini sağlar.
ScriptEngine engine = engineManager.getEngineByName("Nashorn");
engine.put("name","Emin");engine.put("age" ,28);
![Page 11: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/11.jpg)
Java API – Compilable Arayüzü
• Derlenen bir Script’in tekrar tekrar kullanımına olanak tanır.
Compilable compilable = (Compilable) engine;CompiledScript compiled = compilable.compile("");compiled.eval();
![Page 12: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/12.jpg)
Java API – Invocable Arayüzü
• Java tarafından, Script fonksiyonlarını koşturmak için bulunan opsiyonel bir arayüzdür.
Invocable inv = (Invocable) engine;inv.invokeFunction("funcName",5,4);inv.invokeMethod(context,"funcName",5,4);
![Page 13: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/13.jpg)
Java API – Harici Script
ScriptEngineManager em= new ScriptEngineManager();ScriptEngine engine = em.getEngineByName("js");engine.eval(new FileReader("..."));
![Page 14: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/14.jpg)
JJS – Harici Script
//merhaba.jsprint("Merhaba Dünya");
![Page 15: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/15.jpg)
Java Tiplerini Kullanmak
print(Object); //function Object() { [native code] }print(new Object()); // [object Object]
var Object = java.lang.Object;print(Object); // [JavaClass java.lang.Object]print(new Object()); // java.lang.Object@...
var JavaObject = Java.type("java.lang.Object");print(JavaObject); // [JavaClass java.lang.Object]print(new JavaObject()); // java.lang.Object@...
![Page 16: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/16.jpg)
Java Tiplerini Kullanmak
var IntArray = Java.type("int[]");print(IntArray); // [JavaClass [I]
var intArray = new IntArray(3);print(intArray); // [I@78b1cc93intArray[0]=1;intArray[1]=2;intArray[2]=3;
![Page 17: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/17.jpg)
Java Tiplerini Kullanmak
var StrArray = Java.type("java.lang.String[]");print(StrArray); // [JavaClass [Ljava.lang.String;]
var strArray = new StrArray(3);print(strArray); // [Ljava.lang.String;@1da51a35
strArray[0]="Ali";strArray[1]="Veli";strArray[2]="Selami";
![Page 18: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/18.jpg)
Dizi Tip Dönüşümü (Java.to)
var jsArray = [];jsArray[0] = "Ali";jsArray.push(10);
print(jsArray); // Ali,10
var javaArray= Java.to(jsArray,"java.lang.String[]");
print(javaArray); // [Ljava.lang.String;@1786f9d5print(javaArray[0]); // Aliprint(javaArray.length); // 2
![Page 19: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/19.jpg)
Dizi Tip Dönüşümü (Java.from)
var DoubleArray = Java.type("double[]");var javaArray = new DoubleArray(3);
print(DoubleArray); // [JavaClass [D]print(javaArray); // [D@a74868d
var jsArray = Java.from(javaArray);jsArray.push(7.9);print(jsArray); // 0,0,0,7.9
![Page 20: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/20.jpg)
Dizi Tip Dönüşümü (Java.from)var List = java.util.LinkedList;
var liste = new List();liste.add("Ali");liste.add(5);
print(List); // [JavaClass java.util.LinkedList]print(liste); // [Ali, 5]
var array = Java.from(liste);array.push("Veli");
print(array); // Ali,5,Veli
![Page 21: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/21.jpg)
Java Paketlerinin Yüklenmesi
• Nashorn Java paket ve sınıflarının yüklenmesine doğrudan destek vermez. Onun yerine bir rhino modülünü kullanır.
load("nashorn:mozilla_compat.js");importPackage("java.util");importClass(java.util.Timer);
var list = new ArrayList();
![Page 22: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/22.jpg)
POJO alanlarına erişmek
var geo= new com.kodcu.Geo();geo.en = 5;geo.boy = 10;
![Page 23: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/23.jpg)
Avatar.js
• Node.js programlama modelini ve ortamını JVM ekosistemine katar.
• Node.js = Google v8 + Javascript• Avatar.js = Nashorn + Java + Javascript
![Page 24: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/24.jpg)
Node Asenkron Modeli
![Page 25: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/25.jpg)
Node’un avantajları
• Hafif• Cross-platform• Client ve Sunucuda aynı dil• Npm (Node Package Manager)• Asenkron G/Ç– epool, kqueue, /dev/pool, select, IOCP
• Ölçeklenebilir• Düşük bellek tüketimi• C10K Problemine çözüm sunması
![Page 26: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/26.jpg)
Avatar.js avantajları
• Node uygulamalarını JVM’de koşturur.• Java ve Javascript birlikte kullanılabilir.– JDBC, Concurrency, Java EE
• MultiThreaded uygulamalar geliştirilebilir.– Yüksek CPU kullanım deneyimi
![Page 27: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/27.jpg)
Avatar.js vs Node.js• http://octane-benchmark.googlecode.com/svn/latest/index.html• https://developers.google.com/octane/benchmark
• http://v8.googlecode.com/svn/data/benchmarks/v7/run.html• https://github.com/hakobera/node-v8-benchmark-suite
npm install benchmarknpm install benchmark-octane
![Page 28: Java 8 Nashorn ve Avatar.js](https://reader033.vdocuments.net/reader033/viewer/2022052401/55d578cebb61ebae2f8b45e3/html5/thumbnails/28.jpg)
???