जावा स्विंग GUI फ्रेमवर्क में क्या कमियां हैं? [बन्द है]


11

मैंने कुछ डेस्कटॉप अनुप्रयोगों के लिए जावा स्विंग का उपयोग किया है। लेकिन मैंने अन्य GUI फ्रेमवर्क का उपयोग नहीं किया है, इसलिए मैं उनकी तुलना नहीं कर सकता।

निश्चित रूप से कुछ चीजें हैं जो मुझे स्विंग के साथ पसंद हैं और कुछ जो मुझे पसंद नहीं हैं, लेकिन लगभग हर चीज के साथ यही स्थिति है।

जावा स्विंग GUI ढांचे के साथ सबसे बड़ी कमियां क्या हैं?


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

जवाबों:


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

  2. हालाँकि, यह सब कुछ लिखने-छांटने के बाद, कहीं भी चलता है, फिर भी आप पाते हैं कि मैक OSX में यह नई बात नहीं है जिसका आप उपयोग करना चाहते हैं या एक ग्राहक अपने मैनड्रैक लिनक्स पिछले JRE 1.4 को अपग्रेड करने से मना कर देता है।

  3. एक देवता के रूप में, आपको थ्रेडिंग के बारे में सोचना होगा। और यह एक मुश्किल तरीके से है, जैसा कि मल्टी-थ्रेडिंग संभव है, लेकिन स्विंग का नाटक ऐसा है जैसे यह सभी एकल-थ्रेडेड है। लेकिन तब आपके द्वारा खींची गई आधी लाइब्रेरियों में कुछ हद तक मल्टी-थ्रेडिंग होती है और यह मान लिया जाता है कि आप EDT इनवोकलेटर के बारे में जानते हैं और यह बहुत सारे पाठों को कठिन तरीके से लागू करता है।

  4. स्विंग अनुभव अन्य प्रकार के UI विकास में आसानी से स्थानांतरित नहीं होता है। उदाहरण के लिए यदि आप .css में तालिकाओं में एक विशेषज्ञ हैं, तो आप Jtables, रेंडरर्स, संपादकों, आदि द्वारा पूरी तरह से स्पष्ट होने जा रहे हैं।

सामान्य तौर पर, स्विंग के साथ मुख्य समस्या यह है कि यह कैसे विपणन के लिए नहीं रहता था। यह बहुत सारे उपयोग के मामलों के लिए एक पूरी तरह से पर्याप्त तकनीक है, लेकिन वे पहले 5 या 6 साल भयानक कार्यान्वयन और अत्याचारी एप्लेट से भरे हुए थे। और अब यह पुरानी तकनीक है - वेब 3.0 या जो भी हो।

सभी ने कहा, मुझे स्विंग पसंद है और लगता है कि पेशेवरों को आम तौर पर विपक्ष से बाहर निकलता है जब आपको इसकी आवश्यकता होती है कि यह क्या प्रदान करता है। हालाँकि वेब अनुभव अब इतना सर्वव्यापी है कि कई उपयोगकर्ता सबसे सुव्यवस्थित अद्भुत स्विंग ऐप की तुलना में वेब ऐप के साथ एक आसान समय बिता रहे हैं। और वहाँ बहुत बढ़िया स्विंग ऐप्स हैं, लेकिन वे मुख्यधारा नहीं लगते हैं।


1
मैं ओपी की तुलना में एक ही स्थिति में हूं: मैं स्विंग जानता हूं और अन्य जीयूआई उपग्रहों की तुलना में इसमें हस्तक्षेप कर रहा हूं। मेरे लिए, बिंदु 1, 2 और 4 प्रश्न के लिए अप्रासंगिक हैं। तो, मैं बिंदु 3 पर प्रतिक्रिया करना चाहूंगा: क्या आप मल्टीथ्रेडेड GUI टूलकिट के कुछ उदाहरण दे सकते हैं, कृपया? धन्यवाद।
बरजक

2
@barjak: मल्टीथ्रेडेड GUI एक गलती है। केवल एक ही मुझे पता है कि पुराने जावा AWT है। लेकिन उन्होंने गलतियों से सीखा जब उन्होंने स्विंग डिजाइन किया, जो सभी आधुनिक जीयूआई रूपरेखा के रूप में पिरोया हुआ है।
जोनास

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

3
@ सच: यह सच है। लेकिन आपको आरयूआई कॉल और जीयूआई-थ्रेड में गहन गणना नहीं करनी चाहिए । इस तरह की चीजों को एक पृष्ठभूमि थ्रेड में किया जाना चाहिए, जैसे कि स्विंग और WPF में।
जोनास

। समान नियम आम तौर पर लागू होते हैं, हालांकि, आप अपने GUI घटकों को उस थ्रेड से नहीं छू सकते हैं जिसने उन्हें बनाया है।
स्टीव जैक्सन

2

जोनास,

स्विंग आपको आपके अंतर्निहित आर्किटेक्चर को एक मंच तटस्थ उपयोगकर्ता अनुभव प्रदान करने के लिए सामान्यीकृत करता है। एकमात्र हैवीवेट घटक (OS द्वारा प्रदान किया गया) JFrame कंटेनर है और बाकी स्विंग स्विंग द्वारा बहुत अधिक नियंत्रित किया जाता है। दूसरी मुश्किल पर AWT, OS को यूआई के सभी घटकों को आकर्षित करने के लिए कहता है, जिसका अर्थ है कि यह आपके ओएस के लिए विशिष्ट यूआई घटकों का उपयोग करते हुए बहुत सारे तरीकों से तेज़ है। SWT विभिन्न मानक घटकों जैसे बटन और लेबल (जो कि अधिकांश OS पर उपलब्ध हैं) के लिए, एक मध्य मैदान को प्राप्त करने की कोशिश करता है, यह OS को उन और अन्य विशेष घटकों के लिए सौदा करने देता है, SWT आपके लिए निर्माण को संभालेगा।

यह कहा गया है, मैं कमियों को रेखांकित कर सकता हूं।

(1) चूंकि टूलकिट OS पूछने के बजाय आपके लिए घटकों को बनाता है और प्रदान करता है, इसलिए आपको OS द्वारा प्रदान किए गए घटकों में निर्मित गति का लाभ उठाने की आवश्यकता नहीं है।

(2) यूआई पार्टिकुअली अट्रैक्टिव नहीं है क्योंकि यह सबसे ओएस प्लेटफॉर्म पर एलियन दिखता है जो आपके इस्तेमाल और लुक को महसूस करता है।

(३) कुछ लेआउट मैनेजर अर्थात ग्रिडबडलैयूट आदि को बेहतर बनाया जा सकता है। मैंने उन परियोजनाओं की संख्या खो दी है, जिन पर मैंने काम किया है, जहाँ लोगों ने इसका उपयोग करने का एक सरल तरीका प्राप्त करने के लिए कुछ bespoke कोड में GridBagLayout को लपेटा है।

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


4
स्विंग को GPU-त्वरित किया जाता है , जो कि देशी फ्रेमवर्क अक्सर नहीं होता है, इसलिए मुझे वास्तव में लगता है कि स्विंग तेज़ है। यह भी रणनीति है कि विंडोज पर WPF है, लेकिन WinForms नहीं (केवल विंडोज के कुछ संस्करणों पर)। कैसे "[बदसूरत] ... का उपयोग करते हुए आप किस रूप को देखते हैं और महसूस करते हैं" यह तब सच हो जाता है जब यह बहुत ही कस्टमाइज़ करने योग्य होता है या आप अपने स्वयं के लाफ प्लेटफार्मों का उपयोग कर सकते हैं? मैं मानता हूं कि लेआउट प्रबंधक वास्तव में खराब हैं।
जोनास

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

बदसूरत गलत शब्द हो सकता है; एलियन एक बेहतर शब्द हो सकता है क्योंकि लुक और फील बिल्कुल वैसा ही नहीं होता जैसा कि देशी यूआई लुक और फीलिंग, जो मुझे याद है, उससे आपको जावा, मोटिफ, मेटल और कुछ अन्य मिलते हैं, लेकिन सामान्य तौर पर, वे ' टी कि सभी सुंदर।
सांत्वना ग्रह

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

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

-2

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


5
मैं इसे तेज़ी से ढूँढता हूँ (इसमें कई देशी GUI की तुलना में GPU त्वरण है), इसलिए मैं प्रदर्शन से सहमत नहीं हो सकता या आपके पास कोई उदाहरण नहीं है? अन्य रूपरेखाओं की तुलना में यह कितना कठिन और अनाड़ी है? मैं मानता हूं कि यह अच्छा नहीं लगता है, लेकिन इसे देशी ऐप्स की तरह दिखने या कस्टम एलएएफ का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है।
जोनास

यह GTK पर हमेशा कमोबेश गैर-देशी दिखता है। मैंने जो सुना है वह इसलिए है क्योंकि यह विगेट्स खींचने के लिए जावा 2 डी पर निर्भर है, यह धीमा है, लेकिन मेरे पास यह साबित करने के लिए कुछ भी नहीं है। क्यूटी और जीटीके दोनों ही मुझे कम अनाड़ी लगते हैं, लेकिन स्वाद अलग है।
Anto

आह, यह कुछ प्लेटफार्मों पर बदतर प्रदर्शन कर सकता है। मैंने इसे केवल विंडोज पर उपयोग किया है जहां यह GPU त्वरित और बहुत तेज है।
जोनास

6
लोग अब भी शिकायत करते हैं कि कुछ अधिक देशी नहीं दिखता है, जबकि अधिक से अधिक ब्राउज़र-चीजें (सोचें: स्टैकएक्सचेंज), जहां हर पृष्ठ अलग दिखता है? और गति? अधिकांश समय, एक इंटरैक्टिव GUI प्रोग्राम उपयोगकर्ता की प्रतीक्षा कर रहा है।
उपयोगकर्ता अज्ञात

2
अधिकांश "ट्रेंडी" कार्यक्रम अब मूल नहीं लगते हैं। उस संबंध में स्विंग बेहतर या बुरा नहीं होता है। हमारे 50kloc स्विंग ऐप (वसा क्लाइंट) का प्रदर्शन ठीक है। "देशी" अनुप्रयोगों की तुलना में दुर्घटनाग्रस्त न होने के बिंदु पर स्विंग प्राप्त करना बहुत आसान है।
टिम विस्क्रॉफ्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.