2010-01-19 10 views
14

क्या जावा के लिए एक वितरित कंपाइलर है, सी/सी ++ के लिए distccous के समान है?वितरित जावा कंपाइलर

+0

क्या आपके पास एक की आवश्यकता है, या यह सिर्फ जिज्ञासा है? – skaffman

+0

मैं एक लिखना चाहता हूं। – Boolean

+0

शुभकामनाएँ! मेरे उत्तरों में जो अंक उठाते हैं, उनके बारे में जागरूक रहें, और मैं आपको लिखने में शुभकामनाएं देता हूं। –

उत्तर

16

आपके प्रश्न का सीधा जवाब "नहीं" है। हालांकि, यह शायद आपकी मदद नहीं करेगा ... जावा संकलन बहुत तेज़ है।

एक छोटी परियोजना पर, संकलन इतना तेज़ है कि आपको वास्तव में परवाह नहीं करना चाहिए। एक बड़ी परियोजना पर आपको फ़ाइल को संकलित करने के लिए फ़ाइल को फेंकने के साथ निपटने की आवश्यकता होगी, और संभावित रूप से कई मेगाबाइट निर्भरताओं में भी फेंकने के साथ निपटने की आवश्यकता होगी।

एक चीज जो आप अपनी संकलन गति को बेहतर बनाने के लिए कर सकते हैं, सूर्य जावैक के बजाय eclipse compiler का उपयोग करना है। ग्रहण कंपाइलर बहु ​​थ्रेडेड है, और इसलिए, भाग्य के साथ, आपकी मशीन के सभी कोर का उपयोग करेगा।

शायद यह भी उल्लेखनीय है कि ऐप्पल हाल ही में reduced distcc support, सामान्य रूप से, नए हार्डवेयर पर, स्थानीय रूप से संकलन करने के बजाय, कहीं और संकलन और पीछे कोड को प्राप्त करने के लिए अधिक समय लगता है। ऐप्पल को उद्धृत करने के लिए:

एक्सकोड के सिंगल-कंप्यूटर निर्माण प्रदर्शन को इस बिंदु पर बेहतर किया गया है कि वितरित नेटवर्क बिल्डों के साथ वितरित भवन ज्यादातर परिस्थितियों में स्थानीय निर्माण से धीमी है।

+1

चारों ओर अच्छी सलाह। यह करोल विल्क के जवाब से भी जुड़ा हुआ है, क्योंकि मेरा मानना ​​है कि ग्रहण आंतरिक कंपाइलर और जैक्स कम से कम कुछ हद तक संबंधित हैं, यानी (संभवतः) सामान्य कोड से उत्पन्न होता है। ग्रहण कंपाइलर क्रमशः संकलित करके "धोखा देती है", और मुझे लगता है कि जैक्स भी ऐसा करने के लिए जानता है। –

+0

जैक्स सी ++ में लिखा गया है, ecj जावा है, इसलिए शायद यह सामान्य कोड नहीं है। –

+1

@ करल, ecj जैक्स अनुभवों के आधार पर लिखा गया था। खुशी है कि उन्होंने किया - javac आवश्यक प्रतियोगिता। –

2

शायद Jikes आपके लिए काम करेगा। आप एक चालाक चींटी स्क्रिप्ट और फाइल सिस्टम जैसे एनएफएस के साथ बहुत ही समान प्रभाव प्राप्त कर सकते हैं ...

+0

क्या जावा कहीं भी चलने के बाद संकलित नहीं होना चाहिए? –

+7

@Ipthnc - आपको क्या लगता है कि यह नहीं है? और यह सवाल के लिए प्रासंगिक कैसे है? –

3

आप अपने जावा के लिए एक लंबे समय के इंतजार कर संकलित है, तो आप में से एक पर विचार हो सकता से नाराज हैं, तो निम्नलिखित:

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

मल्टी-coring करने के लिए, कोड की राशि है कि आप पुन: संयोजित करने के लिए भी अपने पीसी के ऊर्जा की खपत और कार्बन उत्सर्जन कम होगा की जरूरत को कम करने का विरोध किया;)

+1

... मानते हैं कि आपके पीसी को जीवाश्म ईंधन से इसकी ऊर्जा मिलती है –

0

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

यह निर्भर मॉड्यूल के साथ भी काम करना चाहिए, हालांकि सिंक्रनाइज़ेशन पर कुछ काम की आवश्यकता होगी।

2

मैं Java6

http://www.pointdefence.net/jarc/index.html

यह जावा संकलक काम पर वितरित करने के लिए एक के शुरू होने से लिखना था। तो यह स्वतंत्र मेवेन मॉड्यूल के समानांतर संकलन के साथ अच्छी तरह से काम करेगा।