मैं यह समझने की कोशिश कर रहा हूं कि केक अपने एकाधिक जेवीएम दृष्टिकोण को कैसे लागू करता है। एक उच्च स्तर पर, मैंने सोचा कि केक नाखून के समान काम कर रहा था, जहां एक एकल जेवीएम इंस्टेंस (एक जेवीएम प्रक्रिया) है, और विभिन्न परियोजनाओं के लिए नए "जेवीएम" वास्तव में केवल एक नए क्लासलोडर में क्लोजर/जार का मूल्यांकन किया गया था (साथ ही अलग जार निर्भरता), जो मेरी आंखों में एक नया जेवीएम उदाहरण नहीं है। What's the difference between Cake and Leiningen? से, एक निहितार्थ है कि कई JVMs (केक के लिए एक, और * परियोजनाओं के लिए) हैं, न केवल एक एकल JVM उदाहरण।केक में लगातार जेवीएम सुविधा कैसे लागू की जाती है?
यदि नए जेवीएम उदाहरण बनाए गए हैं, तो गति कहाँ से आती है? मेरी समझ के साथ, मैं तर्क दूंगा कि एक नया जेवीएम शुरू करने से ताजा एक नई जेवीएम प्रक्रिया बनती है जो सामान्य रूप से समान स्टार्टअप ओवरहेड बनाती है।
यदि नहीं हैं, तो देशी निर्भरताओं को कैसे जोड़ा जाता है? जो मैं समझता हूं, उससे JVM केवल रनटाइम से पहले पारित कमांड लाइन तर्कों से देशी निर्भरताओं के बारे में जानता है। एकमात्र तरीका मुझे पता है कि इसे कैसे बाधित करना है नीचे सूचीबद्ध सूर्य/ओरेकल जेवीएम कार्यान्वयन विशिष्ट हैक के साथ है।
(let [clazz java.lang.ClassLoader
field (.getDeclaredField clazz "sys_paths")]
(.setAccessible field true)
(.set field clazz nil)
(System/setProperty "java.library.path" (apply str (interpose ";" native-paths))))
धन्यवाद। ठीक है, पुराने संस्करण के साथ, प्रति परियोजना एक नया जेवीएम बनाया गया था, मैं गलत इंप्रेशन के तहत था कि, फिर से, यह नाखून के समान था, जहां केवल एक ही, एक जेवीएम उदाहरण है। जेवीएम स्टार्टअप समय के संबंध में नाखून विधि विधि मेरे दिमाग में आदर्श थी और सुरक्षा मुद्दों को अनदेखा कर रहा था, जिसे मैं अब महसूस करता हूं कि केक लागू नहीं किया गया है। मैं परिस्थितियों में JVM स्टार्टअप समय के संबंध में लाभ निर्धारित करने का प्रयास कर रहा था जब JVM को प्रत्येक केक कमांड के अनुसार पुनरारंभ या निर्मित करने की आवश्यकता नहीं थी। – bmillare
क्या क्लासलोज समर्थन रनटाइम देशी निर्भरता लोडिंग करता है? – bmillare