WebAssembly और Java के साथ काम करना: A से Z तक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

WebAssembly और Java के साथ काम करना: A से Z तक

\n\n

WebAssembly (Wasm) एक निम्न-स्तरीय बाइनरी निर्देश प्रारूप है, जिसे ब्राउज़र और अन्य वातावरणों में निष्पादन के लिए डिज़ाइन किया गया है। यह उच्च-स्तरीय भाषाओं (C, C++, Rust, Go) में लिखे कोड को नेटिव के करीब प्रदर्शन के साथ चलाने की अनुमति देता है। Java डेवलपर्स के लिए, WebAssembly नए क्षितिज खोलता है: अब JVM कोड को Wasm में संकलित किया जा सकता है और क्लाइंट साइड, सर्वर वातावरण या आइसोलेटेड वातावरण में निष्पादित किया जा सकता है। इस लेख में, हम देखेंगे कि Java से WebAssembly के साथ कैसे काम करें, इसके लिए कौन से उपकरण मौजूद हैं, और व्यावहारिक उदाहरणों पर विचार करेंगे।

\n\n

WebAssembly क्या है और यह Java डेवलपर के लिए क्यों उपयोगी है?

\n\n

WebAssembly कोड के कॉम्पैक्ट बाइनरी प्रतिनिधित्व वाला एक वर्चुअल मशीन है। Wasm के मुख्य लाभ:

\n
    \n
  • प्रदर्शन — निष्पादन नेटिव के करीब।
  • \n
  • सुरक्षा — आइसोलेटेड सैंडबॉक्स।
  • \n
  • पोर्टेबिलिटी — ब्राउज़र, Node.js, सर्वर पर चलाना।
  • \n
  • मल्टी-प्लेटफ़ॉर्म — जहाँ भी Wasm समर्थन है, वहाँ काम करता है।
  • \n
\n\n

Java डेवलपर के लिए Wasm निम्नलिखित परिदृश्यों में उपयोगी है:

\n
    \n
  • भारी गणनाओं को सर्वर से क्लाइंट पर स्थानांतरित करना (रेंडरिंग, डेटा प्रोसेसिंग)।
  • \n
  • वेब एप्लिकेशन में मौजूदा Java लाइब्रेरी का उपयोग करना।
  • \n
  • उच्च प्रदर्शन वाले प्लगइन और एक्सटेंशन बनाना।
  • \n
  • उन वातावरणों में Java कोड चलाना जहाँ JVM उपलब्ध नहीं है (IoT, ब्लॉकचेन)।
  • \n
\n\n

Java को WebAssembly में संकलित करने के उपकरण

\n\n

वर्तमान में, Java कोड को Wasm में बदलने के लिए कई दृष्टिकोण मौजूद हैं। आइए मुख्य पर विचार करें।

\n\n

GraalVM और AOT (Ahead-of-Time) संकलन

\n\n

GraalVM एक उच्च-प्रदर्शन वर्चुअल मशीन है जो Java बाइटकोड को नेटिव निष्पादन योग्य फ़ाइलों में संकलित करने का समर्थन करती है। संस्करण 22.0 से, GraalVM में WebAssembly में संकलन के लिए प्रायोगिक समर्थन शामिल है। प्रक्रिया इस प्रकार है:

\n
    \n
  1. Wasm समर्थन के साथ GraalVM स्थापित करें।
  2. \n
  3. Java क्लास को Wasm मॉड्यूल में संकलित करें।
  4. \n
  5. परिणामी .wasm फ़ाइल को रनटाइम वातावरण (wasmtime, wasmer) में चलाएं।
  6. \n
\n\n

एक सरल Java क्लास के संकलन का उदाहरण:

\n\n
// HelloWasm.java\npublic class HelloWasm {\n    public static int add(int a, int b) {\n        return a + b;\n    }\n\n    public static void main(String[] args) {\n        System.out.println("Result: " + add(5, 3));\n    }\n}\n
\n\n

GraalVM का उपयोग करके Wasm में संकलित करने का कमांड:

\n\n
javac HelloWasm.java\nnative-image --wasm --output=hello.wasm HelloWasm\n
\n\n

इसके बाद आपको hello.wasm फ़ाइल मिलेगी, जिसे आप चला सकते हैं:

\n\n
wasmtime hello.wasm\n# आउटपुट: Result: 8\n
\n\n

TeaVM प्रोजेक्ट

\n\n

TeaVM Java बाइटकोड का JavaScript और WebAssembly में संकलक है। यह वेब डेवलपमेंट पर केंद्रित है और Java क्लास को Wasm मॉड्यूल में ट्रांसलेट करने की अनुमति देता है। TeaVM Java मानक लाइब्रेरी के अधिकांश भाग का समर्थन करता है और Maven/Gradle के साथ काम कर सकता है।

\n\n

Maven प्रोजेक्ट में TeaVM एकीकरण का उदाहरण:

\n\n
<dependency>\n    <groupId>org.teavm</groupId>\n    <artifactId>teavm-core</artifactId>\n    <version>0.8.1</version>\n</dependency>\n
\n\n

संकलन के लिए Java कोड:

\n\n
import org.teavm.jso.JSBody;\n\npublic class Calculator {\n    @JSBody(params = {"a", "b"}, script = "return a + b;")\n    public static native int add(int a, int b);\n\n    public static void main(String[] args) {\n        System.out.println(add(10, 20));\n    }\n}\n
\n\n

TeaVM एक Wasm फ़ाइल उत्पन्न करता है जिसे HTML पेज से जोड़ा जा सकता है।

\n\n

CheerpJ प्रोजेक्ट

\n\n

CheerpJ एक व्यावसायिक उत्पाद है जो Java बाइटकोड को परिवर्तित करता है

ब्लॉग

पुस्तक अनुशंसाएँ