2009-06-29 19 views
12

मुझे इस सवाल की प्रकृति स्टैक ओवरफ्लो पर व्यावहारिक दिमाग वाले लोगों के लिए काफी अनुकूल है।जावा टाइम सेवर

मैं जावा में एक नहीं बल्कि बड़े पैमाने पर परियोजना बनाने पर बाहर स्थापित कर रहा हूँ। मैं विनिर्देशों में नहीं जा रहा हूं, लेकिन इसमें डेटा प्रबंधन, विषम प्रारूपों का विश्लेषण करना शामिल है, और संपादक अर्थशास्त्र के साथ एक आकर्षक इंटरफ़ेस की आवश्यकता है। मैं एक स्नातक छात्र हूं और सोचता हूं कि यह रोजगार के लिए अपना कौशल दिखाने के लिए एक अच्छी परियोजना में विकसित होगा - बिल्ली, आदर्श रूप से यह स्टार्टअप के लिए भी आधार होगा।

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

इससे पहले कि आप ने मुझे बताया कि मैं अजगर, या की तरह में करना चाहते हैं, मैं सिर्फ दोहराते हैं कारण है कि मैं जावा का चयन करेंगे चाहते हैं: जावा में एल्गोरिदम के साथ

  1. बहुत सारे अधिक अनुभव है, और वहाँ हो जाएगा उनमें से थोड़ा सा।
  2. कार्यक्षमता का विस्तार करने के लिए एपीआई की एक विशाल पुस्तकालय चाहते हैं। ANTLR, डेटाबेस, कुछ स्वरूपों
  3. से निपटने के लिए पुस्तकालयों सभ्य प्रदर्शन

    के साथ कहीं भी इसे चलाने के लिए मैं खुले दिमाग सभी प्रौद्योगिकियों (जावा, perl, एसक्यूएल, एक छोटे से कार्यात्मक के साथ सबसे परिचित) करने के लिए कर रहा हूँ चाहते हैं।

संपादित: पल के लिए, मैं यह djna लिए (हालांकि कम वोट) दे रहा हूँ। मुझे लगता है कि आपके सभी उत्तर कुछ सम्मान में निश्चित रूप से सहायक हैं।

मैं djna बेहतर सामान मैं के रूप में नौसिखिया प्रोग्रामर के लिए बाहर देखने की जरूरत है मारा लगता है, यह मानते हुए कि मैं शॉर्टकट नहीं ले रहा हूँ बल्कि नहीं गंदगी की कोशिश कर रहा। बड़े ढांचे के सुझावों के लिए, esp। जे 2 ईई, यह इस स्थिति में बहुत अधिक है। मैं सबसे सरल समाधान प्रदान करने की कोशिश कर रहा हूं और एक जिसमें मेरी एपीआई किसी ऐसे व्यक्ति द्वारा बढ़ाया जा सकता है जो जे 2 ईई/जेडीबीसी विशेषज्ञ नहीं है।

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

फिर भी एक समुदाय विकि में सुधार होगा।

उत्तर

4

"प्रोजेक्ट" कुशलतापूर्वक पूरा हो रहा है और "शॉर्ट कट्स" हैं। मुझे संदेह है कि निम्नलिखित "बर्बाद प्रयास से बचने" श्रेणी में पड़ सकता है बल्कि वास्तव में कम कटौती हो सकता है, लेकिन यदि उनमें से कोई भी आपको अधिक तेज़ी से खत्म कर देता है तो शायद मैं उनकी सहायता करता हूं।

1)। विघटन और चिंताओं को अलग करना। आप पहले ही उच्च स्तरीय हिस्सों (यूआई, दृढ़ता परत, पार्सर इत्यादि) की पहचान कर चुके हैं। प्रदाता कक्षाओं के लिए जितनी जल्दी हो सके इंटरफेस को परिभाषित करें और सभी आश्रित वर्ग उन इंटरफेस के खिलाफ काम करें। उन इंटरफेस की प्रयोज्यता पर बहुत ध्यान दें, उन्हें समझने में आसान बनाएं - नाम मायने रखता है। SetShutdownFlag (सत्य) और requestShutdown() के बीच के अंतर के रूप में कुछ भी सरल है, दूसरे का स्पष्ट अर्थ है और इसलिए मैं इसे पसंद करता हूं।

लाभ: आसान रखरखाव। प्रारंभिक विकास के दौरान भी "रखरखाव" होता है। आप पहले से लिखे गए कोड को बदलना चाहते हैं। मजबूत encapsulation द्वारा सही प्राप्त करने के लिए इसे आसान बनाओ।

2)। पुनरावृत्ति और पुन: डिजाइन करने के लिए पुनरावृत्ति विकास की अपेक्षा करें। इससे पहले कि आप इसे इस्तेमाल करने से पहले अलगाव में किसी एक घटक को "खत्म" करने की अपेक्षा न करें। दूसरे शब्दों में अपने componenets के विकास के लिए पूरी तरह से नीचे दृष्टिकोण मत लेना। जैसे ही आप उनका उपयोग करते हैं, आपको अधिक जानकारी मिलती है, क्योंकि आप उन्हें लागू करते हैं, आप जो भी संभव हो इसके बारे में अधिक जानकारी प्राप्त करते हैं।

तो उच्च स्तर के घटकों के विकास को विशेष रूप से यूआई को कम स्तर के घटकों का मज़ाक उड़ाकर और दबाकर सक्षम करें। जेएमॉक जैसे कुछ शॉर्ट-कट है।

3)। जल्दी परीक्षण करें, अक्सर परीक्षण करें। जुनीट (या समतुल्य) का प्रयोग करें। आपको अपने निम्न स्तर के घटकों के लिए मोक्स मिल गए हैं ताकि आप उनका परीक्षण कर सकें।

विषयगत रूप से, मुझे लगता है कि जब मुझे "टेस्ट टोपी" मिलती है तो मैं बेहतर कोड लिखता हूं।

4)। सामने अपनी त्रुटि हैंडलिंग रणनीति को परिभाषित करें। जब त्रुटियों का पता चला है तो अच्छे निदान का उत्पादन करें।

लाभ: बग को प्राप्त करना बहुत आसान है।

5)। त्रुटि प्रबंधन से निम्नलिखित - डायग्नोस्टिक डीबगिंग कथन का उपयोग करें। अपने कोड में उदारतापूर्वक उन्हें छिड़के। System.out.println() का उपयोग न करें, इसके बजाय अपनी लॉगिंग लाइब्रेरी की डिबगिंग सुविधाओं का उपयोग करें - java.util.logging का उपयोग करें। इंटरेक्टिव डिबगर्स उपयोगी हैं लेकिन समस्याओं का विश्लेषण करने का एकमात्र तरीका नहीं है।

6

अपाचे कॉमन्स समय की बचत कोड है कि आप सबसे अधिक संभावना की जरूरत है और पुन: उपयोग कर सकते हैं की एक बहुत कुछ है।

http://commons.apache.org/

+1

और कई अन्य मुफ्त पुस्तकालयों, http://stackoverflow.com/questions/130095/most-useful-free-java- पुस्तकालय –

8

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

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

+0

मुझे लगता है कि मैं वसंत के रूप में इतना भारी के बारे में थोड़ा थके हुए हूँ। मैं ऐसे डोमेन में काम कर रहा हूं जिसने कभी SQL या डेटाबेस के बारे में नहीं सुना है और इसमें J2EE नहीं होगा। एक अर्थ में यह एप्लिकेशन अनन्य के लिए बहुत सीमित लेकिन सरल डीबी होगा। उस प्रकाश में, वसंत बहुत अधिक है? या यह अभी भी मूल्यवान है? – Overflown

+2

इसने प्रोग्राम को बदल दिया है - आप एक अच्छे छोटे कोर के साथ शुरू कर सकते हैं और कोड के विभिन्न ब्लॉक (निर्भरता इंजेक्शन का उपयोग करके) में प्लग कर सकते हैं। वे ब्लॉक कॉन्फ़िगर करने योग्य हैं (आप अपने डिफ़ॉल्ट को ओवरराइड कर सकते हैं) - जब आप विभिन्न ग्राहकों से निपटते हैं तो बहुत मूल्यवान। (परिवर्तन के लिए डिज़ाइन!) उदाहरण के लिए आप एक मूल रूपरेखा लिख ​​सकते हैं, और इसे अपने कोर प्रोग्राम में इंजेक्ट करने वाले वर्गों के साथ बढ़ा सकते हैं। आप हर जगह बसंत का उपयोग करने के लिए * नहीं है, यह इसकी सुंदरता है। साथ ही, यदि आप अपने कोड में इंटरलिंक करते हुए सुविधाओं का मूल सेट बनाते हैं (लेकिन अभी भी वसंत का उपयोग कर कॉन्फ़िगर करने योग्य है) तो यह इतना भारी नहीं होगा ... – Ben

+0

आप निर्भरता इंजेक्शन के लिए गुइस का उपयोग कर सकते हैं। इसे नियंत्रित करने के लिए बहुत छोटा और आसान है। – IAdapter

6
  • Joda Time सभी दिनांक और समय कुशलता के लिए।

  • Hibernate की या एक डेटाबेस में डेटा में हेरफेर करने के

  • आईडीई मत भूलना एक iBATIS: ग्रहण, Netbeans या विचार करता है, तो आप कुछ नकदी और की तरह है यह

+0

IntelliJ बहुत अच्छा है ... – Cambium

+0

मुझे भी यह पसंद है। लेकिन मैंने यहां अलग-अलग राय पढ़ी हैं। –

5

एक समझदार निर्माण और विन्यास मंच रास्ते में मदद मिलेगी, चींटी:

http://ant.apache.org/

या Maven (अधिमानतः):

http://maven.apache.org/

विशेष रूप से परियोजना के आकार, और परियोजना वृद्धि में मॉड्यूल की संख्या के रूप

1

लॉगिंग फ्रेमवर्क (यानी Log4J) का उपयोग करें और इसके लिए योजना बनाएं। विश्वसनीय लॉगिंग सिस्टम बग फिक्सिंग के दौरान बहुत समय बचाता है।

3

छूट नहीं जीयूआई के लिए स्विंग। आपकी ज़रूरतों के आधार पर बहुत अच्छी तृतीय पक्ष स्विंग पुस्तकालय उपलब्ध हैं (ओपन सोर्स और वाणिज्यिक)

+0

मैं इस विज़ार्ड-पुस्तकालय को जोड़ूंगा: https://wizard.dev.java.net/ – Mnementh

0

डेटा दृढता के लिए, यदि आप सुनिश्चित रूप से एसक्यूएल का उपयोग करना चाहिए नहीं कर रहे हैं, तो आप वैकल्पिक डेटा भंडारण पुस्तकालयों पर एक नज़र रखना चाहिए:

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

ध्यान रखें कि उनके पास एक दूसरे के साथ या मानक SQL डेटाबेस के साथ तुलना करते समय व्यापार-बंद होते हैं! और, ज़ाहिर है, आसपास के अन्य समान विकल्प हो सकते हैं, लेकिन ये वे हैं जिन्हें मैं जानता हूं और पसंद करता हूं। :)

पीएस: मुझे संबंधित लिंक पोस्ट करने की अनुमति नहीं थी क्योंकि मैं एक नया उपयोगकर्ता हूं। बस उनके लिए गूगल; पहली हिट सही हैं।

0

आप JavaRebel (commercial) का उपयोग करके पुनरारंभ के बीच समय बचा सकते हैं। संक्षेप में, यह टूल आपको ग्रहण में अपना कोड लिखने की अनुमति देता है और कोड परिवर्तन तुरंत उठाया जाता है।

1

मेरे लिए बड़ा समय-सेवर्स हैं:

  • उपयोग संस्करण नियंत्रण (सबवर्सन/Git)
  • उपयोग स्वत: बनाता है (चींटी/बनाने/Maven)
  • उपयोग सतत एकीकरण (हडसन/CruiseControl)
  • apache-commons-libraries बहुत उपयोगी होते हैं
1

टेस्ट प्रेरित विकास

अपनी इच्छित कार्यक्षमता को चित्रित करें और कार्यक्षमता को प्रदर्शित करने के लिए परीक्षण लिखें। फिर परीक्षण पास करने के लिए लिखें पर्याप्त कोड।

  1. सिर्फ पर्याप्त कोड लिखने में अपनी आवश्यकताओं आप एक और मंज़िल बनाना करने के लिए है, जो जटिलता को कम करने और अपने कोड क्लीनर बनाना चाहिए की कोशिश नहीं करेंगे को पूरा करने के द्वारा: यह कुछ महान दुष्प्रभाव पड़ेगा।
  2. परीक्षण होने से आपको "आत्मविश्वास से प्रतिक्रिया करने" की अनुमति मिल जाएगी और यह पता चल जाएगा कि आप सिस्टम के दूसरे हिस्से को तोड़ नहीं रहे हैं।
  3. आप गुणवत्ता का निर्माण कर रहे हैं। न केवल आपको यह आश्वासन मिलेगा कि आप "कोड" काम करते हैं, लेकिन यदि आप वास्तव में संभावित नियोक्ताओं के लिए इस तरह के "रेज़्यूमे" के रूप में इस कोड का उपयोग करना चाहते हैं, तो यह उन्हें दिखाएगा कि आप कोड गुणवत्ता पर बहुत अधिक मूल्य। यह अकेले आपको अधिकांश डेवलपर्स से अलग कर देगा।

इसके अलावा, मैं सहमत हूं कि अन्य बड़े समय बचतकर्ता स्प्रिंग हैं, जिसमें स्वचालित निर्माण (मेवेन) , और स्रोत नियंत्रण के कुछ रूपों का उपयोग कर

0

Spring Roo न केवल आपके प्रोजेक्ट को किकस्टार्ट किया जा सकता है (ध्वनि आर्किटेक्चर का उपयोग करके) बल्कि आपके चालू रखरखाव को भी कम कर सकता है। अगर आप हैं वसंत, servlets, और/या जेपीए का उपयोग करने की सोच, आपको निश्चित रूप से इसे विचार करना चाहिए। सुरक्षा जैसी चीज़ों पर परत करना भी आसान है।

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