जावा ऐप में MVC का उपयोग करना


10

मुझे एक क्रॉस-प्लेटफ़ॉर्म GUI एप्लिकेशन को संसाधित करने के लिए (कई थ्रेड्स में) लिखने और डेटा की काफी बड़ी मात्रा की कल्पना करने की आवश्यकता है। आदर्श रूप से आवेदन अपेक्षाकृत तेज होना चाहिए और अच्छा दिखना चाहिए।

ऐप के इंटरफ़ेस में टेबल विजेट, ट्री विजेट और कस्टम फिगर-ड्राइंग विजेट शामिल होंगे। उपयोगकर्ता इनमें से किसी भी विजेट से डेटा को संशोधित करने में सक्षम होगा और परिवर्तन तुरंत अन्य विजेट में परिलक्षित होना चाहिए।

स्वाभाविक रूप से, मैं एमवीसी का उपयोग करने की योजना बना रहा हूं। हालाँकि, मैं सामान्य रूप से C ++ / Qt में अपने सभी GUI प्रोग्रामिंग करता हूं, और जावा के लिए बहुत सीमित जोखिम है। तो मैं वास्तव में जावा में इस तरह के ऐप को व्यवस्थित करने के बारे में किसी भी सलाह की सराहना करूंगा। विशेष रूप से, मुझे स्विंग या JavaFX का उपयोग करना चाहिए? आप नौकरी के लिए कौन से विजेट चुनेंगे? क्या आप जावा प्लेटफ़ॉर्म के इन पहलुओं को कवर करने वाली किसी भी पुस्तक / ऑनलाइन ट्यूटोरियल की सिफारिश कर सकते हैं?

मैं किसी भी प्रतिक्रिया की बहुत सराहना करूंगा। धन्यवाद!

(यह सवाल मूल रूप से स्टैक ओवरफ्लो पर पोस्ट किया गया था , लेकिन इस साइट को इसे पूछने के लिए अधिक उपयुक्त स्थान के रूप में सुझाया गया था)

जवाबों:


21

यह सब बहुत व्यक्तिपरक है क्योंकि कई अलग-अलग प्रौद्योगिकियां आपकी आवश्यकताओं को पूरा करने में सक्षम होंगी।

दूसरों की तरह, मैं शायद सिर्फ उस तकनीक की सलाह दूंगा जिसे मैं व्यक्तिगत रूप से ऐसी परियोजना के लिए पसंद करूंगा, जो कि JavaFX हो

कारण मैं सुझाऊंगा कि JavaFX हैं:

ठीक है, मुझे लगता है कि ऊपर एक स्पर्शरेखा का एक सा है, लेकिन मुझे JavaFX को बढ़ावा देना पसंद है; ;-)

वैसे भी, आपके प्रश्न में विशिष्ट बिंदुओं को संबोधित करने के लिए:

  • JavaFX एक क्रॉस-प्लेटफ़ॉर्म GUI फ्रेमवर्क है (वर्तमान में Mac / Windows / Linux)।
  • JavaFX में इनबिल्ट, हाई क्वालिटी मल्टीपल थ्रेडिंग सपोर्ट है (कोर फ्रेमवर्क सिंगल-थ्रेडेड है, जैसा कि वहां मौजूद हर दूसरे GUI प्लेटफॉर्म के बारे में है, लेकिन आप GUI थ्रेड से अपने खुद के कार्यों को समवर्ती रूप से निष्पादित करने के लिए परिभाषित कर सकते हैं ताकि GUI थ्रेड बना रहे। उत्तरदायी)।
  • एक अच्छी तरह से लिखा जावाएफएक्स कार्यक्रम में कोई भी मुद्दा नहीं होना चाहिए जो काफी बड़ी मात्रा में डेटा की कल्पना कर सके। यहाँ एक नमूना जावाएफएक्स परियोजना है जो ऐसा करती है।
  • सीएसएस के माध्यम से एप्लिकेशन को स्टाइल करने की क्षमता, दृश्य प्रभाव और एनीमेशन का उपयोग करना, आपको अपने ऐप को शानदार बनाने के लिए डिजाइनरों के साथ काम करने की अनुमति देता है या यदि आपके पास कौशल है तो इसे स्वयं करें।
  • JavaFX में एक टेबल व्यू और एक ट्री व्यू है जिसका आप उपयोग कर सकते हैं। एक संयुक्त ट्रीटेबल नियंत्रण भी है जिसे जावा 8 रिलीज की तैयारी में विकसित किया गया है ।
  • कस्टम फिगर ड्राइंग विजेट दृश्य ग्राफ आकृतियों या एक प्रत्यक्ष ड्रॉ कैनवास का उपयोग कर सकता है - यह वास्तव में कोडिंग शैली और वरीयता का मामला है।
  • JavaFX के गुणों और बाइंडिंग सुविधाओं के साथ यह ईवेंट श्रोता फ्रेमवर्क है जो एक नियंत्रण का उपयोग करके डेटा को संशोधित करने के लिए तुच्छ बनाता है और अन्य नियंत्रणों में तुरंत दिखाई देने वाले परिवर्तन होते हैं।
  • एमवीसी शैली के विकास के लिए, आप अपने मॉडल को सादे जावा वस्तुओं का उपयोग करके लिख सकते हैं, एफएक्सएमएल मार्कअप भाषा (यदि वांछित हो तो SceneBuilder ग्राफिकल लेआउट टूल का उपयोग करके बनाया गया) का उपयोग करके अपने दृष्टिकोण को परिभाषित करें और जावा में अपने नियंत्रण तर्क को परिभाषित करें (या कोई अन्य स्क्रिप्टिंग भाषा जिसे आप पसंद करते हैं) , प्लस आपको सीएसएस का उपयोग करके अपनी शैली को अपने तर्क से अलग करना चाहिए।
  • जैसा कि आपके पास जावा के लिए सीमित जोखिम है, सीखने की अवस्था महत्वपूर्ण होगी। मेरे द्वारा पहले से लिंक किए गए JavaFX ट्यूटोरियल्स के अलावा उत्कृष्ट जावा ट्यूटोरियल हैं जो इसके साथ मदद कर सकते हैं। JavaFX कोर कोड केवल JDK में उपलब्ध सुविधाओं का उपयोग करता है, इसलिए JavaFX का उपयोग करने के लिए आपको कई अतिरिक्त लाइब्रेरी और फ्रेमवर्क सीखने की आवश्यकता नहीं है (जैसे कि यदि आप उदाहरण के लिए JavaEE सीख रहे थे)। तो उन दो tuotorial साइटों को सबसे अधिक जानकारी प्रदान करने के लिए आपको गति की आवश्यकता होती है।
  • एप्लिकेशन संगठन के लिए, यदि आपके पास एक जटिल एप्लिकेशन है और एक पूर्ण, साबित क्लाइंट एप्लिकेशन फ्रेमवर्क के समर्थन की आवश्यकता है और बहुत कुछ अतिरिक्त सीखने का मन नहीं है, तो आप एक्लिप्स आरसीपी या नेटबीन्स आरसीपी में जावाएफएक्स को एम्बेड कर सकते हैं , जो तदनुसार उनके पेज आपके लिए विकास के वर्षों को बचा सकते हैं। मैं केवल ऐसे प्लेटफार्मों को देखने की सलाह दूंगा, अगर आपकी ज़रूरतें इसे उचित ठहराती हैं, क्योंकि छोटे से मध्यम आकार की परियोजनाओं के लिए, संभवतः ग्रहण और नेटबींस जैसे जटिल क्लाइंट प्लेटफॉर्म फ्रेमवर्क के बिना जावाएफ़एक्स में सीधे सामान को कोड करना सरल होगा।
  • जैसे कि क्या आपको स्विंग या जावाएफ़एक्स का उपयोग करना चाहिए, मैं वास्तव में इसका जवाब देने के लिए सबसे अधिक उद्देश्य वाला व्यक्ति नहीं हूं। JavaFX में निश्चित रूप से कमियां हैं जो आपके लिए स्पष्ट हो जाएंगी क्योंकि आप इसका उपयोग करना शुरू कर देंगे (जैसे कि स्विंग)।
  • ऑनलाइन ट्यूटोरियल के लिए, मैं सबसे अधिक प्रासंगिक लोगों से जुड़ा हुआ हूं। एक पूर्ण ऐप के लिए एक अच्छा ट्यूटोरियल सेट है
  • उदाहरण के लिए प्रो JavaFX 2 और JavaFX 2.0 परिचय पुस्तकें उच्च श्रेणी की हैं।

इस अद्भुत उत्तर के लिए धन्यवाद! JavaFX यकीन है कि एक मधुर मंच की तरह लगता है और मैं निश्चित रूप से इसमें बहुत समय लगाने जा रहा हूं। साथ ही आपके द्वारा सुझाई गई दोनों पुस्तकें मेरी लाइब्रेरी पर उपलब्ध हैं :)
egor

1
यह "दुनिया में सबसे अच्छा IDE" लिंक वास्तव में सिर्फ IntelliJ IDEA को इंगित करना चाहिए;) महान जवाब, बहुत जानकारीपूर्ण, धन्यवाद!
कूपर

1
यह ध्यान दिया जाना चाहिए कि वर्तमान में JavaFX के पास कोई पहुंच सहायता नहीं है। यह कुछ के लिए एक सौदा ब्रेकर हो सकता है (यह मेरे लिए था) और स्विंग का उपयोग करना जारी रखना होगा।
कूपर

JavaFX अब एक्सेसिबिलिटी सपोर्ट प्रदान करता है। यह कार्यक्षमता जावा 8u40 में दी गई थी, जिसके लिए JEP 204: JavaFX एक्सेसिबिलिटी लागू की गई थी।
रत्नों

5

इसके बजाय एक मॉडल-दृश्य-प्रस्तुतकर्ता पैटर्न के साथ जाएं। आप mvp4j प्रोजेक्ट के माध्यम से यहां स्विंग में एक अच्छा एमवीपी उदाहरण देख सकते हैं ।

स्विंग नहीं करते हुए, मैं इस पैटर्न पर आगे की जानकारी के लिए जीवीटी Google डेवलपर्स साइट पर एमवीपी लेखों की भी जांच करूंगा और इसे जावा में कैसे लागू करूं; एक ही डिज़ाइन प्रिंसिपल फ्रेमवर्क की परवाह किए बिना खड़े रहते हैं और GWT स्विंग के समान है।

एमवीपी कैसे काम करता है इसका एक त्वरित ब्रेकडाउन:

  • दृश्य : एक वर्ग जिसमें आपके GUI घटक सख्ती से हैं। तर्क या मॉडल के बारे में जागरूकता नहीं, घटना संचालकों की भी नहीं। यह विचारों को बहुत गूंगा बनाता है, फिर भी बहुत डिस्पोजेबल और परिवर्तनशील है।
  • प्रस्तुतकर्ता : एक वर्ग जो आपके आवेदन तर्क को संभालता है। एक प्रस्तुतकर्ता एक (या अधिक) दृश्य वर्गों से बंधेगा और सभी आवश्यक एप्लिकेशन लॉजिक और मॉडल नियंत्रण को संभाल लेगा।
  • मॉडल : आपका डेटा मॉडल ऑब्जेक्ट। इसे POJO की तरह रखना संभव है (जैसे कि पुरानी पुरानी जावा की वस्तुएं)।

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

संपादित करें: JavaFX का उपयोग करने के आपके निर्णय के आधार पर, मैं निम्नलिखित लेखों को देखने की सलाह दूंगा


धन्यवाद! मुझे लगता है कि मैंने JavaFX के साथ जाने का फैसला किया है, लेकिन एमवीपी और इस प्लेटफॉर्म के साथ इसका उपयोग कैसे किया जा सकता है, इसके बारे में पढ़ेंगे।
egor

1
महान! यदि आप MVP पैटर्न का उपयोग करने का निर्णय लेते हैं, तो यहां एक लिंक है जो JavaFX code.google.com/p/pennychecker-presenter/wiki/JavaFxMvpExample
कूपर

2

आपके द्वारा आवश्यक विजेट्स को Swing या SWT दोनों में पाया जा सकता है । प्रलेखन में घटकों (स्विंग) या विगेट्स (एसडब्ल्यूटी) के उदाहरण हैं, इसलिए उन्हें पहचानना काफी आसान होगा।

स्विंग जीडीआई लाइब्रेरी JDK में शामिल है और इसे स्क्रैच से बनाया गया है। SWT एक बाहरी है और घटक मूल निवासी पर आधारित हैं।

एमवीसी के लिए, वे दोनों इसके लिए समर्थन करते हैं। स्विंग में आपके पास प्रत्येक घटक के लिए एक मॉडल है जो व्यावहारिक रूप से अंतर्निहित डेटा प्रदान करता है। घटक स्वयं दृश्य और नियंत्रक दोनों है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.