2010-07-12 13 views
6

का उद्देश्य समझ में नहीं आया है, मैं पिछले कुछ महीनों में केवल पाइथन के लिए ग्रहण का उपयोग कर रहा हूं, और मैं इसे जावा के लिए उपयोग करना शुरू करना चाहता हूं। हालांकि, मैंने देखा है कि ट्यूटोरियल्स के मुताबिक, अपने जावा प्रोजेक्ट को व्यवस्थित करने का उचित तरीका नामित स्रोत फ़ोल्डर में एक पैकेज बनाना है, उदाहरण के लिए, com.project, और सभी कक्षाएं हैं और ऐसे नाम com.project.class हैं। आप उप-पैकेज भी बना सकते हैं जो उप-निर्देशिकाओं जैसे com.project.utilities.* के समान काम करते हैं। इस सम्मेलन के साथ, मुझे नहीं लगता कि मैं प्रति परियोजना एक से अधिक पैकेज क्यों बनाऊंगा। चूंकि सभी कोड इस संरचना के भीतर निहित हैं, इसलिए src फ़ोल्डर क्या उद्देश्य प्रदान करता है?मुझे src फ़ोल्डर और अलग पैकेज

मुझे आशा है कि मैं जावा परियोजना को ढांचा बनाने का सामान्य तरीका होने के बारे में गलत हूं, क्योंकि यह बहुत असुविधाजनक लगता है।

इसके अलावा, मैंने अभी तक इसे बेवकूफ नहीं बनाया है, लेकिन क्या यह बाहरी निर्भरताओं को दर्द को लोड नहीं करेगा? अगर मेरे पास src और bin फ़ोल्डर्स के बगल में एक आईएमजी फ़ोल्डर है, तो मुझे इसे एक्सेस करने के लिए ".. \ img *" का उपयोग नहीं करना पड़ेगा?

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/3004835/why-do-java-source-files-go-into-a- निर्देशिका- संरचना – bdhar

उत्तर

9

हां, छोटी परियोजना के लिए शायद अधिक समझ नहीं आती है। आप बस प्राप्त कर सकते हैं:

MyProject 
| 
+ - FileOne.java 
+ - FileTwo.java 
+ - FileThree.java 

लेकिन बड़ी परियोजनाओं के लिए आपको विभिन्न प्रकार की कार्यक्षमता से संबंधित पैकेज, कक्षाओं में विभाजित करने की आवश्यकता हो सकती है।

उदाहरण के लिए कोर जावा पुस्तकालय (कुछ नाम हैं) है

java.lang java.util (सूची की तरह उपयोगिता वर्गों में शामिल है (जैसे वस्तु, स्ट्रिंग, पूर्णांक, बूलियन, StringBuilder के रूप में कोर clases शामिल हैं) , ArrayList, तिथि, मानचित्र, घड़ी आदि) java.io (कक्षा इनपुट के लिए होता है/ouput फ़ाइल की तरह, InputStreamReader, BufferedReader आदि

java.sql, java.swing, java.text आदि आदि

इस तरह, आप एक दूसरे से जुड़े वर्गों को "एकसाथ पैक" करते हैं।

इन कक्षाओं के लिए स्रोत कोड, नाम का एक फ़ोल्डर में प्रथा के अनुसार कर रहे हैं src

तो तुम होगा:

YourProject 
| 
+ - src 
    | 
    + packageA 
    | 
    + packageB 

तुम भी संकलित फाइलों से स्रोत कोड को अलग करने की आवश्यकता हो सकती है, इसलिए classes फ़ोल्डर का उपयोग सम्मेलन द्वारा किया जाता है। इसके अतिरिक्त आप एक अलग फ़ोल्डर 3 हिस्सा पुस्तकालयों में, एक और चित्र, सहायक फ़ाइलें या अन्य, प्रलेखन के लिए एक अलग, आदि

जैसे संसाधनों के लिए डाल करने के लिए चाहते हो सकता है तो एक विशिष्ट लेआउट हो सकता है:

YourProject 
| 
+ - src/ 
+ - lib/ 
+ - classes/ 
+ - resources/ 
+ - conf/ 
+ - bin/ 
+ - doc/ 
+ - etc/ 

लेकिन निश्चित रूप से, यह केवल बड़ी परियोजनाओं के लिए समझ में आता है।

वेब एप्लिकेशन आमतौर पर यह भी शामिल एक वेब-INF फ़ोल्डर आदि

अपनी परियोजना वर्गों में से केवल एक जोड़े हैं, तो चिंता न करें और एक ही फ़ोल्डर के साथ जाना है, लेकिन यह अच्छा औचित्य क्या पता करने के लिए।

3

मैं समझ सकता हूं कि यह छोटी परियोजनाओं के लिए असुविधाजनक क्यों प्रतीत हो सकता है। हालांकि, अगर आपको कभी भी सैकड़ों (या हजारों) स्रोत फ़ाइलों के साथ एक परियोजना पर काम करना है, तो सहज सब-पैकेज रखने के लिए सब कुछ व्यवस्थित रखने के लिए एक पूर्ण आवश्यकता है।

जहां तक ​​स्रोत फ़ाइल स्थित है, से संबंधित पथ पर आधारित बाहरी निर्भरताओं को लोड करने तक, यह सब इस बात पर निर्भर करता है कि संकलित अनुप्रयोग कैसे व्यवस्थित होता है। संसाधनों के संदर्भ में सामान्य नहीं है ".. \ img" जैसा कि आप वर्णन करते हैं।

2

आप पैकेज में सबकुछ रखने के लिए नहीं हैं। बहुत छोटे ऐप्स के लिए आप सीधे जावा निर्देशिका फ़ाइल में सीधे स्रोत निर्देशिका में डाल सकते हैं, जिसका अर्थ है कि आपकी कक्षाएं "डिफ़ॉल्ट" पैकेज से संबंधित होंगी। लेकिन अधिकांश परियोजनाएं नाम संघर्ष से बचने के लिए एक अद्वितीय पैकेज नाम का उपयोग करती हैं, उदाहरण के लिए java.util.Date और java.sql.Date के बीच।

"src" निर्देशिका का उपयोग करना एक सम्मेलन है कि आईडीई, निर्माण उपकरण, और अन्य प्रोग्रामर सभी आसानी से समझते हैं। आप "src" से बचा है और इसके बजाय की तरह एक निर्देशिका संरचना का उपयोग किया है:

com/project/MyClass.java 
img/icon.jpg 
...etc 

तो फिर तुम बस आईडीई "कॉम" फ़ोल्डर में जावा स्रोत फ़ाइलें देखने के लिए, नहीं बता सकता क्योंकि तब यह वर्ग की व्याख्या करेगा "com.project.MyClass" के बजाय "project.MyClass" होने के नाते। दूसरी ओर, आप रूट फ़ोल्डर में स्रोत फ़ाइलों को देखने के लिए नहीं कह सकते हैं, क्योंकि तब यह आईएमजी फ़ोल्डर जावा स्रोतों की अपेक्षा करेगा।

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