2009-06-23 7 views
21

मैं स्कैला के अभिनेता फ्रेमवर्क का लाभ उठाना चाहता हूं, जबकि मैं परिचित स्विंग तरीके से उपयोगकर्ता इंटरफ़ेस विकसित करता हूं।एक ही परियोजना के भीतर एक साथ जावा और स्कैला विकास

क्या ग्रहण, नेटबीन या किसी अन्य आईडीई में मिश्रित जावा-स्कैला प्रोजेक्ट होना संभव है?

उत्तर

5

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

+0

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

+0

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

+0

+1 इंटेलिजे को ग्रहण से बेहतर स्कैला समर्थन है। –

1

क्या आपने स्कैला के स्विंग रैपर की कोशिश की है? इस अर्थ में यह बहुत हल्का है कि आप हमेशा अंतर्निहित स्विंग कक्षाओं तक पहुंच सकते हैं लेकिन यह बहुत अच्छी तरह से सोचा जाता है। मैं इसे सुखद साथ काम करने के मिल गया है - प्रतिक्रियाओं पैटर्न घटना से निपटने इतना आसान और अभिनेता ढांचे घटना प्रचार बनाता है इतना PropertyChangeSupport का उपयोग करने से साफ करता है

यह अपने स्वयं के कस्टम के साथ इसका इस्तेमाल करने के लिए पूरी तरह से संभव है स्विंग विजेट भी।

+0

मैं स्काला पुस्तक से नमूना कार्यक्रमों की कोशिश की, लेकिन मैं यह भी अपने वर्षों के लंबे स्विंग जीयूआई विकास अनुभव से अलग पाया। – akarnokd

+0

मैं 10 वर्षों के लिए स्विंग कोडिंग कर रहा हूं - स्कैला को एक मौका दें! –

+0

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

21

ग्रहण के लिए "आधिकारिक" स्कैला प्लगइन आपको जावा प्रकृति के साथ किसी भी परियोजना में "स्केल प्रकृति" जोड़ने की अनुमति देता है। यह आपको मिश्रण और मिलान करने की अनुमति देता है हालांकि आप चाहें।

मैं ग्रहण आईडीई का उपयोग करके कल रात पहली बार स्कैला के साथ खेल रहा था, और यह बहुत अच्छी तरह से काम करता है।


इसके अलावा, मैं तो बस इस लेख भर में भाग गया: http://www.codecommit.com/blog/scala/joint-compilation-of-scala-and-java-sources

लगता है कि वास्तव में उन्हें scalac संकलन के बिना, जावा स्रोत पर निर्भरता को हल करने में सक्षम होना जावा के बारे में पर्याप्त जानता है। बहुत अकलमंद।

+2

अच्छा। क्या यह सहयोग दोनों दिशाओं में जावाडोक/स्कालाडोक के लिए काम करता है? – akarnokd

+0

यह एक अच्छा सवाल है। मुझे संदेह नहीं है। यदि जावा और स्कैला के बीच परिपत्र निर्भरताएं हैं, तो यह अजीब हो सकती है। यह निरंतर एकीकरण प्रणाली के लिए एक असली मुद्दा हो सकता है। – skaffman

+0

स्केलैक/जावैक निर्भरताओं के बारे में संपादन देखें – skaffman

0

Scala plugins for NetBeans भी अच्छा कर रहे हैं। स्विंग विकास नेटबीन के साथ इतना आसान बना दिया गया है, यह हो सकता है कि आप जो खोज रहे हैं :)

+0

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

1

मैंने अपने ऐप में जावा और स्कैला को सफलतापूर्वक मिश्रित किया है। यह गोगल ऐप इंजन में चलता है और मैं यूआई के लिए स्प्रिंग एमवीसी का उपयोग करता हूं। (पोर्ट को बाद में लिफ्ट करेगा)

इंटेलिज के लिए प्लगइन एक बड़ी मदद है। हालांकि यह अभी भी शुरुआती दिनों में है और कभी-कभी समस्याएं होती हैं। (उदाहरण के लिए स्कैला प्लगइन कंपाइलर जेडीओ वर्धित जावा कक्षाओं को बहुत ज्यादा पसंद नहीं करता है ... वहां एक काम है और मुझे यकीन है कि यह बग जल्द ही तय हो जाएगा)।

मिश्रण के बारे में मुझे थोड़ा थकाऊ एकमात्र चीज जावा एपीआई से निपट रही है जो स्कैला में जावा संग्रह वर्ग लौटाती है। यह बहुत घबराहट है और आपको थोड़ी देर के माध्यम से कूदना है।

2

जावा (Netbeans जीयूआई-बिल्डर) और स्काला स्विंग मिश्रण:

मैं सिर्फ जीयूआई-बिल्डर और कुछ नियंत्रण और सरल तर्क के साथ एक नया JPanel बनाया।

फिर एक स्केला वस्तु बनाया स्काला घुमाओ ट्यूटोरियल में देखा की तरह:

object MySampleView extends Frame { title = "SomeTitle" ... 

तो मैं सामग्री के लिए नए JPanel कहा:

contents = new Component { override lazy val peer = new MySampleJPanel() } 

जब इस परियोजना मैं के हर बदलाव को देखने के संकलन जीयूआई-बिल्डर कूल में जेपीनल।

0

ग्रेट !!! विचार साझा करने के लिए धन्यवाद।

बस पूरक करने के लिए, नीचे दिए गए कोड में जीयूआई संपादक (मैं विंडोबिल्डर + ग्रहण + स्कैला प्लगइन का उपयोग कर रहा हूं) का उपयोग जीयूआई डिजाइन करने के लिए किया गया था और फिर सब कुछ स्कैला का उपयोग करके किया जा सकता है। अब जावा स्विंग जीयूआई संपादक का उपयोग करना और स्कैला में सभी प्रोग्रामिंग करना संभव है।

import swing._ 
import event._ 
object TestApp extends Frame { 
def main(args: Array[String]): Unit = { 
    title = "Scala Swing Test App" 
    val gui = new MyTestPanel() // a JPanel class from the GUI Editor 
    val button = new Button {override lazy val peer = gui.getBtnMyButton()} 
      // getBtnMyButton() is generated in the Gui Editor (Expose Component) 
    contents = new Component{ override lazy val peer = gui } 
    this.listenTo(button) 
    reactions += { 
     case ButtonClicked(b) => println("BUTTON CLICK.") 
    } 
    this.visible = true 
} } 

Mvackel