2012-05-03 19 views
13

मुझे पता है कि यह दस लाख बार पूछा गया है और मैंने अपना होमवर्क किया है, लेकिन एक आखिरी चीज जिसे मैं पूरी तरह से समझ नहीं पा रहा हूं, क्या वहां "जावा ईई जेडीके" है?क्या कोई जावा ईई जेडीके

जब मैं एसडीके डाउनलोड करता हूं, तो यह बहुत सारे बकवास स्थापित करने की कोशिश करता है जो मैं नहीं चाहता। इसलिए मैंने कुछ पढ़ा और महसूस किया कि वास्तव में जावा एसडीके जेडीके से तकनीकी रूप से असंबंधित औजारों का एक सेट है। तो मैं जो खोज रहा हूं वह केवल जेडीके का एक साफ सरल स्टैंडअलोन डाउनलोड है।

हम जानते हैं कि "जावा एसई जेडीके" हमेशा सूर्य की (अब ओरेकल) वेबसाइट से available रहा है। हालांकि, मैं जावा ईई सुविधाओं के में में रुचि रखने वाला वेब एप्लिकेशन विकसित कर रहा हूं: javax.servlet, javax.validation, javax.persistence और javax.transaction। तो वास्तव में जो मैं वास्तव में खोज रहा हूं वह "जावा ईई जेडीके" है।

मैं एक विशिष्ट मेवेन/टॉमकैट/स्प्रिंग/हाइबरनेट सेटअप का उपयोग कर रहा हूं और अतीत में मैंने हमेशा जावा ईई विनिर्देश के इन हिस्सों के लिए मैवेन में प्रदान की गई स्कोप में एपीआई-केवल निर्भरताओं को जोड़ा है, यानी:

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>2.5</version> 
</dependency> 

मैं सभी जावा ईई एपीआई कि मेरी परियोजना की आवश्यकता है, तो मैं वास्तव में कुछ अतिरिक्त मैन्युअल रूप से घोषित जावा ईई घटकों के साथ जावा SE JDK उपयोग कर रहा हूँ के लिए ऐसा करते हैं तो अगर। इसके अलावा जब मैं जावा आईडीई एसडीके स्थापना के साथ आया जेडीके का उपयोग करने के लिए अपना आईडीई निर्देशित करता हूं, तो ये अतिरिक्त नामस्थान उपलब्ध नहीं हैं।

दूसरे शब्दों में, सभी उद्देश्यों और उद्देश्यों के लिए यह दिखाई देगा कि जेडीके जावा ईई एसडीके डाउनलोड के साथ आता है जो जेडीके के बराबर है जो मुझे "जावा एसई जेडीके" स्थापित करते समय मिलता है ... यदि यह है सही है तो जावा ईई एसडीके स्थापित करने की कोई ज़रूरत नहीं है और मैं जावा (एसई) जेडीके का उपयोग किसी भी जावा ईई घटकों को घोषित कर सकता हूं जिसे मुझे उपरोक्त वर्णित तरीके से * -पीआई/प्रदान की गई निर्भरताओं के रूप में चाहिए।

तो मेरे प्रश्न यह है: क्या मैं सही तरीके से ऊपर वर्णित वर्णन करता हूं, या "जावा ईई जेडीके" जैसी चीज है? यानी एक जेडीके जो javax.servlet और javax.resources जैसी चीजों के अनुपूरक इंटरफेस के साथ आता है और इसी तरह? और यदि ऐसा कोई जानवर मौजूद है, तो मैं इसे कहां से डाउनलोड करूंगा?

उत्तर

16

क्या आप पूछ रहे हैं है आदि ग्लासफिश, NetBeans के बिना एक भी डाउनलोड, के रूप में "मैं सभी EE अवयव प्राप्त कर सकते हैं"

खैर यह पता करने के लिए वास्तव में क्या जावा ईई वास्तव में है उपयोगी है। यह कभी-कभी संबंधित/कभी-कभी असंबंधित "एंटरप्राइज़" स्तर घटकों के विनिर्देशों का एक सेट है (जो भी उद्यम का मतलब है :))। उदाहरण के लिए, सर्वलेट-एपीआई स्पेक (जैसा कि पिछले उत्तर द्वारा इंगित किया गया है) जावा ईई स्पेक का हिस्सा है। तो जेटीए (लेनदेन एपीआई), जेपीए, जावा मेल, और इसी तरह है।

दो प्रकार के ईई घटक हैं। 1।जो केवल इंटरफ़ेस के रूप में भेजे जाते हैं और एप्लिकेशन-सर्वर या तृतीय पक्ष उन्हें लागू करता है। उदाहरण जेटीए, जेपीए, सर्वलेट-एपीआई हैं। 2. जो पूर्ण संदर्भ कार्यान्वयन के रूप में भेजे जाते हैं। उदाहरण जावा-मेल हैं। मैं अपने सिर के ऊपर से दूसरों के बारे में नहीं सोच सकता लेकिन कुछ होंगे।

अब एक पूर्ण अनुप्रयोग सर्वर, जैसे ग्लासफ़िश, कार्यान्वयन के सेट वाले जहाज, ताकि लोग उन्हें ग्लासफ़िश, वेबस्पेयर इत्यादि के अंदर देख सकें और सोचें कि उन्हें उनका उपयोग करने की आवश्यकता है। टॉमकैट जैसे कंटेनर एक एप्लिकेशन सर्वर नहीं हैं, यह एक सर्वलेट-कंटेनर है और इस प्रकार केवल पूर्ण जावा ईई स्टैक (केवल वे हिस्सों के लिए आवश्यक भागों) का सबसेट लागू करता है।

जावा ईई इंटरफेस/कार्यान्वयन के पूर्ण सेट को प्राप्त करने के लिए आपको अपने निर्माण में अलग इंटरफेस या कार्यान्वयन जोड़ने की आवश्यकता होगी। उस स्थिति में आपको बस उन्हें पता होना चाहिए कि उन्हें कहां मिलना है, और यह अनुभव से आता है। लोगों को पता है कि उदाहरण के लिए जेपीए को हाइबरनेट निर्भरताओं के हिस्से के रूप में जोड़ा जाता है।

1

आम तौर पर, आप कम या ज्यादा सही होते हैं।

एप्लिकेशन सर्वर आमतौर पर जावा ईई एपीआई के साथ-साथ जावा ईई एपीआई के कार्यान्वयन को शिप करते हैं। तो मामले में आप अपने आवेदन सर्वर के रूप में एक ही संस्करण का उपयोग करना चाहते तो का उपयोग करें:

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>2.5</version><!-- or whatever version your application server provides --> 
    <scope>provided</scope> 
</dependency> 

आप एक नए संस्करण आपके द्वारा दी गई गुंजाइश छोड़ देना चाहिए उपयोग करना चाहते हैं।

यदि आप एक नए या एक अलग कार्यान्वयन (उदाहरण के लिए हाइबरनेट के बजाय ग्रहण लिंक) का उपयोग करना चाहते हैं तो आपको कार्यान्वयन के लिए निर्भरता भी जोड़नी होगी। अन्यथा आप इसे छोड़ सकते हैं।

+0

मैं भूल गया मेरे उदाहरण में प्रदान किया गया उपयोग लेकिन मैं हमेशा अभ्यास में यही करता हूं। मेरे मुख्य प्रश्न के संबंध में ("क्या जावा ईई जेडीके है?") आपका जवाब "नहीं" है, जावा जेडीके है और जावा ईई एपीआई हैं और जावा ईई एपीआई के इंटरफेस जावा जेडीके को अलग से वितरित किए जाते हैं , या तो कार्यान्वयन के वितरण के साथ, या एपीआई-घोषणा-केवल वितरण के रूप में। क्या मुझे ये ठीक तरह से समझ आ रहा है? –

+0

@AmirAbiri हां, यह सही है – Puce

3

जब जेडीके डाउनलोड करने की बात आती है, तो केवल एक जेडीके होता है, चाहे आप जावा एसई डाउनलोड से या जावा ईई डाउनलोड से प्राप्त करें।

अंतर यह है कि जब आप इसे जावा ईई डाउनलोड से डाउनलोड करते हैं, तो यह एक एसडीके में पैक किया जाता है। एसडीके ग्लासफ़िश, कोड नमूने, एपीआई दस्तावेज़ीकरण, ट्यूटोरियल के साथ आता है। मुझे वास्तव में इनकी ज़रूरत नहीं है इसलिए मैं जावा एसई डाउनलोड से डाउनलोड करना पसंद करता हूं।

एक मेवेन जावाईई प्रोजेक्ट में आप जावा ईई पुस्तकालयों पर अपनी निर्भरताओं को निर्दिष्ट करेंगे। जेबॉस एएस 7 के मामले में, आप जेबॉस-स्पेक निर्भरताओं का उपयोग करते हैं जो आपको सभी जावा ईई कक्षाओं के लिए आयात करने देगा। यह कक्षाएं कि जावा ईई एपीआई लागू प्रदान करने के लिए अनुप्रयोग सर्वर निर्भर है:

<dependency> 
    <groupId>org.jboss.spec</groupId> 
    <artifactId>jboss-javaee-6.0</artifactId> 
    <version>3.0.2.Final-redhat-3</version> 
    <type>pom</type> 
    <scope>import</scope> 
</dependency> 

आप javaEE इस पोम द्वारा आयातित कलाकृतियों को देखने के लिए, पर एक नज़र डालें चाहते हैं: http://maven.repository.redhat.com/techpreview/eap6/6.1.0/maven-repository/org/jboss/spec/jboss-javaee-6.0/3.0.2.Final-redhat-3/jboss-javaee-6.0-3.0.2.Final-redhat-3.pom

संबंधित मुद्दे