2012-07-28 6 views
6

को संकलित करने की कोई आवश्यकता नहीं है, मुझे प्ले फ्रेमवर्क में पेश किया गया था, और इसके बारे में मुझे मिली अद्भुत चीजों में से एक यह है कि परियोजना को संकलित करने की कोई आवश्यकता नहीं है। आपको केवल संपादित फ़ाइलों को सहेजने और वेबपृष्ठ को पुनः लोड करने की आवश्यकता है।ढांचे को चलाएं।

मुझे सिखाया गया है कि जावा स्रोत कोड बाइटकोड में संकलित किया गया है और फिर जेआईटी कंपाइलर के साथ संकलित किया गया है, तो प्ले फ्रेमवर्क के अंदर जादू क्या है?

उत्तर

11

DEV मोड में चलते समय, जावा फ़ाइलों की अंतिम संशोधित तिथि की जांच करके कार्य चलाएं, और रन टाइम पर जेनरेट की गई .class फ़ाइलों के साथ उन्हें संदर्भित करें। अगर यह कुछ बदल गया है, तो यह रनटाइम पर, उन्हें पुनः संकलित करता है।

प्ले 1.x में - पुन: संकलन ग्रहण जेडीटी कंपाइलर (org.eclipse.jdt.internal.compiler.Compiler) का उपयोग करके किया जाता है। यदि आप Play 1.x से कोड देखना चाहते हैं, तो बस निम्न वर्ग देखें - https://github.com/playframework/play/blob/master/framework/src/play/classloading/ApplicationCompiler.java

Play 2.x में, ऐसा लगता है कि Play एसबीटी उपकरण के साथ अंतःक्रिया करके इसे करता है। इसे देखें - https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/core/system/ApplicationProvider.scala

1

यदि आप प्ले फ्रेमवर्क 1.x के बारे में बात कर रहे हैं, तो इसमें एक एप्लिकेशन क्लास मैनेजर है, जो स्वचालित रूप से जावा स्रोत फ़ाइल लोड करता है और इसे बाइट कोड (एक्लिप्स जावा कंपाइलर का उपयोग करके) में संकलित करता है, अतिरिक्त में यह संकलित कोड को बढ़ाएगा जावासिस्ट का उपयोग करना https://github.com/playframework/play/tree/master/framework/src/play/classloading में कोडों को चेक करें।

4

हालांकि आपने यह नहीं बताया कि Play के किस संस्करण ने आपको सरल शब्दों में इतना आश्चर्यचकित किया है कि इसे इस तरह से वर्णित किया जा सकता है: development mode में अपने सभी ऐप से संबंधित सभी फाइलें देखती हैं, और किसी भी बदलाव के मामले में यह आवश्यक भागों को पुन: संकलित करता है । इसलिए DEV को उत्पादन के लिए उपयोग नहीं किया जाना चाहिए - क्योंकि यह प्रदर्शन की अनावश्यक हानि है। अन्यथा: जब आप उत्पादन मोड में अपना आवेदन शुरू करेंगे तो यह तत्काल पुन: संकलन से बच जाएगा, हालांकि यह प्रदर्शन प्राप्त करेगा।

प्ले 2 आवेदन चल रहा है में

play run 

या

play ~run 

के साथ किया विकास मोड (पहली आदेश अगले पृष्ठ हिट के बाद कोड recompiles, दूसरी अगले फ़ाइल परिवर्तन के बाद) है

उत्पादन मोड में चल रहा अनुप्रयोग

के साथ किया जा सकता है
संबंधित मुद्दे