Google App Engine पर Java vs Python चुनना


161

वर्तमान में Google App Engine Python & Java दोनों का समर्थन करता है। जावा समर्थन कम परिपक्व है। हालाँकि, लगता है कि जावा पुस्तकालयों की एक लंबी सूची है और विशेष रूप से जावा बाइटकोड के लिए समर्थन की परवाह किए बिना भाषाओं को उस कोड को लिखने के लिए उपयोग किया जाता है। कौन सी भाषा बेहतर प्रदर्शन और अधिक शक्ति देगी? कृपया सलाह दें। धन्यवाद!

संपादित करें: http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine?pli=1

संपादित करें: "शक्ति" से मेरा मतलब है कि रूपरेखा के बाहर उपलब्ध पुस्तकालयों का बेहतर विस्तार और समावेश। पाइथन केवल शुद्ध पाइथन पुस्तकालयों की अनुमति देता है, हालांकि।


अब Google App Engine Go (प्रयोगात्मक) का समर्थन कर रहा है । उस बारे में आपकी क्या बातें हैं?
बेंजामिन क्राउज़ियर

@pinouchon मैंने गो का उपयोग करना शुरू कर दिया है, और इसे GAE पर उत्पादन में तैनात किया है। जीएई पर जीओ बहुत अच्छी तरह से काम करता है, कुछ सेकंड में संकलित करता है। अपना वेब फ्रेमवर्क समझदारी से चुनें :-)
मिशेल गिउसेपे फड्डा

जवाबों:


123

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

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

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

पुस्तकालयों के संदर्भ में, यह बहुत धुला हुआ है - जेवीएम पर्याप्त मौजूदा है (कोई थ्रेड्स, कोई कस्टम क्लास लोडर, कोई जेएनआई, कोई संबंधपरक डीबी नहीं) मौजूदा जावा पुस्तकालयों के सरल पुन: उपयोग के लिए बाधा उत्पन्न करने के लिए बहुत अधिक, या मौजूदा पायथन की तुलना में। पुस्तकालयों को पायथन रनटाइम पर समान प्रतिबंधों से समान रूप से बाधित किया जाता है।

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

XPath / XSLT की स्थिति (व्यंजित होने के लिए ...) दोनों तरफ बिल्कुल सही नहीं है, आह, हालांकि मुझे लगता है कि यह JVM में एक कम खराब हो सकता है (जहां, जाहिरा तौर पर, सेक्सन के पर्याप्त उपसमुच्चय को चलाने के लिए बनाया जा सकता है) कुछ देखभाल के साथ)। मुझे लगता है कि उनके शीर्षकों में XPath और XSLT के साथ Appengine मुद्दों के पृष्ठ पर खोलने के लायक है - अभी केवल विशिष्ट पुस्तकालयों के लिए पूछने वाले मुद्दे हैं, और यह मायोपिक है: मुझे वास्तव में परवाह नहीं है कि एक अच्छा XPath / XSLT कैसे लागू किया जाता है। जब तक मैं इसका उपयोग करने के लिए पायथन और / या जावा के लिए। (विशिष्ट लाइब्रेरी मौजूदा कोड के माइग्रेशन को कम कर सकती हैं, लेकिन यह इस तरह के कार्यों को करने में सक्षम होने की तुलना में कम महत्वपूर्ण है जैसे कि कुछ तेजी से "कुछ में XSLT परिवर्तन लागू करें!")। मुझे पता है कि मैं इस तरह के एक मुद्दे को स्टार करूँगा अगर अच्छी तरह से (विशेष रूप से एक भाषा-स्वतंत्र तरीके से)।

अंतिम लेकिन कम से कम: याद रखें कि आपके पास आपके ऐप के अलग-अलग संस्करण हो सकते हैं (समान डेटास्टर का उपयोग करके) जिनमें से कुछ पायथन रनटाइम के साथ कार्यान्वित किए जाते हैं, कुछ जावा रनटाइम के साथ, और आप उन संस्करणों तक पहुंच सकते हैं जो "डिफ़ॉल्ट / सक्रिय" से भिन्न हैं "एक स्पष्ट यूआरएल के साथ। तो आप दोनों पायथन और जावा कोड (आपके ऐप के अलग-अलग संस्करणों में) का उपयोग कर सकते हैं और एक ही डेटा स्टोर का उपयोग कर सकते हैं, जिससे आपको और भी अधिक लचीलापन मिलेगा (हालाँकि केवल एक ही "अच्छा" URL होगा जैसे कि foobar.appspot.com - जो शायद केवल ब्राउज़रों पर इंटरएक्टिव उपयोगकर्ताओं द्वारा पहुंच के लिए महत्वपूर्ण है, मैं कल्पना करता हूं ;-)।


9
GWT मुख्य रूप से एक क्लाइंट साइड टेक्नोलॉजी है - आप इसका उपयोग इस बात पर ध्यान दिए बिना कर सकते हैं कि आपका बैक एंड पाइथन है या जावा। आप GPC के RPC में निर्मित होने के बजाय JSON पर rpc करने से थोड़ी सी सिटैक्टिक शुगर खो देते हैं, लेकिन यदि आप JS से घृणा करते हैं और अजगर करते हैं तो यह अभी भी देखने लायक है :)
पीटर रिकोर

9
GWT के लिए पायथोनिक विकल्प के रूप में पजामा ( pyjs.org ) है - यह पायथन कोड लेगा और इसे जावास्क्रिप्ट के लिए संकलित करेगा, जैसा कि GWT जावा कोड के लिए करता है।
डेव किर्बी

7
बस "5 साल बाद" परिप्रेक्ष्य देने के लिए। एक जावा डेवलपर के रूप में मुझे लगता है कि जीएई एक पुराना स्टैक चला रहा है। आपको जावा 8 सपोर्ट नहीं मिलेगा , ( वे जावा 6 के साथ-साथ लीगेसी जेट्टी 6 कंटेनर में सर्वलेट एपीआई 2.5 के साथ चल रहे हैं ), जीएई में सभी जावा सपोर्ट अभी भी 2010 में अटके हुए हैं। जबकि मुझे जीएई सादगी पसंद है और Google पावरफुल सर्विसेज, मैं जावा के लिए GAE की सिफारिश नहीं कर सकता जब तक वे इसके ढेर को अपग्रेड नहीं करते।
एंथनी एक्सीली

72

पायथन और जावा प्रदर्शन में बदलाव के लिए यह ऐप देखें:

http://gaejava.appspot.com/ (संपादित करें: क्षमा याचना, लिंक अब टूट गया है। लेकिन निम्नलिखित पैरा तब भी लागू होता है जब मैंने आखिरी बार देखा था)

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


5
सभी उचित सम्मान के साथ, मैं इस परीक्षा को काफी सरल समझता हूं। इसके लायक क्या है ... यदि आप जावा / जीएई का उपयोग करते हैं, तो मैं निम्न स्तर के एपीआई का उपयोग करने की सलाह देता हूं और जेडीओ या किसी अन्य ढांचे से बचता हूं। इससे भी महत्वपूर्ण बात यह है कि, JDO आपको एक 'रिलेशनल' डेटाबेस के साथ काम करने की 'भावना' देता है, जो 'भ्रामक' हो सकता है।
Mo'in Creemers

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

1
आपका ऐप, यह आंतरिक सर्वर त्रुटि फेंक रहा है।
टोमडेमुइट

1
धन्यवाद टॉम। दुख की बात नहीं, मेरा ऐप नहीं। किसी ऐसे व्यक्ति को मेल किया है जो लिंक हो सकता है।
रिचर्ड वॉटसन

1
मैं यह देखना चाहता हूं कि इस परीक्षण में तुलना कैसे की जाती है
मोशे शाहम

18

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

उपलब्ध पुस्तकालयों के संबंध में, आप पाएंगे कि व्यापक पायथन रनटाइम लाइब्रेरी बॉक्स से बाहर काम करती है (जैसा कि जावा का है)। लोकप्रिय Django वेब फ्रेमवर्क ( http://www.djangoproject.com/ ) भी AppEngine पर समर्थित है।

'पॉवर' के संबंध में, यह जानना मुश्किल है कि आपका क्या मतलब है, लेकिन पायथन का उपयोग कई अलग-अलग डोमेन में किया जाता है, विशेष रूप से वेब: YouTube को पायथन में लिखा जाता है, जैसा कि Sourceforge (पिछले सप्ताह के अनुसार) है।


धन्यवाद Judy2K! शक्ति से मेरा मतलब है कि अधिक काम कर सकते हैं और विस्तार करना आसान है।
वियतनामी

15

जून 2013: यह वीडियो एक गूगल इंजीनियर का बहुत अच्छा जवाब है:

http://www.youtube.com/watch?v=tLriM2krw2E

TLDR; है:

  • उस भाषा को चुनें जिसे आप और आपकी टीम सबसे अधिक उत्पादक है
  • यदि आप उत्पादन के लिए कुछ बनाना चाहते हैं: जावा या पायथन (गो नहीं)
  • यदि आपके पास एक बड़ी टीम और एक जटिल कोड आधार है: जावा (स्थैतिक कोड विश्लेषण और रीफैक्टरिंग के कारण)
  • छोटी टीमें जो जल्दी से पुनरावृति करती हैं: पायथन (हालांकि जावा भी ठीक है)

9

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

जावा के लिए , मानक विधि JDO या JPA का उपयोग करना है। ये पोर्टेबिलिटी के लिए बहुत अच्छे हैं लेकिन डेटास्टोर के लिए बहुत उपयुक्त नहीं हैं।

एक निम्न-स्तरीय एपीआई उपलब्ध है, लेकिन यह दिन-प्रतिदिन के उपयोग के लिए बहुत निम्न स्तर है - यह 3 पार्टी पुस्तकालयों के निर्माण के लिए अधिक उपयुक्त है।

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

सौभाग्य से, दोनों भाषाओं के लिए सूचीबद्ध कमजोरियों के लिए समाधान विकसित किए जा रहे हैं।

जावा के लिए , निम्न-स्तरीय एपीआई का उपयोग दृढ़ता पुस्तकालयों को विकसित करने के लिए किया जा रहा है, जो कि डीटीडीओ फिर जेडीओ / जेपीए (आईएमओ) के लिए बेहतर हैं। उदाहरणों में सिएना परियोजना शामिल है , और ऑब्जेक्टिफाई करें

मैंने हाल ही में ऑब्जेक्टिफ़ाइ का उपयोग करना शुरू कर दिया है और इसे उपयोग करने में बहुत आसान होने के साथ-साथ डेटासटोर के अनुकूल होने के लिए मिल रहा हूं, और इसकी बढ़ती लोकप्रियता ने अच्छे समर्थन में अनुवाद किया है। उदाहरण के लिए, Objectify आधिकारिक तौर पर Google की नई क्लाउड एंडपॉइंट सेवा द्वारा समर्थित है। दूसरी ओर, ऑब्जेक्ट केवल डेटास्टर के साथ काम करता है, जबकि सिएना डेटास्टोर से 'प्रेरित' है, लेकिन SQL डेटाबेस और NoSQL डेटास्टोर्स दोनों की एक किस्म के साथ काम करने के लिए डिज़ाइन किया गया है।

पायथन के लिए , वहाँ कोशिश की जा रही है कि पायथन GAE डेटास्टोर API का उपयोग GAE से किया जाए। एक उदाहरण SQLite बैकएंड है जिसे Google ने एसडीके के साथ उपयोग के लिए जारी किया है, लेकिन मुझे संदेह है कि वे इसे कुछ उत्पादन में विकसित करने के लिए इरादा करते हैं। TyphoonAE परियोजना शायद और अधिक क्षमता है, लेकिन मुझे नहीं लगता कि यह अभी तक या तो उत्पादन के लिए तैयार है (सही मुझे अगर मैं गलत हूँ) है।

यदि किसी को इन विकल्पों में से किसी के साथ या दूसरों के बारे में पता है, तो कृपया उन्हें टिप्पणी में जोड़ें। व्यक्तिगत रूप से, मैं वास्तव में जीएई डेटास्टोर को पसंद करता हूं - मुझे लगता है कि यह एडब्ल्यूएस सिम्प्लेबीडी पर काफी सुधार है - इसलिए मैं इसके उपयोग में कुछ मुद्दों को कम करने के लिए इन प्रयासों की सफलता की कामना करता हूं।


7

मैं GA और यहाँ के लिए जावा की दृढ़ता से अनुशंसा कर रहा हूँ:

  1. प्रदर्शन: जावा संभावित रूप से तेज है तो पायथन।
  2. पायथन विकास तीसरे पक्ष के पुस्तकालयों की कमी के दबाव में है। उदाहरण के लिए, पायथन / GAE के लिए कोई XSLT नहीं है। लगभग सभी पायथन लाइब्रेरी सी बाइंडिंग हैं (और वे जीएई द्वारा असमर्थित हैं)।
  3. Memcache API: जावा एसडीके में पायथन एसडीके की तुलना में अधिक रोचक क्षमताएं हैं।
  4. डेटास्टोर एपीआई: जेडीओ बहुत धीमा है, लेकिन देशी जावा डेटास्टोर एपीआई बहुत तेज और आसान है।

मैं अभी विकास में जावा / जीएई का उपयोग कर रहा हूं।


1
@Paul - यदि आप JDO के जाने का रास्ता नहीं है, तो क्या आप GA पर जावा का उपयोग करने की दृढ़ता को संभालने के लिए सबसे अच्छा तरीका सुझा सकते हैं (या लिंक दे सकते हैं)?
मार्क

1
@ मर्क, मुझे देरी के लिए खेद है। मुझे लगता है कि code.google.com/p/objectify-appengine अभी के लिए सबसे अच्छा विकल्प है।
पॉल

7
अंक # 2 और # 3 में एकमुश्त झूठ के लिए और # 4 के लिए कोई मतलब नहीं है।
त्रिपिटक

@ ट्रीपिक, मुझे पता है कि अजगर / जीएई के लिए एक्सएसएलटी प्रोसेसर का नाम क्या है? और मेमेक / अजगर / GAE के लिए CAS (putIfUntouched) ऑपरेशन के बराबर क्या है?
पॉल

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

6

जैसा कि आपने पहचाना है, एक JVM का उपयोग करके आप जावा भाषा का उपयोग करने के लिए प्रतिबंधित नहीं है। जेवीएम भाषाओं और लिंक की एक सूची यहां पाई जा सकती हैहालाँकि , Google ऐप इंजन उन वर्गों के समूह को प्रतिबंधित करता है, जिनका उपयोग आप सामान्य जावा एसई सेट से कर सकते हैं, और आप जांचना चाहेंगे कि इनमें से कोई भी कार्यान्वयन ऐप इंजन पर उपयोग किया जा सकता है या नहीं।

संपादित करें: मैं देख रहा हूँ कि आप इस तरह की एक सूची पा चुके हैं

मैं पायथन के प्रदर्शन पर टिप्पणी नहीं कर सकता। हालांकि, JVM एक बहुत ही शक्तिशाली प्लेटफॉर्म परफॉर्मेंस-वार है, जो रन टाइम के दौरान कोड को डायनामिक रूप से कंपाइल और ऑप्टिमाइज़ करने की क्षमता देता है।

अंतत: प्रदर्शन इस बात पर निर्भर करेगा कि आपका आवेदन क्या करता है, और आप इसे कैसे कोडित करते हैं। आगे की जानकारी के अभाव में, मुझे लगता है कि इस क्षेत्र में और अधिक संकेत देना संभव नहीं है।


शीघ्र उत्तर के लिए धन्यवाद, ब्रायन। मैं यूआरएल लाने और XML पार्सिंग और XSLT प्रसंस्करण पर ध्यान केंद्रित करने का इरादा रखता हूं। ब्राउज़रों के लिए HTTP सामग्री की सेवा कम होगी।
वियतनाम

6

मैं हैरान था कि कैसे स्वच्छ, सीधा और समस्या मुक्त अजगर / Django एसडीके है। हालाँकि मैंने उन परिस्थितियों में दौड़ना शुरू किया जहाँ मुझे अधिक जावास्क्रिप्ट करने की आवश्यकता थी और मुझे लगा कि मैं GWT और अन्य जावा उपयोगिताओं का लाभ उठाना चाहता हूँ। मैंने जीएई जावा ट्यूटोरियल के माध्यम से सिर्फ आधा रास्ता प्राप्त किया है, और एक के बाद एक समस्या हुई है: एक्लिप्स कॉन्फ़िगरेशन समस्याएं, जेआरई संस्करणाइटिस, जावा की दिमाग-सुन्नता जटिलता और एक भ्रामक और संभवतः टूटी हुई ट्यूटोरियल। इस साइट की जाँच करना और यहाँ से जुड़े अन्य लोगों ने मेरे लिए इसका उपयोग किया। मैं अजगर के पास वापस जा रहा हूं, और मैं अपनी जावास्क्रिप्ट चुनौतियों के साथ मदद करने के लिए पजामा में देखूंगा।


5

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

जैसा कि मैं आमतौर पर इस प्रकार की दुविधाओं में करता हूं, मैं अपने निर्णय का समर्थन करने के लिए संख्या की तलाश करता हूं। मैंने कई कारणों से पायथन के साथ जाने का फैसला किया, लेकिन मेरे मामले में, एक प्लॉट था जो टिपिंग पॉइंट था। यदि आप सितंबर 2014 तक GitHub में "Google App Engine" खोजते हैं , तो आपको निम्नलिखित आंकड़ा मिलेगा:

जीएई भाषा आँकड़े

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


3

यह एक अच्छा सवाल है, और मुझे लगता है कि कई प्रतिक्रियाओं ने बाड़ के दोनों ओर पेशेवरों और विपक्षों के अच्छे दृष्टिकोण दिए हैं। मैंने पायथन और JVM- आधारित AppEngine दोनों की कोशिश की है (मेरे मामले में मैं Gaelyk का उपयोग कर रहा था, जो एक Groovy अनुप्रयोग रूपरेखा AppEngine के लिए बनाया गया है)। जब मंच पर प्रदर्शन की बात आती है, तो एक चीज जिसे मैंने तब तक नहीं माना था, जब तक कि वह मुझे घूर नहीं रही थी, बाड़ के जावा पक्ष में होने वाले "लोड हो रहे अनुरोध" का निहितार्थ है। ग्रूवी का उपयोग करते समय ये लोडिंग अनुरोध एक हत्यारा है।

मैंने विषय ( http://distractable.net/coding/google-appengine-java-vs-python-performance-comparison/ ) पर एक साथ एक पोस्ट डाला और मैं समस्या के आसपास काम करने का एक तरीका खोजने की उम्मीद कर रहा हूं, लेकिन अगर मुझे नहीं लगता कि मैं एक पायथन + Django संयोजन के लिए जा रहा हूँ जब तक ठंड शुरू जावा अनुरोध एक प्रभाव कम है।


3

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


7
मैंने सुना है कि फोर्ड के मालिक Koenigsegg के मालिकों की तुलना में अपनी कारों के बारे में बहुत अधिक शिकायत कर रहे हैं। ऐसा क्यों हो सकता है?
13

2

वहाँ भी परियोजना Unladen निगल है , जो स्पष्ट रूप से Google द्वारा वित्त पोषित है अगर Google के स्वामित्व में नहीं है। वे Python 2.6.1 bytecode के लिए LLVM- आधारित बैकेंड को लागू करने का प्रयास कर रहे हैं, इसलिए वे एक JIT और विभिन्न अच्छे देशी कोड / GC / मल्टी-कोर ऑप्टिमाइज़ेशन का उपयोग कर सकते हैं। (अच्छा उद्धरण: "हम कोई मूल काम करने की आकांक्षा रखते हैं, इसके बजाय जितना संभव हो सके पिछले 30 वर्षों के शोध का उपयोग करें।") वे 5x स्पीड-अप के लिए सीपीथॉन की तलाश कर रहे हैं।

बेशक यह आपके तात्कालिक प्रश्न का उत्तर नहीं देता है, लेकिन भविष्य में (उम्मीद के मुताबिक) "अंतराल के समापन" (यदि कोई हो) की ओर इशारा करता है।


1
Unladen Swallow अब एक मृत परियोजना है और आखिरी प्रतिबद्ध एक वर्ष से अधिक पुराना है
त्सेपांग

2

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

लेकिन यहां तक ​​कि अजगर ने खुद ही कुछ कदम आगे बढ़ा दिए हैं। उदाहरण के लिए ctypes देखें, C गति के पास, C लायब्रेरियों को सीधे इस सब के लिए python कोडिंग के आराम को छोड़े बिना C पुस्तकालयों को भेजें। साइथॉन एक कदम आगे बढ़ता है, सी कोड को अजगर कोड के साथ आसानी से मिश्रण करने की अनुमति देता है, या भले ही आप सी या सी ++ के साथ गड़बड़ नहीं करना चाहते हैं, फिर भी आप अजगर में कोड कर सकते हैं, लेकिन सी प्रकार के ऐप के रूप में तेजी से अपने अजगर प्रोग्रामों को बनाने के लिए वैधानिक प्रकार के चर का उपयोग करें। । साइथॉन दोनों तरह से गूगल द्वारा उपयोग और समर्थित है।

कल मैंने अजगर को इनलाइन सी या असेंबली (कोरपी देखें) के लिए उपकरण भी ढूंढे, आप उससे ज्यादा शक्तिशाली नहीं हो सकते।

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

अजगर के साथ आप लगभग शून्य अतिरिक्त कोडिंग के साथ सी / सी ++, जावा, .NET और कई अन्य पुस्तकालयों के लिए एकस हो सकते हैं जो आपको एक भाषा भी देता है जो कोडिंग को कम करता है, सरल करता है और सुशोभित करता है। इसकी एक बहुत ही आकर्षक भाषा है।


सवाल जीएई पर जावा बनाम अजगर के बारे में है, जिसमें बहुत सारे प्रतिबंध हैं। इसलिए, आपके तर्क अनुचित हैं।
दनियार

मैं @ दानियार से सहमत हूं, कि यह उत्तर बीट से थोड़ा (या शायद पूरी तरह से) है, लेकिन मुझे उत्तर पसंद है और यह कुछ ऐसा था जिसकी मुझे तलाश थी। इस ज्ञान को साझा करने के लिए धन्यवाद किलोन। हो सकता है कि यह गलत जगह थी, लेकिन आपने कुछ ज्ञान बांटने का काम जरूर किया। उसके लिए +1 और कुडोस।
zeFree

1

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


1

एक को ध्यान में रखना यो आप उपयोग करना चाहते हैं चौखटे हैं। जावा की सभी रूपरेखाएँ ऐप इंजन पर चलने वाले अनुप्रयोगों के लिए अच्छी तरह से अनुकूल नहीं हैं, जो पारंपरिक जावा ऐप सर्वरों से कुछ अलग है।

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

एक और बात जावा पर विभिन्न सीमाओं GAE psoes हैं। सभी फ्रेमवर्क सीमाओं से खुश नहीं हैं कि आप किन वर्गों का उपयोग कर सकते हैं या तथ्य यह है कि थ्रेड्स की अनुमति नहीं है या आप स्थानीय फाइल सिस्टम तक नहीं पहुंच सकते हैं। जीएई संगतता के बारे में इन मुद्दों का पता लगाना आसान है।

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

मैंने शुरू में जावा के साथ जीएई पर काम करना शुरू कर दिया था, लेकिन फिर इन कारणों से पायथन में बदल गया। मेरी निजी भावना यह है कि पायथन ऐप इंजन के विकास के लिए एक बेहतर विकल्प है। मुझे लगता है कि अमेज़ॅन के इलास्टिक बीनस्टॉक पर जावा अधिक "घर पर" है।

ऐप इंजन चीजों के साथ BUT बहुत तेजी से बदल रहा है। जीएई खुद को बदल रहा है और जैसे-जैसे यह अधिक लोकप्रिय होता जा रहा है, इसकी सीमाओं के आसपास काम करने के लिए रूपरेखा भी बदल रही है।

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