जावा अनुप्रयोगों के लिए प्रवेश बिंदु: मुख्य (), init (), या रन ()?

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

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

5 उत्तर

जावा की एक विशेष स्थैतिक विधि है:

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

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

$ java Class

अगर यह अस्तित्व में है तो वर्ग "कक्षा" में कहा गया विधि निष्पादित करेगा।

public void run() { ... }

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

0
जोड़ा

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

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

0
जोड़ा
मैं ग्रहण में काम कर रहा हूं, और जब मुझे नहीं पता कि एडब्ल्यूटी या स्विंग का मतलब क्या है, तो मैंने निश्चित रूप से कंसोल प्रोग्राम लिखे हैं। मेरे सभी कार्यक्रमों में अभी तक केवल 1 रन() विधि है और कोई मुख्य() विधियां नहीं हैं।
जोड़ा लेखक Ziggy, स्रोत
हम्म ... मैंने अभी ग्रहण में कोशिश की है, और मैं उन कक्षाओं को लॉन्च नहीं कर सकता जिनके पास सिर्फ एक रन() विधि है। आप इन कार्यक्रमों को कैसे चला रहे हैं?
जोड़ा लेखक Jon Skeet, स्रोत

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

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

सूर्य के जावा कमांड पृष्ठ :

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

     

विधि को सार्वजनिक और स्थैतिक घोषित किया जाना चाहिए, इसे किसी भी वापस नहीं करना चाहिए   मान, और इसे पैरामीटर के रूप में स्ट्रिंग सरणी स्वीकार करनी होगी। प्रक्रिया   घोषणा निम्न की तरह दिखनी चाहिए:

  सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग तर्क [])
 

जावा एप्लिकेशन को निष्पादित करने के तरीके के बारे में अतिरिक्त संसाधनों के लिए, कृपया निम्न स्रोत देखें:

  1. Chapter 12: Execution from the Java Language Specification, Third Edition.
  2. Chapter 5: Linking, Loading, Initializing from the Java Virtual Machine Specifications, Second Edition.
  3. A Closer Look at the "Hello World" Application from the Java Tutorials.

run विधि एक नए थ्रेड या रननेबल इंटरफ़ेस। जावा वायरल मशीन द्वारा इसे कॉल नहीं किया जाता है जब इसे जावा कमांड द्वारा शुरू किया जाता है।

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

public class MyRunnable implements Runnable
{
    public void run()
    {
        System.out.println("Hello World!");
    }

    public static void main(String[] args)
    {
        new Thread(new MyRunnable()).start();
    }
}

अधिक जानकारी के लिए और थ्रेड के उप-वर्ग को शुरू करने के तरीके और Runnable को लागू करने वाला एक वर्ग, उदाहरण के लिए परिभाषित करना और शुरू करना


init विधि एप्लेट या JApplet </एक>।

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

एक एप्लेट के init विधि के बारे में अधिक जानकारी के लिए, कृपया

ऐप्पल का जीवन चक्र

यह भी देखें: जावा ट्यूटोरियल से एप्लेट कैसे बनाएं

0
जोड़ा

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

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

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

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

  • मुख्य: प्रोग्राम प्रारंभ
  • init: एप्लेट प्रारंभ
  • रन: थ्रेड प्रारंभ

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

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

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

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