डेस्कटॉप अनुप्रयोगों के लिए जावा बनाम x स्विंग [बंद]


195

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

मेरी मुख्य चिंता यह है कि डेस्कटॉप GUI एप्लिकेशन के लिए क्या बेहतर होगा? (मैंने ऑनलाइन देखा और बहुत से लोग सुझाव देते हैं कि JavaFX स्विंग की तरह ही अच्छा है, लेकिन मैंने साधारण राय लौ युद्धों को छोड़कर कई वैध तर्क नहीं देखे)। इसमें विंडोज, मैक और कुछ लोकप्रिय लिनक्स वितरणों पर काम करना होगा।

  • क्लीनर और बनाए रखने में आसान क्या होगा?

  • और खरोंच से निर्माण करने के लिए क्या तेज होगा?

मैं अपने आवेदन में एमवीसी मेथोलॉजी का उपयोग कर रहा हूं, अगर वह किसी भी मदद का हो।


23
JavaFX अच्छा है कि आप स्क्रैच से शुरू कर रहे हैं। इसके अलावा, क्योंकि JavaFX आधिकारिक रूप से स्विंग को जावा के लिए Oracle की UI लाइब्रेरी के रूप में बदल रहा है। इसका मतलब यह नहीं है कि स्विंग को दूर किया जाता है। इसका मतलब है कि JavaFX को हर रिलीज में बहुत अधिक ध्यान देना होगा। इसके साथ ही कहा कि, इस विषय पर SO और अन्य जगहों पर Google पर पहले से ही एक लाख सवाल हैं।
nico_c

3
stackoverflow.com/questions/10587713/… मैंने भी Google का उल्लेख किया है। वहाँ पहले से ही बहुत।
nico_c

ठीक है, तो सुझाव वास्तव में एफएक्स लगता है, तो मैं इसे खुला रखूंगा, लेकिन मुझे लगता है कि एक जवाब स्वीकार करेगा। लिंक के लिए धन्यवाद।
Quillion

1
यहां JavaFX का त्वरित सारांश है, हालांकि SWT, स्विंग या JavaFX में से कोई भी डेस्कटॉप एप्लिकेशन का उत्पादन करने के लिए काम करेगा।
गहने

किसी ने भी इसका उल्लेख नहीं किया है, लेकिन लापता "jfxrt.jar" समर्थन के कारण, ओरेकल (उदाहरण के लिए सोलारिस) द्वारा समझा जाने वाले कुछ आर्किटेक्चर पर जावाएफ़एक्स संकलन या भाग नहीं करता है।
मैल्कम बोकेहॉफ़

जवाबों:


155

क्लीनर और बनाए रखने में आसान क्या होगा?

सभी चीजें बराबर हो रही हैं, शायद JavaFX - एपीआई घटकों के बीच अधिक सुसंगत है। हालाँकि, यह इस बात पर अधिक निर्भर करता है कि इसे लिखने के लिए लाइब्रेरी का उपयोग करने के बजाय कोड को कैसे लिखा जाता है

और खरोंच से निर्माण करने के लिए क्या तेज होगा?

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

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

व्यक्तिगत रूप से, मैं "ऊपर और आने वाले" वह नहीं है यूआई पुस्तकालय के रूप में JavaFX देखना काफी वहाँ अभी तक (लेकिन अधिक से अधिक प्रयोग करने योग्य), और कहा कि पूरी तरह से विशेष रुप से प्रदर्शित और पल के लिए समर्थित है सीमा रेखा-लीगेसी UI पुस्तकालय के रूप में स्विंग, लेकिन शायद नहीं होगा आने वाले वर्षों में इतना (और इसलिए संभावना है कि एफएक्स इसे किसी बिंदु पर आगे निकल जाएगा।)


1
मेरा मानना ​​है कि ये सभी बिंदु .NET दुनिया के साथ-साथ डेस्कटॉप GUI दुनिया पर भी लागू होते हैं, जहां Windows प्रस्तुति फाउंडेशन पुराने विंडोज फॉर्म को बदलने का लक्ष्य रखता है, इसलिए यह सभी पहलुओं में सैद्धांतिक रूप से बेहतर है, सिवाय इसके (अभी तक) नहीं? लेकिन यह साल रहा है) देशी सामान्य नियंत्रणों / शेल लुक का समर्थन करें जो आप एक सरल फ़ाइल संवाद / निर्देशिका ब्राउज़र / ट्री व्यू नियंत्रण जैसे अपेक्षा के लिए आए हैं।
बिटुलेन

84

जैसा कि ओरेकल द्वारा कहा गया है, JavaFX उनके जावा आधारित समृद्ध ग्राहक रणनीति का अगला चरण है। तदनुसार, यह वही है जो मैं आपकी स्थिति के लिए सुझाता हूं:

इसे बनाए रखने के लिए क्या आसान और साफ होगा

  • JavaFX ने स्विंग पर कई सुधार किए हैं, जैसे कि, FXML के साथ UI को चिह्नित करने की संभावना, और CSS के साथ थीमिंग। इसमें एक मॉड्यूलर, स्वच्छ और बनाए रखने योग्य कोड लिखने की बहुत क्षमता है।

खरोंच से निर्माण करने के लिए तेजी से क्या होगा

  • यह आपके कौशल और आपके द्वारा उपयोग किए जाने वाले उपकरणों पर अत्यधिक निर्भर है।
    • स्विंग के लिए, विभिन्न आईडीई तेजी से विकास के लिए उपकरण प्रदान करते हैं। सबसे अच्छा मुझे व्यक्तिगत रूप से मिला है जो नेटबीन्स में जीयूआई बिल्डर है ।
    • JavaFX को विभिन्न IDE के साथ-साथ समर्थन भी प्राप्त होता है, हालांकि वर्तमान में स्विंग जितना समर्थन नहीं है। हालांकि, एफएक्सएमएल और सीएसएस में मार्कअप के लिए इसका समर्थन जावाएफएक्स सहज ज्ञान पर जीयूआई विकास करता है।

MVC पैटर्न समर्थन

  • JavaFX MVC पैटर्न के साथ बहुत अनुकूल है, और आप अपने काम को सफाई से अलग कर सकते हैं: प्रस्तुति (एफएक्सएमएल, सीएसएस), मॉडल (जावा, डोमेन ऑब्जेक्ट) और तर्क (जावा)।
  • IMHO, स्विंग में MVC समर्थन बहुत आकर्षक नहीं है। विभिन्न घटकों में आप जो प्रवाह देखेंगे, उसमें स्थिरता का अभाव है।

अधिक जानकारी के लिए, कृपया यहां JavaFX के संबंध में Oracle द्वारा इन FAQ पोस्ट को देखें।


14

किसी ने भी इसका उल्लेख नहीं किया है, लेकिन लापता "jfxrt.jar" समर्थन के कारण, ओरेकल (उदाहरण के लिए सोलारिस) द्वारा समझा जाने वाले कुछ आर्किटेक्चर पर जावाएफ़एक्स का संकलन या संचालन नहीं करता है। अगली सूचना तक, SWT के साथ रहें।


13
@Quillion विशेष रूप से एक डेस्कटॉप एप्लिकेशन के निर्माण के लिए कुछ मांगता है कि "दोनों विंडोज़, मैक और कुछ लोकप्रिय लिनक्स फ्लेवर्स पर काम करना है।" । इसलिए मुझे लगता है कि वह सोलारिस की परवाह नहीं करता है।
टिम ब्यूटे

5

मुझे नहीं लगता कि इस सवाल का कोई एक सही जवाब है, लेकिन मेरी सलाह SWT के साथ रहने की होगी जब तक कि आप गंभीर सीमाओं का सामना नहीं कर रहे हैं, जिसके लिए इतने बड़े पैमाने पर ओवरहाल की आवश्यकता है।

इसके अलावा, SWT वास्तव में स्विंग की तुलना में नया और अधिक सक्रिय रूप से बनाए रखा गया है। (यह मूल रूप से देशी घटकों का उपयोग करके स्विंग के प्रतिस्थापन के रूप में विकसित किया गया था )।


16
SWT का उद्देश्य कभी भी स्विंग को बदलना नहीं था। ऐसा कैसे? स्विंग जावा से SUN के साथ आया था और SWT केवल 4 या 5 प्लेटफार्मों पर चलता है और मूल रूप से IBM से आता है और आगे Eclisation Foundation में विकसित किया गया। यदि आप सभी कह सकते हैं: SWT का उद्देश्य AWT को बदलना है।
एंजेल ओ'सेफेरे

0

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


0

एकीकृत वीडियो के साथ पुराने नोटबुक पर स्विंग ऐप शुरू होता है और जावाएफएक्स ऐप की तुलना में बहुत तेज़ी से काम करता है। विकास के लिए, मैं स्केला पर स्विच करने की सलाह दूंगा - तुलनीय स्कैला स्विंग ऐप में जावा की तुलना में 2..3 गुना कम कोड है। स्विंग बनाम SWT के लिए के रूप में: Netbeans GUI ग्रहण की तुलना में काफी तेज ...


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