HTML5 और JS ऐप्स को देशी ऐप्स के रूप में अच्छा प्रदर्शन करने के लिए क्या रोकता है?


9

मैं जो समझता हूं,

  • HTML एक मार्क-अप भाषा है, इसलिए XAML, XIB और जो भी एंड्रॉइड उपयोग करता है और अन्य यूआई यूआई विकास ढांचे की सामग्री है।
  • जावास्क्रिप्ट एक प्रोग्रामिंग लैंग्वेज है, जिसका उपयोग क्लाइंट साइड स्क्रिप्टिंग को संभालने के लिए किया जाता है, जिसमें इवेंट हैंडलिंग, क्लाइंट साइड वैलिडेशन और कुछ और C #, Java, ऑब्जेक्टिव-सी या C ++ जैसी चीजें शामिल होंगी।
  • MVC / MVVM पैटर्न सेन्चा, एंगुलर आदि के रूप में उपलब्ध हैं।
  • हमारे पास स्केलाइट और की-वैल्यू स्टोर दोनों के रूप में लोकलस्टोरेज है, क्योंकि अन्य फ्रेमवर्क में आपके पास लगभग सभी चीजों के लिए एपीआई विनिर्देश हैं जो गायब हैं।
  • जब भी किसी देशी UI फ्रेमवर्क को UI प्रस्तुत करना होता है, तो उसे एक समान मार्कअप को पार्स करना पड़ता है और UI को प्रस्तुत करना होता है।

प्रश्न विच्छेद

  • HTML और JS में ही करने से क्या रुकता है?
  • इसके बजाय वेब-नियंत्रण या ब्राउज़र के बीच में एक परत के रूप में क्यों HTML (सीएसएस के साथ नहीं कर सकते हैं) और जेएस उसी तरह से किया जा सकता है?
  • यदि कोई परत है, तो भी .net रनटाइम और JVM अन्य मामलों में हैं जहां C ++, C का उपयोग नहीं किया जा रहा है।
  • तो चलिए Android के मामले को लेते हैं, जैसे Dalvik, क्यों नहीं Chromium एक और विकल्प हो सकता है (dalvik और NDK के साथ) जहां HTML वह करता है जो एंड्रॉइड मार्कअप करता है और जावा का उपयोग करने के लिए जावास्क्रिप्ट का उपयोग किया जाता है?

तो सवाल है,

भले ही वर्तमान कार्यान्वयन उतना अच्छा नहीं है, लेकिन सैद्धांतिक रूप से एचटीएमएल 5 आधारित अनुप्रयोगों को मोबाइल पर अन्य मूल ऐप्स के रूप में काम करना संभव है?


1
कृपया स्पष्ट करने के लिए कि कौन से कथन आप शुरू कर रहे हैं, और वास्तविक प्रश्न क्या है।
फंकीब्रॉन

क्या आप स्पष्ट कर सकते हैं कि "HTML और JS में ही करने से क्या रोकता है?" मुझे समझ नहीं आ रहा है कि आप "वही" से क्या मतलब है - आपने पहले चार बयान दिए हैं, और मुझे यकीन नहीं है कि आप उस प्रश्न का उल्लेख कर रहे हैं।
अप्सिलर्स

अगर मेरे पास एक देशी विकास मंच है जो कुछ भी नया करने के बजाय HTML को मार्कअप के रूप में उपयोग करता है। और जेएस को भाषा के रूप में उपयोग करता है, क्या प्रदर्शन बेहतर होगा? इस I / O में Google ने कहा, वे व्यावहारिक थे और फोन पर एंड्रॉइड का उपयोग कर रहे थे न कि क्रोम ओएस पर। तो क्या इसका मतलब है, एफएफ ओएस एक व्यावहारिक अवधारणा नहीं है? क्या FFOS ऐप्स के लिए संबंधित प्लेटफॉर्म पर एंड्रॉइड ऐप के रूप में अच्छा प्रदर्शन करना संभव है अगर सभी सर्वोत्तम प्रथाओं का पालन किया जाता है?
अमोघ तलपल्लिकर

विंडोज मेट्रो अनुप्रयोगों पर एक नज़र डालें। वे मूल अनुप्रयोग हैं जो GUI डिजाइन के लिए HTML और इसके पीछे के तर्क के लिए जावास्क्रिप्ट का उपयोग करते हैं।
फिलिप

HTML / JS प्रदर्शन आम तौर पर उपयोगकर्ता इंटरफ़ेस के लिए पर्याप्त से अधिक अच्छा होता है जो जानकारी प्रदर्शित करता है, और उपयोगकर्ता कार्यों के आधार पर, एक बाहरी सर्वर के लिए अनुरोध करता है। यह मूल रूप से उससे अधिक के लिए नहीं बनाया गया था, लेकिन अब तक यह प्रभावशाली रूप से अधिक सक्षम है। फिर भी, अधिक प्रत्यक्ष डिवाइस एक्सेस, देशी कोड के साथ इंटरफेस करने, या ऑपरेटिंग सिस्टम (यानी, सूचनाओं) के साथ बातचीत करने वाली स्थितियों के लिए, उसके लिए सामान्य-उद्देश्य वेब प्रौद्योगिकियों का उपयोग करने का कोई अच्छा तरीका नहीं है।
कटान ३१४

जवाबों:


11

HTML5 ऐप्स के लिए पोस्टर बॉय, लिंक्डइन 2013 की शुरुआत में देशी हो गया था। वेंचरबीट में साक्षात्कार में वे बताते हैं कि क्यों।

मुझे लगता है कि यह आपके प्रश्न के लिए सबसे अधिक प्रासंगिक है:

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

...

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

[प्रसाद ने यह भी कहा कि मुद्दों को सुलझाने के लिए देव और ऑप्स उपकरण "अस्तित्व में नहीं है।"]

क्योंकि वे दो चीजें मौजूद नहीं हैं, लोग वापस मूल देश में जा रहे हैं। ऐसा नहीं है कि HTML5 तैयार नहीं है; यह है कि पारिस्थितिकी तंत्र इसका समर्थन नहीं करता है। ... उपकरण हैं, लेकिन वे शुरुआत में हैं। लोग केवल मूल बातें समझ रहे हैं।


मुझे नहीं मिला। हमारे पास बहुत बड़े निगम हैं: Google, Microsoft, Apple ने क्रोम, सफारी और IE पर ध्यान केंद्रित किया है। हमारे पास मोज़िला फ़ायरफ़ॉक्स के लिए प्रतिबद्ध है। हमारे पास क्रोम देव उपकरण, वेब इंस्पेक्टर, फायरबग है। और प्रसाद कहता है कि उपकरण नहीं हैं?
निउतेच

@niutech: मान लें कि आप HTML5 ऐप के लिए Valgrind जैसा टूल चाहते हैं। बहुत कुछ नहीं है।
वार्तेक

5

एक जावास्क्रिप्ट मानक पुस्तकालय की कमी एक भयानक अवरोधक है। कुछ नाम रखने के लिए jQuery, Dojo, YUI जैसी शानदार रूपरेखाएँ हैं, लेकिन ये सभी पूरी तरह से प्रस्तुति परत और XHR पर केंद्रित हैं।

क्या आप कॉन्फ़िगर करने योग्य लॉगिंग, क्रिप्टोग्राफ़िक टूल, ग्राफ़ एल्गोरिदम, यूयूआईडी जनरेटर, मैप्स, सेट्स, ट्रीज़, टेम्प्लेट, डिपेंडेंसी मैनेजमेंट, डेट हेरफेर, स्थानीयकरण / अंतर्राष्ट्रीयकरण, मैट्रिक्स ऑपरेशन, डिपेंडेंसी इंजेक्शन, यूनिट टेस्ट, मैप-कम, एक्सएमएल प्रोसेसिंग चाहते हैं? JVM या .NET भाषाओं के लिए तुच्छ - जावास्क्रिप्ट में आपको अक्सर अपने स्वयं के कार्यान्वयन को रोल करना पड़ता है।


उस पर रिपोर्टिंग जोड़ें।
एलन बी

ECMAScript 6 में इनमें से अधिकांश सुविधाएँ शामिल हैं। Google क्लोजर लाइब्रेरी एक और समाधान है।
निउतेच

कोणीय अब अच्छा घोषणात्मक तरीका प्रदान करता है।
अमोघ तलपलीकर

2

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

a += b;

कि दुभाषिया के लिए तुच्छ नहीं है, क्योंकि aऔर bनंबर या तार हो सकता है। जब दोनों संख्याएँ हैं, तो यह एक अंकगणितीय जोड़ है। जब दोनों स्ट्रिंग होते हैं, तो यह एक स्ट्रिंग कॉनटेनैशन है। जब एक स्ट्रिंग होती है और एक नंबर होता है, तो स्ट्रिंग कॉन्टेक्नेशन करने से पहले नंबर को फॉर्मेट किया जाना चाहिए। ये पूरी तरह से अलग-अलग ऑपरेशन हैं जिन्हें तर्कों को अलग तरीके से व्याख्या करने की आवश्यकता होती है।

के प्रकारों पर निर्भर करता है aऔर bकिस प्रकार का aपूर्णांक, डबल या स्ट्रिंग हो सकता है, इस बात पर ध्यान दिए बिना कि वह किस प्रकार का था।

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

अन्य विशेषताएं जो अनुकूलन को अधिक कठिन बनाती हैं वे विरल ऐरे या कचरा संग्रहण और ईवेंट हैंडलर हैं जो कभी भी फायर कर सकते हैं।

Asm.js पर एक नज़र डालें - यह जावास्क्रिप्ट का एक सबसेट है जो कुछ JS विशेषताओं, विशेष रूप से गतिशील टाइपिंग से छुटकारा पाकर बेहतर अनुकूलन की अनुमति देता है।


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

1
@Esailija आधुनिक जावास्क्रिप्ट वातावरण पुराने लोगों की तुलना में बहुत तेज हैं। लेकिन स्थिर रूप से टाइप किए गए आधुनिक वातावरण, जैसे .NET, JVM, ErlangVM आदि की तुलना में वे अभी भी धीमे हैं
डेविड सर्गेई

@nirth हाँ, मैं यह नहीं कह रहा हूँ, कि इस पोस्ट में बताया गया है कि कैसे एक दुभाषिया / गैर-अनुकूलन करने वाला जेट कंपाइलर ऐसा करेगा और वह गंभीर रूप से धीमा है।
एस्लेइजा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.