ऐप्पलरेटर टाइटेनियम मोबाइल कैसे काम करता है?


79

मैं टाइटेनियम मोबाइल 1.0 के साथ एक iPhone ऐप बनाने पर काम कर रहा हूं और मैं देखता हूं कि यह एक देशी आईफोन बाइनरी के लिए संकलित है। यह कैसे काम करता है? ऐसा लगता है कि जावास्क्रिप्ट कोड का विश्लेषण करने और 280 उत्तर के ऑब्जेक्टिव-जे और कैप्पुकिनो जैसी सुपरसेट भाषा के बिना जावास्क्रिप्ट-सी में सीधा अनुवाद करने के लिए बहुत भारी उठाने की आवश्यकता होगी।


4
यह ओपन-सोर्स है। तुम हुड के नीचे क्यों नहीं दिखते?
गैब्रियल पेट्रीओली

17
@ जब मुझे पता चलता है कि अगर मैं उत्सुक हूँ तो दूसरों से इतना सार्वजनिक रूप से पूछकर जानकारी फैलाने का इससे बेहतर तरीका क्या हो सकता है?
डारेल ब्रॉगडन

2
@Darrell, मैं पूरी तरह से सहमत हूँ .. मैं आपको कोसने की कोशिश नहीं कर रहा था, बस सोचा था कि सबसे तेज़ मार्ग (यदि आपको बारीकियों की ज़रूरत है) कोड को सीधे जांचना होगा .. माफी अगर यह गलत तरीके से
निकला

1
छोटा बिंदु: ऑब्जेक्टिव-जे, जावास्क्रिप्ट का एक सुपरसेट है
कोबाल

2
मैंने इस प्रश्न को हाल ही में पूछा और इस पृष्ठ पर उत्तरों में वर्णित जानकारी के साथ बहुत अधिक अद्यतित उत्तर मिला। यहाँ सवाल है: stackoverflow.com/questions/19060554/…
BT

जवाबों:


147

टाइटेनियम आपका जावास्क्रिप्ट कोड लेता है, इसका विश्लेषण करता है और प्रीप्रोसेस करता है और फिर इसे उन प्रतीकों के एक सेट में पूर्व-संकलित करता है जो आपके एप्लिकेशन टाइटेनियम एपीआई के उपयोग के आधार पर हल किए जाते हैं। इस प्रतीक पदानुक्रम से हम एक प्रतीक निर्भरता मैट्रिक्स का निर्माण कर सकते हैं जो अंतर्निहित टाइटेनियम पुस्तकालय प्रतीकों के नक्शे को समझने के लिए कि एपीआई (और संबंधित निर्भरता, रूपरेखा, आदि) विशेष रूप से आपके ऐप की ज़रूरत है। मैं शब्द प्रतीक का उपयोग अर्ध-सामान्य तरीके से कर रहा हूं क्योंकि यह भाषा पर थोड़ा अलग है। IPhone में, प्रतीक एक सच्चे C प्रतीक पर मैप करता है जो अंततः संकलित .o फ़ाइल के लिए मैप करता है जिसे ARM / i386 आर्किटेक्चर के लिए संकलित किया गया है। जावा के लिए, अच्छी तरह से, यह कम या ज्यादा .class फ़ाइल है, आदि। एक बार सामने का छोर आपकी निर्भरता मैट्रिक्स को समझ सकता है, तो हम एसडीके कंपाइलर (यानी आईफोन के लिए जीसीसी,)

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

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


वाह, यह वास्तव में बहुत अच्छा लग रहा है। स्पष्टीकरण के लिए धन्यवाद। मैंने कभी नहीं सोचा था कि इतना प्रयास AppCelerator में किया जाएगा। अच्छा काम करते रहो!
मरमेज

12
क्या मुझे यह अधिकार मिला है कि कोई जावास्क्रिप्ट नहीं है-> उद्देश्य-सी और जावास्क्रिप्ट-> जावा रूपांतरण हो रहा है लेकिन यह सीधे मूल कोड में है? तो बनाए गए Objective-C या Java कोड पर एक नज़र रखने का कोई तरीका नहीं है?
जंपीओ

1
क्या टाइटेनियम के सर्वर पर संकलन किया गया है? मैंने देखा कि विकिपीडिया en.wikipedia.org/wiki/Appcelerator_Titanium
adib

1
@djaqeel क्लोजर, स्केला,
जॉर्बी

3

जैसे जेनी ने कहा, एप्लिकेशन को मूल कोड में संकलित किया गया है, लेकिन कुछ जावास्क्रिप्ट को चलाने के लिए अभी भी एक दुभाषिया है, जिससे एप्लिकेशन बहुत गतिशील हो सकता है।

appcelerator टाइटेनियम


1

यदि मैं अपना सरल पर्याप्त कोड पैकेज करता हूं तो मुझे एक ~ 80MB का गज़िप संग्रह (मूल कोड ~ 1kB) मिलता है। पैकेज के भीतर - दूसरों के बीच - आप मेरे स्रोत html और js फाइलें पा सकते हैं। पैकेज के साथ भेजे गए बहुत सारे पुस्तकालय (उदाहरण के लिए ssl) भी हैं (क्योंकि आप इस ढांचे के भीतर बहुत सी चीजों तक निम्न-स्तरीय पहुंच प्राप्त कर सकते हैं)।

मुझे लगता है कि वे आपका कोड लेते हैं और किसी तरह के दुभाषिया सॉफ्टवेयर और पुस्तकालयों के चारों ओर लपेटते हैं। मेरे मामले में यह ऐसा होगा जैसे अगर मैं अपना html और js कोड एक छोटे ब्राउज़र के बगल में पैक करता हूं जो केवल मेरी साइट प्रदर्शित करता है।

कभी भी, जब तक कोड हर समर्थित प्रणाली पर काम करता है उसी तरह से यह एक अच्छी बात है।


4
जब मैं .ipa को खोलता हूं कि टाइटेनियम बनाता है तो मैं देखता हूं कि यह एक मानक संकलित ऐप प्रतीत होता है। HTML या जावास्क्रिप्ट कोड में से कोई भी नहीं पाया जा सकता है।
डेरेल ब्रोगडन

1
मुझे लगता है कि आपने जो वर्णन किया है वह कॉर्डोवा क्या करता है, लेकिन टाइटेनियम अलग तरीके से काम करता है
रोहित चटर्जी

एक छोटे ब्राउज़र के साथ html और js कोड पैक करें ... और इलेक्ट्रॉन 5 साल बाद पैदा होता है।
Caio Iglesias
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.