Skill

Nashorn JavaScript Engine (নাশর্ন জাভাস্ক্রিপ্ট ইঞ্জিন)

জাভা (Java 8) - Computer Programming

299

Nashorn হল একটি JavaScript engine যা Java Virtual Machine (JVM)-এর ওপর JavaScript কোড চালাতে সক্ষম। এটি Java 8 সংস্করণে যুক্ত করা হয় এবং Rhino (Java-র পুরোনো JavaScript ইঞ্জিন) এর পরিবর্তে এটি বেশি কার্যকরী, দ্রুত এবং উন্নত পারফরম্যান্স প্রদান করে।

নাশর্ন JavaScript কোডকে Java Virtual Machine (JVM) এর উপর পরিচালনা করতে পারে, যা Java প্রোগ্রামিং ভাষার সঙ্গে JavaScript কোডের মিশ্রণ এবং এক্সিকিউশন সহজ করে তোলে।


Nashorn-এর বৈশিষ্ট্য

  1. Java এবং JavaScript-এর মধ্যে সংযুক্তি:
    • Nashorn ব্যবহার করে JavaScript কোড Java অ্যাপ্লিকেশনগুলির মধ্যে সহজেই এক্সিকিউট করা যায়। আপনি Java থেকে JavaScript মেথড কল করতে পারেন এবং JavaScript-এ লেখা ফাংশনগুলির সাথে Java কোড ইন্টারঅ্যাক্ট করতে পারেন।
  2. উন্নত পারফরম্যান্স:
    • Nashorn বেশ দ্রুত JavaScript কোড এক্সিকিউট করতে পারে কারণ এটি JVM-এর ইনস্ট্রাকশনসের সাথে সংহত করা হয়েছে। এটি প্রক্রিয়া সম্পন্ন করার জন্য JavaScript কোডকে bytecode-এ রূপান্তর করে এবং দ্রুত এক্সিকিউট করে।
  3. Java API এর সঙ্গে ইন্টিগ্রেশন:
    • Nashorn Java API-কে সরাসরি JavaScript কোডে ব্যবহার করতে সক্ষম। এর ফলে JavaScript কোড Java ক্লাস এবং অবজেক্টগুলির সাথে যোগাযোগ করতে পারে।
  4. JSR-223 সমর্থন:
    • Nashorn JSR-223 (Java Specification Request) অনুযায়ী Java-তে স্ক্রিপ্টিং সমর্থন দেয়, যার মাধ্যমে Java-তে বিভিন্ন স্ক্রিপ্টিং ভাষা (যেমন JavaScript) একত্রে কাজ করতে পারে।
  5. Java 8-এর সাথে ঐক্যবদ্ধ:
    • Nashorn Java 8-এর একটি অংশ, এবং Java 8-এ javax.script API ব্যবহারের মাধ্যমে JavaScript কোড চালানোর সুবিধা পাওয়া যায়।

Nashorn ব্যবহার করার উপায়

Java থেকে JavaScript কোড এক্সিকিউট করতে, আপনি Nashorn ইঞ্জিন ব্যবহার করতে পারেন Java 8-এর javax.script API-এর মাধ্যমে। এর জন্য ScriptEngine এবং ScriptEngineManager ব্যবহার করা হয়।

উদাহরণ ১: Java থেকে JavaScript এক্সিকিউট করা

import javax.script.*;

public class NashornExample {
    public static void main(String[] args) throws ScriptException {
        // ScriptEngineManager তৈরি করা
        ScriptEngineManager manager = new ScriptEngineManager();
        
        // Nashorn স্ক্রিপ্ট ইঞ্জিন তৈরি করা
        ScriptEngine engine = manager.getEngineByName("nashorn");
        
        // JavaScript কোড এক্সিকিউট করা
        engine.eval("print('Hello from Nashorn!');");
    }
}

এই কোডে, Java থেকে Nashorn ইঞ্জিন ব্যবহার করে একটি সহজ JavaScript প্রোগ্রাম চালানো হয়েছে যা কনসোলে "Hello from Nashorn!" মুদ্রণ করবে।

উদাহরণ ২: JavaScript থেকে Java কোড ব্যবহার করা

import javax.script.*;

public class NashornExample {
    public static void main(String[] args) throws ScriptException {
        // ScriptEngineManager তৈরি করা
        ScriptEngineManager manager = new ScriptEngineManager();
        
        // Nashorn স্ক্রিপ্ট ইঞ্জিন তৈরি করা
        ScriptEngine engine = manager.getEngineByName("nashorn");
        
        // JavaScript কোডে Java কোড ব্যবহার করা
        engine.eval("var list = new java.util.ArrayList();");
        engine.eval("list.add('Java from JavaScript');");
        engine.eval("print(list.get(0));");
    }
}

এখানে, JavaScript কোডের মধ্যে java.util.ArrayList ক্লাস ব্যবহার করা হয়েছে এবং JavaScript কোডের মাধ্যমে Java-র অবজেক্ট তৈরি করা হয়েছে।

উদাহরণ ৩: JavaScript ফাংশনকে Java-তে কল করা

import javax.script.*;

public class NashornExample {
    public static void main(String[] args) throws ScriptException, NoSuchMethodException {
        // ScriptEngineManager তৈরি করা
        ScriptEngineManager manager = new ScriptEngineManager();
        
        // Nashorn স্ক্রিপ্ট ইঞ্জিন তৈরি করা
        ScriptEngine engine = manager.getEngineByName("nashorn");
        
        // JavaScript ফাংশন ডিফাইন করা
        engine.eval("function sayHello(name) { return 'Hello, ' + name; }");
        
        // JavaScript ফাংশন Java থেকে কল করা
        Invocable invocable = (Invocable) engine;
        String result = (String) invocable.invokeFunction("sayHello", "World");
        System.out.println(result);  // Output: Hello, World
    }
}

এখানে, JavaScript-এ একটি ফাংশন sayHello() তৈরি করা হয়েছে এবং Java-এ invokeFunction() ব্যবহার করে সেই ফাংশন কল করা হয়েছে।


Nashorn এর সুবিধা

  1. Java এবং JavaScript এর সমন্বয়:
    • Nashorn Java এবং JavaScript এর মধ্যে ডেটা শেয়ারিং এবং ফাংশন এক্সিকিউশন সহজ করে তোলে।
  2. স্কেলেবিলিটি এবং পারফরম্যান্স:
    • Nashorn, JVM এর সুবিধা নিয়ে JavaScript কোড দ্রুত এক্সিকিউট করতে সহায়ক। এটি Java এর শক্তিশালী এবং দ্রুত এক্সিকিউশন ক্ষমতা ব্যবহার করে।
  3. Java API সমর্থন:
    • Nashorn Java API সরাসরি ব্যবহার করার সুবিধা দেয়, যা Java এবং JavaScript একে অপরের মধ্যে কার্যকরী ইন্টারঅ্যাকশন তৈরি করতে সহায়ক।
  4. JSR-223 সমর্থন:
    • Nashorn JSR-223 এর মাধ্যমে স্ক্রিপ্টিং ভাষার ব্যবহারের সুযোগ প্রদান করে, যেখানে Java-তে JavaScript বা অন্য স্ক্রিপ্টিং ভাষার মাধ্যমে কোডিং করা সম্ভব।

Nashorn এর সীমাবদ্ধতা

  1. JavaScript ES6 সমর্থন:
    • Nashorn JavaScript ES6 বা এর পরবর্তী সংস্করণগুলির (যেমন ES7, ES8) সম্পূর্ণ সমর্থন প্রদান করে না। তাই, যদি আপনি আধুনিক JavaScript বৈশিষ্ট্যগুলি ব্যবহার করতে চান, তাহলে আপনাকে বিকল্প ইঞ্জিন ব্যবহার করতে হতে পারে যেমন GraalVM বা Node.js
  2. Deprecation:
    • Nashorn ইঞ্জিন Java 11 থেকে ডিপ্রিকেটেড (deprecated) হয়ে গেছে এবং ভবিষ্যতে এটি সরিয়ে নেওয়া হতে পারে। Java 11 থেকে আপনি GraalVM বা অন্য JavaScript ইঞ্জিন ব্যবহার করার জন্য সুপারিশ করা হয়।

সারসংক্ষেপ

Nashorn JavaScript Engine Java 8 এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা Java Virtual Machine (JVM) এর উপর JavaScript কোড চালাতে সহায়ক। এটি Java এবং JavaScript এর মধ্যে মিশ্রণ এবং এক্সিকিউশন সহজ করে তোলে এবং Java API এর সঙ্গে স্ক্রিপ্টিং ভাষার ইন্টিগ্রেশন সমর্থন করে। তবে, Java 11 থেকে এটি ডিপ্রিকেটেড হয়ে গেছে, এবং ভবিষ্যতে GraalVM বা অন্য নতুন JavaScript ইঞ্জিন ব্যবহার করার জন্য পরামর্শ দেয়া হচ্ছে।

Content added By

Nashorn হল একটি JavaScript Engine যা Java 8-এ অন্তর্ভুক্ত করা হয়েছিল। এটি Java Virtual Machine (JVM)-এ JavaScript কোড চালানোর জন্য একটি উন্নত ইঞ্জিন। Nashorn Oracle কর্তৃক তৈরি করা হয়েছে, এবং এটি Rhino JavaScript Engine এর নতুন সংস্করণ হিসেবে কাজ করেছে। Nashorn ইঞ্জিনটি JavaScript কোডকে দ্রুত এবং কার্যকরভাবে JVM-এ রান করার জন্য ডিজাইন করা হয়েছে।

Nashorn JavaScript Engine-এর ভূমিকা Java অ্যাপ্লিকেশন এবং JavaScript কোডের মধ্যে ব্রিজ হিসেবে কাজ করা। এটি Java এবং JavaScript এর মধ্যে ইন্টিগ্রেশন এবং কমিউনিকেশন সহজ করেছে, যা আগে Java-তে JavaScript চালাতে Rhino ব্যবহার করা হতো। Nashorn উন্নত পারফরম্যান্স এবং কম মেমরি ব্যবহারের জন্য ডিজাইন করা হয়েছিল।


Nashorn JavaScript Engine এর প্রধান বৈশিষ্ট্যসমূহ:

  1. Java Virtual Machine (JVM) এর সাথে সংহতকরণ:
    Nashorn JavaScript কোডকে JVM-এ চলানোর জন্য ব্যবহার করা হয়, যার ফলে Java এবং JavaScript-এর মধ্যে নির্বিঘ্নে কাজ করা সম্ভব হয়। এটি Java API-র সাথে সহজে কাজ করতে সক্ষম।
  2. ফাস্ট পারফরম্যান্স:
    Nashorn, Rhino ইঞ্জিনের তুলনায় অনেক দ্রুত, কারণ এটি JavaScript কোডের জন্য Java bytecode জেনারেট করে এবং JVM এর JIT (Just-In-Time) কম্পাইলার ব্যবহার করে। এর ফলে JavaScript কোড চালানোর সময় পারফরম্যান্সের উন্নতি হয়।
  3. JavaScript কোডের মধ্যে Java অবজেক্ট ব্যবহার করা:
    Nashorn JavaScript কোডের মধ্যে Java ক্লাস এবং অবজেক্টের ব্যবহারকে খুব সহজ করে তোলে। Java অবজেক্ট JavaScript এ পাস করা যায় এবং JavaScript থেকে Java অবজেক্ট ব্যবহার করা যায়।
  4. ECMAScript 5.1 সমর্থন:
    Nashorn ECMAScript 5.1 স্ট্যান্ডার্ড পর্যন্ত সমর্থন করে, এবং কিছু ক্ষেত্রেও ECMAScript 6-এর ফিচারগুলো সমর্থন করার চেষ্টা করা হয়েছে।

Nashorn এর ভূমিকা এবং ব্যবহার

Nashorn মূলত Java এবং JavaScript-কে একত্রে ব্যবহারের জন্য তৈরি করা হয়েছিল। এটি Java অ্যাপ্লিকেশনগুলিতে JavaScript ব্যবহারের সুযোগ প্রদান করে, বিশেষ করে যেখানে JavaScript কোড ব্যবহার করে ডাইনামিক আচরণ প্রয়োজন হয়।

১. Java অ্যাপ্লিকেশন থেকে JavaScript চালানো:

Nashorn Java-তে JavaScript কোড রান করানোর জন্য একটি ইন্টিগ্রেটেড পরিবেশ প্রদান করে। এর মাধ্যমে Java প্রোগ্রামাররা JavaScript কোড সহজে এক্সিকিউট করতে পারে এবং JavaScript কোডের মধ্যে Java অবজেক্ট ব্যবহার করতে পারে।

উদাহরণ:

import javax.script.*;

public class NashornExample {
    public static void main(String[] args) throws ScriptException {
        // Create a ScriptEngine for Nashorn
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");

        // Run JavaScript code
        engine.eval("print('Hello from JavaScript!')");
    }
}

এখানে, Java অ্যাপ্লিকেশন থেকে JavaScript কোড চালানো হয়েছে এবং এটি কনসোলে "Hello from JavaScript!" প্রিন্ট করবে।

২. JavaScript থেকে Java ব্যবহার করা:

Nashorn JavaScript কোডের মধ্যে Java অবজেক্ট বা ক্লাস ব্যবহার করার ক্ষমতা প্রদান করে। এটি Java অ্যাপ্লিকেশনে JavaScript ফাংশনালিটি যোগ করার একটি শক্তিশালী উপায়।

উদাহরণ:

import javax.script.*;

public class NashornExample {
    public static void main(String[] args) throws ScriptException, NoSuchMethodException {
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");

        // Java Object in JavaScript
        engine.eval("var ArrayList = Java.type('java.util.ArrayList');");
        engine.eval("var list = new ArrayList();");
        engine.eval("list.add('Hello');");
        engine.eval("list.add('from JavaScript');");
        
        // Print the list
        engine.eval("print(list);");  // Output: [Hello, from JavaScript]
    }
}

এখানে, Nashorn ব্যবহার করে JavaScript কোডের মধ্যে Java ArrayList ব্যবহার করা হয়েছে। JavaScript থেকে ArrayList তৈরি করা এবং তার মধ্যে মান যোগ করা হয়েছে।


Nashorn এর উন্নত পারফরম্যান্স এবং তুলনা

Nashorn অনেক উন্নত পারফরম্যান্স এবং কম মেমরি ব্যবহারের জন্য Rhino ইঞ্জিনের তুলনায় অনেক বেশি কার্যকরী। Rhino ইঞ্জিনে JavaScript কোড রান করার সময় JavaScript কোডকে Java bytecode এ রূপান্তর করা হতো, কিন্তু Nashorn এটি সম্পূর্ণরূপে JVM bytecode-এ রূপান্তর করে, যার ফলে এটি দ্রুত এবং দক্ষ।


Nashorn এর ব্যাবহার থেকে GraalVM-এ স্থানান্তর

Java 11-এ Nashorn ইঞ্জিনটি ডিপ্রিকেটেড করা হয়েছে এবং ভবিষ্যতে এটি Java 15-এ সরিয়ে ফেলা হবে। এর পরিবর্তে, GraalVM নামক একটি নতুন ইঞ্জিনের মাধ্যমে JavaScript এবং অন্যান্য ভাষার সমর্থন দেওয়া হচ্ছে। GraalVM একটি উচ্চ-পারফরম্যান্স ভার্চুয়াল মেশিন যা Java, JavaScript, Ruby, Python, R, এবং অন্যান্য ভাষার জন্য সমর্থন প্রদান করে।


সারসংক্ষেপ

  • Nashorn হল একটি JavaScript ইঞ্জিন যা Java 8-এ Java Virtual Machine (JVM)-এ JavaScript কোড চালানোর জন্য তৈরি করা হয়েছিল।
  • এটি Java এবং JavaScript এর মধ্যে সহজ এবং দ্রুত যোগাযোগের ব্যবস্থা প্রদান করে।
  • Nashorn JavaScript কোডের মধ্যে Java অবজেক্ট ব্যবহার করতে সহায়তা করে।
  • এটি Rhino JavaScript ইঞ্জিনের তুলনায় উন্নত পারফরম্যান্স প্রদান করে এবং Java অ্যাপ্লিকেশনগুলিতে JavaScript কোড পরিচালনা করতে সাহায্য করে।
  • Java 11-এ Nashorn ডিপ্রিকেটেড হয়েছে এবং এখন GraalVM এর মাধ্যমে JavaScript সহ অন্যান্য ভাষার সমর্থন করা হচ্ছে।

Nashorn JavaScript Engine Java-তে JavaScript ব্যবহারের একটি শক্তিশালী টুল, তবে এর বিকল্প হিসেবে ভবিষ্যতে GraalVM ব্যবহারের জন্য উন্নত পদ্ধতি হিসেবে প্রস্তাব করা হচ্ছে।

Content added By

Java এবং JavaScript দুটি আলাদা প্রোগ্রামিং ভাষা হলেও, তাদের মধ্যে ইন্টিগ্রেশন বা সমন্বয় করা সম্ভব এবং বিভিন্ন পরিস্থিতিতে এটি অত্যন্ত কার্যকরী হতে পারে। Java-তে সার্ভার-সাইড অ্যাপ্লিকেশন তৈরি করা হয় এবং JavaScript সাধারণত ক্লায়েন্ট-সাইড (web browsers) স্ক্রিপ্টিং ভাষা হিসেবে ব্যবহৃত হয়। Java এবং JavaScript এর ইন্টিগ্রেশন করার মাধ্যমে আমরা একে অপরের ক্ষমতাগুলি কাজে লাগাতে পারি।

১. Java এবং JavaScript এর মধ্যে ইন্টিগ্রেশন পদ্ধতিগুলি

১.১ JavaScript এর মাধ্যমে Java অ্যাপ্লিকেশনকে চালানো (Java in the Browser)

Java অ্যাপ্লিকেশনকে ব্রাউজারে চালানো অনেকটা চ্যালেঞ্জিং হতে পারে, কারণ Java সাধারণত সার্ভার-সাইড ভাষা হিসেবে ব্যবহৃত হয়। তবে, Java Applets বা Java Web Start-এর মাধ্যমে Java কে ব্রাউজারে ব্যবহার করা সম্ভব। তবে, এই প্রযুক্তিগুলি বর্তমানে পুরোনো হয়ে গেছে এবং মাইনর নিরাপত্তা ঝুঁকি সৃষ্টি করতে পারে, তাই আধুনিক ওয়েব ডেভেলপমেন্টে Java-এর এই ব্যবহার কমে গেছে।

১.২ Java (Backend) এবং JavaScript (Frontend) এর মধ্যে ইন্টিগ্রেশন (Client-Server Model)

এটি একটি সাধারণ ইন্টিগ্রেশন কৌশল যেখানে Java সার্ভার-সাইড লজিক (backend) এবং JavaScript ক্লায়েন্ট-সাইড লজিক (frontend) হিসেবে কাজ করে। এখানে AJAX এবং RESTful APIs বা WebSockets ব্যবহার করা হয়।

পদ্ধতি:

  • Java (Backend): Java সিস্টেমের মধ্যে API তৈরি করা হয় (যেমন RESTful API, SOAP API ইত্যাদি), যা JSON বা XML ফরম্যাটে ডেটা প্রদান করে।
  • JavaScript (Frontend): JavaScript ব্যবহার করে HTTP রিকোয়েস্ট (যেমন AJAX বা Fetch API) পাঠানো হয় এবং সেখান থেকে ডেটা গ্রহণ করে UI-তে প্রদর্শিত হয়।

উদাহরণ:
Java (Backend):

@Path("/hello")
public class HelloWorld {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String sayHello() {
        return "Hello, World!";
    }
}

JavaScript (Frontend):

fetch('/hello')
  .then(response => response.text())
  .then(data => console.log(data)); // Output: Hello, World!

এখানে Java-তে একটি RESTful API তৈরি করা হয়েছে এবং JavaScript এর মাধ্যমে HTTP রিকোয়েস্ট পাঠিয়ে ডেটা গ্রহণ করা হয়েছে।

১.৩ JavaScript কে Java এ নেটিভভাবে রেন্ডার করা (JavaScript Engine Inside Java)

Java-তে Nashorn বা GraalVM ইঞ্জিন ব্যবহার করে JavaScript কোড Java অ্যাপ্লিকেশনের মধ্যে রান করা যেতে পারে।

  • Nashorn JavaScript Engine: Java 8 থেকে Nashorn JavaScript engine অন্তর্ভুক্ত করা হয়েছে, যা Java অ্যাপ্লিকেশন থেকে JavaScript কোড রান করতে সক্ষম।
  • GraalVM: এটি একটি উচ্চ কর্মক্ষমতা সম্পন্ন জেনারেল-পারপাস ভার্চুয়াল মেশিন যা JavaScript, Java, Ruby, R এবং অন্যান্য ভাষাগুলির জন্য সমর্থন প্রদান করে।

উদাহরণ:
Java-তে JavaScript রান করার জন্য Nashorn ইঞ্জিন ব্যবহার করা:

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class Main {
    public static void main(String[] args) throws Exception {
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
        engine.eval("print('Hello from JavaScript')");
    }
}

এখানে, Java এর মধ্যে JavaScript কোড চালানোর জন্য Nashorn ইঞ্জিন ব্যবহার করা হয়েছে।

১.৪ JavaScript কোডে Java ব্যবহার করা (Java to JavaScript via JavaScript Engines)

এটি JavaScript কোডের মাধ্যমে Java লাইব্রেরি এবং ফাংশন ব্যবহার করা। উদাহরণস্বরূপ, Nashorn ইঞ্জিনের মাধ্যমে Java ক্লাস এবং মেথড JavaScript থেকে কল করা যায়।

উদাহরণ:

var system = new JavaAdapter(java.lang.System);
system.out.println("Hello from JavaScript calling Java");

এখানে JavaScript এর মাধ্যমে Java এর System.out.println মেথড কল করা হয়েছে।


২. Java এবং JavaScript এর মধ্যে যোগাযোগের মাধ্যমসমূহ

২.১ RESTful Web Services (API Integration)

Java এবং JavaScript এর মধ্যে ডেটা আদান-প্রদান করার একটি সাধারণ পদ্ধতি হল RESTful Web Services (API)। Java সার্ভার সাধারণত RESTful API তৈরি করে, যা JavaScript ক্লায়েন্ট থেকে HTTP রিকোয়েস্ট গ্রহণ করে এবং JSON বা XML ফরম্যাটে ডেটা প্রদান করে।

উদাহরণ:
Java (Backend) - Spring Boot বা JAX-RS ব্যবহার করে REST API তৈরি করা:

@RestController
@RequestMapping("/api")
public class MyController {
    @GetMapping("/greet")
    public String greet() {
        return "Hello from Java API!";
    }
}

JavaScript (Frontend) - AJAX কল ব্যবহার করে API থেকে ডেটা নেওয়া:

fetch('/api/greet')
  .then(response => response.text())
  .then(data => console.log(data)); // Output: Hello from Java API!

২.২ WebSockets (Real-time Communication)

Java এবং JavaScript এর মধ্যে রিয়েল-টাইম ডেটা ট্রান্সফার করার জন্য WebSockets ব্যবহার করা যেতে পারে। এটি একটি ডুয়াল-পার্টি যোগাযোগের পদ্ধতি যা ক্লায়েন্ট এবং সার্ভার উভয়ের পক্ষ থেকেই তথ্য পাঠাতে পারে।

উদাহরণ:
Java (Backend) - WebSocket Server:

@ServerEndpoint("/chat")
public class WebSocketServer {
    @OnMessage
    public void onMessage(String message, Session session) {
        session.getBasicRemote().sendText("Message received: " + message);
    }
}

JavaScript (Frontend) - WebSocket Client:

var socket = new WebSocket("ws://localhost:8080/chat");
socket.onopen = function() {
    socket.send("Hello from JavaScript!");
};
socket.onmessage = function(event) {
    console.log(event.data); // Output: Message received: Hello from JavaScript!
};

৩. JavaScript কে Java-তে রান করানো (JavaScript Execution Inside Java)

JVM-এ JavaScript রান করা:

Java-তে JavaScript রান করার জন্য GraalVM এবং Nashorn JavaScript ইঞ্জিন ব্যবহার করা যেতে পারে, যা আপনাকে Java থেকে JavaScript কোড চালানোর সুবিধা দেয়।

সারসংক্ষেপ

Java এবং JavaScript দুটি আলাদা ভাষা হলেও, তাদের মধ্যে ইন্টিগ্রেশন বেশ কার্যকরী। Java সাধারণত সার্ভার-সাইড অ্যাপ্লিকেশনগুলির জন্য ব্যবহৃত হয় এবং JavaScript ক্লায়েন্ট-সাইড (web browsers) অ্যাপ্লিকেশনগুলির জন্য ব্যবহৃত হয়। RESTful APIs, WebSockets, এবং JavaScript Engines এর মাধ্যমে Java এবং JavaScript এর মধ্যে ডেটা এবং ফাংশন এক্সচেঞ্জ করা সম্ভব, যা ডেভেলপারদের জন্য একটি শক্তিশালী সমাধান প্রদান করে।

Content added By

Java 8 এ Java-তে JavaScript কোড চালানোর জন্য Nashorn ইঞ্জিন যুক্ত করা হয়েছে। Nashorn হল একটি JavaScript ইঞ্জিন যা Java Virtual Machine (JVM)-এ রান করতে পারে এবং এটি Java-কে JavaScript কোড রান করার সুবিধা প্রদান করে। এর মাধ্যমে আপনি Java থেকে JavaScript কোড ইন্টারপ্রেট এবং এক্সিকিউট করতে পারবেন। Nashorn ECMAScript 5.1 অনুসারে JavaScript কোড সাপোর্ট করে।

এখানে Nashorn ব্যবহার করে JavaScript কোড চালানোর প্রক্রিয়া বিস্তারিতভাবে আলোচনা করা হয়েছে।


১. Nashorn ইঞ্জিন সেটআপ

Java 8 বা পরবর্তী সংস্করণে, Nashorn ইঞ্জিন ডিফল্টভাবে Java-র সাথে অন্তর্ভুক্ত থাকে। আপনাকে আলাদাভাবে এটি ইনস্টল করতে হবে না।

২. Java থেকে JavaScript চালানো

Java থেকে JavaScript কোড চালানোর জন্য, ScriptEngine API ব্যবহার করা হয় যা Nashorn ইঞ্জিনের মাধ্যমে JavaScript কোড রান করতে সক্ষম।

উদাহরণ ১: সহজ JavaScript কোড চালানো

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class NashornExample {
    public static void main(String[] args) {
        // ScriptEngineManager তৈরি করুন
        ScriptEngineManager manager = new ScriptEngineManager();
        
        // Nashorn স্ক্রিপ্ট ইঞ্জিন তৈরি করুন
        ScriptEngine engine = manager.getEngineByName("nashorn");

        // JavaScript কোড চালানো
        try {
            engine.eval("print('Hello from JavaScript!');");
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }
}

এখানে, ScriptEngineManager এর মাধ্যমে Nashorn ইঞ্জিন তৈরি করা হয়েছে এবং eval() মেথডের মাধ্যমে JavaScript কোড চালানো হয়েছে।

Output:

Hello from JavaScript!

৩. JavaScript ভ্যারিয়েবল ব্যবহার করা

আপনি Java থেকে JavaScript-এ ভ্যারিয়েবল পাস করতে পারেন এবং JavaScript-এ কাজ করতে পারেন।

উদাহরণ ২: Java ভ্যারিয়েবল JavaScript-এ পাস করা

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class NashornExample {
    public static void main(String[] args) {
        // ScriptEngineManager তৈরি করুন
        ScriptEngineManager manager = new ScriptEngineManager();
        
        // Nashorn স্ক্রিপ্ট ইঞ্জিন তৈরি করুন
        ScriptEngine engine = manager.getEngineByName("nashorn");

        // Java ভ্যারিয়েবল
        String name = "John";

        // JavaScript কোডে Java ভ্যারিয়েবল পাস করা
        try {
            engine.put("name", name);  // Java ভ্যারিয়েবল পাস করা
            engine.eval("print('Hello, ' + name + '!');");  // JavaScript কোড
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }
}

এখানে, engine.put("name", name) দিয়ে Java ভ্যারিয়েবল JavaScript কোডে পাস করা হয়েছে। JavaScript কোডে name ভ্যারিয়েবলটি ব্যবহার করা হয়েছে।

Output:

Hello, John!

৪. JavaScript ফাংশন কল করা

JavaScript ফাংশন Java থেকে কল করতে পারেন এবং তার রিটার্ন ভ্যালু ব্যবহার করতে পারেন।

উদাহরণ ৩: JavaScript ফাংশন কল করা

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import javax.script.Invocable;

public class NashornExample {
    public static void main(String[] args) {
        // ScriptEngineManager তৈরি করুন
        ScriptEngineManager manager = new ScriptEngineManager();
        
        // Nashorn স্ক্রিপ্ট ইঞ্জিন তৈরি করুন
        ScriptEngine engine = manager.getEngineByName("nashorn");

        // JavaScript ফাংশন তৈরি
        String script = "function greet(name) { return 'Hello, ' + name; }";

        try {
            // JavaScript কোড এক্সিকিউট করা
            engine.eval(script);

            // Invocable ইন্টারফেস ব্যবহার করে ফাংশন কল করা
            Invocable invocable = (Invocable) engine;
            String result = (String) invocable.invokeFunction("greet", "Alice");

            System.out.println(result);  // Output: Hello, Alice
        } catch (ScriptException | NoSuchMethodException e) {
            e.printStackTrace();
        }
    }
}

এখানে, JavaScript-এ একটি greet ফাংশন তৈরি করা হয়েছে এবং Java থেকে সেই ফাংশন কল করা হয়েছে। Invocable ইন্টারফেস ব্যবহার করে invokeFunction মেথডের মাধ্যমে JavaScript ফাংশনটি কল করা হয়েছে এবং তার রিটার্ন ভ্যালু নেয়া হয়েছে।

Output:

Hello, Alice

৫. Nashorn এবং Java Object Interaction

Nashorn ইঞ্জিনের মাধ্যমে Java Object গুলিও JavaScript কোডে ব্যবহার করা যেতে পারে। এটি Java-র অবজেক্টকে JavaScript কোডে পাস করতে সক্ষম করে।

উদাহরণ ৪: Java Object পাস করা

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class NashornExample {
    public static void main(String[] args) {
        // ScriptEngineManager তৈরি করুন
        ScriptEngineManager manager = new ScriptEngineManager();
        
        // Nashorn স্ক্রিপ্ট ইঞ্জিন তৈরি করুন
        ScriptEngine engine = manager.getEngineByName("nashorn");

        // Java Object তৈরি
        Person person = new Person("Alice", 25);

        // Java Object পাস করা
        engine.put("person", person);

        // JavaScript কোডে Java Object ব্যবহার করা
        String script = "print('Name: ' + person.getName() + ', Age: ' + person.getAge());";
        
        try {
            engine.eval(script);
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }

    static class Person {
        private String name;
        private int age;

        Person(String name, int age) {
            this.name = name;
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public int getAge() {
            return age;
        }
    }
}

এখানে, Person নামক একটি Java ক্লাস তৈরি করা হয়েছে এবং তার অবজেক্ট engine.put("person", person) এর মাধ্যমে JavaScript কোডে পাস করা হয়েছে।

Output:

Name: Alice, Age: 25

সারসংক্ষেপ

  • Nashorn হল Java 8-এ অন্তর্ভুক্ত একটি JavaScript ইঞ্জিন, যা Java-এ JavaScript কোড এক্সিকিউট করার সুযোগ দেয়।
  • ScriptEngine API ব্যবহার করে Java থেকে JavaScript কোড চালানো সম্ভব।
  • JavaScript কোডে Java Objects পাস করা, JavaScript ফাংশন কল করা, এবং JavaScript কোডে Java ভ্যারিয়েবল ব্যবহার করা সম্ভব।

Nashorn ব্যবহারের মাধ্যমে Java এবং JavaScript এর মধ্যে সহজে ইন্টিগ্রেশন করা যায়, যা বিভিন্ন ধরনের কোড এক্সিকিউশনের ক্ষেত্রে কার্যকরী হতে পারে।

Content added By

Java 8 এ Nashorn JavaScript ইঞ্জিন যোগ করা হয়েছিল, যা ScriptEngine API এর মাধ্যমে Java থেকে JavaScript কোড চালানোর সুবিধা প্রদান করে। Nashorn JavaScript ইঞ্জিন Java-এ একটি দ্রুত এবং কার্যকরী JavaScript ইন্টারপ্রেটার হিসেবে কাজ করে, যা javax.script প্যাকেজের অংশ। Nashorn-কে ব্যবহার করে Java কোডে JavaScript কোড ইন্টিগ্রেট করা যেতে পারে, এবং JavaScript এর ফাংশনালিটি Java কোডের মধ্যে ব্যবহার করা সম্ভব।

১. Nashorn ইঞ্জিন এবং ScriptEngine API

ScriptEngine হলো Java SE এর অংশ, যা স্ক্রিপ্টিং ভাষার কোড (যেমন JavaScript, Python, Ruby) Java অ্যাপ্লিকেশনের মধ্যে চালানোর জন্য ব্যবহৃত হয়। Nashorn JavaScript ইঞ্জিন Java-তে JavaScript চালানোর জন্য ব্যবহৃত হয়, এবং ScriptEngine এর মাধ্যমে এটি পরিচালনা করা হয়।

২. Nashorn JavaScript ইঞ্জিন ব্যবহার

Java 8-এ Nashorn ইঞ্জিনকে ব্যবহার করতে ScriptEngineManager এবং ScriptEngine ব্যবহার করা হয়। নিচে একটি উদাহরণ দেয়া হল যেখানে Java-তে JavaScript কোড চালানো হয়েছে।

উদাহরণ ১: Java-তে JavaScript কোড চালানো

import javax.script.*;

public class NashornExample {
    public static void main(String[] args) {
        // ScriptEngineManager তৈরি করা
        ScriptEngineManager manager = new ScriptEngineManager();
        
        // Nashorn ইঞ্জিন তৈরি করা
        ScriptEngine engine = manager.getEngineByName("nashorn");
        
        // JavaScript কোডের স্ট্রিং
        String script = "var greeting = 'Hello, Nashorn!'; greeting;";
        
        try {
            // JavaScript কোড চালানো এবং ফলাফল পাওয়া
            Object result = engine.eval(script);
            
            // ফলাফল প্রিন্ট করা
            System.out.println(result);  // Output: Hello, Nashorn!
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }
}

এখানে, ScriptEngineManager ব্যবহৃত হয়েছে Nashorn ইঞ্জিন তৈরি করার জন্য এবং eval() মেথডের মাধ্যমে JavaScript কোড চালানো হয়েছে। এর মাধ্যমে, Java কোডে JavaScript কোড চালানো সম্ভব হয়েছে।


৩. JavaScript ফাংশন Java থেকে কল করা

আপনি JavaScript কোডে Java ফাংশন বা ভ্যারিয়েবলও ব্যবহার করতে পারেন, এবং Java থেকে সেই JavaScript ফাংশন বা ভ্যারিয়েবল অ্যাক্সেস করতে পারেন।

উদাহরণ ২: JavaScript ফাংশন Java থেকে কল করা

import javax.script.*;

public class NashornFunctionExample {
    public static void main(String[] args) {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("nashorn");
        
        // JavaScript ফাংশন স্ট্রিং হিসেবে তৈরি করা
        String script = "function add(a, b) { return a + b; }";
        
        try {
            // JavaScript ফাংশন ইভ্যালুয়েট করা
            engine.eval(script);
            
            // JavaScript ফাংশন কল করা
            Invocable invocable = (Invocable) engine;
            Object result = invocable.invokeFunction("add", 5, 10);
            
            // ফলাফল প্রিন্ট করা
            System.out.println(result);  // Output: 15
        } catch (ScriptException | NoSuchMethodException e) {
            e.printStackTrace();
        }
    }
}

এখানে, add নামক একটি JavaScript ফাংশন তৈরি করা হয়েছে এবং পরে invokeFunction() মেথডের মাধ্যমে সেই ফাংশনকে Java থেকে কল করা হয়েছে। ফলস্বরূপ, add(5, 10) ফাংশনের ফলাফল 15 প্রিন্ট করা হয়েছে।


৪. Java Objects ব্যবহার JavaScript কোডে

Nashorn ব্যবহার করে আপনি Java Objects এবং Java Classes কে JavaScript কোডে ব্যবহার করতে পারেন।

উদাহরণ ৩: Java Object ব্যবহার JavaScript কোডে

import javax.script.*;

public class JavaObjectInJavaScript {
    public static void main(String[] args) {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("nashorn");
        
        // Java Object তৈরি
        String javaCode = "var list = new java.util.ArrayList();"
                        + "list.add('Java');"
                        + "list.add('JavaScript');"
                        + "list;";
        
        try {
            // JavaScript কোড চালানো এবং Java Object ব্যবহৃত হয়েছে
            Object result = engine.eval(javaCode);
            
            // ফলাফল প্রিন্ট করা
            System.out.println(result);  // Output: [Java, JavaScript]
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }
}

এখানে, java.util.ArrayList নামক Java ক্লাস JavaScript কোডে ব্যবহার করা হয়েছে এবং এটি JavaScript কোডের মধ্যে এক্সেস করা হয়েছে।


৫. Java থেকে JavaScript Object ব্যবহার

Java Objects এবং JavaScript এর মধ্যে ডেটা পাস করতে Nashorn ব্যবহার করা যেতে পারে, যাতে Java Objects JavaScript এ ব্যবহার করা যায় এবং JavaScript এর মান Java এ ফেরত আনা যায়।

উদাহরণ ৪: Java থেকে JavaScript Object ব্যবহার করা

import javax.script.*;

public class JavaObjectToJS {
    public static void main(String[] args) {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("nashorn");
        
        // Java Object তৈরি
        String script = "var person = {name: 'John', age: 30};"
                      + "person.name + ' is ' + person.age + ' years old';";
        
        try {
            // JavaScript Object ব্যবহার
            Object result = engine.eval(script);
            System.out.println(result);  // Output: John is 30 years old
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }
}

এখানে, JavaScript Object তৈরি করা হয়েছে এবং সেই Object এর প্রপার্টি Java থেকে এক্সেস করা হয়েছে।


সারসংক্ষেপ

  • Nashorn হল Java 8 এর একটি JavaScript ইঞ্জিন যা ScriptEngine API এর মাধ্যমে Java থেকে JavaScript কোড পরিচালনা করতে সহায়তা করে।
  • ScriptEngine ব্যবহার করে Java থেকে JavaScript কোড ইভ্যালুয়েট করা, JavaScript ফাংশন Java থেকে কল করা, এবং Java Objects JavaScript কোডে ব্যবহার করা সম্ভব।
  • Nashorn একটি শক্তিশালী টুল যা Java-তে JavaScript কোডের কার্যকারিতা ইন্টিগ্রেট করতে এবং উন্নত স্ক্রিপ্টিং সমাধান প্রদান করতে সাহায্য করে।

Java 8 এর Nashorn ইঞ্জিন আপনাকে Java এবং JavaScript কোডের মধ্যে ইন্টিগ্রেশন করার সুযোগ দেয়, যা আপনাকে একত্রিত প্রোগ্রামিং সমাধান তৈরি করতে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...