java virtual machine hindi

JVM (java virtual machine)

Java Virtual Machine एक  runtime environment  provide करने के लिए एक specification है |  जिस पर एक bytecode  execute किया जा सकता है। jvm तैयार किए गए platform specific हैं और लगभग सभी hardware और  machine के लिए उपलब्ध हैं। 

JVM कई  hardware और  Software platform के लिए उपलब्ध हैं (यानी JVM  platform पर निर्भर है)।
यह  एक specification हैं जहां  Java Virtual Machine  का काम specified है। लेकिन  implementation provider algorithm चुनने के लिए independent है। इसका implementation  oracle और अन्य कंपनियों द्वारा provide किया गया है।

इसका implementation  java runtime environment  के रूप में  किया जाता है।
Runtime Instance जब भी आप java class चलाने के लिए command prompt पर  java command  लिखते हैं तो JVM का एक उदाहरण बन जाता है।

features of JVM

  • यह एक class को load करने के लिए class loader  provoide करता है |
  • यह bytecode को verify  legality करने के लिए  bytecode  verifier provide करता है  |
  • यह bytecode को executes करता है |
  • यह  एक runtime  provides  करता है

JVM Architecture

java virtual machine

classloader :-   Loading, linking and initialization
classloader  JVM का एक subsystem है जिसका उपयोग class file को load करने के लिए किया जाता है। जब भी हम java program चलाते हैं | तो इसे पहले loader द्वारा load किया जाता है। java में तीन built-in classloaders हैं।
Bootstrap ClassLoader:  यह पहला class loader है जो Extension classloader  का super class है। यह rt.jar file को load  करता है जिसमें Java Standard Edition की सभी category की files होती हैं जैसे  की java.lang package classes, , java.net package classes, java.util package classes, java.io package classes, java.sql package classes आदि।
Extension ClassLoader:  यह  Bootstrap का  child classloader और System classloader का parent classloader है। यह $ JAVA_HOME / jre / lib / directory के अंदर स्थित jar files को load करता है।
System/Application ClassLoader: : यह Extension classloader का child classloader है। यह classpath को classpath से load करता है। defualt रूप से classpath  को current directory में set किया जाता है। आप “-cp” या “-classpath” switch का उपयोग करके classpath  को बदल सकते हैं। इसे Application classloader के रूप में भी जाना जाता है।
java application को WORA (Write Once Run Anywhere) कहा जाता है। इसका मतलब यह है कि एक programmer एक system पर java code developed कर सकता है और यह उम्मीद कर सकता है कि यह बिना किसी adjustment के किसी भी अन्य  Java enabled system पर चल सकता है। यह सब JVM की वजह से संभव हुआ है।

Class(Method) Area :-
class (method) Area per-class structures को  stores करता है जैसे कि runtime constant pool field  और method data method के लिए code |
method area में सभी class level की जानकारी जैसे कि class name, parent class name, methods और variables information आदि को stored किया जाता है | जिसमें static variables शामिल हैं। 
Heap :-  यह  runtime data area है जिसमें objects  allocated किए जाते हैं।
सभी  objects की जानकारी heap area में stored  है। per  JVM में एक heap area है। यह एक shared resource भी है।
Stack :-  Java Stack  frames को  stores  करता है। यह local variables और partial results रखता है |  method invocation और return में एक भूमिका निभाता है।
हर  एक  thread  में एक  private JVM stack  होता है | जिसे thread  के रूप में एक ही समय में बनाया जाता है।
एक method invoked होने पर हर बार एक नया  frame बनाया जाता है। एक frame  destroyed हो जाता है जब उसका तरीका invocation पूरा किया जाता है।
PC Registers :- एक thread  के current execution instruction का store address  है कि  हर  एक  thread  में अलग-अलग PC Registers होते हैं।
Native Method Stack :- इसमें application में उपयोग किए जाने वाले सभी native तरीके शामिल हैं।
   हर thread के लिए  अलग native stack बनाया जाता है। यह  native method  जानकारी stored करता है।
Execution Engine :-   Execution engine .class (bytecode) को execute करता है। यह  byte-code  को  line by line  पढ़ता है | various memory area में मौजूद  data और जानकारी का उपयोग करता है और instructions  को execute करता है।
 इसे तीन part में classified किया गया  है: –
Interpreter :  यह bytecode को  line by line से interprets करता है | और फिर executes करता है। यहां disadvantage यह है कि जब एक  method को कई बार call  किया जाता है तो हर बार interpretation की आवश्यकता होती है।
Just-In-Time Compiler(JIT) : इसका उपयोग interpreter की  efficiency को बढ़ाने के लिए किया जाता है। यह पूरे bytecode  को  compiles  करता है और इसे native code  में बदल देता है | इसलिए जब भी interpreter  बार-बार method calls होता  है |  तो JIT उस part के लिए direct native code  provide करता है | फिर से  re-interpretation  की आवश्यकता नहीं है | इस प्रकार efficiency  में सुधार किया  जाता  है।
Garbage Collector :   यह  un-referenced object को  destroy कर देता है। Garbage Collector पर अधिक डालें  Garbage Collector  को देखता  है ।
virtual processor भी  execution engine का  part  है | 
Java Native Interface (JNI) : यह एक  interface है जो Native Method Libraries  के साथ  interacts करता है और execution के लिए आवश्यक native libraries (C, C ++) provide करता है। यह JVM को C / C ++  libraries को  call  करने और C / C ++ libraries  द्वारा call  करने में सक्षम बनाता है जो hardware के लिए specific हो सकते हैं।
Native Method Libraries : यह Native Libraries (C, C ++) का एक collection है जो Execution Engine द्वारा आवश्यक हैं।

Leave a Reply

Your email address will not be published. Required fields are marked *