Java Language
जावा की तैनाती
खोज…
परिचय
प्लेटफ़ॉर्म पर तैनाती के लिए "पैकेजिंग" जावा एप्लिकेशन, वेबैप्स और इसके लिए कई तरह की प्रौद्योगिकियां हैं, जिन पर वे चलेंगे। वे सरल पुस्तकालय या निष्पादन योग्य JAR
फ़ाइलों, WAR
और EAR
फ़ाइलों से लेकर इंस्टॉलर और स्व-निहित निष्पादनों तक होते हैं।
टिप्पणियों
सबसे मौलिक स्तर पर, एक जावा प्रोग्राम को संकलित वर्ग (यानी ".class" फ़ाइल) या संकलित कक्षाओं वाले निर्देशिका ट्री की प्रतिलिपि बनाकर तैनात किया जा सकता है। हालाँकि जावा को आम तौर पर निम्न तरीकों में से एक में तैनात किया जाता है:
एक JAR फ़ाइल या JAR फ़ाइलों के संग्रह को उस सिस्टम पर कॉपी करके जहाँ उन्हें निष्पादित किया जाएगा; उदाहरण के लिए
javac
का उपयोग करना।WAR, EAR या समान फ़ाइल को "सर्वलेट कंटेनर" या "एप्लिकेशन सर्वर" पर कॉपी या अपलोड करके।
किसी प्रकार के एप्लिकेशन इंस्टॉलर को चलाकर जो उपरोक्त को स्वचालित करता है। इंस्टॉलर एक एम्बेडेड JRE भी स्थापित कर सकता है।
जावा वेबस्टार्ट का उपयोग करके उन्हें लॉन्च करने की अनुमति देने के लिए वेब सर्वर पर एप्लिकेशन के लिए JAR फाइलें डालकर।
Create JAR, WAR और EAR फ़ाइलों का उदाहरण इन फ़ाइलों को बनाने के विभिन्न तरीकों का सारांश देता है।
जावा के लिए कई खुले स्रोत और वाणिज्यिक "इंस्टॉलर जनरेटर" और "एक्सई जनरेटर" उपकरण हैं। इसी तरह, जावा क्लास फ़ाइलों को उलटने के लिए (रिवर्स इंजीनियरिंग को कठिन बनाने के लिए) और रनटाइम लाइसेंस जाँच को जोड़ने के लिए उपकरण हैं। ये सभी "जावा प्रोग्रामिंग लैंग्वेज" डॉक्यूमेंटेशन के दायरे से बाहर हैं।
कमांड लाइन से एक निष्पादन योग्य जार बनाना
एक जार बनाने के लिए, आपको एक या अधिक वर्ग फ़ाइलों की आवश्यकता है। यह एक मुख्य विधि होनी चाहिए अगर इसे डबल क्लिक द्वारा चलाया जाए।
इस उदाहरण के लिए, हम उपयोग करेंगे:
import javax.swing.*;
import java.awt.Container;
public class HelloWorld {
public static void main(String[] args) {
JFrame f = new JFrame("Hello, World");
JLabel label = new JLabel("Hello, World");
Container cont = f.getContentPane();
cont.add(label);
f.setSize(400,100);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
इसे HelloWorld.java नाम दिया गया है
अगला, हम इस कार्यक्रम को संकलित करना चाहते हैं।
आप ऐसा करने के लिए किसी भी प्रोग्राम का उपयोग कर सकते हैं। कमांड लाइन से चलाने के लिए, अपने पहले जावा प्रोग्राम को संकलित करने और चलाने पर प्रलेखन देखें ।
एक बार जब आपके पास HelloWorld.class हो, तो एक नया फ़ोल्डर बनाएं और इसे अपनी इच्छानुसार कॉल करें।
एक अन्य फाइल बनाएं, जिसे मैनिफ़ेस्ट.टेक्स्ट कहा जाता है और उसमें पेस्ट करें
Main-Class: HelloWorld
Class-Path: HelloWorld.jar
इसे HelloWorld.class के साथ एक ही फ़ोल्डर में रखें
अपने वर्तमान निर्देशिका ( cd C:\Your\Folder\Path\Here
को विंडोज़ पर) बनाने के लिए कमांड लाइन का उपयोग करें।
टर्मिनल का उपयोग करें और निर्देशिका को निर्देशिका में बदलें ( cd /Users/user/Documents/Java/jarfolder
मैक पर cd /Users/user/Documents/Java/jarfolder
फ़ोल्डर) अपने फ़ोल्डर में
जब ऐसा किया जाता है, तो jar -cvfm HelloWorld.jar manifest.txt HelloWorld.class
टाइप करें jar -cvfm HelloWorld.jar manifest.txt HelloWorld.class
और एंटर दबाएँ। यह एक जार फ़ाइल बनाता है (आपके प्रकट और HelloWorld.class के साथ फ़ोल्डर में) .class फ़ाइलों का उपयोग करके और HelloWorld.jar नाम दिया गया है। विकल्पों के बारे में जानकारी के लिए सिंटैक्स अनुभाग देखें (जैसे -m और -v)।
इन चरणों के बाद, प्रकट फ़ाइल के साथ अपनी निर्देशिका में जाएं और आपको HelloWorld.jar ढूंढना चाहिए
उस पर क्लिक करके Hello, World
को टेक्स्ट बॉक्स में प्रदर्शित करना चाहिए।
JAR, WAR और EAR फाइलें बनाना
JAR, WAR और EAR प्रकार की फाइलें मूलभूत रूप से ZIP फाइलों के साथ एक "मैनिफ़ेस्ट" फ़ाइल और (WAR और EAR फ़ाइलों के लिए) एक विशेष आंतरिक निर्देशिका / फ़ाइल संरचना होती हैं।
इन फ़ाइलों को बनाने का अनुशंसित तरीका जावा-विशिष्ट बिल्ड टूल का उपयोग करना है जो संबंधित फ़ाइल प्रकारों के लिए आवश्यकताओं को "समझता" है। यदि आप बिल्ड टूल का उपयोग नहीं करते हैं, तो आईडीई "निर्यात" कोशिश करने का अगला विकल्प है।
( संपादकीय नोट: इन फ़ाइलों को कैसे बनाया जाए, इसका वर्णन संबंधित उपकरणों के लिए दस्तावेज़ीकरण में सबसे अच्छा रखा गया है। उन्हें वहाँ रखें। कृपया कुछ आत्म-संयम दिखाएं और उन्हें इस उदाहरण में जूता-सींग न दें! )
मावेन का उपयोग करके जार और डब्ल्यूएआर फाइलें बनाना
मावेन का उपयोग करके एक जार या डब्ल्यूएआर बनाना केवल सही <packaging>
तत्व को पोम फाइल में डालने की बात है; ई, जी,
<packaging>jar</packaging>
या
<packaging>war</packaging>
अधिक जानकारी के लिए। मावेन जार प्लगइन के लिए प्लगइन गुण के रूप में प्रवेश-बिंदु वर्ग और बाहरी निर्भरता के बारे में आवश्यक जानकारी जोड़कर मावेन को "निष्पादन योग्य" जार फाइलें बनाने के लिए कॉन्फ़िगर किया जा सकता है। यहां तक कि "uberJAR" फ़ाइलों को बनाने के लिए एक प्लगइन है जो एक अनुप्रयोग और इसकी निर्भरता को एक ही JAR फ़ाइल में संयोजित करता है।
अधिक जानकारी के लिए कृपया Maven प्रलेखन ( http://www.riptutorial.com/topic/898 ) देखें।
चींटी का उपयोग कर JAR, WAR और EAR फाइलें बनाना
चींटी के निर्माण उपकरण में जार, डब्ल्यूएआर और ईएआर के निर्माण के लिए अलग-अलग "कार्य" हैं। कृपया अधिक जानकारी के लिए चींटी प्रलेखन ( http://www.riptutorial.com/topic/4223 ) देखें।
आईडीई का उपयोग करके JAR, WAR और EAR फाइलें बनाना
तीन सबसे लोकप्रिय जावा आईडीई सभी में तैनाती फाइलें बनाने के लिए अंतर्निहित समर्थन हैं। कार्यक्षमता को अक्सर "निर्यात" के रूप में वर्णित किया जाता है।
- ग्रहण - http://www.riptutorial.com/topic/1143
- नेटबीन्स - http://www.riptutorial.com/topic/5438
- Intellij-IDEA - निर्यात
jar
कमांड का उपयोग करके JAR, WAR और EAR फाइलें बनाना।
jar
कमांड का उपयोग करके इन फ़ाइलों को "हाथ से" बनाना भी संभव है। यह केवल सही जगह पर सही घटक फाइलों के साथ एक फ़ाइल ट्री को इकट्ठा करने, एक मैनिफ़ेस्ट फ़ाइल बनाने और जार फ़ाइल बनाने के लिए jar
चलाने का मामला है।
अधिक जानकारी के लिए jar
कमांड Topic ( JAR फ़ाइलों को बनाना और संशोधित करना ) को देखें
जावा वेब स्टार्ट का परिचय
ओरेकल जावा ट्यूटोरियल वेब प्रारंभ को संक्षेप में इस प्रकार है:
जावा वेब स्टार्ट सॉफ्टवेयर एक क्लिक के साथ पूर्ण विशेषताओं वाले एप्लिकेशन लॉन्च करने की शक्ति प्रदान करता है। उपयोगकर्ता एप्लिकेशन डाउनलोड कर सकते हैं और लॉन्च कर सकते हैं, जैसे कि एक पूर्ण स्प्रेडशीट प्रोग्राम या इंटरनेट चैट क्लाइंट, बिना लंबी इंस्टॉलेशन प्रक्रियाओं के।
जावा वेब स्टार्ट के अन्य फायदे हस्ताक्षरित कोड के लिए समर्थन और प्लेटफ़ॉर्म निर्भरता की स्पष्ट घोषणा, और कोड कैशिंग और एप्लिकेशन अपडेट की तैनाती के लिए समर्थन हैं।
Java Web Start को JavaWS और JAWS भी कहा जाता है। जानकारी के प्राथमिक स्रोत हैं:
- जावा ट्यूटोरियल - पाठ: जावा वेब प्रारंभ
- जावा वेब स्टार्ट गाइड
- जावा वेब स्टार्ट एफएक्यू
- JNLP विनिर्देश
-
javax.jnlp
एपीआई प्रलेखन - जावा वेब स्टार्ट डेवलपर्स साइट
आवश्यक शर्तें
एक उच्च स्तर पर, वेब प्रारंभ जावा अनुप्रयोगों को दूरस्थ वेबसर्वर से JAR फ़ाइलों के रूप में पैक करके काम करता है। आवश्यक शर्तें हैं:
लक्ष्य मशीन पर एक पहले से मौजूद जावा इंस्टॉलेशन (JRE या JDK) जहां एप्लिकेशन चलाना है। जावा 1.2.2 या उच्चतर की आवश्यकता है:
- जावा 5.0 के बाद से, वेब प्रारंभ समर्थन JRE / JDK में शामिल है।
- पहले रिलीज़ के लिए, वेब प्रारंभ समर्थन अलग से स्थापित किया गया है।
- वेब स्टार्ट इन्फ्रास्ट्रक्चर में कुछ जावास्क्रिप्ट शामिल हैं जिन्हें आवश्यक सॉफ्टवेयर को स्थापित करने के लिए उपयोगकर्ता की सहायता के लिए एक वेब पेज में शामिल किया जा सकता है।
सॉफ्टवेयर को होस्ट करने वाला वेबसर्वर लक्ष्य मशीन के लिए सुलभ होना चाहिए।
यदि उपयोगकर्ता वेब पेज में एक लिंक का उपयोग करके एक वेब स्टार्ट एप्लिकेशन लॉन्च करने जा रहा है, तो:
- उन्हें एक संगत वेब ब्राउज़र की आवश्यकता है, और
- आधुनिक (सुरक्षित) ब्राउज़रों के लिए, उन्हें यह बताया जाना चाहिए कि वेब ब्राउज़र सुरक्षा से समझौता किए बिना जावा को चलाने की अनुमति देने के लिए ब्राउज़र को कैसे बताया जाए।
एक उदाहरण JNLP फ़ाइल
निम्नलिखित उदाहरण JNLP की मूल कार्यक्षमता का वर्णन करने के लिए है।
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="https://www.example.com/demo"
href="demo_webstart.jnlp">
<information>
<title>Demo</title>
<vendor>The Example.com Team</vendor>
</information>
<resources>
<!-- Application Resources -->
<j2se version="1.7+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="Demo.jar" main="true"/>
</resources>
<application-desc
name="Demo Application"
main-class="com.example.jwsdemo.Main"
width="300"
height="300">
</application-desc>
<update check="background"/>
</jnlp>
जैसा कि आप देख सकते हैं, एक JNLP फ़ाइल XML- आधारित है, और जानकारी सभी <jnlp>
तत्व में निहित है।
-
spec
विशेषता जेएनपीएल कल्पना का संस्करण देती है जो इस फ़ाइल के अनुरूप है। -
codebase
विशेषता बाकी फ़ाइल में सापेक्षhref
URL को हल करने के लिए आधार URL देता है। -
href
विशेषता इस JNLP फ़ाइल के लिए निश्चित URL देता है। -
<information>
तत्व में मेटाडेटा एप्लिकेशन है जिसमें इसका शीर्षक, लेखक, विवरण और सहायता वेबसाइट शामिल है। -
<resources>
तत्व आवश्यक जावा संस्करण, OS प्लेटफ़ॉर्म और JAR फ़ाइलों सहित एप्लिकेशन के लिए निर्भरता का वर्णन करता है। -
<application-desc>
(या<applet-desc>
) तत्व एप्लिकेशन को लॉन्च करने के लिए आवश्यक जानकारी प्रदान करता है।
वेब सर्वर की स्थापना
वेबसर्वर उपयोग करने के लिए कॉन्फ़िगर किया जाना चाहिए application/x-java-jnlp-file
के लिए MIMETYPE रूप .jnlp
फ़ाइलें।
JNLP फ़ाइल और एप्लिकेशन की JAR फाइलें वेबसर्वर पर स्थापित की जानी चाहिए ताकि वे JNLP फ़ाइल द्वारा इंगित URL का उपयोग करके उपलब्ध हों।
एक वेब पेज के माध्यम से लॉन्च को सक्षम करना
यदि एप्लिकेशन को वेब लिंक के माध्यम से लॉन्च किया जाना है, तो जिस पेज पर लिंक होता है उसे वेबसर्वर पर बनाया जाना चाहिए।
यदि आप यह मान सकते हैं कि जावा वेब स्टार्ट पहले से ही उपयोगकर्ता की मशीन पर स्थापित है, तो वेब पेज में केवल एप्लिकेशन लॉन्च करने के लिए एक लिंक होना चाहिए। उदाहरण के लिए।
<a href="https://www.example.com/demo_webstart.jnlp">Launch the application</a>
अन्यथा, उपयोगकर्ता को जिस तरह के ब्राउज़र का उपयोग करना है उसका पता लगाने के लिए पेज को कुछ स्क्रिप्टिंग को भी शामिल करना चाहिए और जावा के आवश्यक संस्करण को डाउनलोड और इंस्टॉल करने का अनुरोध करना चाहिए।
नोट: यह इस तरह से जावा स्थापित करने के लिए प्रोत्साहित करने के लिए उपयोगकर्ताओं को प्रोत्साहित करने के लिए या यहां तक कि अपने वेब ब्राउज़रों में जावा को सक्षम करने के लिए एक बुरा विचार है ताकि जेएनएलपी वेब पेज लॉन्च काम करेगा।
कमांड लाइन से वेब स्टार्ट एप्लिकेशन लॉन्च करना
कमांड लाइन से वेब स्टार्ट एप्लिकेशन लॉन्च करने के निर्देश सरल हैं। यह मानते हुए कि उपयोगकर्ता के पास जावा 5.0 JRE या JDK स्थापित है, बस इसे चलाने की आवश्यकता है:
$ javaws <url>
जहाँ <url>
दूरस्थ सर्वर पर JNLP फ़ाइल के लिए URL है।
एक आवेदन और उसकी निर्भरता के लिए एक UberJAR बनाना
जावा एप्लिकेशन के लिए एक सामान्य आवश्यकता यह है कि एक फ़ाइल की प्रतिलिपि बनाकर उसे तैनात किया जा सकता है। सरल अनुप्रयोगों के लिए जो केवल मानक जावा एसई वर्ग के पुस्तकालयों पर निर्भर करते हैं, यह आवश्यकता एक JAR फ़ाइल बनाकर संतुष्ट होती है जिसमें सभी (संकलित) अनुप्रयोग वर्ग होते हैं।
अगर आवेदन तीसरे पक्ष के पुस्तकालयों पर निर्भर करता है तो चीजें इतनी सीधी नहीं हैं। यदि आप बस एक एप्लीकेशन JAR के अंदर निर्भरता JAR फाइलें डालते हैं, तो मानक जावा क्लास लोडर लाइब्रेरी क्लासेस को खोजने में सक्षम नहीं होगा, और आपका आवेदन शुरू नहीं होगा। इसके बजाय, आपको एकल JAR फ़ाइल बनाने की आवश्यकता है जिसमें निर्भरता वर्ग और संसाधनों के साथ अनुप्रयोग वर्ग और संबद्ध संसाधन शामिल हों। खोज करने के लिए क्लास लोडर के लिए एकल नामस्थान के रूप में इनका आयोजन किया जाना चाहिए।
ऐसी JAR फ़ाइल को अक्सर UberJAR के रूप में संदर्भित किया जाता है।
"जार" कमांड का उपयोग करके एक UberJAR बनाना
UberJAR बनाने की प्रक्रिया सीधी-सादी है। (मैं सादगी के लिए लिनक्स कमांड का उपयोग करूंगा। कमांड मैक ओएस के लिए समान होना चाहिए, और विंडोज के लिए समान है।)
एक अस्थायी निर्देशिका बनाएं, और निर्देशिका को इसमें बदलें।
$ mkdir tempDir $ cd tempDir
प्रत्येक आश्रित JAR फ़ाइल के लिए, रिवर्स ऑर्डर में जिसे उन्हें एप्लिकेशन के क्लासपाथ पर प्रदर्शित करने की आवश्यकता होती है, JAR को अस्थायी निर्देशिका में अनपैक करने के लिए
jar
कमांड का उपयोग किया।$ jar -xf <path/to/file.jar>
कई JAR फ़ाइलों के लिए ऐसा करने से JAR की सामग्री ओवरले हो जाएगी।
अस्थायी निर्देशिका में बिल्ड ट्री से एप्लिकेशन क्लासेस की प्रतिलिपि बनाएँ
$ cp -r path/to/classes .
अस्थायी निर्देशिका की सामग्री से UberJAR बनाएँ:
$ jar -cf ../myApplication.jar
यदि आप एक निष्पादन योग्य JAR फ़ाइल बना रहे हैं, तो यहां वर्णित एक उचित MANIFEST.MF को शामिल करें।
मावेन का उपयोग करके एक UberJAR बनाना
यदि आपका प्रोजेक्ट मावेन का उपयोग करके बनाया गया है, तो आप इसे "मावेन-असेंबली" या "मावेन-शेड" प्लगइन्स का उपयोग करके उबरजार बनाने के लिए प्राप्त कर सकते हैं। विवरण के लिए मावेन असेंबली विषय ( मावेन प्रलेखन में) देखें।
UberJARs के फायदे और कमियां
UberJARs के कुछ लाभ स्वयं स्पष्ट हैं:
- एक UberJAR को वितरित करना आसान है।
- आप किसी UberJAR के लिए लाइब्रेरी की निर्भरता को नहीं तोड़ सकते, क्योंकि लाइब्रेरी स्व-निहित हैं।
इसके अलावा, यदि आप UberJAR बनाने के लिए एक उपयुक्त टूलिंग का उपयोग करते हैं, तो आपके पास लाइब्रेरी क्लासेस को बाहर करने का विकल्प होगा जो JAR फ़ाइल से उपयोग नहीं की जाती है। हालाँकि, यह आमतौर पर वर्गों के स्थैतिक विश्लेषण द्वारा किया जाता है। यदि आपका एप्लिकेशन प्रतिबिंब, एनोटेशन प्रोसेसिंग और इसी तरह की तकनीकों का उपयोग करता है, तो आपको सावधान रहने की आवश्यकता है कि कक्षाएं गलत तरीके से बाहर न रखी जाएं।
UberJARs के कुछ नुकसान भी हैं:
- यदि आपके पास समान निर्भरता के साथ बहुत सारे UberJAR हैं, तो प्रत्येक में आश्रितों की एक प्रति शामिल होगी।
- कुछ ओपन सोर्स लाइब्रेरीज़ के पास लाइसेंस हैं जो 1 UberJAR में उनके उपयोग को रोक सकते हैं ।
1 - कुछ ओपन सोर्स लाइब्रेरी लाइसेंस आपको लाइब्रेरी का उपयोग करने की अनुमति देते हैं केवल अंत-उपयोगकर्ता लाइब्रेरी के एक संस्करण को दूसरे के साथ बदलने में सक्षम है। UberJARs संस्करण निर्भरताओं के प्रतिस्थापन को मुश्किल बना सकते हैं।