2012-12-13 13 views
7

पर जावा 7 और जावावीएम.फ्रेमवर्क मैक पर जावा 7 अपडेट 9 के साथ खेला गया और मुझे एक दिलचस्प चीज़ मिली।मैक

मैंने बस JFrame के साथ एक साधारण जावा प्रोग्राम चलाया, और lldb के साथ इसे संलग्न किया। फिर मैंने इस जावा प्रोग्राम द्वारा लोड की गई पुस्तकालयों की जांच की और मैंने देखा:

"/System/Library/Frameworks/JavaVM.framework/JavaVM" इसमें।

तो मैं 2 प्रश्न हैं:

  1. इस JavaVM जावा 7 के लिए क्या करता है? मैंने सोचा कि मैक पर जावा 7 विंडोज और लिनक्स पर इसके संबंधित संस्करणों की तरह स्वयं-संगत है। "एनएम" का उपयोग करके, मैं देख सकता हूं कि इस जावावीएम ने जेएनआई_CreateJavaVM जैसे कई कार्यों को परिभाषित किया है, जिसे libjvm.dylib में भी परिभाषित किया गया है।

  2. जावा 7 के साथ जेएनआई पुस्तकालयों के लिए मुझे क्या लिंक करना चाहिए? अभी भी JavaVM.framework? क्या मैं

    /Library/Java/JavaVirualMachine/jdk.1.7.0 के अंतर्गत स्थित पुस्तकालयों से लिंक कर सकता हूं।

किसी भी मदद की बहुत सराहना की जाएगी।

+0

संभव डुप्लिकेट [मैक पर ओरेकल के जावा को समझने में मदद की ज़रूरत है] (http://stackoverflow.com/questions/15120745/need-help-understanding-oracles-java-on-mac) – BryanH

उत्तर

0

पहले भाग के लिए, जावाVM मैक जावावीएम (1.6) को इंगित करता है। Info.plist फ़ाइलों पर नज़र डालें, ऐसा लगता है कि मैक जावा जेएनआई (अन्य चीजों के साथ) का समर्थन करता है, जबकि ओरेकल जावा केवल कमांडलाइन का समर्थन करता है। ऐसा लगता है कि आप मैक ओएस एक्स पर 1.7 से लिंक कर सकते हैं। बहुत से संबंधित प्रश्न भी हैं।

अपने JVMs कि JNI को समर्थन ढूंढने के लिए, ऐसा करते हैं:

/usr/libexec/java_home -t JNI 

यह शायद 1.6.0 JDK लौटना चाहिए। JVMs उपलब्ध होने की पूरी सूची प्राप्त करने के लिए आप -V तर्क के साथ इसे चला सकते हैं।

+0

हम हर समय जेएनआई का उपयोग करते हैं ओरेकल 1.7। क्या आपका मतलब केवल _into_ java को बुला रहा है, शायद? मैक ओएस एक्स पर – bmargulies

+0

@bmargulies? और यह 1.6 का उपयोग नहीं कर रहा है? – Matt

+0

हाँ वास्तव में मैं करता हूं। – bmargulies

0

मैक पर ओरेकल जेडीके को हर जगह ओरेकल जेडीके की तरह विज्ञापन दिया जाता है। यह आदेश, शीर्षलेख, और libs मिल गया है। आप जेडीके की सामग्री का उपयोग करने में सक्षम होना चाहिए बस आप कहीं और करेंगे। हम आमतौर पर जेएनआई libs बनाते हैं और उपयोग करते हैं जो LoadLibrary के साथ लोड हो जाते हैं; मैं आमंत्रण इंटरफेस के साथ व्यक्तिगत अनुभव की रिपोर्ट नहीं कर सकता।