2011-03-07 6 views
16

Play को देखने के बाद! ढांचा मुझे यह वास्तव में उत्पादक लगता है कि विकास सर्वर जो स्वचालित रूप से आता है वह .java फ़ाइलों को संकलित करने और तुरंत परिवर्तनों को दिखाने में सक्षम है। कोई गर्म तैनाती स्कैनर नहीं है जो प्रत्येक कुल सेकंड या तो चलता है। संकलन तब होता है जब आप रीफ्रेश करते हैं और यह मेरे incremental mvn package से बहुत तेज़ है। वे ऐसा कैसे करते हैं?प्ले करें! जावा वेब ढांचे। उनके विकास सर्वर स्वचालित रूप से कैसे संकलित होते हैं?

मैं जानना चाहता हूं, ठीक है क्योंकि मुझे जानने में दिलचस्पी है, लेकिन यह भी कि क्योंकि मैं पूरे प्ले का उपयोग नहीं करना चाहता! मेरी छोटी परियोजना के लिए ढांचा। मैं केवल उनके विकास संकलन प्रक्रिया में रूचि रखता हूं क्योंकि मैं इसे अपनाना चाहता हूं :)।

कोई विचार?

+1

के संभावित डुप्लिकेट [कैसे खेलने के फ्रेमवर्क समारोह करता है?] (Http: // stackoverflow।कॉम/प्रश्न/5190606/कैसे-द-प्ले-फ्रेमवर्क-फ़ंक्शन) – Codemwnci

+0

ठीक है, मैंने प्ले के पुनः लोडिंग और जेरेबेल के लिंक किए गए थ्रेड में पुनः लोड करने के बीच एक महत्वपूर्ण अंतर समझाया है: http://stackoverflow.com/questions/5190606/कैसे-करता-प्ले-फ्रेमवर्क-फ़ंक्शन/5907403 # 5907403 – v6ak

उत्तर

8

मैं आज सुबह इस बारे में पढ़ रहा था। यह वास्तव में आपके बदलते स्रोत फ़ाइलों को लेता है और अंतर्निहित dev सर्वर पर संकलित फ़ाइलों को थूकने से पहले आंतरिक रूप से एक्लिप्स जावा कंपाइलर (ईसीजे) का उपयोग करता है।

बात यह है कि, शायद आप ईसीजे को अपने "छोटे प्रोजेक्ट" में तारों के तारों के प्रयास में जाना चाहते हैं।

आप निश्चित रूप से यह अनुमान लगा सकता है, हालांकि - चाल नहीं एक mvn पैकेज करते हैं, बजाय आप फाइल सिस्टम पर अपने वेब ऐप्लिकेशन की विस्फोट warfile निर्देशिका में .class बदल फ़ाइलें छोड़ने होना चाहते है।

आप एक विशेष अनुप्रयोग सर्वर/कंटेनर से बंधा नहीं कर रहे हैं, Eclipse Jetty Plugin पर एक नजर है - ऐसा लगता है कि तुम क्या जरूरत है, और जेट्टी त्वरित

+0

जब मैंने कुछ समय पहले इस सवाल को देखा तो मैं ओपीपीएस आरसीपी के शीर्ष पर कुछ ही कारण बनाने के लिए ओपी का निर्माण करने वाला था, लेकिन फिर छोटे प्रोजेक्ट बिट को देखा और इसके बारे में बेहतर सोचा। ऐसा लगता है कि नाटक देवों के पास एक ही विचार था :) – CurtainDog

+0

मैंने मैवेन जेट्टी प्लगइन की कोशिश की, और यह Play के जितना तेज़ नहीं है! ढांचा (ईसीजे)। मुझे आश्चर्य है कि वहां एक सर्वलेट कंटेनर है जो इस ग्रहण जावा कंपाइलर के साथ काम करता है क्योंकि यह आश्चर्यजनक रूप से तेज़ है। –

+0

क्या मैं अपने मौजूदा सर्वलेट प्रोजेक्ट के साथ एक्लिप्स कंपाइलर का उपयोग कर सकता हूं? –

0

मैं एक प्ले डेवलपर नहीं हूं हालांकि स्ट्रूट 2 भी इसमें सक्षम है लेकिन स्ट्रैट्स 2-वसंत-प्लगइन। चूंकि वर्ग पुनः लोडिंग वसंत द्वारा प्रदान की जाती है, इसलिए किसी भी परियोजना द्वारा इस वसंत सुविधा का उपयोग करना संभव हो सकता है।

http://struts.apache.org/2.2.1/docs/spring-plugin.html "कक्षा रीलोडिंग" के लिए पृष्ठ खोजें।

+1

कोई अभी भी स्ट्रैट्स का उपयोग कर रहा है? .... दिलचस्प – joshua

+1

कोई स्ट्रैट्स नहीं, स्ट्रूट 2 (एस 2)। वे अलग-अलग कोड बेस के साथ अलग-अलग उत्पाद हैं। एस 2 एक बहुत लोकप्रिय, आधुनिक (2008) जावा एमवीसी ढांचा है। विकेट और स्प्रिंग एमवीसी के बराबर एक फीचर सेट के साथ। – Quaternion

2

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

4

जेडीटी - प्ले! गतिशील रूप से कक्षाओं को संकलित और लोड करने के लिए एक्लिप्स जेडीटी का उपयोग करता है। उसी तरह से आप ग्रहण में कोड करते हैं और जैसे ही आप कुछ वांछनीय नहीं लिखते हैं, आपको एक त्रुटि या चेतावनी संदेश दिखाई देते हैं। ApplicationCompiler कक्षा देखें।

आप JDT पर भी देखना चाहते हैं।

3

Play रन-टाइम पर कोड संकलित करने के लिए ग्रहण कंपाइलर का उपयोग करता है।

निम्न वर्ग पर एक नज़र डालें, जिसका उपयोग रन टाइम पर आवश्यक संकलन करने के लिए किया जाता है।

https://github.com/playframework/play/blob/master/framework/src/play/classloading/ApplicationCompiler.java

संबंधित मुद्दे