{"id":78999,"date":"2020-06-05T09:00:44","date_gmt":"2020-06-05T03:30:44","guid":{"rendered":"https:\/\/techvidvan.com\/tutorials\/?p=78999"},"modified":"2024-08-03T12:53:05","modified_gmt":"2024-08-03T07:23:05","slug":"java-virtual-machine","status":"publish","type":"post","link":"https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/","title":{"rendered":"JVM &#8211; Java Virtual Machine Working and Architecture"},"content":{"rendered":"<p>In this Java tutorial, we are going to discuss Java Virtual Machine(JVM), which is one of the most important aspects of Java programming language.<\/p>\n<p>We will study about JVM architecture and its subsystems. We also briefly discuss what a Java Virtual Machine is and how it works.<\/p>\n<p>Moreover, we will discuss Java Classloader, an executive engine in Java, the Java Memory Model, and the JVM screen in detail.<\/p>\n<h3>What is JVM &#8211; Java Virtual Machine?<\/h3>\n<p>As we all know that we need to either compile or interpret any source code before executing it. But Java uses the combination of both, i.e, compiler as well as interpreter.<\/p>\n<p>Java programs are first compiled into Java Byte Code(Binary form) and then a special Java interpreter interprets them for a specific platform.<\/p>\n<p>Java ByteCode is the machine language for Java Virtual machine(JVM). The JVM converts the compiled binary byte code into a specific machine language.<\/p>\n<p>Java Virtual machine acts as a subpart of Java Runtime Environment(JRE).<\/p>\n<p>The JVM is an abstract machine that works on the top of existing processes. We can implement it in hardware or software.<\/p>\n<p>JVM combined with Java APIs makes Java Platform. The essential use of the JVM is HotSpot.<\/p>\n<p>We can define JVM in three ways:<\/p>\n<p>1. A <strong>specification<\/strong> that specifies the working of Java Virtual Machine. The one who provides the implementation is independent to choose the algorithm.<\/p>\n<p>2. An <strong>Implementation<\/strong> called the Java Runtime Environment (JRE).<\/p>\n<p>3. A <strong>Runtime<\/strong> Instance that creates a JVM instance when you write a command on the command prompt to run the java class.<\/p>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2020\/06\/Java-Virtual-Machine-normal-image.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-79005\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2020\/06\/Java-Virtual-Machine-normal-image.jpg\" alt=\"Java Virtual Machine\" width=\"848\" height=\"225\" \/><\/a><\/p>\n<h3><strong>Working of JVM<\/strong><\/h3>\n<p>JVM(Java Virtual Machine) behaves as a run-time engine to run Java applications. JVM calls the main method present in Java code.<\/p>\n<p>Java Virtual machine(JVM) is a part of the JRE(Java Runtime Environment).<\/p>\n<p>Java applications are WORA (Write Once Run Anywhere). This means that we need to write the Java programs just once, which we can run on different platforms without making changes in the Java program.<\/p>\n<p>When we compile a .java file, the compiler generates the .class files(contains byte-code) with the same names as that of the class present in a .java file.<\/p>\n<p>When we run a .class file, it goes through various steps.<\/p>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2020\/06\/Working-of-JVM.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-79003\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2020\/06\/Working-of-JVM.jpg\" alt=\"Working of JVM\" width=\"641\" height=\"434\" \/><\/a><\/p>\n<h3><strong>Need for Java Virtual Machine<\/strong><\/h3>\n<p>The need for Java Virtual Machine is to handle the tasks that it performs which are necessary for the development of programs involving Java. Java virtual machine performs the following tasks:<\/p>\n<ul>\n<li>Loads the code.<\/li>\n<li>Verifies code.<\/li>\n<li>Executes the code.<\/li>\n<li>Provides a run-time environment for various applications.<\/li>\n<li>JVM provides a Memory area.<\/li>\n<li>Provides a Register set.<\/li>\n<li>JVM provides the garbage collection heap.<\/li>\n<li>Reports fatal errors.<\/li>\n<li>Provides a class file format<\/li>\n<\/ul>\n<p>All these tasks make the Java virtual machine an integral part of Java development.<\/p>\n<h3>JVM Architecture in Java<\/h3>\n<p>There are three main subsystems in JVM Architecture:<\/p>\n<p><strong>1.<\/strong> ClassLoader<\/p>\n<p><strong>2.<\/strong> Memory Area<\/p>\n<p><strong>3.<\/strong> Execution Engine<\/p>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2020\/06\/JVM-Architecture.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-79004\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2020\/06\/JVM-Architecture.jpg\" alt=\"JVM Architecture\" width=\"547\" height=\"506\" \/><\/a><\/p>\n<p>Now, we will understand each of them in detail.<\/p>\n<h3>Java ClassLoader<\/h3>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2020\/06\/JVM-Model.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-79007\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2020\/06\/JVM-Model.jpg\" alt=\"JVM Model\" width=\"711\" height=\"776\" \/><\/a><\/p>\n<p>It is the component of JVM Architecture that loads classes in memory. Every JVM consists of a ClassLoader. Three built-in classloaders in Java are:<\/p>\n<h4>1. Bootstrap ClassLoader<\/h4>\n<p>This is the classloader which is the super class of Extension classloader. It loads the rt.jar file.<\/p>\n<h4>2. Extension ClassLoader<\/h4>\n<p>It is the ClassLoader which loads the jar files present in the directory. This is the child Bootstrap classLoader and parent of System classloader.<\/p>\n<h4>3. System\/Application ClassLoader<\/h4>\n<p>It is the classLoader which loads the class files from the classpath. This is the child of the Extension classloader.<\/p>\n<p>The Three important functions of ClassLoader are Initialization, Loading, Linking.<\/p>\n<h4>1. Initialization<\/h4>\n<p>This operation involves the assignment of all static variables with their specific values in the block of the program.<\/p>\n<p>In this phase, there is an assignment of all static variables with their values defined in the code and static block.<\/p>\n<p>The execution takes place from top to bottom in a class and from parent to child in the class hierarchy.<\/p>\n<h3>2. Loading<\/h3>\n<p>This operation loads files from secondary memory into the main memory (RAM) for execution. The Classloader reads the .class file, generates the corresponding binary data, and saves it in the method area.<\/p>\n<p>JVM stores some information for each .class file in the method area. This information is:<\/p>\n<ul>\n<li>The fully qualified name of the loaded class and its immediate parent class.<\/li>\n<li>Whether .class file is related to interface or an enum or a class.<\/li>\n<li>Modifier, Variables and Method information, etc.<\/li>\n<\/ul>\n<p>After loading the .class file, JVM creates an object of type Class to represent this file in the heap memory.<\/p>\n<p>The programmers can use this Class object for getting class level information like the name of the class, parent name, methods, and variable information, etc.<\/p>\n<p>To get this object reference we can use the getClass() method of Object class.<\/p>\n<h4>3. Linking<\/h4>\n<p>This operation combines different files in the main program together. It performs verification, preparation, and (optionally) resolution.<\/p>\n<ul>\n<li><strong>Verification:<\/strong> The Verification phase checks the correctness of the .class file. It means that it checks that the file formation and generation is by a valid compiler or not. If the verification fails then we get a java.lang.Verify Exception.<\/li>\n<li><strong>Preparation:<\/strong> JVM allocates memory for class variables and initializes the memory to default values.<\/li>\n<li><strong>Resolution:<\/strong> Resolution is the process of replacing symbolic references with direct references. It uses searching into the method area to locate the referenced entity.<\/li>\n<\/ul>\n<p><strong>Code to demonstrate ClassLoader in Java:<\/strong><\/p>\n<p>Let us see an example to print the classloader name<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">package com.techvidvan.jvm;\r\npublic class Test1 {\r\n  public static void main(String[] args) {\r\n    \/\/ Let's print the classloader name of the current class.   \r\n    \/\/Application\/System classloader will load this class  \r\n    Class c = Test1.class;\r\n    System.out.println(c.getClassLoader());\r\n    \/\/If we print the classloader name of String, it will print null because it is an  \r\n    \/\/in-built class which is present in rt.jar, Bootstrap classloader loads it. \r\n    System.out.println(String.class.getClassLoader());<\/pre>\n<p><strong>Output:<\/strong><br \/>\nsun.misc.Launcher$AppClassLoader@659e0bfd<br \/>\nnull<\/p>\n<h3>JVM Memory area<\/h3>\n<p><strong>1. Method Area<\/strong>\u2013 It stores the structure of each class like method data, field data, runtime pool, metadata.<\/p>\n<p><strong>2. Heap<\/strong>&#8211; Heap is the runtime area where object allocation takes place.<\/p>\n<p><strong>3. Stacks<\/strong>&#8211; Stacks store the partial results and local variables of a program. Whenever a thread is created, there is a simultaneous creation of JVM stack. When we invoke a method, a new frame creates and destroys at the same time when the invocation process completes.<\/p>\n<p><strong>4. PC Registers<\/strong> &#8211; It stores the address of the currently executing JVM instruction.<\/p>\n<p><strong>5. Native Method Stacks<\/strong> \u2013 It includes all the native methods required in any application. It is not written in java.<\/p>\n<h3>Execution Engine in Java<\/h3>\n<p>It is the component of JVM that reads data from memory locations and executes the instructions. It has three major components namely a virtual processor, an interpreter, and a JIT compiler.<\/p>\n<p><strong>1. Virtual Processor<\/strong><\/p>\n<p><strong>2. Interpreter:<\/strong> Read the bytecode stream then execute the instructions.<\/p>\n<p><strong>3. Just-In-Time(JIT) compiler:<\/strong> It improves performance. JIT compiles parts of the byte code with similar functionality at the same time and reduces the amount of time needed for compilation.<\/p>\n<h3>Native Method interface<\/h3>\n<p>It is a framework that helps in communication between different applications written in different languages such as c, c++, etc.<\/p>\n<p>Native Method Interface allows Java code running in a JVM to call by libraries and native applications.<\/p>\n<h3>Method Libraries<\/h3>\n<p>Native Libraries is a collection of the Native Libraries(C, C++) which are essential for the Execution Engine.<\/p>\n<h3>Difference Between JDK, JRE, And JVM<\/h3>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2020\/06\/Difference-Between-JDK-JRE-JVM.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-79006\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2020\/06\/Difference-Between-JDK-JRE-JVM.jpg\" alt=\"Difference Between JDK, JRE, &amp; JVM\" width=\"643\" height=\"395\" \/><\/a><\/p>\n<p>The following are a few important differences between JDK, JVM, and JRE.<\/p>\n<p>1. JVM stands for Java Virtual machine, JDK stands for Java development kit, and JRE stands for Java runtime environment.<\/p>\n<p>2. JDK is for the development environment whereas JRE is for the run time environment.<\/p>\n<p>3. JVM runs inside the JRE environment. JRE contains class libraries, Java Virtual Machine and other files other than development tools like compiler and debugger.<\/p>\n<p>4. JRE is a subset of JDK. JDK contains JRE along with development tools such as compiler, debugger, etc.<\/p>\n<h4>Important Points<\/h4>\n<ul>\n<li>JVM stands for Java Virtual Machine that drives the Java Code. It converts Java bytecode into machine language.<\/li>\n<li>Here, Java code is compiled to bytecode. This bytecode gets interpreted on different machines<\/li>\n<li>JIT stands for a Just-in-time compiler. JIT is part of the Java Virtual Machine. It increases the execution time<\/li>\n<li>Java may be slow in execution compared to other compiler machines,<\/li>\n<\/ul>\n<h3>Conclusion<\/h3>\n<p>Here we come to the end of the JVM tutorial, where we learned about the Java Virtual machine in detail.<\/p>\n<p>Moreover, we discussed the architecture and its subtypes. We also learned the differences between the important terms- JDK,JRE, and JVM.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this Java tutorial, we are going to discuss Java Virtual Machine(JVM), which is one of the most important aspects of Java programming language. We will study about JVM architecture and its subsystems. We&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":79002,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[183],"tags":[2810,2811,2812,2813,2814,2815,2816,2817],"class_list":["post-78999","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-execution-engine-in-java","tag-java-classloader","tag-java-memory-model","tag-java-virtual-machine","tag-jvm","tag-jvm-architecture","tag-what-is-java-virtual-machine","tag-what-is-jvm"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JVM - Java Virtual Machine Working and Architecture - TechVidvan<\/title>\n<meta name=\"description\" content=\"JVM - Java Virtual machine working, need and architecture, java classloader, memory area, Execution Engine, Difference Between JDK, JRE, And JVM\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM - Java Virtual Machine Working and Architecture - TechVidvan\" \/>\n<meta property=\"og:description\" content=\"JVM - Java Virtual machine working, need and architecture, java classloader, memory area, Execution Engine, Difference Between JDK, JRE, And JVM\" \/>\n<meta property=\"og:url\" content=\"https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/\" \/>\n<meta property=\"og:site_name\" content=\"TechVidvan\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/TechVidvan\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-05T03:30:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-03T07:23:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2020\/06\/Java-Virtual-Machine-feature-image.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"802\" \/>\n\t<meta property=\"og:image:height\" content=\"420\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"TechVidvan Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@vidvantech\" \/>\n<meta name=\"twitter:site\" content=\"@vidvantech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"TechVidvan Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JVM - Java Virtual Machine Working and Architecture - TechVidvan","description":"JVM - Java Virtual machine working, need and architecture, java classloader, memory area, Execution Engine, Difference Between JDK, JRE, And JVM","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/","og_locale":"en_US","og_type":"article","og_title":"JVM - Java Virtual Machine Working and Architecture - TechVidvan","og_description":"JVM - Java Virtual machine working, need and architecture, java classloader, memory area, Execution Engine, Difference Between JDK, JRE, And JVM","og_url":"https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/","og_site_name":"TechVidvan","article_publisher":"https:\/\/www.facebook.com\/TechVidvan\/","article_published_time":"2020-06-05T03:30:44+00:00","article_modified_time":"2024-08-03T07:23:05+00:00","og_image":[{"width":802,"height":420,"url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2020\/06\/Java-Virtual-Machine-feature-image.jpg","type":"image\/jpeg"}],"author":"TechVidvan Team","twitter_card":"summary_large_image","twitter_creator":"@vidvantech","twitter_site":"@vidvantech","twitter_misc":{"Written by":"TechVidvan Team","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/#article","isPartOf":{"@id":"https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/"},"author":{"name":"TechVidvan Team","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/person\/e9c26e74dd3d87421f7ada9433b8cd22"},"headline":"JVM &#8211; Java Virtual Machine Working and Architecture","datePublished":"2020-06-05T03:30:44+00:00","dateModified":"2024-08-03T07:23:05+00:00","mainEntityOfPage":{"@id":"https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/"},"wordCount":1365,"commentCount":0,"publisher":{"@id":"https:\/\/techvidvan.com\/tutorials\/#organization"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/#primaryimage"},"thumbnailUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2020\/06\/Java-Virtual-Machine-feature-image.jpg","keywords":["Execution Engine in Java","Java ClassLoader","Java memory Model","Java Virtual Machine","JVM","jvm architecture","What is Java Virtual Machine","What is JVM"],"articleSection":["Java Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/","url":"https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/","name":"JVM - Java Virtual Machine Working and Architecture - TechVidvan","isPartOf":{"@id":"https:\/\/techvidvan.com\/tutorials\/#website"},"primaryImageOfPage":{"@id":"https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/#primaryimage"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/#primaryimage"},"thumbnailUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2020\/06\/Java-Virtual-Machine-feature-image.jpg","datePublished":"2020-06-05T03:30:44+00:00","dateModified":"2024-08-03T07:23:05+00:00","description":"JVM - Java Virtual machine working, need and architecture, java classloader, memory area, Execution Engine, Difference Between JDK, JRE, And JVM","breadcrumb":{"@id":"https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/#primaryimage","url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2020\/06\/Java-Virtual-Machine-feature-image.jpg","contentUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2020\/06\/Java-Virtual-Machine-feature-image.jpg","width":802,"height":420,"caption":"JVM Java Virtual Machine"},{"@type":"BreadcrumbList","@id":"https:\/\/techvidvan.com\/tutorials\/java-virtual-machine\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/techvidvan.com\/tutorials\/"},{"@type":"ListItem","position":2,"name":"JVM &#8211; Java Virtual Machine Working and Architecture"}]},{"@type":"WebSite","@id":"https:\/\/techvidvan.com\/tutorials\/#website","url":"https:\/\/techvidvan.com\/tutorials\/","name":"TechVidvan Blogs","description":"","publisher":{"@id":"https:\/\/techvidvan.com\/tutorials\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/techvidvan.com\/tutorials\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/techvidvan.com\/tutorials\/#organization","name":"TechVidvan","url":"https:\/\/techvidvan.com\/tutorials\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/logo\/image\/","url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2024\/03\/techvidvan-logo-200x50-1.webp","contentUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2024\/03\/techvidvan-logo-200x50-1.webp","width":200,"height":50,"caption":"TechVidvan"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/TechVidvan\/","https:\/\/x.com\/vidvantech"]},{"@type":"Person","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/person\/e9c26e74dd3d87421f7ada9433b8cd22","name":"TechVidvan Team","description":"The TechVidvan Team delivers practical, beginner-friendly tutorials on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our experts are here to help you upskill and excel in today\u2019s tech industry."}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/78999","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/comments?post=78999"}],"version-history":[{"count":1,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/78999\/revisions"}],"predecessor-version":[{"id":447563,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/78999\/revisions\/447563"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/media\/79002"}],"wp:attachment":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/media?parent=78999"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/categories?post=78999"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/tags?post=78999"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}