जावा प्रोग्रामिंग, आई/ओ हाल ही में स्ट्रीम रूपक का उपयोग करके किया गया है। सभी I/O को एक बाइट्स के आंदोलन के रूप में देखा जाता है, एक समय में, स्ट्रीम नामक ऑब्जेक्ट के माध्यम से। स्ट्रीम I/O बाहरी दुनिया से संपर्क करने के लिए उपयोग किया जाता है। वस्तुओं को बाइट्स में बदलने और फिर वस्तुओं में वापस लाने के लिए आंतरिक रूप से इसका भी उपयोग किया जाता है।
एनआईओ की मूल भूमिका I/O के समान भूमिका और उद्देश्य है, लेकिन यह एक अलग रूपक - ब्लॉक I/O का उपयोग करता है। java.nio (नया/गैर-अवरुद्ध I/O)) एपीआई जेडीके 1.4 के साथ पेश किया गया था।
धारा I/O और ब्लॉक I/O के बीच क्या अंतर है?
एक धारा-उन्मुख I/O सिस्टम एक समय में डेटा एक बाइट से संबंधित है। एक इनपुट स्ट्रीम डेटा के एक बाइट उत्पन्न करता है, और आउटपुट स्ट्रीम डेटा के एक बाइट का उपभोग करता है। स्ट्रीम किए गए डेटा के लिए फ़िल्टर बनाना बहुत आसान है। यह कई फिल्टरों को एकसाथ श्रृंखला के साथ अपेक्षाकृत सरल है ताकि प्रत्येक व्यक्ति एक एकल, परिष्कृत प्रसंस्करण तंत्र की मात्रा में अपना हिस्सा बना सके। फ्लिप पक्ष पर, धारा-उन्मुख I/O अक्सर धीमा होता है।
ब्लॉक-उन्मुख I/O सिस्टम ब्लॉक में डेटा के साथ सौदा करता है। प्रत्येक ऑपरेशन एक चरण में डेटा के ब्लॉक का उत्पादन या उपभोग करता है। ब्लॉक द्वारा प्रसंस्करण डेटा (स्ट्रीम किए गए) बाइट द्वारा इसे संसाधित करने से कहीं अधिक तेज़ हो सकता है। लेकिन ब्लॉक उन्मुख I/O में धारा-उन्मुख I/O की कुछ लालित्य और सादगी की कमी है।
जब आपको java.io का उपयोग करना चाहिए और आपको java.nio कब पसंद करना चाहिए?
अनुमापकता शायद पैकेज की अपनी पसंद मिलेगी। java.net प्रति सॉकेट एक थ्रेड की आवश्यकता होगी। कोडिंग यह काफी आसान होगा। java.nio बहुत अधिक कुशल है, लेकिन चारों ओर कोड करना मुश्किल है।
हजारों कनेक्शनों से निपटने के बाद आपको बेहतर स्केलेबिलिटी मिल सकती है, लेकिन कम संख्या में आपको शायद आईओ अवरुद्ध करने के साथ बेहतर थ्रूपुट मिलेगा।
एसएसएल जावा के साथ काम करते समय।NIO कुछ बात आसान के साथ
महत्वपूर्ण निपटने के लिए नहीं है: आप संकुल में से किसी के साथ काम कर रहे हैं, तो यह एक अच्छा विचार है जब तक खरोंच से ढांचा बनाने के लिए नहीं है और जब तक आप ऐसा करने के लिए एक सम्मोहक कारण है इसलिए।
java.nio के लिए, ग्रिज़ली और क्विक सर्वर जैसी परियोजनाएं पुन: प्रयोज्य गैर अवरोधक सर्वर घटक प्रदान करती हैं।
पढ़ने Pain points with java.nio
वर्थ अंत में यह अपनी परियोजनाओं और क्या आप प्राप्त करने के लिए कोशिश कर रहे हैं की विशिष्ट आवश्यकताओं के लिए निर्भर करता है। कुछ बेहतरीन समाधानों में अल
अद्यतन पर सबसे जटिल आधारभूत संरचना की आवश्यकता नहीं हो सकती है अद्यतन: हाल ही में एनआईओ 2 पैकेज के बारे में पता चला जो जेडीके 1.7 के बाद मौजूद है। एनआईओ 2 एनआईओ से अलग है, प्रमुख यह है कि एनआईओ 2 असीमित चैनल कार्यक्षमता प्रदान करता है। NIO.2 primer
यदि आप एनआईओ के साथ काम कर रहे हैं, तो अंतर के माध्यम से जाने के लायक है और कौन सा उद्देश्य आपके उद्देश्य के अनुरूप है।
नहीं * answser *, इसलिए मैं एक टिप्पणी पोस्ट करूंगा: [उस पर विकिपीडिया पृष्ठ] (http://en.wikipedia.org/wiki/New_I/O) कुछ लक्ष्यों और कारणों के बारे में चर्चा करता है एनओओ पैकेज। –
पेडेंटिक होने के नाते, "पथ" जावा 7 में जोड़े गए एनआईओ 2 लाइब्रेरी का हिस्सा है। बीटीडब्ल्यू: गैर-अवरुद्ध एनआईओ सॉकेट पर बहुत अधिक ध्यान केंद्रित होने पर, मैं आमतौर पर एनआईओ सॉकेट को अवरुद्ध करने का उपयोग करता हूं जो आईएमएचओ का उपयोग करने के लिए आसान हैं। एनआईओ 2 सॉकेट और फ़ाइलों के लिए एसिंक्रोनस एनआईओ जोड़ें। –