2013-02-18 16 views
7

मैं एक ऐसी परियोजना विकसित कर रहा हूं जिसके लिए रिश्तेदार जटिल नियम सेट के आधार पर व्यावसायिक तर्क गणना की आवश्यकता हो।आईओएस प्रोजेक्ट में जावा लाइब्रेरी का उपयोग

  • Android एप्लिकेशन
  • iOS एप्लिकेशन
  • जावा ईई आवेदन कंटेनर

व्यापार तर्क किसी भी मंच विशिष्ट विवरण पर निर्भर नहीं करता है, लेकिन है: calucations निम्नलिखित प्लेटफार्मों पर निष्पादित करने के लिए कर रहे हैं कड़ाई से "संख्या क्रंचिंग" के बारे में।

जावा और ऑब्जेक्टिव सी के लिए दोहरा कार्यान्वयन से बचने के लिए, जिसमें विस्तृत परीक्षण की आवश्यकता होगी और आगे, मैं जावा लाइब्रेरी को कार्यान्वित करने और आईओएस ऐप के भीतर इसका उपयोग करने के लिए तैयार करना चाहता हूं।

ऐसा करने का सबसे अच्छा तरीका क्या होगा? क्या उद्देश्य सी के लिए मूल बंदरगाह करना बेहतर होगा? क्या यह उद्देश्य सी में पुस्तकालय लिखना और लिखना बेहतर होगा और एंड्रॉइड/जावा पर इसका इस्तेमाल करना बेहतर होगा?

उत्तर

7

कोई रास्ता नहीं है कि कैसे आप एक iOS आवेदन पत्र में एक जावा पुस्तकालय का उपयोग कर सकते है दोहराना नहीं होगा। जावा को रनटाइम की आवश्यकता है (जेआरई) और आपके पास आईओएस पर नहीं है।

तकनीकी रूप से, आप जावा लाइब्रेरी को मूल कोड में संकलित कर सकते हैं (इसके लिए उपकरण हैं) लेकिन मैं इसकी अनुशंसा नहीं करता हूं।

एंड्रॉइड और आईओएस के बीच bussiness कोड साझा करने के लिए सबसे अच्छा समाधान शुद्ध सी पुस्तकालयों का उपयोग करना है। आप जेएनआई (एंड्रॉइड के लिए एनडीके) का उपयोग कर जावा से सी पुस्तकालयों को कॉल कर सकते हैं।

चूंकि ओब्जे-सी शुद्ध सी पर केवल एक छोटी वस्तु परत है, इसलिए आप आसानी से ओबीजे-सी से सी पुस्तकालयों का उपयोग कर सकते हैं।

आप भी NDK के लिए Obj सी संकलन कर सकते हैं, लेकिन यह ज्यादा सिर्फ सी

+0

आपकी विस्तृत प्रतिक्रिया के लिए धन्यवाद। हम शायद j2objc को एक शॉट देंगे और देखें कि यह काम करता है या नहीं। यदि नहीं, उद्देश्य सी में शुद्ध सी या मूल कार्यान्वयन अगला कदम होगा। – Philipp

0

आईओएस में किसी भी जावा से संबंधित कोड या एप्लिकेशन का उपयोग करने का कोई तरीका नहीं है। आपको मूल बंदरगाह पर काम करना है। आईओएस में एक जेवीएम नहीं है।

+0

बेहतर होगा यह दूसरी तरह के आसपास यह एंड्रॉयड/जावा पर करते हैं और उद्देश्य सी में पुस्तकालय लिख सकते हैं और उपयोग करने के लिए? – Philipp

+0

आप उद्देश्य सी को जावा को सीधे पोर्ट नहीं कर सकते हैं। वैसे भी, http://code.google.com/p/j2objc/ नामक प्रारंभिक चरण में एक प्रोजेक्ट है। यह उद्देश्य सी से जावा को traslates। आप इसे आज़मा सकते हैं।वैसे भी, आप फोनगैप जैसे कुछ प्लेटफॉर्म-स्वतंत्र विकास उपकरण का प्रयास क्यों नहीं करते? –

+0

@ मोहम्मद हाबीब वह जे 2 ईई के साथ फोनगैप कोड कैसे साझा करेगा? साथ ही, फोनगैप और अन्य समान प्लेटफार्म स्वतंत्र ढांचे में केवल सीमित क्षमताएं हैं। – Sulthan

2

इस मामले में आपको अपने तर्क के सी कार्यान्वयन को लिखना चाहिए और एंड्रॉइड एप्लिकेशन के लिए जेएनआई का उपयोग करना चाहिए।

तो आप अपने आप को

http://en.wikipedia.org/wiki/Java_Native_Interface

3

का उपयोग कर आप https://code.google.com/p/j2objc/

अद्यतन j2objc का उपयोग कर उद्देश्य सेल्सियस के लिए जावा पुस्तकालय को पार्स की कोशिश कर सकते तुलना में अधिक जटिल है: यह स्विफ्ट जावा पुल विकास में है https://github.com/SwiftJava/SwiftJava/blob/master/README.md

+0

क्या आपने पहले से ही इसका इस्तेमाल किया है? Http://xmlvm.org/overview/ के साथ कोई अनुभव? शुद्ध व्यापार तर्क कोड j2objc के लिए – Philipp

+0

अच्छा काम करता है। किसी यूआई तर्क के लिए कोई समर्थन नहीं है। मुझे xmlvm.org के साथ कोई अनुभव नहीं है। मुझे आईओएस और एंड्रॉइड (एनडीके का उपयोग करके) में सी पुस्तकालय का उपयोग करने का अनुभव है जो बहुत अच्छी तरह से काम करता है। –

1

कोटलिन मूल अब एक स्विफ्ट एकीकरण है। तो कुछ बिल्ड प्रक्रिया ओवरहेड के साथ आप आईओएस और एंड्रॉइड के साथ कोटलिन में लिखे गए बिजनेस लॉजिक को साझा कर सकते हैं।

https://blog.jetbrains.com/kotlin/2017/12/kotlinnative-v0-5-released-calling-kotlin-from-swift-and-c-llvm-5-and-more/

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