क्या आप अपने स्विंग प्रोजेक्ट को JavaFX में माइग्रेट करना शुरू करते हैं [बंद]


13

मेरे पास एक 4 साल पुरानी परियोजना है जो स्विंग + स्विंगिंगएक्स में लिखी गई है। वर्तमान में, यह अभी भी जीवित है और अभी भी लात मार रहा है।

हालाँकि, अधिक GUI से संबंधित फ़ीचर अनुरोध आने वाले हैं (उदाहरण के लिए, एक सॉर्टेबल ट्री टेबल), मुझे अनुरोधों को पूरा करने में कठिनाई महसूस होने लगती है। यह विशेष रूप से सच है क्योंकि स्विंगएक्स परियोजना के आसपास कोई सक्रिय विकास नहीं हो रहा है।

इसके अलावा, मैं शायद ही किसी भी अच्छे, अभी तक सक्रिय रूप से बनाए रखा / विकसित / विकसित जीयूआई जावा फ्रेमवर्क पा सकता हूं।

मैं सोच रहा था, क्या किसी भी स्विंग डेवलपर्स को एक ही बात महसूस होती है? क्या आपने अपने स्विंग प्रोजेक्ट को JavaFX की तरह बहुत अधिक सक्रिय विकसित GUI फ्रेमवर्क में माइग्रेट करना शुरू कर दिया है?


क्या आपने SWT में देखा है? stackoverflow.com/questions/2306190/…
FrustratedWithFormsDesigner

7
इसका मतलब यह नहीं है कि अगर आपको वह स्विंग नहीं मिला है।
रॉबर्ट हार्वे

स्विंग क्रॉस-प्लेटफ़ॉर्म है ... javaFX2 नहीं है .. केस बंद।

@ यह विंडोज, लिनक्स और OSX पर उपलब्ध है। यानचेनचेक, ट्रीटेबल को JavaFX 8 (इस साल बाद में संभवतः सितंबर में जावा 8 के साथ जारी किया गया है) के लिए योजना बनाई गई है।
assylias

जवाबों:


9

मैं व्यक्तिगत रूप से JavaFX पर जा रहा हूं (2.1+, पुराने अजीब 1.x वर्जन के साथ नॉटी स्क्रिप्टिंग लैंग्वेज नहीं)। नया JavaFX 100% सही नहीं है, लेकिन यह पहले से ही स्विंग की तुलना में उपयोग करने के लिए अधिक सुखद है, मैं इसके लिए एक उचित भविष्य देखता हूं (विशेष रूप से एम्बेडेड वेबकिट इंजन)।


9

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

फिलहाल, मेरी चिंताएं हैं:

  • अपरिपक्वता

    हां, हम जल्द ही 3.0 पर जा रहे हैं, लेकिन यह इस लंबे समय के आसपास नहीं है, और अभी भी बड़े बदलावों से गुजरा है। इसलिए बड़े और जोखिम से ग्रस्त कॉरपोरेट सॉफ्टवेयर के लिए, यह एक अपेक्षाकृत दुख की बात है।

  • प्रदर्शन

    मैंने प्रदर्शन अंतर पर पर्याप्त हार्ड-डेटा नहीं देखा है।

  • विजेट और घटक

    मैंने नए घटकों में पर्याप्त लाभ नहीं देखा है। यह अपरिपक्वता से संबंधित हो सकता है, मुझे लगता है। मुझे यह भी नहीं पता है कि स्विंग के विपरीत, उन्हें कितनी अच्छी तरह बढ़ाया और कंपोज़ किया जा सकता है।

कुल मिलाकर, मैं अनुमान लगाता हूं कि हार्ड-डेटा उन फायदों पर है, जो मुझे JavaFX द्वारा पूरी तरह से आश्वस्त होने के लिए याद आ रहे हैं।

दूसरी ओर, स्विंग साबित होता है और परीक्षण किया जाता है। हां, API क्लिंक है और JTextPane जैसी स्विंग ऑब्जेक्ट पर आपके IDE में ऑटो-कम्प्लीट को इनवाइट करता है, जिससे वह रोएगा और अपने मम्मी के लिए रोएगा, लेकिन, यदि आप पर्याप्त जानकार हैं, तो आप स्विंग के साथ भयानक यूआई कर सकते हैं, अच्छा प्रदर्शन कर रहे हैं (मैंने कभी भी स्विंग-बाय-बैड-परफॉर्मेंस में गिरावट नहीं की, रोमेन गाइ को सूर्य के ब्लॉग पर पूर्व ब्लॉग पोस्ट देखें) और आपको बहुत साफ-सुथरी चीजें करने की अनुमति देता है।

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


5

मैं अब बहुत सारे JavaFX कर रहा हूं और मैं इसे स्विंग के ऊपर पसंद करता हूं। दृश्य ग्राफ़ संरचना आपके द्वारा स्विंग के साथ उपयोग की जाने वाली चीज़ों से भिन्न है, लेकिन यह बहुत सुधार प्रदान करती है। एपीआई के साथ काम करने के लिए मजेदार है, यह ताज़ा लगता है।

बहुत कुछ आप इसके साथ कर सकते हैं, मल्टीमीडिया, एनीमेशन, वेब ब्राउज़िंग। उदाहरण के लिए , आप कोड की कुछ पंक्तियों में HTML5 और जावास्क्रिप्ट को एम्बेड करके Google मैप्स एप्लिकेशन का निर्माण कर सकते हैं ।

यह जावा 8 रनटाइम में शामिल होने के लिए कहा जाता है, जिसका अर्थ होगा डिफ़ॉल्ट ui ढांचे के रूप में स्विंग का निश्चित प्रतिस्थापन

@ माइग्रेशन : आपको आवेदन के उन हिस्सों को अलग करके शुरू करना चाहिए जिन्हें JavaFX में परिवर्तित किया जा सकता है। स्विंग-जावाएफएक्स 2 इंटरऑपरेबिलिटी एक बड़ी बात है, आप अपने जावाएफएक्स तत्व को एम्बेड करने के लिए javafx.embed.swing.JFXPanel का उपयोग कर सकते हैं। स्विंग-एफएक्स-इंटरऑपरेबिलिटी देखें । (पूर्णता के लिए आप SWT में भी एम्बेड कर सकते हैं।)


स्विंग-जेएफएक्स इंटरऑपरेबिलिटी चीज की कोशिश न करें, यह काफी छोटी है। मैंने इसे अपने ऐप में आज़माया, यह netbeans के भीतर काम करता है, लेकिन अगर मैं सीधे .jar को चलाने की कोशिश करता हूं, तो मुझे अजीब मेमोरी / थ्रेडिंग अन्य त्रुटियां मिलती हैं। बस मेरी राय में नए सिरे से शुरू करें।
क्लिक करें

4

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


3

जबकि नए जावाएफ़एक्स संस्करण बहुत प्रभावशाली दिखते हैं, मुझे संदेह है कि यह पूर्ण प्रवास करने के लायक है जब तक कि आप जीयूआई के पूर्ण ओवरहाल में बहुत समय / प्रयास / पैसा निवेश करने के लिए तैयार न हों।

स्विंग के अपने झटके हो सकते हैं और अपनी उम्र दिखा रहे हैं लेकिन इसके कुछ फायदे भी हैं:

  • बहुत मजबूत क्रॉस-प्लेटफ़ॉर्म क्षमता, वर्तमान में JavaFX से बहुत बेहतर है
  • यह परिपक्व और सिद्ध है, JavaFX की तुलना में बहुत अधिक है
  • इसमें एक बड़ा उपयोगकर्ता समुदाय / पुस्तकालय पारिस्थितिकी तंत्र है
  • आपके पास पहले से ही बहुत सारे स्विंग कौशल हैं या लोगों को आसानी से उनके साथ रख सकते हैं

अंततः, अगर यह टूटा नहीं है, तो इसे ठीक क्यों करें?

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


क्या JavaFX क्रॉस प्लेटफॉर्म क्षमताओं के साथ कोई समस्या है?
क्लिक करें

पिछली बार जब मैंने जाँच की थी कि JavaFX को Windows, Mac और Linux के लिए सपोर्ट किया गया था। यदि आप उससे परे अन्य प्लेटफार्मों को लक्षित कर रहे हैं, तो यह जांचने योग्य है कि स्थिति क्या है .... यदि आप व्यापक क्रॉस-प्लेटफ़ॉर्म क्षमता की तलाश कर रहे हैं, तो स्विंग अभी भी (2012 के मध्य तक) अधिक सुरक्षित है।
मिकेरा

ब्याज के अन्य प्लेटफॉर्म क्या हैं?
अपवोट

1

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

हालांकि, कुछ चीजें स्विंग के साथ बहुत अधिक समय और प्रयास किए बिना हल नहीं की जा सकती हैं जो अनिवार्य रूप से एक विरासत तकनीक है। उदाहरण के लिए, साधारण माउस ईवेंट, नए टच-स्क्रीन डिवाइस के अलावा और स्विंग द्वारा असमर्थित हैं। एक स्विंग आधारित ब्राउज़र घटक प्रदान करना समान रूप से परेशानी या महंगा है, और मेरे मामले में, javafx-in-swing दृष्टिकोण एक विकल्प नहीं है क्योंकि यह गैर-तुच्छ तरीकों से UI इवेंट हैंडलिंग को जटिल करता है।

मुझे लगता है कि यह अपने समय में पुराना और वफादार रहा है, और यदि आपका प्लेटफ़ॉर्म आपके कोड आधार के रूप में अपरिवर्तित है - इसके साथ रहना, जाहिर है। लेकिन एक आवेदन के लिए नए और अधिक समकालीन उपयोग के मामलों में आगे बढ़ने के लिए, JavaFX 2+ शायद मेरे मामले में आगे बढ़ने का तरीका होगा।

एक साइड-नोट के रूप में: स्विंग में एक मिसफिट मुझे जेफ़एक्स में गायब हो जाना पसंद होगा - लेकिन नहीं था - यूआई घटना प्रेषण के लिए एक-धागा-टू-नियम-उन-सभी दृष्टिकोण है। किसी भी गैर-तुच्छ उपयोगकर्ता इंटरफ़ेस को UI कुरकुरा और उत्तरदायी रखने के लिए बहु-थ्रेडिंग की आवश्यकता होती है, और इसे पूरी तरह से एप्लिकेशन डेवलपर के लिए छोड़ देना एक ही नुकसान पर ठोकर खाने के लिए इतनी आसानी से एपीआई IMHO में एक कमी है।


0

मुझे बड़े, डेस्कटॉप-आधारित अनुप्रयोगों में आरसीपी का उपयोग करने का बहुत अच्छा अनुभव है । यह मूल रूप से ग्रहण की GUI परत के अमूर्त के रूप में शुरू हुआ और तब से एक लंबा सफर तय किया है। स्विंग के बजाय, जो AWT पर आधारित है, RCP JFace पर बनता है, जो बदले में SWT पर आधारित है। यह आपको अनुप्रयोगों को विकसित करने और जीयूआई अवधारणाओं का उपयोग करने की अनुमति देता है जो स्वयं ग्रहण का उपयोग करता है (दृश्य, संपादक, दृष्टिकोण, जादूगर, आदि)। यह बहुत ही स्केलेबल है और, एक्लिप्स की तरह, लगातार सुधार किया जा रहा है।

हालाँकि, मैंने कभी भी किसी मौजूदा प्रोजेक्ट को स्विंग से RCP तक माइग्रेट नहीं किया है; मुझे लगता है कि आपके सिर को अलग-अलग प्रतिमानों के चारों ओर लपेटने में काफी समय लगेगा और यदि आपने अपने मॉडल को अलग नहीं किया है और परतों को अच्छी तरह से देखा है, तो आप एक कठिन समय के लिए बाध्य हैं। लेकिन जब से आपने सॉर्टेबल ट्री टेबल जैसी चीजों के बारे में पूछा, आरसीपी उस पर बहुत अच्छा है।

यदि आप इसे फिर से जोड़ना चाहते हैं, तो आप लार्स वोगेल के ट्यूटोरियल को आज़माना चाहते हैं या ओपन सोर्स प्रोजेक्ट्स या वाणिज्यिक परियोजनाओं के कुछ उदाहरणों पर एक नज़र डाल सकते हैं जो आरसीपी का उपयोग करते हैं।


-2

(उदाहरण के लिए, एक सॉर्ट करने योग्य ट्री टेबल), मुझे अनुरोधों को पूरा करने में कठिनाई महसूस होने लगती है। यह सच है कि विशेष रूप से SwingX परियोजना के आसपास सक्रिय विकास नहीं है।

  • सच नहीं है, इस परियोजना को फिर से जीवित है,

  • Blablabla एक बार जब SwingX सूर्य द्वारा अनुदान खो दिया (Oracle द्वारा एक्वैरिंग के दौरान) SwingX से लोगों ने JavaFX बनाया

इसके अलावा, मैं शायद ही कोई अच्छा पा सकता हूं, फिर भी जीयूआई जावा ढांचे को सक्रिय रूप से बनाए रखा / विकसित / विकसित किया जा रहा है।

  • नो स्विंग फ्रेमवर्क के बारे में नहीं है बल्कि लुक और फील के बारे में है

  • फ्रेमवर्क non_technical उपयोगकर्ताओं के लिए हैं (MsAccess GUI फ्रेमवर्क के लिए सबसे अच्छा उदाहरण हो सकता है)

  • लेकिन अगर आप एक वास्तविक एप्लिकेशन का निर्माण करना चाहते हैं, तो आपको स्विंग के बारे में मजबूत जानकारी है और ओवरराइड फ्रेमवर्क से भी आया है,

  • मजाकिया उदाहरण Netbeans ने JSR296 पर आधारित स्विंग फ्रेमवर्क बनाया है, लेकिन सीधे JFrames Icon को बदलने में सक्षम नहीं है,

क्या आपने अपने स्विंग प्रोजेक्ट को JavaFX की तरह अधिक सक्रिय विकसित GUI फ्रेमवर्क में माइग्रेट करना शुरू कर दिया है?

कोई कारण नहीं

  • Java7 की ओर पलायन के साथ भी, शायद तब Java7.15 - 17 होगा

  • मैं JavaFx की तुलना निम्बस के साथ कर रहा हूं, विकास समाप्त हो गया है / पहली छमाही में कहीं न कहीं हार मान रहा हूं

  • क्षमा करें, मैं डेवलपर नहीं हूं मैं केवल जावा और स्विंग फैन हूं


GUA फ्रेमवर्क है MsAccess?
चोक यान चेंग

हुहुउह यह नहीं है ??? व्हाट्स प्रॉब्लम, प्लेटफ़ॉर्म डिफरेंशियल्स, या ईआई ??? पहले जावा GUI चौखटे बहुत समान थे
mKorbel
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.