{"id":21480,"date":"2018-04-24T12:15:14","date_gmt":"2018-04-24T09:15:14","guid":{"rendered":"https:\/\/www.webcodegeeks.com\/?p=21480"},"modified":"2018-04-23T12:20:01","modified_gmt":"2018-04-23T09:20:01","slug":"javascript-runtime-environment","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/","title":{"rendered":"JavaScript runtime environment"},"content":{"rendered":"<p>Have you just started learning JavaScript?<\/p>\n<p>Or maybe you already have some language experience but want to understand JavaScript runtime in more details?<\/p>\n<p>Whatever reason brought you here, there are a few elements of JavaScript runtime that you should get to know.<\/p>\n<p>In this article, I\u2019m going to show you<b> how the JavaScript runtime environment works under the hood<\/b>. You\u2019ll learn about its elements, their responsibilities, and the way they interact with each other.<\/p>\n<p>Are you ready?<\/p>\n<p>If so, let\u2019s start with the first element of the puzzle.<\/p>\n<h2>1. What is JavaScript engine?<\/h2>\n<p>As you may heard before, JavaScript is an <b>interpreted programming language<\/b>. It means that source code isn\u2019t compiled into binary code prior to execution.<\/p>\n<p>How your computer can understand what to do with a plain text script?<\/p>\n<p>That\u2019s the job for a JavaScript engine. <b>A JavaScript engine is a program responsible for translating source code into machine code and executing the translation result on a computer\u2019s central processing unit (CPU).<\/b><\/p>\n<p>The engine is a container in which you run your program.<\/p>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/04\/javascript-engine.png\"><img decoding=\"async\" class=\"aligncenter wp-image-21496 size-full\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/04\/javascript-engine.png\" alt=\"\" width=\"640\" height=\"400\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/04\/javascript-engine.png 640w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/04\/javascript-engine-300x188.png 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<h2>In Java<\/h2>\n<p>Before you run a Java program you have to compile it. This gives you an instant feedback about errors in your code syntax. In JavaScript, you will learn about an issue when the engine tries to execute a problematic line of code.<\/p>\n<p>In order to start coding in JavaScript, you don\u2019t have to install any additional software. Each modern web browser comes with a JavaScript engine. You can simply run scripts you write inside your favorite browser.<\/p>\n<p>All JavaScript engines implement <a href=\"https:\/\/www.ecma-international.org\/publications\/standards\/Ecma-262.htm\"><b>specification of the language<\/b> provide by ECMAScript<\/a>. Standardization facilitates the development of independent engines and ensures your scripts give the same results no matter where you run them\u2026<\/p>\n<p>\u2026 or at least they should give the same results. Nowadays, the ECMAScript specification changes more dynamically than in the past. Not every engine keeps up the paces.<\/p>\n<h2>Java Analogy<\/h2>\n<p>Java as a platform also has its specification. Oracle provides the official implementation but it\u2019s not the only one. <a href=\"http:\/\/openjdk.java.net\/\">OpenJDK<\/a> is another example.<br \/>\nYet, Oracle\u2019s implementation is considered as the standard. In the JavaScript world, there\u2019s no clear winner.<\/p>\n<p>You don\u2019t have to know in details every existing JavaScript engine but I encourage you to <b>remember engines\u2019 names and web browsers in which you\u2019ll find them<\/b>. It\u2019ll allow you to check if the latest features of the language are implemented in browsers you want to support.<\/p>\n<p>What are the most important JavaScript engines?<\/p>\n<ul>\n<li>\n<ul>\n<li><b>Chrome V8<\/b> \u2013 As you probably guessed the engine shipped in <i>Google Chrome<\/i>. It\u2019s an open source project written in C++. V8 is also used in <i>Opera<\/i>, <i>NodeJS<\/i>, and <i>Couchbase<\/i>.<\/li>\n<li><b>SpiderMonkey<\/b> \u2013 The open source engine implemented in C++. It\u2019s maintained by Mozilla Foundation. You can find it in <i>Firefox<\/i>.<\/li>\n<li><b>Nitro<\/b> \u2013 The engine developed by Apple. It\u2019s used in <i>Safari<\/i>.<\/li>\n<li><strong>Chakra<\/strong> \u2013 Developed by Microsoft as the JavaScript engine for <i>Edge<\/i> browser.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>But JavaScript engine is just a building block of a bigger concept.<\/p>\n<p>Let\u2019s dig a little deeper.<\/p>\n<h2>2. What is JavaScript runtime environment?<\/h2>\n<p>In the web development, you don\u2019t usually use the engine directly. <b>The JavaScript engine works inside an environment<\/b>, which provides additional features to your scripts that you can use at runtime.<\/p>\n<p>What kind of features you may ask.<\/p>\n<p>These can be utility libraries or APIs which allow <b>communicating with the world surrounding the engine<\/b>. An example here might be access to information about the web browser in which your script is executed. Or a notification about a mouse click.<\/p>\n<h2>Java Analogy<\/h2>\n<p>In Java world, we have the Java Runtime Environment (JRE) which gives us access to supporting libraries and acts as a bridge between your program and the operating system.<\/p>\n<h3>2.1 Is JavaScript single-threaded?<\/h3>\n<p>Have you heard that JavaScript language is executed in a single thread?<\/p>\n<p>No more multithreading pitfalls?<\/p>\n<p>Well, <b>it\u2019s not entirely true<\/b>.<\/p>\n<p>Before you open a bottle of champagne to celebrate simplified development you should first understand what this single thread means to JavaScript.<\/p>\n<p>It\u2019s absolutely correct that <b>your JavaScript code is executed in a single thread<\/b>. But, it doesn\u2019t mean that the whole JavaScript runtime environment works in a single thread. The <b>thread pool exists in JavaScript runtime<\/b>. Fortunately, you don\u2019t have to worry about thread management because the environment does it for you.<\/p>\n<p>But how?<\/p>\n<p>How does the JavaScript environment know when to execute your code? If there\u2019s only one thread responsible for the execution of your code, there has to be some mechanism which manages the order of execution.<\/p>\n<p>This mechanism is called <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/EventLoop\">the Event loop<\/a>.<\/p>\n<h3>2.2 What is JavaScript Event loop?<\/h3>\n<p>Before I answer the question, you should know about one important detail. All <b>scripts written in JavaScript can be divided into two major groups<\/b>.<\/p>\n<p>The first group is composed by <b>immediately invoked scripts<\/b>. Once they\u2019re loaded, the environment passes them for execution to the JavaScript engine. In the web development, these are usually initial scripts invoked right after a web page is loaded by the browser.<\/p>\n<p>The second group contains so-called <b>event callbacks<\/b>. An event callback is a piece of code executed when a particular <b>event<\/b> occurs. In a web page context, an example of an event is a mouse click or a return of a network request.<\/p>\n<p>The <b>Event loop<\/b>, which is a part of the JavaScript runtime environment, <b>is a mechanism responsible for handling callbacks<\/b>.<\/p>\n<p>When you create a callback, you always associate it with a particular event. If that event occurs, the environment puts your callback into a so-called <b>Event handlers queue<\/b>. The Event loop constantly monitors the queue and executes its elements in the order they arrive.<\/p>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/04\/event-loop-processing.png\"><img decoding=\"async\" class=\"aligncenter wp-image-21497 size-full\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/04\/event-loop-processing.png\" alt=\"\" width=\"639\" height=\"725\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/04\/event-loop-processing.png 639w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/04\/event-loop-processing-264x300.png 264w\" sizes=\"(max-width: 639px) 100vw, 639px\" \/><\/a><\/p>\n<p>Now something very important!<\/p>\n<p>Callbacks are <i>a l w a y s<\/i> executed completely. <b>The Event loop runs one callback at a time<\/b>. No context switching. All callbacks in the queue have to wait until the current one is finished.<\/p>\n<p>If a script runs too long, it blocks others. That\u2019s why <b>callbacks should be relatively short and simple<\/b>.<\/p>\n<h3>2.3 Browser JavaScript runtime environment<\/h3>\n<p>Although these days JavaScript runs in many different environments, its origins lead to web browsers. One of the main <b>reasons for inventing JavaScript<\/b> was to put some dynamics in web pages created with HTML and CSS.<\/p>\n<p>First of all, a web browser allows for manipulation of static web pages through the API for the <i>Document Object Model (DOM)<\/i>.<\/p>\n<p><b>The DOM represents (Models) the tree of UI elements (Objects) in a particular web page (Document)<\/b>. Your web browser creates a DOM object for each page you visit right after it\u2019s loaded.<\/p>\n<p>Thanks to the DOM API exposed by web browsers you can freely change the DOM with JavaScript and add dynamics to static pages.<\/p>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/04\/sample-js-dom.png\"><img decoding=\"async\" class=\"aligncenter wp-image-21498 size-full\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/04\/sample-js-dom.png\" alt=\"\" width=\"467\" height=\"254\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/04\/sample-js-dom.png 467w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/04\/sample-js-dom-300x163.png 300w\" sizes=\"(max-width: 467px) 100vw, 467px\" \/><\/a><\/p>\n<p>But there\u2019s more.<\/p>\n<p>A web browser is an interactive interface for web pages. <b>User click<\/b> on elements, <b>scroll<\/b> down pages, or <b>type<\/b> using the keyboard. All <b>these actions fire user events<\/b> which the browser exposes as a part of the JavaScript runtime environment.<\/p>\n<p>Beyond that, the user isn\u2019t the only source of events. Your scripts can create events as well.<\/p>\n<p>A very <b>special type of events you create is a timer event<\/b>. You can delay execution of some code by a specified amount of time. The browser handles these events with the already mentioned event loop.<\/p>\n<p>But that\u2019s not all, you can use browser\u2019s API to communicate via the network with the server side of your application. <b>The result of network communication is also an event.<\/b><\/p>\n<p>Finally, a web browser gives you basic information about a host operating system in which it runs and allows to store data in <a href=\"https:\/\/www.w3schools.com\/html\/html5_webstorage.asp\">the local storage<\/a>.<\/p>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/04\/javascript-web-env.png\"><img decoding=\"async\" class=\"aligncenter wp-image-21499 size-full\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/04\/javascript-web-env.png\" alt=\"\" width=\"639\" height=\"265\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/04\/javascript-web-env.png 639w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/04\/javascript-web-env-300x124.png 300w\" sizes=\"(max-width: 639px) 100vw, 639px\" \/><\/a><\/p>\n<h3>2.4 JavaScript outside of browser<\/h3>\n<p>Although the main environment for JavaScript is a web browser, it wouldn\u2019t be fair if I didn\u2019t mention other JavaScript runtimes.<br \/>\nWhy am I doing this?<\/p>\n<p>Because <b>JavaScript is everywhere <\/b>now.<\/p>\n<p>Think I\u2019m exaggerating?<\/p>\n<p>For a very long time, JavaScript was associated only with the front-end client-side development. Today, the language has much more uses. These include:<\/p>\n<ul>\n<li><b>server-side<\/b> development \u2013 Thanks to <a href=\"https:\/\/nodejs.org\/en\/\">NodeJS<\/a> which is the most powerful JavaScript runtime environment. NodeJS gives you access to the file system, network, and other things which aren\u2019t allowed in web browsers.<\/li>\n<li><b>network<\/b> \u2013 JSON format, which is currently the most popular human-readable format for data transportation, originates from JavaScript.<\/li>\n<li>creating <b>mobile applications<\/b> \u2013 Because JavaScript isn\u2019t tight into any particular mobile vendor, it\u2019s a perfect choice for a medium language for different mobile platforms. Frameworks like <a href=\"https:\/\/phonegap.com\/\">PhoneGap<\/a> or <a href=\"https:\/\/www.appcelerator.com\/Titanium\/\">Appcelerator Titanium<\/a> try to provide a unified development environment for different devices and OSs.<\/li>\n<li><b>databases<\/b> \u2013 You can easily find countless ready for use databases implemented with JavaScript. But there are other uses. For instance, the query language for <a href=\"https:\/\/www.mongodb.com\/\">MongoDB<\/a> is based on JavaScript syntax.<\/li>\n<\/ul>\n<p>You can actually <b>build a whole web application<\/b> (from the UI to the data layer) with a <b>technology stack based only on JavaScript<\/b>. Actually, the stack already has its name and it\u2019s called <a href=\"https:\/\/en.wikipedia.org\/wiki\/MEAN_(software_bundle)\">MEAN stack<\/a>.<\/p>\n<h2>In Java<\/h2>\n<p>As you are a Java developer you might not be interested in NodeJS since you probably use Java for the back-end. However, these examples greatly illustrate capabilities of JavaScript runtime environments. <b>JavaScript is no longer just a toy language for fancy UI animations<\/b>. It can do much more!<\/p>\n<h2>3. JavaScript engine vs runtime environment<\/h2>\n<p>At this moment, you probably should be able to say in your words what is the difference between JavaScript engine and JavaScript runtime environment. But because <b>these topics are often confused<\/b>, let\u2019s summarize them together.<\/p>\n<p>The <b>JavaScript engine<\/b> translates your script into runnable machine code instructions so it can be executed by the CPU of the host machine. The engine translates scripts at runtime on the fly. Your code won\u2019t be compiled unless you run it.<\/p>\n<p>The <b>JavaScript runtime environment<\/b> provides your scripts with utility libraries which can be used during execution. It\u2019s your script that references these libraries. The engine itself doesn\u2019t depend on them.<\/p>\n<p>The cool thing is <b>the JavaScript engine implementation is totally independent of the runtime environment.<\/b> Engines aren\u2019t developed with any particular environment in mind.<\/p>\n<h2>Java Analogy<\/h2>\n<p>While the JavaScript engine does the similar job to the Java compiler, the work done by the JavaScript runtime environment can be compared to the work done by the Java Classloader.<\/p>\n<p>There\u2019s a real-life example which demonstrates this approach is working.<\/p>\n<p>You can find the V8 engine both in Chrome browser and NodeJS. One engine successfully utilized in two environments created for totally different uses.<\/p>\n<h2>Conclusion<\/h2>\n<p>What should you already know?<\/p>\n<p>We started the introduction with the JavaScript engine as a basic element. Then we moved to the components and features of the JavaScript runtime environment. We mentioned the Event loop, Events, and Event handler queue. At the end, you could see the comparison and summary of the JavaScript engine and runtime environment.<\/p>\n<p>Now it\u2019s your turn. Would you like to read more about discussed elements of the JavaScript runtime environment? I\u2019d love to know your thoughts, so please go ahead and leave them in the comments. If you find the article useful, please share it with your colleagues and other developers.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>Published on Web Code Geeks with permission by Daniel Olszewski, partner at our <a href=\"\/\/www.webcodegeeks.com\/join-us\/wcg\/\" target=\"_blank\" rel=\"noopener\">WCG program<\/a>. See the original article here: <a href=\"http:\/\/dolszewski.com\/javascript\/javascript-runtime-environment\/\" target=\"_blank\" rel=\"noopener\">JavaScript runtime environment<\/a><\/p>\n<p>Opinions expressed by Web Code Geeks contributors are their own.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Have you just started learning JavaScript? Or maybe you already have some language experience but want to understand JavaScript runtime in more details? Whatever reason brought you here, there are a few elements of JavaScript runtime that you should get to know. In this article, I\u2019m going to show you how the JavaScript runtime environment &hellip;<\/p>\n","protected":false},"author":5199,"featured_media":920,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[77],"class_list":["post-21480","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","tag-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JavaScript runtime environment - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"Have you just started learning JavaScript? Or maybe you already have some language experience but want to understand JavaScript runtime in more details?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript runtime environment - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"Have you just started learning JavaScript? Or maybe you already have some language experience but want to understand JavaScript runtime in more details?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2018-04-24T09:15:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Daniel Olszewski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@daolszewski\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Olszewski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/\"},\"author\":{\"name\":\"Daniel Olszewski\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/1662b72a2e97e41a0e9cc9f38aaddb70\"},\"headline\":\"JavaScript runtime environment\",\"datePublished\":\"2018-04-24T09:15:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/\"},\"wordCount\":1907,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\",\"keywords\":[\"Java\"],\"articleSection\":[\"JavaScript\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/\",\"name\":\"JavaScript runtime environment - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\",\"datePublished\":\"2018-04-24T09:15:14+00:00\",\"description\":\"Have you just started learning JavaScript? Or maybe you already have some language experience but want to understand JavaScript runtime in more details?\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/javascript\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"JavaScript runtime environment\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/1662b72a2e97e41a0e9cc9f38aaddb70\",\"name\":\"Daniel Olszewski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/478137d4c1cdb34323c29f65310308ecaabeb98e1efdf179d47932b1ddb219d3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/478137d4c1cdb34323c29f65310308ecaabeb98e1efdf179d47932b1ddb219d3?s=96&d=mm&r=g\",\"caption\":\"Daniel Olszewski\"},\"description\":\"Daniel Olszewski is a software developer passionate about the JVM ecosystem and web development. He is an advocate of clean, maintainable, and well tested code.\",\"sameAs\":[\"http:\/\/dolszewski.com\",\"https:\/\/www.linkedin.com\/in\/olszewskidaniel\/\",\"https:\/\/x.com\/daolszewski\"],\"url\":\"https:\/\/www.webcodegeeks.com\/author\/daniel-olszewski\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JavaScript runtime environment - Web Code Geeks - 2026","description":"Have you just started learning JavaScript? Or maybe you already have some language experience but want to understand JavaScript runtime in more details?","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:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/","og_locale":"en_US","og_type":"article","og_title":"JavaScript runtime environment - Web Code Geeks - 2026","og_description":"Have you just started learning JavaScript? Or maybe you already have some language experience but want to understand JavaScript runtime in more details?","og_url":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2018-04-24T09:15:14+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","type":"image\/jpeg"}],"author":"Daniel Olszewski","twitter_card":"summary_large_image","twitter_creator":"@daolszewski","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Daniel Olszewski","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/"},"author":{"name":"Daniel Olszewski","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/1662b72a2e97e41a0e9cc9f38aaddb70"},"headline":"JavaScript runtime environment","datePublished":"2018-04-24T09:15:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/"},"wordCount":1907,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","keywords":["Java"],"articleSection":["JavaScript"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/","url":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/","name":"JavaScript runtime environment - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","datePublished":"2018-04-24T09:15:14+00:00","description":"Have you just started learning JavaScript? Or maybe you already have some language experience but want to understand JavaScript runtime in more details?","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-runtime-environment\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"JavaScript","item":"https:\/\/www.webcodegeeks.com\/category\/javascript\/"},{"@type":"ListItem","position":3,"name":"JavaScript runtime environment"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/1662b72a2e97e41a0e9cc9f38aaddb70","name":"Daniel Olszewski","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/478137d4c1cdb34323c29f65310308ecaabeb98e1efdf179d47932b1ddb219d3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/478137d4c1cdb34323c29f65310308ecaabeb98e1efdf179d47932b1ddb219d3?s=96&d=mm&r=g","caption":"Daniel Olszewski"},"description":"Daniel Olszewski is a software developer passionate about the JVM ecosystem and web development. He is an advocate of clean, maintainable, and well tested code.","sameAs":["http:\/\/dolszewski.com","https:\/\/www.linkedin.com\/in\/olszewskidaniel\/","https:\/\/x.com\/daolszewski"],"url":"https:\/\/www.webcodegeeks.com\/author\/daniel-olszewski\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/21480","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/5199"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=21480"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/21480\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/920"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=21480"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=21480"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=21480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}