वेबसाइटों के लिए अन्य क्लाइंट-साइड स्क्रिप्टिंग भाषाएँ क्यों नहीं हैं? [बन्द है]


35

आज ब्राउज़रों में जावास्क्रिप्ट और कुछ VBScript का समर्थन क्यों है? मुझे पता है कि जावास्क्रिप्ट अच्छा है और सभी, लेकिन एक और प्रोग्रामिंग भाषा का उपयोग करने का विकल्प नहीं होगा जो विभिन्न विकास शैलियों को बढ़ावा देने में मदद करता है?


1
स्टैक ओवरफ्लो पर यह सवाल देखें: stackoverflow.com/questions/2872037/…
Corey

1
आपका सवाल ठीक है कि Google ने GWT क्यों बनाया ।
22

1
मेरा मानना ​​है कि DOM API का पूरा बिंदु कई भाषाओं के लिए समर्थन प्रदान करना था। यह है, जेएस वास्तव में चुनौती के लिए वास्तव में अच्छी तरह से अनुकूल है। यह किसी के व्यवसाय की तरह सामान्य है और प्रथम श्रेणी के कार्य एक भारी घटना-संचालित प्रतिमान में विशाल हैं। यह वास्तव में नीचे आ गया है कि कोई भी एमएस को यह निर्णय नहीं लेने देना चाहता था और जेएस से बेहतर कोई नहीं आया। इसके अलावा, जावा Applets वास्तव में थे, वास्तव में लंगड़ा।
एरिक रेपेन

जवाबों:


33

कई भाषाओं के लिए suport जोड़ने की आवश्यकता नहीं है, एक समाधान एक सामान्य बाइटेकोड पर मानकीकृत होगा जो भाषा कार्यान्वयनकर्ताओं द्वारा उपयोग किया जा सकता है। लेकिन वर्तमान में इसके लिए कोई योजना नहीं है (यह सुझाव दिया गया है)।

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


3
+1 - इंगित करने के लिए कि जावास्क्रिप्ट एक शक्तिशाली भाषा है जिसका उपयोग अन्य भाषाओं के लिए अमूर्त के रूप में किया जा सकता है। यह फ़ायरफ़ॉक्स एक्सटेंशन लिखने के लिए एक दिलचस्प प्रोजेक्ट होगा जो क्लाइंट साइड C ++ या जावा चलाएगा! <script type="text/cpp" src="test.cpp"></script>
jmort253

2
@ jmort253, देशी ग्राहक पर एक नज़र डालें।
dan_waterworth

मूल ग्राहक निश्चित रूप से दिलचस्प है लेकिन जब तक मोज़िला इसे भी नहीं अपनाता है, तब तक कोई भी कर्षण नहीं होगा। पिछले मैंने जाँच की कि वे अभी तक इसे लेने के लिए तैयार नहीं थे।
nkassis

1
मुझे कुछ साल पहले गेस्टाल्ट मिला: gestalt.codeplex.com यह जावास्क्रिप्ट के शीर्ष पर अन्य स्क्रिप्टिंग भाषाओं के निर्माण का एक अच्छा उदाहरण है।
जिम शुबर्ट

2
एक अन्य उदाहरण: Google वेब टूलकिट ? जावा को
मार्कजे

21

जावास्क्रिप्ट डे-फैक्टो मानक है और 1996 के बाद से है। एक मानक होने के नाते बस इसलिए कि कोई प्रतिस्पर्धा नहीं है बिल्कुल निष्पक्ष नहीं है, लेकिन मैंने इस बारे में बहुत शिकायत नहीं सुनी है कि कोई अन्य भाषा शामिल क्यों नहीं है।

एक और "मानक" भाषा जोड़ना सभी प्रकार के मजेदार छोटे मुद्दों को बढ़ावा देता है।

  • वे अन्य भाषाओं के साथ कैसे काम करेंगे?
  • क्या DOM साझा किया जाएगा?
  • क्या दोनों में लिखी गई स्क्रिप्ट अभी भी काम कर सकती है?
  • दोनों को पोर्टिंग लाइब्रेरी

8
वास्तव में मुझे लगता है कि जावास्क्रिप्ट मोज़िला की गेको में प्रयुक्त भाषा है। IE में हमारे पास JScript हैं। अधिकांश अन्य ब्राउज़र कुछ ऐसा उपयोग करते हैं जो कमोबेश ECMAScript विनिर्देशों का अनुसरण करते हैं। ये सभी भाषाएं सरलता के लिए हैं जिन्हें 'जावास्क्रिप्ट' कहा जाता है, जबकि वास्तव में वे अलग-अलग हैं।
Mchl

1
आपके पास कई भाषाएं हो सकती हैं जो एक ही बायटेकोड उत्पन्न करती हैं। JVM को देखें - Groovy, Java, Scala, Clojure, jRuby को सीधे JVM bytecode से संकलित किया जा सकता है। इस तरह, वे एक ही डोम एपीआई साझा करेंगे, और इसे इंटरऑपरेबल बनाया जा सकता है। हालांकि इसकी व्याख्या करने के बाद से जावास्क्रिप्ट वीएम के साथ इसे लागू करना बहुत कठिन है।
डेविड सर्गेई

21

अकेले जावास्क्रिप्ट के अपने समर्थन के लिए ब्राउज़रों के बीच विसंगतियों के बारे में सोचें। अब सोचिये कि अगर और भाषाएँ होतीं तो कैसा होता।


5
हाँ, यह पहले से ही वहाँ है, ग्राहक पक्ष VBScript ... uugh, कंपकंपी।
ओसोडो

1
+1 मुझे लगता है कि यदि हमारे मुख्य ब्राउज़रों और उनके संस्करणों में से प्रत्येक के लिए याद करने के लिए हमारे सिर में विस्फोट होता, तो अन्य भाषाओं का एक समूह होता। अच्छा उत्तर।
jmort253

4
यह नाइटपैकिंग हो सकता है, लेकिन ... जावास्क्रिप्ट [ECMAScript] के ब्राउज़रों का समर्थन वास्तव में शुरुआत से ही बोर्ड के बहुत अनुरूप रहा है। जो असंगत है, उनका कार्यान्वयन डोम (और संबंधित तरीकों) से हुआ है। एक व्यावहारिक (और ऐतिहासिक) दृष्टिकोण से, दोनों को अलग करना मुश्किल है - क्योंकि जेएस का एकमात्र वास्तविक उपयोग एक ब्राउज़र में DOM को हेरफेर करने के लिए किया गया है - लेकिन सर्वर-साइड JS (NodeJS जैसी चीजें) के उदय के साथ, यह वास्तव में कुछ महत्वपूर्ण अंतर बन जाता है।
josh3736

एक उत्तर के रूप में बहुत सटीक रूप से यह लिखने जा रहा था, इंटरनेट में पर्याप्त मानक हैं जिनका पालन या समर्थन नहीं किया जाता है। यह तथ्य कि जंबल्ड मेस में हम आधे काम करते हैं और साथ ही यह किसी चमत्कार से कम नहीं है।
रायथल

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

6

ब्राउज़रों को मानकीकृत किया जाना है, ताकि आप जो भी विकसित करें, वह सभी ब्राउज़रों पर हर जगह काम करे।

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

जावास्क्रिप्ट एक बहुत ही लचीली भाषा है, यह अत्यावश्यक है, यह कार्यात्मक है, यह ओओपी (प्रोटोटाइप के साथ एक फैशन के बाद) हो सकता है, और इसकी व्याख्या की जाती है। अब क्रोम जैसे सभ्य इंजन के साथ, यह कुछ अच्छा सामान करने में सक्षम है। अतिरिक्त भाषाएं बस चीजों को यहां वापस सेट कर देंगी, VBScript को देखें, केवल IE, और इसलिए इसमें जो कुछ भी लिखा गया है वह एक विशेष ब्राउज़र और प्लेटफॉर्म, दुःस्वप्न से बंधा है।


2
यहाँ महत्वपूर्ण बिंदु "क्रोम जैसे सभ्य इंजन के साथ" है। कुछ भी कर के हल्के से कर लगाने से भी IE8 लंगड़ा होने लगता है जैसे कि यह एक टूटा हुआ पैर मिल गया है, जबकि फ़ायरफ़ॉक्स और क्रोम के हाल के संस्करणों ने हमेशा के लिए जो मैंने इसका इस्तेमाल किया है (यही कारण है कि मैंने इनफैक्ट स्विच किया था) एक बीट को याद किए बिना छोड़ दें।
मैथ्यू शेर्ले

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

"यह OOP हो सकता है" ... यह है OOP! वंशानुक्रम वह नहीं है जो ओओपी को परिभाषित करता है। वस्तुएं हैं।
KaptajnKold

@KaptajnKold: यह अकादमिक हलकों में आश्चर्यजनक रूप से कुछ बहस का विषय है। मैं इस बात से सहमत हूं कि JS OOP के लिए सक्षम है, इसमें उसके ऑब्जेक्ट्स हैं, वे हमेशा कुछ के द्वारा अधिक उपयोग नहीं किए जाते हैं। प्रोटोटाइप सिस्टम सामान्य ओओपी स्वाद के साथ-साथ एक अच्छा सौदा है, जो इसे "ओओपी भाषा" की मानक परिभाषा से और दूर करता है। अधिकांश भाषाओं के साथ, यह निर्भर करता है कि आप इसका उपयोग कैसे करते हैं - जब मैं इसका उपयोग करता हूं, तो यह ओओपी है।
परिक्रमा

3

ब्राउज़रों में इनका निर्माण करने के बजाय, विक्रेता क्लूनी ब्राउज़र प्लग-इन - जावा, फ्लैश, सिल्वरलाइट आदि का निर्माण करना पसंद करते हैं। यह क्रॉस-प्लेटफॉर्म स्थिरता की गारंटी देता है।


वैसे यह क्रॉस-प्लेटफॉर्म स्थिरता की गारंटी के बारे में नहीं है ताकि नियंत्रण की गारंटी हो। जैसा कि आप प्लगइन को नियंत्रित करते हैं और आपको किसी और को जवाब देने की आवश्यकता नहीं है।
jhocking

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

2

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


बहुत कुछ जो मैं कहने जा रहा था। क्लाइंट-साइड और सर्वर-साइड भाषाओं के बीच महत्वपूर्ण (इस चर्चा में) अंतर यह है कि ब्राउज़र को क्लाइंट-साइड भाषा को लागू करना होगा।
२२:११

2

यहां कई प्रतिक्रियाएं हैं जो दावा करती हैं कि कई भाषाओं का समर्थन करने से यह वेब ब्राउज़र के बिल्डरों के लिए बहुत ही कठिन हो जाएगा ताकि यह सुनिश्चित किया जा सके कि वे सभी भाषाओं के अनुरूप हैं। मुझे यह गलत लगता है।

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

अन्य लाभ:

  1. एक दशक के प्रदर्शन सुधार से JVM को फायदा हुआ है। यह अब बहुत तेज, स्थिर और परिपक्व है। मैं शर्त लगा रहा हूं कि आपको व्याख्यात्मक जावास्क्रिप्ट पर एक बड़ा प्रदर्शन सुधार दिखाई देगा।
  2. जैसे-जैसे क्लाइंट-साइड ऐप्स बड़े और अधिक जटिल होते जाते हैं, संरचित, टाइप की गई भाषाओं जैसे जावा और स्काला के लाभ बढ़ जाते हैं।
  3. आपके पास सच्चे मल्टी-थ्रेडिंग तक पहुंच होगी, और स्काला के माध्यम से, मल्टी-कोर कंप्यूटिंग के लिए अनुकूलित एक संग्रह पुस्तकालय।
  4. आप ब्राउज़र के अंदर हजारों ओपन सोर्स जावा लाइब्रेरी में से किसी का भी उपयोग कर सकते हैं।
  5. ओपनजील जैसे पुस्तकालयों के माध्यम से, ब्राउज़र उन्नत ग्राफिक्स और ग्राफिक्स-कार्ड कंप्यूटिंग क्षमताओं तक पहुंच प्रदान कर सकता है।
  6. यदि आपके पास क्लाइंट और सर्वर साइड पर जावा चल रहा है, तो आप क्लाइंट-सर्वर संचार से अत्यंत संपीड़ित, बाइनरी ऑब्जेक्ट-ग्राफ़ सीरियलाइजेशन = तेजी से लोड करने और प्रदर्शन करने वाले वेब पेजों के माध्यम से आगे लाभ उठा सकते हैं।

1
आप पहले से ही जेवीएम कोड चला सकते हैं। इसे एक जावा एप्लेट कहा जाता है
रेयनोस

1

मेरा मानना ​​है कि जावास्क्रिप्ट वेब के लिए मानक भाषा के रूप में और भी अधिक जमीन हासिल करने जा रहा है। हम सर्वर-साइड जावास्क्रिप्ट में वृद्धि देख रहे हैं। यहाँ सर्वर पर इस शक्तिशाली भाषा के कार्यान्वयन के कुछ उदाहरण दिए गए हैं:

  • POW वेब सर्वर SJS - POW वेब सर्वर के लिए सर्वर साइड जावास्क्रिप्ट, जो फ़ायरफ़ॉक्स एक्सटेंशन के रूप में या एक XULRunner अनुप्रयोग के रूप में चलता है। एसजेएस अपाचे में PHP के समान भूमिका निभाता है जिसमें यह डेटाबेस से जुड़ सकता है और क्लाइंट-साइड सामग्री उत्पन्न कर सकता है।

  • NodeJS - सर्वर साइड जावास्क्रिप्ट जो एक इवेंट-आधारित मॉडल का उपयोग करता है। यह Google के V8 जावास्क्रिप्ट इंजन का उपयोग करके बनाया गया है । NodeJS को स्केलेबल नेटवर्क प्रोग्राम बनाने के लिए एक उपकरण के रूप में विज्ञापित किया जाता है। एक "हैलो वर्ल्ड" वेब सर्वर केवल 6 छोटी लाइनों में लिखा जा सकता है!

  • जैक्सर - एक जावास्क्रिप्ट सर्वर जो सभी स्क्रिप्ट ब्लॉकों runat="server"को सर्वर-साइड जावास्क्रिप्ट के रूप में व्याख्या करता है। संपूर्ण वेब अनुप्रयोग जावास्क्रिप्ट में लिखे जा सकते हैं।

  • राइनो - जावा के लिए जावास्क्रिप्ट - मोज़िला ने जावा पर चलने वाले इस सर्वर-साइड जावास्क्रिप्ट कार्यान्वयन को बनाया। यह अनिवार्य रूप से Java , Jython, JRuby, और JVM पर चलने वाली अन्य भाषाओं के कई अन्य अमूर्तताओं के लिए Querces PHP की एक समान अवधारणा है । राइनो को आमतौर पर उपयोगकर्ताओं को समाप्त करने के लिए स्क्रिप्टिंग टूल प्रदान करने के लिए जावा में जावास्क्रिप्ट को एम्बेड करने के लिए उपयोग किया जाता है, लेकिन इसका उपयोग क्लाइंट-साइड कोड को सर्वर में स्थानांतरित करने के लिए बिना किसी अन्य भाषा में व्यावसायिक तर्क को फिर से लिखने के लिए भी किया जा सकता है!

  • JQuery क्लैयूल - सर्वर पर JQuery की शक्ति का उपयोग करते हुए सर्वर-साइड जावास्क्रिप्ट फ्रेमवर्क। बहुत ही शांत! यह एक ब्राउज़र के EnvJs सर्वर-साइड जावास्क्रिप्ट कार्यान्वयन का उपयोग करके विकसित किया गया है।

  • EnvJs - राइनो के शीर्ष पर बनाया गया एक बिना सिर वाला ब्राउज़र।

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

सारांश में, यह अन्य भाषाओं को ब्राउज़र में पोर्ट करने के लिए एक विरोधाभास की तरह लगता है जब इसके बजाय हम इस एकल ब्राउज़र भाषा को सर्वर पर पोर्ट कर सकते हैं और उस अंतर को अधिक एकीकृत तरीके से पाट सकते हैं।


+1 यह इंगित करने के लिए कि जावास्क्रिप्ट ब्राउज़र तक ही सीमित नहीं है
गैरी रोव

1

उपकरणों के कई उदाहरण हैं जो जावास्क्रिप्ट के लिए अन्य भाषाओं को संकलित करेंगे, जिनमें हास्केल, लिस्प और पायथन (संभवतः अन्य) शामिल हैं। इसलिए यदि आप उन भाषाओं में से एक में काम करना चाहते हैं जो आप कर सकते हैं।

और मुझे लगता है कि विश्वविद्यालय के मेरे एक प्रोफेसर ने जावास्क्रिप्ट में एक योजना कार्यान्वयन लिखा था। इसलिए अगर आपको स्कीम पसंद है तो आप ऐसा कर सकते हैं।


0

लोगों ने बिल्ट-इन वैरायटी की कमी को दो तरह से काम किया है: फ्लैश या जावा एप्लेट जैसे प्लगइन्स का उपयोग करना, और बिल्डिंग लेयर्स जो कि जावास्क्रिप्ट का उपयोग अपने "मशीन कोड" के रूप में करते हैं, जैसे कि jquery या google web toolkit। यदि कोई नई विकास शैली पर्याप्त रूप से लोकप्रिय थी, तो लोग इसे प्राप्त करने का एक तरीका खोज लेंगे।

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


वेबफ़ॉर्म और IE को दोष दें। आप वेब यूआई देवों के पेशाब को गर्म पोकर्स के साथ जोड़कर कम कर देंगे। ब्रांड एसोसिएशन के लिए अच्छा नहीं है।
एरिक रेपेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.