2008-11-04 11 views
29

अब तक मैं जावा में अपना कोड निष्पादित करने के लिए public void run() {} विधियों का उपयोग कर रहा हूं। run() के बजाय कब/क्यों main() या init() का उपयोग करना चाह सकता है?जावा अनुप्रयोगों के लिए प्रवेश बिंदु: मुख्य(), init(), या रन()?

+0

क्या आप एक जीयूआई उपकरण का उपयोग कर रहे हैं, जो आपके लिए कंकाल कोड का एक गुच्छा बनाता है, और जिसमें आप अपनी रन विधि छोड़ते हैं? – toolkit

उत्तर

61

यह एक असाधारण सवाल है क्योंकि यह पसंद का विषय नहीं माना जाता है।

जब आप JVM लॉन्च करते हैं, तो आप चलाने के लिए एक वर्ग निर्दिष्ट करते हैं, और यह इस कक्षा के main() है जहां आपका प्रोग्राम शुरू होता है।

init() द्वारा, मुझे लगता है कि आप जेप्लेट विधि का मतलब है। जब ब्राउज़र में एक एप्लेट लॉन्च किया जाता है, तो init() निर्दिष्ट एप्लेट की विधि को व्यवसाय के पहले क्रम के रूप में निष्पादित किया जाता है।

run() द्वारा, मुझे लगता है कि आप रननेबल की विधि का मतलब है। जब कोई नया धागा शुरू होता है तो यह विधि लागू होती है।

  • मुख्य: कार्यक्रम शुरू
  • init: एप्लेट शुरू
  • रन: धागा शुरू

ग्रहण अपने run() विधि चल रहा है, भले ही आप कोई main() है, तो यह कुछ अजीब कर रही है और गैर मानक, लेकिन अक्षम नहीं है। शायद आपको एक नमूना वर्ग पोस्ट करना चाहिए जिसे आप इस तरह से चला रहे हैं।

+1

हा हा हा, ठीक है: मैं उन पुस्तकालयों से फाइल आयात कर रहा हूं जिन्हें मैं पढ़ नहीं सकता। तो शायद कहीं भी एक रननेबल बनाया जा रहा है, और फिर मेरी रन() विधियां रनबेल चल रही हैं। यह बहुत अच्छा था, धन्यवाद! – Ziggy

2

main() विधि जावा एप्लिकेशन के लिए प्रवेश बिंदु है। run() आमतौर पर नए धागे या कार्यों के लिए उपयोग किया जाता है।

आप run() विधि कहां लिख रहे हैं, आप किस प्रकार का आवेदन लिख रहे हैं (उदाहरण के लिए स्विंग, एडब्ल्यूटी, कंसोल इत्यादि) और आपका विकास पर्यावरण क्या है?

public static void main(String[] args) { ... } 

जो एक वर्ग जब कक्षा एक जावा कमांड लाइन के साथ शुरू किया गया है में मार डाला गया है::

$ java Class 

पर अमल होगा कहा वर्ग में विधि "

+0

मैं ग्रहण में काम कर रहा हूं, और जब मुझे नहीं पता कि एडब्ल्यूटी या स्विंग का मतलब क्या है, तो मैंने निश्चित रूप से कंसोल प्रोग्राम लिखे हैं।मेरे सभी कार्यक्रमों में अब तक केवल 1 रन() विधि है और कोई मुख्य() विधियां नहीं हैं। – Ziggy

+1

हम्म ... मैंने अभी ग्रहण में कोशिश की है, और मैं उन कक्षाओं को लॉन्च नहीं कर सकता जिनके पास अभी एक रन() विधि है। आप इन कार्यक्रमों को कैसे चला रहे हैं? –

3

जावा एक विशेष स्थिर विधि है कक्षा "अगर यह अस्तित्व में था।

public void run() { ... } 

रननेबल इंटरफ़ेस द्वारा आवश्यक है, या नए धागे बनाते समय थ्रेड क्लास से विरासत में मिला है।

13

main विधि जावा एप्लिकेशन का प्रवेश बिंदु है।

विशेष रूप से, जब जावा आभासी मशीन (java आवेदन लांचर का उपयोग करके) अपने वर्ग को निर्दिष्ट करके एक आवेदन को चलाने के लिए कहा है, यह public static void main(String[]) के हस्ताक्षर के साथ main विधि के लिए दिखेगा।

सूर्य की java command page से

:

जावा उपकरण एक जावा अनुप्रयोग की शुरूआत।यह जावा रनटाइम वातावरण शुरू करके, एक निर्दिष्ट कक्षा लोड करने और कक्षा मुख्य विधि का आह्वान करके ऐसा करता है।

विधि को सार्वजनिक और स्थैतिक घोषित किया जाना चाहिए, इसे मान वापस नहीं करना चाहिए, और इसे पैरामीटर के रूप में String सरणी स्वीकार करनी होगी। विधि घोषणा निम्नलिखित की तरह लग रहे चाहिए: Java Language Specification, Third Edition से

  1. Chapter 12: Execution: कैसे एक जावा अनुप्रयोग निष्पादित किया जाता है पर

    public static void main(String args[]) 
    

अतिरिक्त संसाधनों के लिए, निम्न स्रोतों को देखें।

  • Chapter 5: Linking, Loading, InitializingJava Virtual Machine Specifications, Second Edition से।
  • A Closer Look at the "Hello World" ApplicationJava Tutorials से।

  • run विधि एक नया Thread या एक वर्ग Runnable इंटरफेस को लागू करने के लिए प्रवेश बिंदु है। इसे जावा वायरल मशीन द्वारा नहीं कहा जाता है जब इसे java कमांड द्वारा शुरू किया जाता है।

    Thread या Runnable के रूप में स्वयं जावा वर्चुअल मशीन द्वारा सीधे नहीं चलाया जा सकता है, इसलिए इसे Thread.start() विधि द्वारा लागू किया जाना चाहिए। इस आवेदन के main विधि में एक Thread instantiating और उसके start विधि को फोन करके पूरा किया जा सकता:

    public class MyRunnable implements Runnable 
    { 
        public void run() 
        { 
         System.out.println("Hello World!"); 
        } 
    
        public static void main(String[] args) 
        { 
         new Thread(new MyRunnable()).start(); 
        } 
    } 
    

    अधिक जानकारी के लिए और कैसे Thread का एक उपवर्ग या एक वर्ग Runnable को लागू करने शुरू करने के लिए का एक उदाहरण, Defining and Starting a Thread देखना जावा ट्यूटोरियल से।


    init विधि पहली विधि एक Applet या JApplet में कहा जाता है।

    जब किसी ऐपलेट को ब्राउज़र की जावा प्लगइन या एक एप्लेट व्यूअर द्वारा लोड किया जाता है, तो यह पहले Applet.init विधि को कॉल करेगा। एप्लेट का उपयोग करने के लिए आवश्यक किसी भी प्रारंभिकरण को यहां निष्पादित किया जाना चाहिए। init विधि पूर्ण होने के बाद, start विधि कहा जाता है।

    जब कोई एप्लेट के init विधि को कॉल किया जाता है, तो अधिक जानकारी के लिए, कृपया जावा ट्यूटोरियल से Life Cycle of an Applet पर एक एप्लेट के जीवन चक्र के बारे में पढ़ें।

    यह भी देखें: जावा ट्यूटोरियल से How to Make Applets

    -1

    शुरुआत के रूप में, मैं एसीएम पैकेज आयात करता हूं, और इस पैकेज में, रन() थ्रेड को निष्पादित करना शुरू करता है, init() जावा एप्लेट प्रारंभ करता है।

    +2

    पुराने प्रश्नों के उत्तर देने से पहले, एक नज़र डालें कि किसी ने पहले से ही आपका उत्तर पोस्ट किया है या नहीं। इम्हो, आप Jegschemesch के जवाब की तुलना में कुछ नया नहीं प्रदान कर रहे हैं। –

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