Android की Dalvik VM को संकलित करने वाली कार्यात्मक भाषाएँ? [बन्द है]


16

मेरे पास एक सॉफ्टवेयर समस्या है जो प्रोग्रामिंग के लिए कार्यात्मक दृष्टिकोण को फिट करती है, लेकिन लक्ष्य बाजार एंड्रॉइड ओएस पर होगा। मैं पूछता हूं कि कार्यात्मक भाषाएं हैं जो जावा के वीएम को संकलित करती हैं, लेकिन डाल्विक बायटेकोड! = जावा बायटेकोड।

वैकल्पिक रूप से, क्या आप जानते हैं कि dxउपयोगिता .classस्कैला जैसी कार्यात्मक भाषाओं से उत्पन्न फाइलों को समझदारी से बदल सकती है ?

संपादित करें : समुदाय में थोड़ी अधिक सहायता जोड़ने के लिए, और मुझे बेहतर चुनने में मदद करने के लिए, क्या मैं प्रश्न को थोड़ा परिष्कृत कर सकता हूं?

  • क्या आपने दलविक के साथ किसी वैकल्पिक भाषा का प्रयोग किया है? कौन सा?
  • कुछ "गोचैस" (समस्याएं) हैं जिन्हें मैं चला सकता हूं?
  • क्या प्रदर्शन स्वीकार्य है? उसके द्वारा, मेरा मतलब है कि एप्लिकेशन अभी भी उपयोगकर्ता के लिए उत्तरदायी है।

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


मैंने सवाल अपडेट किया है। आपके प्रारंभिक उत्तर के लिए @geekosaur को धन्यवाद। यह वह जानकारी थी, जिसकी मुझे तलाश थी।
बेरिन लोरिट्स

मैंने एफएफआई + हास्केल + करेज के साथ ऐसा करने वाले लोगों के हास्केल कैफे पर फुसफुसाते हुए सुना है। मेरा मानना ​​है कि इसके लिए github / hackage पर एक पुस्तकालय है
डैनियल ग्रैज़र

जवाबों:


7

क्रिश्चियन न्यूकीर्चेन द्वारा स्कैंग के साथ प्रोग्रामिंग के लिए प्रोग्रामिंग नामक एक ब्लॉग पोस्ट है जिसमें दिखाया गया है कि एंड्रॉइड के लिए स्काला प्रोग्राम कैसे बनाया जाए। ऐसा लगता है कि dexस्काला को संभाल सकता है, लेकिन आपको स्केल क्लास लाइब्रेरी को आकार देने के लिए प्रोगार्ड जैसे टूल का उपयोग करना dexहोगा क्योंकि अन्यथा पूरे स्काला रनटाइम को आयात किया जाएगा।

Erjang और Clojure के साथ एंड्रॉइड प्रोग्रामिंग पर कुछ काम चल रहे हैं ।


1
ऐसा प्रतीत होता है कि आपने दिए गए सभी विकल्पों के बारे में गंभीर प्रदर्शन दंड दिया है। यह मुझे बताता है कि विकल्प वास्तव में अभी तक प्राइम टाइम के लिए पर्याप्त परिपक्व नहीं हैं। शायद एक और साल में?
बेरिन लोरिट्श

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

@Berin: मुझे लगता है कि भविष्य JVM- लक्ष्यीकरण भाषाओं का उपयोग नहीं कर रहा है - dexयह सब केवल जावा बाइटकोड के साथ नहीं बल्कि जावा के बायटेकोड सम्मेलनों से निपटने के लिए अनुकूलित होने के बाद भी है (आप पहले दिए गए लिंक में इस बारे में कुछ चर्चा देखेंगे) - लेकिन लक्ष्यीकरण दल्लिक वीएम सीधे। संभवतः जावा- dexमार्ग की तुलना में तेजी से समाप्त हो सकता है ।
गीकॉर्पोस

1
और सोच रहे लोगों के लिए: Dalvik VM bytecode को प्रलेखित किया गया है: opcodes , निर्देश प्रारूप । मुझे लगता है कि JVM को लक्षित करके peephole ऑप्टिमाइज़ेशन के लिए कुछ संभावनाएं अभी संभव नहीं हैं, अकेले Dalvik आर्किटेक्चर का उपयोग करके बेहतर अनुकूलन करें।
जाइकोसॉर

@ किम, मैंने पाया लेख में कहा गया है कि प्रदर्शन की समस्या जावा और डालविक के लिए वर्ग लोडिंग एल्गोरिदम के बीच अंतर में थी। यदि मैं स्काला की गतिशील भाषा सुविधाओं से दूर रहता हूं, तो मुझे क्लास लोडिंग मुद्दों से बचने में सक्षम होना चाहिए। इसी मुद्दे ने अन्य विकल्पों को प्रभावित किया। यह अभी भी बल्कि अभी नया है। मैं अभी भी इस परियोजना पर इसे खत्म करने की कोशिश कर सकता हूं - यह किसी भी तरह से अवधारणा का प्रमाण है।
बेरिन लोरिटश

7

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

जावा एडवेंट कैलेंडर कुछ जानकारीपूर्ण उदाहरणों और लिंक के साथ कावा की खूबियों को बताता है।


वाह, मुझे कावा की ओर इशारा करने के लिए धन्यवाद! मैं कुछ गैर-जावा एंड्रॉइड विकास करने के लिए खुजली कर रहा हूं और यह वास्तव में आशाजनक है।
इविक्टोस

1

स्कैला के अलावा, मैं आपको एंड्रॉइड पर मीरा पर एक नज़र डालने का सुझाव दे सकता हूं, यहां कुछ विवरण हैं: http://threebrothers.org/brendan/blog/strange-loop-2011-mirah-for-android-developetet

तो क्या यह दृष्टिकोण अन्य भाषाओं की तुलना में 'बेहतर' है? मीरा एक स्थिर टाइप की भाषा है जो माणिक से मिलती जुलती है। जो जावा से कुछ कार्यात्मक शैली के लिए यकीनन बेहतर है। आमतौर पर एंड्रॉइड के लिए एक भाषा को 'पोर्ट करना' समस्याग्रस्त है, क्योंकि आपको मानक पुस्तकालय को भी पोर्ट करने की आवश्यकता है। मिरे एक मानक लीबी से बचने के लिए इससे बचता है। संदर्भित सामग्री में Android पर चमत्कार चलाने और REAL वर्ल्ड अनुभव से एक अच्छा अवलोकन है और यह कैसे निकला। (कोशिश 2)


1
कृपया नहीं है एक ही जवाब repost, तुम सब आपके उत्तर के लिए पूछने के लिए करना था के बाद आप संपादित हल्का ध्यान के लिए ध्वज लगाने था अ-नष्ट किया जाना है।
यनीस

0

एंड्रॉइड पर क्लोजर ( https://github.com/clojure-android/neko ) नेको पर बहुत सारे आंदोलन हुए हैं ।
Dalvik VM और Clojure Compiler से संबंधित प्रदर्शन मुद्दे हैं; इन मुद्दों को धीरे-धीरे हल किया जा रहा है।

वर्तमान (जुलाई 2015) स्थिति के बारे में एक प्रस्तुति: https://www.youtube.com/watch?v=mVXTcAEKgF8&index=9&list=PLZdCLR02grLoBx0Y5Zrpdmnxc160PIwzQ


-1

यह अभी तक काफी नहीं है, लेकिन मिगुएल डे इकाज़ा, एक व्यक्ति जो डेवेलिक वीएम के बारे में एक या दो चीजों को जानता है, " Droid के लिए एफ # उनकी चीजों की सूची में है ।" तो मैं कहूंगा कि एक आधिकारिक पैकेज आ रहा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.