एप्लीकेशन वर्चुअलाइजेशन सॉफ्टवेयर की तुलना: Difference between revisions
No edit summary |
|||
Line 194: | Line 194: | ||
|- | |- | ||
! [[Common Language Runtime|सामान्य भाषा रनटाइम]] (सीएलआर) | ! [[Common Language Runtime|सामान्य भाषा रनटाइम]] (सीएलआर) | ||
| | | सी#, सी++/सीएलआई, एफ#, वीबी.नेट | ||
| | | बाइटकोड सीआईएल है; GitHub पर .NET कोर रनटाइम | ||
| {{no}} | | {{no}} | ||
| {{yes}} | | {{yes}} | ||
| | | सी#, सी++ | ||
| | | | ||
|- | |- | ||
! एडोब फ्लैश प्लेयर (उर्फ टैमारिन) | ! एडोब फ्लैश प्लेयर (उर्फ टैमारिन) | ||
| | | एक्शनस्क्रिप्ट, एसडब्ल्यूएफ (फ़ाइल प्रारूप) | ||
| | | इंटरैक्टिव वेब संलेखन उपकरण। बाइटकोड का नाम "एक्शनस्क्रिप्ट बाइट कोड (.abc)" है | ||
| {{yes}} | | {{yes}} | ||
| {{yes}} | | {{yes}} | ||
| | | सी++ | ||
| 135k ( | | 135k (प्रारम्भ में जारी) | ||
|- | |- | ||
! डिस (इन्फर्नो) | ! डिस (इन्फर्नो) | ||
| [[Limbo (programming language)| | | [[Limbo (programming language)|लीम्बो]] | ||
| | | डिस आभासी मशीन विशिष्टता | ||
| {{yes}} | | {{yes}} | ||
| {{yes}} | | {{yes}} | ||
| | | सी | ||
| 15k + 2850 | | 15k + 2850 प्रति JIT आर्क + 500 प्रति होस्ट ओएस | ||
|- | |- | ||
! डॉटजीएनयू-पोर्टेबल.नेट | ! डॉटजीएनयू-पोर्टेबल.नेट | ||
| | | सीएलआई भाषाओं सहित: सी# | ||
| | | सामान्य भाषा रनटाइम क्लोन | ||
| {{no}} | | {{no}} | ||
| {{yes}} | | {{yes}} | ||
| | | सी, सी# | ||
| | | | ||
|- | |- | ||
! [[Forth virtual machine|फोर्थ]] | ! [[Forth virtual machine|फोर्थ]] | ||
| [[Forth (programming language)| | | [[Forth (programming language)|फोर्थ]] | ||
| | | सुविधाओं को सरलीकृत किया जाता है, प्रायः असेंबलर, कंपाइलर, टेक्स्ट-लेवल और बाइनरी-लेवल इंटरप्रेटर, कभी-कभी संपादक, डीबगर और ओएस शामिल होते हैं। संकलन गति >20 SKLOC/S हैं और जेआईटी की तरह व्यवहार करती हैं। | ||
| {{yes}} | | {{yes}} | ||
| {{no}} | | {{no}} | ||
| | | फोर्थ, फोर्थ असेम्बलर | ||
| 2. | | 2.8 के से 5.6 के; उन्नत, व्यावसायिक कार्यान्वयन छोटे हैं। | ||
|- | |- | ||
! [[Glulx|ग्लल्क्स]] | ! [[Glulx|ग्लल्क्स]] | ||
| | | सूचित 6, सूचित 7, अन्य | ||
| | | | ||
|{{yes}} | |{{yes}} | ||
|{{no}} | |{{no}} | ||
| | | विभिन्न कार्यान्वयन विद्यमान हैं | ||
| | | | ||
|- | |- | ||
|- | |- | ||
! [[HHVM|एचएचवीएम]] | ! [[HHVM|एचएचवीएम]] | ||
| | | पीएचपी, हैक | ||
| | | एक ओपन-सोर्स आभासी मशीन है जिसे हैक और पीएचपी में लिखे प्रोग्राम को क्रियान्वित करने के लिए डिज़ाइन किया गया है। | ||
| {{yes}} | | {{yes}} | ||
| {{yes}} | | {{yes}} | ||
| | | सी++, OCaml | ||
| | | | ||
|- | |- | ||
! [[Icon (programming language)|आइकन]] | ! [[Icon (programming language)|आइकन]] | ||
| Icon | | [[Icon (programming language)|आइकन]] | ||
| | | आधार स्रोत कोड दोनों दुभाषिया के साथ-साथ एक असमर्थित संकलन-से-सी संस्करण प्रदान करता है। रनटाइम कोड, जिसे संकलक और दुभाषिया के बीच साझा किया जाता है, C के एक संस्करण में लिखा जाता है जिसे RTT कहा जाता है। | ||
|{{yes}} | |{{yes}} | ||
|{{no}} | |{{no}} | ||
| | |सी, आरटीटी (सी के लिए एक कस्टम फ्रंट-एंड, आइकन के लिए आधार स्रोत के साथ प्रदान किया गया)। | ||
| ~180k | | ~ 180k कुल। (बायटेकोड का स्रोत: ~11k, बाइटकोड दुभाषिया: ~46k, [[Icon (programming language)|आइकन]]<nowiki/>c: ~23k, सामान्य/हेडर: ~13k, rtt: ~15k) | ||
|- | |- | ||
! [[Java virtual machine|जेवीएम]] | ! [[Java virtual machine|जेवीएम]] | ||
| | | जावा, कोटलिन, ज्योथन, ग्रूवी, जेरुबी, सी, सी ++, क्लोजर, स्काला और कई अन्य | ||
| | | सूर्य द्वारा संदर्भ कार्यान्वयन; ओपनजेडीके: जीपीएल के तहत कोड; आइस्ड टी: जीपीएल के तहत कोड और टूल्स | ||
| {{yes}} | | {{yes}} | ||
| {{yes}} | | {{yes}} | ||
| | | JDK, OpenJDK और आइस्ड टी नियमित जेआईटी के साथ: Java, C, C++, ASM; आइस्ड टी with the "Zero" JIT : Java, C, C++ | ||
| | | जेवीएम लगभग 6500k लाइनें हैं; TCK 80k परीक्षण और लगभग 1000k लाइनें हैं | ||
|- | |- | ||
! [[LLVM|एलएलवीएम]] | ! [[LLVM|एलएलवीएम]] | ||
| | | सी, सी ++, कोटलिन, ऑब्जेक्टिव-सी, स्विफ्ट, एडा, फोरट्रान और रस्ट | ||
| | | एमएसआईएल, C और C++ आउटपुट समर्थित हैं। एक्शन स्क्रिप्ट बाइट कोड आउटपुट एडोब कीमिया द्वारा समर्थित है। बाइटकोड का नाम "एलएलवीएम बाइटकोड (.बीसी)" है। असेंबली का नाम "एलएलवीएम असेंबली लैंग्वेज (*.ll)" रखा गया है। | ||
| {{yes}} | | {{yes}} | ||
| {{yes}} | | {{yes}} | ||
| | | सी++ | ||
| 811k <ref name="ohloh-llvm">[http://www.ohloh.net/p/llvm The LLVM Compiler Infrastructure], ohloh.net, 2011 Nov 30</ref> | | 811k <ref name="ohloh-llvm">[http://www.ohloh.net/p/llvm The LLVM Compiler Infrastructure], ohloh.net, 2011 Nov 30</ref> | ||
|- | |- | ||
! [[Lua (programming language)|लुआ]] | ! [[Lua (programming language)|लुआ]] | ||
| Lua | | [[Lua (programming language)|लुआ]] | ||
| | | | ||
| {{yes}} | | {{yes}} | ||
| | | [[Lua (programming language)|लुआ जेआईटी]] | ||
| | | सी | ||
| 13k + 7k LuaJIT | | 13k + 7k LuaJIT | ||
|- | |- | ||
! [[MMIX|एमएमआईएक्स]] | ! [[MMIX|एमएमआईएक्स]] | ||
| | | एममिक्सल | ||
| | | | ||
| | | | ||
Line 291: | Line 291: | ||
|- | |- | ||
! [[Mono (software)|मोनो]] | ! [[Mono (software)|मोनो]] | ||
| | | सीएलआई भाषाओं सहित: C#, VB.NET, आयरनपायथन, आयरनरूबी, और अन्य | ||
| | | सामान्य भाषा रनटाइम क्लोन | ||
| {{yes}} | | {{yes}} | ||
| {{yes}} | | {{yes}} | ||
| | | सी#, सी | ||
| 2332k | | 2332k | ||
|- | |- | ||
! [[NekoVM|नेकोवीएम]] | ! [[NekoVM|नेकोवीएम]] | ||
| | | वर्तमान में नेको और हैक्स | ||
| | | | ||
| {{yes}} | | {{yes}} | ||
| x86 only | | x86 only | ||
| | | सी | ||
| 46k | | 46k | ||
|- | |- | ||
! [[Oz (programming language)|ओजेड]] | ! [[Oz (programming language)|ओजेड]] | ||
| | | ओजेड, ऐलिस | ||
| | | | ||
| | | | ||
Line 315: | Line 315: | ||
|- | |- | ||
! [[O-code machine|ओ-कोड मशीन]] | ! [[O-code machine|ओ-कोड मशीन]] | ||
| [[BCPL]] | | [[BCPL|बीसीपीएल]] | ||
| | | | ||
| | | | ||
Line 323: | Line 323: | ||
|- | |- | ||
! [[p-code machine|पी-कोड मशीन]] | ! [[p-code machine|पी-कोड मशीन]] | ||
| [[Pascal (programming language)| | | [[Pascal (programming language)|पास्कल]] | ||
| | | यूसीएसडी पास्कल, 70 के दशक के अंत में एप्पल II सहित व्यापक रूप से फैला हुआ था | ||
|{{yes}} | |{{yes}} | ||
|{{no}} | |{{no}} | ||
| | |असेंबली, पास्कल | ||
| | | | ||
|- | |- | ||
! [[Parrot virtual machine|तोता]] | ! [[Parrot virtual machine|तोता]] | ||
| | | पर्ल 5, राकू, एनक्यूपी-आरएक्स, पीआईआर, पीएएसएम, पीबीसी, बेसिक, बीसी, सी99, ईसीएमएस्क्रिप्ट, लिस्प, लुआ, एम4, टीसीएल, डब्ल्यूएमएलस्क्रिप्ट, एक्सएमएल और अन्य | ||
| | | | ||
| {{yes}} | | {{yes}} | ||
| {{yes}} | | {{yes}} | ||
| | | सी, [[Perl|पर्ल]] | ||
| 111k C, 240k Perl | | 111k C, 240k [[Perl|पर्ल]] | ||
|- | |- | ||
! [[Perl virtual machine|पर्ल आभासी मशीन]] | ! [[Perl virtual machine|पर्ल आभासी मशीन]] | ||
| [[Perl]] | | [[Perl|पर्ल]] | ||
| | | ओप-कोड ट्री वॉकर | ||
| {{yes}} | | {{yes}} | ||
| {{no}} | | {{no}} | ||
| | | सी, [[Perl|पर्ल]] | ||
| 175k C, 9k Perl | | 175k C, 9k [[Perl|पर्ल]] | ||
|- | |- | ||
! [[CPython|सीपीथॉन]] | ! [[CPython|सीपीथॉन]] | ||
| [[Python (programming language)| | | [[Python (programming language)|पायथन]] | ||
| | | | ||
| {{yes}} | | {{yes}} | ||
| {{ubl|[[ | | {{ubl|[[साइको]]|[[अनल्डेन स्वल्लो]]}} | ||
| | | सी | ||
| | | 387के सी, 368के पायथन, 10के एएसएम, 31के साइको | ||
|- | |- | ||
! [[PyPy|पीवाईपीवाई]] | ! [[PyPy|पीवाईपीवाई]] | ||
| [[Python (programming language)| | | [[Python (programming language)|पायथन]] | ||
| | | सेल्फ-होस्टिंग कार्यान्वयन, साइको की अगली पीढ़ी | ||
| {{yes}} | | {{yes}} | ||
| {{yes}} | | {{yes}} | ||
| Python | | [[Python (programming language)|पायथन]] | ||
| | | | ||
|- | |- | ||
! [[Rubinius|रुबिनियस]] | ! [[Rubinius|रुबिनियस]] | ||
| [[Ruby (programming language)| | | [[Ruby (programming language)|रूबी]] | ||
| | | अन्य रूबी कार्यान्वयन के लिए आभासी मशीन | ||
| {{yes}} | | {{yes}} | ||
| {{yes}} | | {{yes}} | ||
| | | सी++, [[Ruby (programming language)|रूबी]] | ||
| | | | ||
|- | |- | ||
! [[Silverlight|सिल्वरलाइट]] | ! [[Silverlight|सिल्वरलाइट]] | ||
| [[C Sharp (programming language)|C#]], [[VB.NET]] | | [[C Sharp (programming language)|C#]], [[VB.NET]] | ||
| | | माइक्रोसॉफ्ट .NET फ्रेमवर्क का एक माइक्रो-संस्करण है जो एप्लिकेशन को ब्राउज़र के अंदर सैंडबॉक्स चलाने देता है | ||
| {{yes}} | | {{yes}} | ||
| {{yes}} | | {{yes}} | ||
| | | सी++ | ||
| | | 7 एमबी (प्रारम्भ में जारी) | ||
|- | |- | ||
! [[ScummVM|स्कमवीएम]] | ! [[ScummVM|स्कमवीएम]] | ||
| [[Scumm]] | | [[Scumm|स्कम]] | ||
| | | कंप्यूटर गेम इंजन | ||
| | | | ||
| | | | ||
Line 387: | Line 387: | ||
|- | |- | ||
! [[SECD machine|एसईसीडी]] | ! [[SECD machine|एसईसीडी]] | ||
| | | आईएसडब्ल्यूआईएम, लिस्पकिट लिस्प | ||
| | | | ||
| | | | ||
Line 395: | Line 395: | ||
|- | |- | ||
! [[Squirrel (programming language)|गिलहरी]] | ! [[Squirrel (programming language)|गिलहरी]] | ||
| Squirrel | | [[Squirrel (programming language)|गिलहरी]] | ||
| | | | ||
| {{yes}} | | {{yes}} | ||
| | | गिलहरी_जेआईटी | ||
| | | सी++ | ||
| 12k | | 12k | ||
|- | |- | ||
! [[Smalltalk|लघु वार्ता]] | ! [[Smalltalk|लघु वार्ता]] | ||
| Smalltalk | | [[Smalltalk|लघु वार्ता]] | ||
| | | | ||
| | | | ||
Line 411: | Line 411: | ||
|- | |- | ||
! [[SQLite|एस क्यू]] lite | ! [[SQLite|एस क्यू]] lite | ||
| SQLite | | [[SQLite|एस क्यू]]Lite ऑपकोड | ||
| | | आभासी डेटाबेस इंजन | ||
| | | | ||
| | | | ||
Line 418: | Line 418: | ||
| | | | ||
|- | |- | ||
! [[Squeak]] | ! [[Squeak|चीख़]] | ||
| | | स्क्वीक [[Smalltalk|लघु वार्ता]] | ||
| | | सेल्फ होस्टिंग स्क्वीक आभासी मशीन का कार्यान्वयन। समृद्ध मल्टीमीडिया समर्थन। | ||
| {{yes}} | | {{yes}} | ||
| {{yes|Cog & Exupery}} | | {{yes|Cog & Exupery}} | ||
| Smalltalk/ | | [[Smalltalk|लघु वार्ता]]/स्लैंग | ||
| 110k Smalltalk, ~300K C | | 110k [[Smalltalk|लघु वार्ता]], ~300K C | ||
|- | |- | ||
![[SWI-Prolog]] | ![[SWI-Prolog|एसडब्ल्यूआई-प्रोलॉग]] | ||
| | |प्रोलॉग: एसडब्ल्यूआई-प्रोलॉग, वाईएपी | ||
| | | | ||
| {{yes}} | | {{yes}} | ||
| {{no}} | | {{no}} | ||
| | | सी, एसडब्ल्यूआई-प्रोलॉग | ||
| | | | ||
|- | |- | ||
! [[TraceMonkey]] | ! [[TraceMonkey|ट्रेसमोनकी]] | ||
| | | जावास्क्रिप्ट | ||
| | | तामारिन पर आधारित | ||
| {{no}} | | {{no}} | ||
| {{yes}} | | {{yes}} | ||
| | | सी++ | ||
| 173k | | 173k | ||
|- | |- | ||
! [[TrueType]] | ! [[TrueType|ट्रू टाइप]] | ||
| [[TrueType#Hinting language| | | [[TrueType#Hinting language|ट्रू टाइप]] | ||
| | | फ़ॉन्ट रेंडरिंग इंजन | ||
| {{yes}} | | {{yes}} | ||
| {{no}} | | {{no}} | ||
| | | सी (सामान्यतः) | ||
| | | | ||
|- | |- | ||
! [[Valgrind]] | ! [[Valgrind|वेलग्रिंड]] | ||
| | | x86/x86-64 बायनेरिज़ | ||
| | | लिनक्स के तहत मेमोरी एक्सेस और लीक की जाँच | ||
| | | | ||
| | | | ||
| | | सी | ||
| 467k <ref name="ohloh-valgrind">[http://www.ohloh.net/p/valgrind Valgrind], ohloh.net, 2011 Nov 30.</ref> | | 467k <ref name="ohloh-valgrind">[http://www.ohloh.net/p/valgrind Valgrind], ohloh.net, 2011 Nov 30.</ref> | ||
|- | |- | ||
! [[VisualWorks]] | ! [[VisualWorks|विजुअलवर्क्स]] | ||
| [[Smalltalk]] | | [[Smalltalk|लघु वार्ता]] | ||
| | | | ||
| {{no}} | | {{no}} | ||
| {{yes}} | | {{yes}} | ||
| | | सी | ||
| | | | ||
|- | |- | ||
! | ! Vx32 आभासी मशीन | ||
| | | x86 बायनेरिज़ | ||
| | | नेटिव कोड के लिए एप्लीकेशन-लेवल वर्चुअलाइजेशन | ||
| {{no}} | | {{no}} | ||
| {{yes}} | | {{yes}} | ||
Line 474: | Line 474: | ||
| | | | ||
|- | |- | ||
! [[SuperWaba| | ! [[SuperWaba|सुपरवाबा]] | ||
| | | | ||
| | | छोटे उपकरणों के लिए आभासी मशीन, जावा के समान | ||
| | | | ||
| | | | ||
Line 482: | Line 482: | ||
| | | | ||
|- | |- | ||
! | ! फिर भी एक और रूबी वीएम (वाईएआरवी) | ||
| [[Ruby (programming language)| | | [[Ruby (programming language)|रूबी]] | ||
| | | रूबी 1.9 और नए संस्करणों के संदर्भ कार्यान्वयन की आभासी मशीन | ||
|{{yes}} | |{{yes}} | ||
|{{yes}} | |{{yes}} | ||
| | |सी | ||
| | | | ||
|- | |- | ||
! [[Z-machine]] | ! [[Z-machine|जेड-मशीन]] | ||
| | | जेड-कोड | ||
| | | | ||
| | | | ||
Line 498: | Line 498: | ||
| | | | ||
|- | |- | ||
! [[Zend Engine]] | ! [[Zend Engine|ज़ेंड इंजन]] | ||
| [[PHP]] | | [[PHP|पीएचपी]] | ||
| | | | ||
| {{yes}} | | {{yes}} | ||
| {{no}} | | {{no}} | ||
| | | सी | ||
| 75k | | 75k | ||
|} | |} | ||
Line 509: | Line 509: | ||
== यह भी देखें == | == यह भी देखें == | ||
* | * अनुप्रयोग वर्चुअलाइजेशन | ||
* [[भाषा बंधन]] | * [[भाषा बंधन]] | ||
* [[विदेशी फ़ंक्शन इंटरफ़ेस]] | * [[विदेशी फ़ंक्शन इंटरफ़ेस]] | ||
* [[कॉलिंग कन्वेंशन]] | * [[कॉलिंग कन्वेंशन]] | ||
* [[नाम मंगलिंग]] | * [[नाम मंगलिंग|नाम मैंगलिंग]] | ||
* [[अप्लिकेशन प्रोग्रामिंग अंतरफलक]] (एपीआई) | * [[अप्लिकेशन प्रोग्रामिंग अंतरफलक|एप्लिकेशन प्रोग्रामिंग अंतरफलक]] (एपीआई) | ||
* [[अनुप्रयोग बाइनरी इंटरफ़ेस]] (एबीआई) | * [[अनुप्रयोग बाइनरी इंटरफ़ेस]] (एबीआई) | ||
* | * [[अनुप्रयोग वर्चुअलाइजेशन|प्लेटफॉर्म वर्चुअलाइजेशन]] सॉफ्टवेयर की तुलना | ||
* ईसीएमएस्क्रिप्ट इंजनों की सूची | * ईसीएमएस्क्रिप्ट इंजनों की सूची | ||
* वेब असेंबली | * वेब असेंबली |
Revision as of 23:05, 27 February 2023
एप्लिकेशन वर्चुअलाइजेशन सॉफ़्टवेयर एप्लिकेशन आभासी मशीन और उन्हें लागू करने के लिए जिम्मेदार सॉफ़्टवेयर दोनों को संदर्भित करता है। एप्लिकेशन वर्चुअल मशीन का उपयोग सामान्यतः एप्लिकेशन बाईटकोड को कई अलग-अलग कंप्यूटर आर्किटेक्चर और ऑपरेटिंग सिस्टम पर आंशिक रूप से चलाने की अनुमति देने के लिए किया जाता है। एप्लिकेशन सामान्यतः दुभाषिया या जस्ट-इन-टाइम संकलन (जेआईटी) का उपयोग करके कंप्यूटर पर चलाया जाता है। किसी दिए गए वर्चुअल मशीन के अक्सर कई कार्यान्वयन होते हैं, जिनमें से प्रत्येक कार्यों के एक अलग सेट को कवर करता है।
आभासी मशीनों की तुलना
- जावास्क्रिप्ट मशीनें सम्मिलित नहीं हैं। उन्हें खोजने के लिए ईसीएमए स्क्रिप्ट इंजनों की सूची देखें।
यहां दी गई तालिका उन तत्वों को सारांशित करती है जिनके लिए वर्चुअल मशीन डिज़ाइन कुशल होने का इरादा है, न कि किसी कार्यान्वयन में उपस्थित क्षमताओं की सूची।
आभासी मशीन | मशीन मॉडल | स्मृति प्रबंधन | कोड सुरक्षा | दुभाषिया | जेआईटी | एओटी | साझा पुस्तकालय | सामान्य भाषा
वस्तु मॉडल |
गतिशील टाइपिंग |
---|---|---|---|---|---|---|---|---|---|
एंड्रॉइड रनटाइम (एआरटी) | पंजीकृत | स्वचालित | Yes | Yes | Yes | Yes | ? | Yes | Yes |
सामान्य भाषा रनटाइम (सीएलआर) | ढेर | स्वचालित या मैनुअल | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
डिस (इन्फर्नो) | पंजीकृत | स्वचालित | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
डॉटजीएनयू पोर्टेबल.नेट | ढेर | स्वचालित या मैनुअल | Yes | Yes | Yes | Yes | Yes | Yes | No |
जावा वर्चुअल मशीन (जेवीएम) | ढेर | स्वचालित | Yes | Yes | Yes | Yes | Yes | Yes | Yes[1] |
जाइक्स आरवीएम | ढेर | स्वचालित | Yes | Yes | Yes | Yes | ? | Yes | Yes |
एलएलवीएम | पंजीकृत | मैनुअल | No | Yes | Yes | Yes | Yes | Yes | No |
मोनो | ढेर | स्वचालित या मैनुअल | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
तोता | पंजीकृत | स्वचालित | No | Yes | No[2] | Yes | Yes | Yes | Yes |
डैलविक | पंजीकृत | स्वचालित | Yes | Yes | Yes | No | ? | No | No |
चीख़ | ढेर | स्वचालित | No | Yes | Yes | No | Yes | No | Yes |
बीम (एरलांग) | पंजीकृत | स्वचालित | ? | Yes | Yes | Yes | Yes | Yes | Yes |
मूर वीएम | पंजीकृत | स्वचालित | ? | Yes | Yes | Yes | Yes | Yes | Yes |
वर्चुअल मशीन निर्देश संगणना के एक मुख्य मॉडल का उपयोग करके स्थानीय चर में डेटा को प्रोसेस करते हैं, सामान्यतः स्टैक मशीन, रजिस्टर मशीन या रैंडम एक्सेस मशीन जिसे अक्सर मेमोरी मशीन कहा जाता है। इन तीन तरीकों का उपयोग आभासी मशीनों बनाम भौतिक मशीनों में अलग-अलग ट्रेडऑफ़ से प्रेरित है, जैसे सुरक्षा के लिए व्याख्या, संकलन और सत्यापन में आसानी।
इन पोर्टेबल वर्चुअल मशीनों में मेमोरी प्रबंधन को भौतिक मशीनों की तुलना में उच्च स्तर के अमूर्तता पर संबोधित किया जाता है। कुछ वर्चुअल मशीनें, जैसे कि लोकप्रिय जावा वर्चुअल मशीन (जेवीएम), पतों के साथ इस तरह से जुड़ी होती हैं, जैसे कि वर्चुअल मशीन को पॉइंटर संदर्भों का पता लगाने की अनुमति देकर सुरक्षित स्वचालित मेमोरी प्रबंधन की आवश्यकता होती है, और मैन्युअल रूप से पॉइंटर्स को मेमोरी में बनाने से मशीन के निर्देशों को अस्वीकार कर दिया जाता है। अन्य आभासी मशीनें, जैसे एलएलवीएम, पारंपरिक भौतिक मशीनों की तरह अधिक हैं, जो पॉइंटर्स के प्रत्यक्ष उपयोग और हेरफेर की अनुमति देती हैं। सामान्य मध्यवर्ती भाषा (सीआईएल) मेमोरी के दोनों नियंत्रित उपयोग (जैसे जेवीएम, जो सुरक्षित स्वचालित मेमोरी प्रबंधन की अनुमति देता है) की अनुमति देते हुए बीच में एक हाइब्रिड प्रदान करता है, जबकि एक 'असुरक्षित' मोड की भी अनुमति देता है जो प्रत्यक्ष पॉइंटर हेरफेर को उन तरीकों से अनुमति देता है जो प्रकार का उल्लंघन कर सकते हैं। सीमाएं और अनुमति।
कोड सुरक्षा सामान्यतः पोर्टेबल वर्चुअल मशीन की कोड चलाने की क्षमता को संदर्भित करती है जबकि इसे केवल क्षमताओं का एक निर्धारित सेट प्रदान करती है। उदाहरण के लिए, वर्चुअल मशीन केवल फ़ंक्शन या डेटा के एक निश्चित सेट तक कोड पहुंच की अनुमति दे सकती है। पॉइंटर्स पर वही नियंत्रण जो स्वत: मेमोरी प्रबंधन को संभव बनाता है और वर्चुअल मशीन को टाइपसेफ डेटा एक्सेस सुनिश्चित करने की अनुमति देता है, यह सुनिश्चित करने के लिए उपयोग किया जाता है कि एक कोड खंड केवल मेमोरी के कुछ तत्वों के लिए अनुमति है और वर्चुअल मशीन को बायपास नहीं कर सकता है। अन्य सुरक्षा तंत्रों को फिर कोड सत्यापनकर्ता, स्टैक सत्यापनकर्ता और अन्य विधियों के रूप में शीर्ष पर स्तरित किया जाता है।
एक दुभाषिया आभासी निर्देशों से बने कार्यक्रमों को मूल मशीन निर्देशों में संभावित रूप से महंगे संकलन के बिना तुरंत लोड करने और चलाने की अनुमति देता है। कोई भी वर्चुअल मशीन जिसे चलाया जा सकता है, उसकी व्याख्या की जा सकती है, इसलिए यहाँ स्तंभ पदनाम से तात्पर्य है कि क्या डिज़ाइन में कुशल व्याख्या (सामान्य उपयोग के लिए) के प्रावधान सम्मिलित हैं।
जस्ट-इन-टाइम संकलन (जेआईटी), नवीनतम संभव समय पर मूल निर्देशों को संकलित करने की एक विधि को संदर्भित करता है, सामान्यतः कार्यक्रम के चलने से ठीक पहले या उसके दौरान। जेआईटी की चुनौती वर्चुअल मशीन डिज़ाइन की तुलना में कार्यान्वयन की अधिक है, तथापि, आधुनिक डिज़ाइनों ने दक्षता में मदद करने के लिए विचार करना प्रारंभ कर दिया है। सरलतम जेआईटी विधियाँ केवल एक ऑफ़लाइन संकलक के समान एक कोड खंड में संकलित होती हैं। तथापि, अधिक जटिल विधियों को अक्सर नियोजित किया जाता है, जो संकलित कोड अंशों को केवल रनटाइम पर ज्ञात मापदंडों के लिए विशेषज्ञ बनाते हैं (अनुकूली अनुकूलन देखें)।
अहेड-ऑफ-टाइम संकलन (एओटी) मूल निर्देशों का एक सेट उत्पन्न करने के लिए प्रीकंपलर का उपयोग करने की अधिक क्लासिक विधि को संदर्भित करता है जो प्रोग्राम के रनटाइम के दौरान नहीं बदलता है। क्योंकि आक्रामक संकलन और अनुकूलन में समय लग सकता है, एक पूर्व-संकलित प्रोग्राम एक से अधिक तेजी से लॉन्च हो सकता है जो अकेले जेआईटी पर निष्पादन के लिए निर्भर करता है। जेवीएम के कार्यान्वयन ने इस स्टार्टअप लागत को प्रारंभिक लॉन्च समय की व्याख्या करके कम कर दिया है, जब तक कि जेआईटी द्वारा मूल कोड के टुकड़े उत्पन्न नहीं किए जा सकते।
साझा पुस्तकालय कई चल रहे कार्यक्रमों में देशी कोड के खंडों का पुन: उपयोग करने की सुविधा है। आधुनिक ऑपरेटिंग सिस्टम में, इसका सामान्यतः अर्थ होता है कि स्मृति सुरक्षा के माध्यम से एक दूसरे से सुरक्षित विभिन्न प्रक्रियाओं में साझा लाइब्रेरी वाले मेमोरी पेजों को साझा करने के लिए आभासी मेमोरी का उपयोग करना। यह दिलचस्प है कि एडाप्टिव ऑप्टिमाइज़ेशन जैसे आक्रामक जेआईटी तरीके प्रायः कोड के टुकड़े उत्पन्न करते हैं जो प्रक्रियाओं या प्रोग्राम के क्रमिक रन में साझा करने के लिए अनुपयुक्त होते हैं, जिसके लिए प्रीकंपाइल और साझा कोड की क्षमता और अनुकूली विशेष कोड के फायदों के बीच एक ट्रेडऑफ की आवश्यकता होती है। उदाहरण के लिए, सीआईएल के कई डिज़ाइन प्रावधान कुशल साझा पुस्तकालयों की अनुमति देने के लिए उपलब्ध हैं, संभवतः अधिक विशिष्ट जेआईटी कोड की कीमत पर। ओएस एक्स पर जेवीएम कार्यान्वयन जावा साझा पुस्तकालयों के कुछ लाभ प्रदान करने के लिए जावा साझा संग्रह[3] का उपयोग करता है।
एप्लिकेशन वर्चुअल मशीन कार्यान्वयन की तुलना
ऊपर वर्णित पोर्टेबल वर्चुअल मशीनों के अलावा, वर्चुअल मशीनों का उपयोग प्रायः व्यक्तिगत स्क्रिप्टिंग भाषाओं के निष्पादन मॉडल के रूप में किया जाता है, सामान्यतः दुभाषिया द्वारा। यह तालिका उपरोक्त पोर्टेबल वर्चुअल मशीन और स्क्रिप्टिंग भाषा वर्चुअल मशीन दोनों के विशिष्ट वर्चुअल मशीन कार्यान्वयन को सूचीबद्ध करती है।
आभासी मशीन | भाषाएँ | टिप्पणियाँ | दुभाषिया | जेआईटी | कार्यान्वयन भाषा | कोड की स्रोत पंक्तियाँ |
---|---|---|---|---|---|---|
सामान्य भाषा रनटाइम (सीएलआर) | सी#, सी++/सीएलआई, एफ#, वीबी.नेट | बाइटकोड सीआईएल है; GitHub पर .NET कोर रनटाइम | No | Yes | सी#, सी++ | |
एडोब फ्लैश प्लेयर (उर्फ टैमारिन) | एक्शनस्क्रिप्ट, एसडब्ल्यूएफ (फ़ाइल प्रारूप) | इंटरैक्टिव वेब संलेखन उपकरण। बाइटकोड का नाम "एक्शनस्क्रिप्ट बाइट कोड (.abc)" है | Yes | Yes | सी++ | 135k (प्रारम्भ में जारी) |
डिस (इन्फर्नो) | लीम्बो | डिस आभासी मशीन विशिष्टता | Yes | Yes | सी | 15k + 2850 प्रति JIT आर्क + 500 प्रति होस्ट ओएस |
डॉटजीएनयू-पोर्टेबल.नेट | सीएलआई भाषाओं सहित: सी# | सामान्य भाषा रनटाइम क्लोन | No | Yes | सी, सी# | |
फोर्थ | फोर्थ | सुविधाओं को सरलीकृत किया जाता है, प्रायः असेंबलर, कंपाइलर, टेक्स्ट-लेवल और बाइनरी-लेवल इंटरप्रेटर, कभी-कभी संपादक, डीबगर और ओएस शामिल होते हैं। संकलन गति >20 SKLOC/S हैं और जेआईटी की तरह व्यवहार करती हैं। | Yes | No | फोर्थ, फोर्थ असेम्बलर | 2.8 के से 5.6 के; उन्नत, व्यावसायिक कार्यान्वयन छोटे हैं। |
ग्लल्क्स | सूचित 6, सूचित 7, अन्य | Yes | No | विभिन्न कार्यान्वयन विद्यमान हैं | ||
एचएचवीएम | पीएचपी, हैक | एक ओपन-सोर्स आभासी मशीन है जिसे हैक और पीएचपी में लिखे प्रोग्राम को क्रियान्वित करने के लिए डिज़ाइन किया गया है। | Yes | Yes | सी++, OCaml | |
आइकन | आइकन | आधार स्रोत कोड दोनों दुभाषिया के साथ-साथ एक असमर्थित संकलन-से-सी संस्करण प्रदान करता है। रनटाइम कोड, जिसे संकलक और दुभाषिया के बीच साझा किया जाता है, C के एक संस्करण में लिखा जाता है जिसे RTT कहा जाता है। | Yes | No | सी, आरटीटी (सी के लिए एक कस्टम फ्रंट-एंड, आइकन के लिए आधार स्रोत के साथ प्रदान किया गया)। | ~ 180k कुल। (बायटेकोड का स्रोत: ~11k, बाइटकोड दुभाषिया: ~46k, आइकनc: ~23k, सामान्य/हेडर: ~13k, rtt: ~15k) |
जेवीएम | जावा, कोटलिन, ज्योथन, ग्रूवी, जेरुबी, सी, सी ++, क्लोजर, स्काला और कई अन्य | सूर्य द्वारा संदर्भ कार्यान्वयन; ओपनजेडीके: जीपीएल के तहत कोड; आइस्ड टी: जीपीएल के तहत कोड और टूल्स | Yes | Yes | JDK, OpenJDK और आइस्ड टी नियमित जेआईटी के साथ: Java, C, C++, ASM; आइस्ड टी with the "Zero" JIT : Java, C, C++ | जेवीएम लगभग 6500k लाइनें हैं; TCK 80k परीक्षण और लगभग 1000k लाइनें हैं |
एलएलवीएम | सी, सी ++, कोटलिन, ऑब्जेक्टिव-सी, स्विफ्ट, एडा, फोरट्रान और रस्ट | एमएसआईएल, C और C++ आउटपुट समर्थित हैं। एक्शन स्क्रिप्ट बाइट कोड आउटपुट एडोब कीमिया द्वारा समर्थित है। बाइटकोड का नाम "एलएलवीएम बाइटकोड (.बीसी)" है। असेंबली का नाम "एलएलवीएम असेंबली लैंग्वेज (*.ll)" रखा गया है। | Yes | Yes | सी++ | 811k [4] |
लुआ | लुआ | Yes | लुआ जेआईटी | सी | 13k + 7k LuaJIT | |
एमएमआईएक्स | एममिक्सल | |||||
मोनो | सीएलआई भाषाओं सहित: C#, VB.NET, आयरनपायथन, आयरनरूबी, और अन्य | सामान्य भाषा रनटाइम क्लोन | Yes | Yes | सी#, सी | 2332k |
नेकोवीएम | वर्तमान में नेको और हैक्स | Yes | x86 only | सी | 46k | |
ओजेड | ओजेड, ऐलिस | |||||
ओ-कोड मशीन | बीसीपीएल | |||||
पी-कोड मशीन | पास्कल | यूसीएसडी पास्कल, 70 के दशक के अंत में एप्पल II सहित व्यापक रूप से फैला हुआ था | Yes | No | असेंबली, पास्कल | |
तोता | पर्ल 5, राकू, एनक्यूपी-आरएक्स, पीआईआर, पीएएसएम, पीबीसी, बेसिक, बीसी, सी99, ईसीएमएस्क्रिप्ट, लिस्प, लुआ, एम4, टीसीएल, डब्ल्यूएमएलस्क्रिप्ट, एक्सएमएल और अन्य | Yes | Yes | सी, पर्ल | 111k C, 240k पर्ल | |
पर्ल आभासी मशीन | पर्ल | ओप-कोड ट्री वॉकर | Yes | No | सी, पर्ल | 175k C, 9k पर्ल |
सीपीथॉन | पायथन | Yes | सी | 387के सी, 368के पायथन, 10के एएसएम, 31के साइको | ||
पीवाईपीवाई | पायथन | सेल्फ-होस्टिंग कार्यान्वयन, साइको की अगली पीढ़ी | Yes | Yes | पायथन | |
रुबिनियस | रूबी | अन्य रूबी कार्यान्वयन के लिए आभासी मशीन | Yes | Yes | सी++, रूबी | |
सिल्वरलाइट | C#, VB.NET | माइक्रोसॉफ्ट .NET फ्रेमवर्क का एक माइक्रो-संस्करण है जो एप्लिकेशन को ब्राउज़र के अंदर सैंडबॉक्स चलाने देता है | Yes | Yes | सी++ | 7 एमबी (प्रारम्भ में जारी) |
स्कमवीएम | स्कम | कंप्यूटर गेम इंजन | ||||
एसईसीडी | आईएसडब्ल्यूआईएम, लिस्पकिट लिस्प | |||||
गिलहरी | गिलहरी | Yes | गिलहरी_जेआईटी | सी++ | 12k | |
लघु वार्ता | लघु वार्ता | |||||
एस क्यू lite | एस क्यूLite ऑपकोड | आभासी डेटाबेस इंजन | ||||
चीख़ | स्क्वीक लघु वार्ता | सेल्फ होस्टिंग स्क्वीक आभासी मशीन का कार्यान्वयन। समृद्ध मल्टीमीडिया समर्थन। | Yes | Cog & Exupery | लघु वार्ता/स्लैंग | 110k लघु वार्ता, ~300K C |
एसडब्ल्यूआई-प्रोलॉग | प्रोलॉग: एसडब्ल्यूआई-प्रोलॉग, वाईएपी | Yes | No | सी, एसडब्ल्यूआई-प्रोलॉग | ||
ट्रेसमोनकी | जावास्क्रिप्ट | तामारिन पर आधारित | No | Yes | सी++ | 173k |
ट्रू टाइप | ट्रू टाइप | फ़ॉन्ट रेंडरिंग इंजन | Yes | No | सी (सामान्यतः) | |
वेलग्रिंड | x86/x86-64 बायनेरिज़ | लिनक्स के तहत मेमोरी एक्सेस और लीक की जाँच | सी | 467k [5] | ||
विजुअलवर्क्स | लघु वार्ता | No | Yes | सी | ||
Vx32 आभासी मशीन | x86 बायनेरिज़ | नेटिव कोड के लिए एप्लीकेशन-लेवल वर्चुअलाइजेशन | No | Yes | ||
सुपरवाबा | छोटे उपकरणों के लिए आभासी मशीन, जावा के समान | |||||
फिर भी एक और रूबी वीएम (वाईएआरवी) | रूबी | रूबी 1.9 और नए संस्करणों के संदर्भ कार्यान्वयन की आभासी मशीन | Yes | Yes | सी | |
जेड-मशीन | जेड-कोड | |||||
ज़ेंड इंजन | पीएचपी | Yes | No | सी | 75k |
यह भी देखें
- अनुप्रयोग वर्चुअलाइजेशन
- भाषा बंधन
- विदेशी फ़ंक्शन इंटरफ़ेस
- कॉलिंग कन्वेंशन
- नाम मैंगलिंग
- एप्लिकेशन प्रोग्रामिंग अंतरफलक (एपीआई)
- अनुप्रयोग बाइनरी इंटरफ़ेस (एबीआई)
- प्लेटफॉर्म वर्चुअलाइजेशन सॉफ्टवेयर की तुलना
- ईसीएमएस्क्रिप्ट इंजनों की सूची
- वेब असेंबली
संदर्भ
- ↑ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 292". Jcp.org. Retrieved 2013-07-04.
- ↑ "JITRewrite – Parrot". Trac.parrot.org. Retrieved 2013-07-04.
- ↑ Apple docs on OS X use of Java Shared Archive
- ↑ The LLVM Compiler Infrastructure, ohloh.net, 2011 Nov 30
- ↑ Valgrind, ohloh.net, 2011 Nov 30.