2011-09-06 13 views
6

मैं एंड्रॉइड के लिए बैकएंड के रूप में ओपनएमआरएस का उपयोग कर एक मेडिकल रिकॉर्ड सिस्टम विकसित करने पर काम कर रहा हूं। ओपनएमआरएस हाइबरनेट और स्प्रिंग समेत कुछ गंभीर हेवीवेट पुस्तकालयों पर निर्भर है।एंड्रॉइड के लिए पोर्टिंग जावा सर्वर

पूरे ओपनएमआरएस एप्लिकेशन "डेक्सिंग" एक फ़ाइल उत्पन्न करता है जो एंड्रॉइड क्लासेस.dex फ़ाइल प्रारूप के लिए भी बड़ा है (यह आकार सीमा पहले से ही अच्छी तरह से प्रलेखित है)। इसके आस-पास पहुंचने के लिए, मैं वर्तमान में निर्भरताओं से कई डीएक्स फाइलें बनाने और एंड्रॉइड के डीएक्स क्लासलोडर का उपयोग करके रनटाइम के दौरान लोड करने पर काम कर रहा हूं।

जिस तरह से सर्वर का मोबाइल संस्करण अभ्यास में उपयोग किया जाएगा, वास्तविक निर्भरताओं के बावजूद वास्तविक प्रसंस्करण मांग बहुत कम होगी। मैं यहां अपने फोन पर एंटरप्राइज़ सर्वर चलाने की कोशिश नहीं कर रहा हूं।

इससे पहले कि मैं इसे इंजीनियर करने की कोशिश कर रहा हूं, मैं बस सप्ताह के अधिक समय बिताता हूं, मैं सिर्फ डेवलपर समुदाय से पूछना चाहता था: क्या यह रणनीति सिर्फ एक पाइप सपना है? अगर मैं इन सभी पुस्तकालयों को लोड करता हूं, तो क्या संपूर्ण बाइनरी रैम में लोड हो जाएगी और सिस्टम को तोड़ देगा? क्या इस तरह के एक आवेदन को अनुकूलित करने के लिए एक अच्छा तरीका है? क्या कोई स्पष्ट समस्या या समाधान है जो मैं यहां याद कर रहा हूं?

+3

पहली नज़र में, मैं कहूंगा कि एंड्रॉइड पर हाइबरनेट और स्प्रिंग चलने का सपना अवास्तविक है। इन सभी निर्भरताओं के लिए पर्याप्त रैम रखने की सरल समस्या आपको अपने ट्रैक में मृत कर देती है। – Prime

+1

आपने http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html देखा है? यहां का कठिन हिस्सा ऐसा लगता है कि विभिन्न डीएक्स फाइलें अतिरिक्त कोड या प्रीप्रोकैसिंग के बिना एक-दूसरे के बीच कॉल नहीं कर सकती हैं। (मान लें कि आपको जो चाहिए वह करने के लिए पर्याप्त स्मृति है।) –

+4

यह निश्चित रूप से "क्लाइंट/सर्वर" के लिए रोता है। इस ऐप के साथ एक महत्वपूर्ण मुद्दा गोपनीयता (एचपीआईएए नियम आदि) बीमा करना होगा – paulsm4

उत्तर

1

संक्षिप्त उत्तर है: नहीं।

लंबा उत्तर यह है कि अधिकांश डिवाइस अभी भी प्रत्येक ढेर में अपेक्षाकृत छोटी राशि (40-128 मेगाहर्ट्ज रैम) के बीच आवंटित करते हैं। आपको वास्तव में ऐप को आर्किटेक्ट करने के बारे में सोचने की ज़रूरत है ताकि तर्क का बड़ा हिस्सा हो और इस प्रकार पुस्तकालयों और हेवीवेट कोड अभी भी सर्वर पर रहते हैं और मोबाइल ऐप सर्वर से प्रदर्शित करने के लिए हल्के डेटा (JSON?) को पढ़ रहा है। उपकरणों को वास्तव में केवल मूल डेटा जैसे स्थान डेटा का उपयोग करना चाहिए और उपयोगकर्ता को इंटरफ़ेस प्रदान करना चाहिए जो शेष एंड्रॉइड ब्रह्मांड के साथ संगत है। इसके अलावा, आपको जितना संभव हो सके देशी ऐप से ज्यादा तर्क रखने के तरीकों की तलाश करनी चाहिए। यदि इसे और अधिक सुरक्षित रखने के अलावा किसी अन्य कारण के लिए नहीं। रिवर्स इंजीनियरिंग एंड्रॉइड एप्लिकेशन तुच्छ और जितना अधिक आप सर्वर की ओर रखते हैं, उतना ही सुरक्षित होगा।

+0

धन्यवाद मैट, मैं टिप्पणियों का पालन करने के बाद एक समान निष्कर्ष पर आया। ऐसा लगता है कि मुझे लगता है कि मूल स्रोत की अधिक रिकोडिंग करने की आवश्यकता है। वास्तव में राम को रिकॉर्ड करने के बाद यह मेरे कंप्यूटर पर पड़ता है, मुझे एहसास हुआ कि 1 जीबी से कम कुछ भी काम नहीं करेगा! लेकिन दुर्भाग्यवश लक्ष्य यह है कि अंततः टैबलेट पर पूरा सर्वर चल रहा है, क्योंकि हम इसे उन गरीब क्षेत्रों में भेज रहे हैं जिनके पास इंटरनेट का उपयोग नहीं है। मुझे लगता है कि इसे कुछ असली इंजीनियरिंग की आवश्यकता होगी। आह। – Nick

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