CINXE.COM
Java virtual machine - Wikipedia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Java virtual machine - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"f256b5da-7ee0-447f-8145-3726e573a086","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Java_virtual_machine","wgTitle":"Java virtual machine","wgCurRevisionId":1243042627,"wgRevisionId":1243042627,"wgArticleId":16389,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Webarchive template wayback links","Articles with short description","Short description is different from Wikidata","Articles containing potentially dated statements from 2006","All articles containing potentially dated statements","Articles containing potentially dated statements from 2018","Articles containing potentially dated statements from June 2015","Java virtual machine","Java (programming language)","Java platform software","Java specification requests", "Stack-based virtual machines"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Java_virtual_machine","wgRelevantArticleId":16389,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":30000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true, "wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q193321","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","jquery.makeCollapsible.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","mediawiki.page.media","ext.scribunto.logs","site", "mediawiki.page.ready","jquery.makeCollapsible","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.cite.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cext.wikimediamessages.styles%7Cjquery.makeCollapsible.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/d/dd/JvmSpec7.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="727"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/JvmSpec7.png/800px-JvmSpec7.png"> <meta property="og:image:width" content="800"> <meta property="og:image:height" content="485"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/JvmSpec7.png/640px-JvmSpec7.png"> <meta property="og:image:width" content="640"> <meta property="og:image:height" content="388"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Java virtual machine - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/Java_virtual_machine"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Java_virtual_machine&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/Java_virtual_machine"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Java_virtual_machine rootpage-Java_virtual_machine skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=Java+virtual+machine" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=Java+virtual+machine" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Java+virtual+machine" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Java+virtual+machine" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-JVM_specification" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#JVM_specification"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>JVM specification</span> </div> </a> <button aria-controls="toc-JVM_specification-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle JVM specification subsection</span> </button> <ul id="toc-JVM_specification-sublist" class="vector-toc-list"> <li id="toc-Class_loader" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Class_loader"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.1</span> <span>Class loader</span> </div> </a> <ul id="toc-Class_loader-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Virtual_machine_architecture" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Virtual_machine_architecture"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.2</span> <span>Virtual machine architecture</span> </div> </a> <ul id="toc-Virtual_machine_architecture-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Bytecode_instructions" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Bytecode_instructions"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.3</span> <span>Bytecode instructions</span> </div> </a> <ul id="toc-Bytecode_instructions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-JVM_languages" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#JVM_languages"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.4</span> <span>JVM languages</span> </div> </a> <ul id="toc-JVM_languages-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Bytecode_verifier" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Bytecode_verifier"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.5</span> <span>Bytecode verifier</span> </div> </a> <ul id="toc-Bytecode_verifier-sublist" class="vector-toc-list"> <li id="toc-Secure_execution_of_remote_code" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Secure_execution_of_remote_code"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.5.1</span> <span>Secure execution of remote code</span> </div> </a> <ul id="toc-Secure_execution_of_remote_code-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Bytecode_interpreter_and_just-in-time_compiler" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Bytecode_interpreter_and_just-in-time_compiler"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.6</span> <span>Bytecode interpreter and just-in-time compiler</span> </div> </a> <ul id="toc-Bytecode_interpreter_and_just-in-time_compiler-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-JVM_in_the_web_browser" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#JVM_in_the_web_browser"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>JVM in the web browser</span> </div> </a> <button aria-controls="toc-JVM_in_the_web_browser-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle JVM in the web browser subsection</span> </button> <ul id="toc-JVM_in_the_web_browser-sublist" class="vector-toc-list"> <li id="toc-JavaScript_JVMs_and_interpreters" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#JavaScript_JVMs_and_interpreters"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>JavaScript JVMs and interpreters</span> </div> </a> <ul id="toc-JavaScript_JVMs_and_interpreters-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Transpilation_to_JavaScript" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Transpilation_to_JavaScript"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>Transpilation to JavaScript</span> </div> </a> <ul id="toc-Transpilation_to_JavaScript-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Java virtual machine</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 45 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-45" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">45 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-am mw-list-item"><a href="https://am.wikipedia.org/wiki/%E1%8C%83%E1%89%AB_%E1%89%A8%E1%88%AD%E1%89%B9%E1%8A%A0%E1%88%8D_%E1%88%9B%E1%88%BD%E1%8A%95" title="ጃቫ ቨርቹአል ማሽን – Amharic" lang="am" hreflang="am" data-title="ጃቫ ቨርቹአል ማሽን" data-language-autonym="አማርኛ" data-language-local-name="Amharic" class="interlanguage-link-target"><span>አማርኛ</span></a></li><li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D8%A2%D9%84%D8%A9_%D8%AC%D8%A7%D9%81%D8%A7_%D8%A7%D9%84%D8%A7%D9%81%D8%AA%D8%B1%D8%A7%D8%B6%D9%8A%D8%A9" title="آلة جافا الافتراضية – Arabic" lang="ar" hreflang="ar" data-title="آلة جافا الافتراضية" data-language-autonym="العربية" data-language-local-name="Arabic" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-az mw-list-item"><a href="https://az.wikipedia.org/wiki/Java_Virtual_Machine" title="Java Virtual Machine – Azerbaijani" lang="az" hreflang="az" data-title="Java Virtual Machine" data-language-autonym="Azərbaycanca" data-language-local-name="Azerbaijani" class="interlanguage-link-target"><span>Azərbaycanca</span></a></li><li class="interlanguage-link interwiki-bn mw-list-item"><a href="https://bn.wikipedia.org/wiki/%E0%A6%9C%E0%A6%BE%E0%A6%AD%E0%A6%BE_%E0%A6%AD%E0%A6%BE%E0%A6%B0%E0%A7%8D%E0%A6%9A%E0%A7%81%E0%A6%AF%E0%A6%BC%E0%A6%BE%E0%A6%B2_%E0%A6%AE%E0%A7%87%E0%A6%B6%E0%A6%BF%E0%A6%A8" title="জাভা ভার্চুয়াল মেশিন – Bangla" lang="bn" hreflang="bn" data-title="জাভা ভার্চুয়াল মেশিন" data-language-autonym="বাংলা" data-language-local-name="Bangla" class="interlanguage-link-target"><span>বাংলা</span></a></li><li class="interlanguage-link interwiki-bg mw-list-item"><a href="https://bg.wikipedia.org/wiki/Java_Virtual_Machine" title="Java Virtual Machine – Bulgarian" lang="bg" hreflang="bg" data-title="Java Virtual Machine" data-language-autonym="Български" data-language-local-name="Bulgarian" class="interlanguage-link-target"><span>Български</span></a></li><li class="interlanguage-link interwiki-bs mw-list-item"><a href="https://bs.wikipedia.org/wiki/Java_Virtual_Machine" title="Java Virtual Machine – Bosnian" lang="bs" hreflang="bs" data-title="Java Virtual Machine" data-language-autonym="Bosanski" data-language-local-name="Bosnian" class="interlanguage-link-target"><span>Bosanski</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/M%C3%A0quina_virtual_Java" title="Màquina virtual Java – Catalan" lang="ca" hreflang="ca" data-title="Màquina virtual Java" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Java_Virtual_Machine" title="Java Virtual Machine – Czech" lang="cs" hreflang="cs" data-title="Java Virtual Machine" data-language-autonym="Čeština" data-language-local-name="Czech" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Java_Virtual_Machine" title="Java Virtual Machine – German" lang="de" hreflang="de" data-title="Java Virtual Machine" data-language-autonym="Deutsch" data-language-local-name="German" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-et mw-list-item"><a href="https://et.wikipedia.org/wiki/Java_virtuaalmasin" title="Java virtuaalmasin – Estonian" lang="et" hreflang="et" data-title="Java virtuaalmasin" data-language-autonym="Eesti" data-language-local-name="Estonian" class="interlanguage-link-target"><span>Eesti</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/M%C3%A1quina_virtual_Java" title="Máquina virtual Java – Spanish" lang="es" hreflang="es" data-title="Máquina virtual Java" data-language-autonym="Español" data-language-local-name="Spanish" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D9%85%D8%A7%D8%B4%DB%8C%D9%86_%D9%85%D8%AC%D8%A7%D8%B2%DB%8C_%D8%AC%D8%A7%D9%88%D8%A7" title="ماشین مجازی جاوا – Persian" lang="fa" hreflang="fa" data-title="ماشین مجازی جاوا" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Machine_virtuelle_Java" title="Machine virtuelle Java – French" lang="fr" hreflang="fr" data-title="Machine virtuelle Java" data-language-autonym="Français" data-language-local-name="French" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%EA%B0%80%EC%83%81_%EB%A8%B8%EC%8B%A0" title="자바 가상 머신 – Korean" lang="ko" hreflang="ko" data-title="자바 가상 머신" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-hy mw-list-item"><a href="https://hy.wikipedia.org/wiki/%D5%8B%D5%A1%D5%BE%D5%A1_%D5%BE%D5%AB%D6%80%D5%BF%D5%B8%D6%82%D5%A1%D5%AC_%D5%B4%D5%A5%D6%84%D5%A5%D5%B6%D5%A1" title="Ջավա վիրտուալ մեքենա – Armenian" lang="hy" hreflang="hy" data-title="Ջավա վիրտուալ մեքենա" data-language-autonym="Հայերեն" data-language-local-name="Armenian" class="interlanguage-link-target"><span>Հայերեն</span></a></li><li class="interlanguage-link interwiki-hi mw-list-item"><a href="https://hi.wikipedia.org/wiki/%E0%A4%9C%E0%A4%BE%E0%A4%B5%E0%A4%BE_%E0%A4%86%E0%A4%AD%E0%A4%BE%E0%A4%B8%E0%A5%80_%E0%A4%AE%E0%A4%B6%E0%A5%80%E0%A4%A8" title="जावा आभासी मशीन – Hindi" lang="hi" hreflang="hi" data-title="जावा आभासी मशीन" data-language-autonym="हिन्दी" data-language-local-name="Hindi" class="interlanguage-link-target"><span>हिन्दी</span></a></li><li class="interlanguage-link interwiki-hr mw-list-item"><a href="https://hr.wikipedia.org/wiki/Java_(virtualni_stroj)" title="Java (virtualni stroj) – Croatian" lang="hr" hreflang="hr" data-title="Java (virtualni stroj)" data-language-autonym="Hrvatski" data-language-local-name="Croatian" class="interlanguage-link-target"><span>Hrvatski</span></a></li><li class="interlanguage-link interwiki-id mw-list-item"><a href="https://id.wikipedia.org/wiki/Mesin_Virtual_Java" title="Mesin Virtual Java – Indonesian" lang="id" hreflang="id" data-title="Mesin Virtual Java" data-language-autonym="Bahasa Indonesia" data-language-local-name="Indonesian" class="interlanguage-link-target"><span>Bahasa Indonesia</span></a></li><li class="interlanguage-link interwiki-ia mw-list-item"><a href="https://ia.wikipedia.org/wiki/Machina_virtual_Java" title="Machina virtual Java – Interlingua" lang="ia" hreflang="ia" data-title="Machina virtual Java" data-language-autonym="Interlingua" data-language-local-name="Interlingua" class="interlanguage-link-target"><span>Interlingua</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Macchina_virtuale_Java" title="Macchina virtuale Java – Italian" lang="it" hreflang="it" data-title="Macchina virtuale Java" data-language-autonym="Italiano" data-language-local-name="Italian" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/Java_Virtual_Machine" title="Java Virtual Machine – Hebrew" lang="he" hreflang="he" data-title="Java Virtual Machine" data-language-autonym="עברית" data-language-local-name="Hebrew" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-kk mw-list-item"><a href="https://kk.wikipedia.org/wiki/Java_%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D0%B4%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0%D1%81%D1%8B" title="Java виртуалды машинасы – Kazakh" lang="kk" hreflang="kk" data-title="Java виртуалды машинасы" data-language-autonym="Қазақша" data-language-local-name="Kazakh" class="interlanguage-link-target"><span>Қазақша</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/Java_virtu%C3%A1lis_g%C3%A9p" title="Java virtuális gép – Hungarian" lang="hu" hreflang="hu" data-title="Java virtuális gép" data-language-autonym="Magyar" data-language-local-name="Hungarian" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-ml mw-list-item"><a href="https://ml.wikipedia.org/wiki/%E0%B4%9C%E0%B4%BE%E0%B4%B5_%E0%B4%B5%E0%B5%86%E0%B5%BC%E0%B4%9A%E0%B5%8D%E0%B4%B5%E0%B5%BD_%E0%B4%AE%E0%B5%86%E0%B4%B7%E0%B5%80%E0%B5%BB" title="ജാവ വെർച്വൽ മെഷീൻ – Malayalam" lang="ml" hreflang="ml" data-title="ജാവ വെർച്വൽ മെഷീൻ" data-language-autonym="മലയാളം" data-language-local-name="Malayalam" class="interlanguage-link-target"><span>മലയാളം</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/Mesin_maya_Java" title="Mesin maya Java – Malay" lang="ms" hreflang="ms" data-title="Mesin maya Java" data-language-autonym="Bahasa Melayu" data-language-local-name="Malay" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-mn mw-list-item"><a href="https://mn.wikipedia.org/wiki/Java_virtual_machine" title="Java virtual machine – Mongolian" lang="mn" hreflang="mn" data-title="Java virtual machine" data-language-autonym="Монгол" data-language-local-name="Mongolian" class="interlanguage-link-target"><span>Монгол</span></a></li><li class="interlanguage-link interwiki-my mw-list-item"><a href="https://my.wikipedia.org/wiki/Java_%E1%80%92%E1%80%BC%E1%80%95%E1%80%BA%E1%80%99%E1%80%B2%E1%80%B7%E1%80%85%E1%80%80%E1%80%BA" title="Java ဒြပ်မဲ့စက် – Burmese" lang="my" hreflang="my" data-title="Java ဒြပ်မဲ့စက်" data-language-autonym="မြန်မာဘာသာ" data-language-local-name="Burmese" class="interlanguage-link-target"><span>မြန်မာဘာသာ</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/Java_Virtual_Machine" title="Java Virtual Machine – Dutch" lang="nl" hreflang="nl" data-title="Java Virtual Machine" data-language-autonym="Nederlands" data-language-local-name="Dutch" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/Java%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3" title="Java仮想マシン – Japanese" lang="ja" hreflang="ja" data-title="Java仮想マシン" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-uz mw-list-item"><a href="https://uz.wikipedia.org/wiki/Java_Virtual_Machine" title="Java Virtual Machine – Uzbek" lang="uz" hreflang="uz" data-title="Java Virtual Machine" data-language-autonym="Oʻzbekcha / ўзбекча" data-language-local-name="Uzbek" class="interlanguage-link-target"><span>Oʻzbekcha / ўзбекча</span></a></li><li class="interlanguage-link interwiki-pa mw-list-item"><a href="https://pa.wikipedia.org/wiki/%E0%A8%9C%E0%A8%BE%E0%A8%B5%E0%A8%BE_%E0%A8%B5%E0%A8%B0%E0%A8%9A%E0%A9%81%E0%A8%85%E0%A8%B2_%E0%A8%AE%E0%A8%B8%E0%A8%BC%E0%A9%80%E0%A8%A8" title="ਜਾਵਾ ਵਰਚੁਅਲ ਮਸ਼ੀਨ – Punjabi" lang="pa" hreflang="pa" data-title="ਜਾਵਾ ਵਰਚੁਅਲ ਮਸ਼ੀਨ" data-language-autonym="ਪੰਜਾਬੀ" data-language-local-name="Punjabi" class="interlanguage-link-target"><span>ਪੰਜਾਬੀ</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/Wirtualna_maszyna_Javy" title="Wirtualna maszyna Javy – Polish" lang="pl" hreflang="pl" data-title="Wirtualna maszyna Javy" data-language-autonym="Polski" data-language-local-name="Polish" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/M%C3%A1quina_virtual_Java" title="Máquina virtual Java – Portuguese" lang="pt" hreflang="pt" data-title="Máquina virtual Java" data-language-autonym="Português" data-language-local-name="Portuguese" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/Java_Virtual_Machine" title="Java Virtual Machine – Russian" lang="ru" hreflang="ru" data-title="Java Virtual Machine" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-sq mw-list-item"><a href="https://sq.wikipedia.org/wiki/Java_Virtual_Machine" title="Java Virtual Machine – Albanian" lang="sq" hreflang="sq" data-title="Java Virtual Machine" data-language-autonym="Shqip" data-language-local-name="Albanian" class="interlanguage-link-target"><span>Shqip</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wikipedia.org/wiki/Java_virtual_machine" title="Java virtual machine – Simple English" lang="en-simple" hreflang="en-simple" data-title="Java virtual machine" data-language-autonym="Simple English" data-language-local-name="Simple English" class="interlanguage-link-target"><span>Simple English</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/Java_%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B5%D0%BB%D0%BD%D0%B0_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0" title="Java виртуелна машина – Serbian" lang="sr" hreflang="sr" data-title="Java виртуелна машина" data-language-autonym="Српски / srpski" data-language-local-name="Serbian" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-sh mw-list-item"><a href="https://sh.wikipedia.org/wiki/Java_(virtualna_ma%C5%A1ina)" title="Java (virtualna mašina) – Serbo-Croatian" lang="sh" hreflang="sh" data-title="Java (virtualna mašina)" data-language-autonym="Srpskohrvatski / српскохрватски" data-language-local-name="Serbo-Croatian" class="interlanguage-link-target"><span>Srpskohrvatski / српскохрватски</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/Java-virtuaalikone" title="Java-virtuaalikone – Finnish" lang="fi" hreflang="fi" data-title="Java-virtuaalikone" data-language-autonym="Suomi" data-language-local-name="Finnish" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/Java_Virtual_Machine" title="Java Virtual Machine – Swedish" lang="sv" hreflang="sv" data-title="Java Virtual Machine" data-language-autonym="Svenska" data-language-local-name="Swedish" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-ta mw-list-item"><a href="https://ta.wikipedia.org/wiki/%E0%AE%9C%E0%AE%BE%E0%AE%B5%E0%AE%BE_%E0%AE%AE%E0%AF%86%E0%AE%AF%E0%AF%8D%E0%AE%A8%E0%AE%BF%E0%AE%95%E0%AE%B0%E0%AF%8D_%E0%AE%87%E0%AE%AF%E0%AE%A8%E0%AF%8D%E0%AE%A4%E0%AE%BF%E0%AE%B0%E0%AE%AE%E0%AF%8D" title="ஜாவா மெய்நிகர் இயந்திரம் – Tamil" lang="ta" hreflang="ta" data-title="ஜாவா மெய்நிகர் இயந்திரம்" data-language-autonym="தமிழ்" data-language-local-name="Tamil" class="interlanguage-link-target"><span>தமிழ்</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/Java_sanal_makinesi" title="Java sanal makinesi – Turkish" lang="tr" hreflang="tr" data-title="Java sanal makinesi" data-language-autonym="Türkçe" data-language-local-name="Turkish" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%92%D1%96%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_Java" title="Віртуальна машина Java – Ukrainian" lang="uk" hreflang="uk" data-title="Віртуальна машина Java" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/M%C3%A1y_%E1%BA%A3o_Java" title="Máy ảo Java – Vietnamese" lang="vi" hreflang="vi" data-title="Máy ảo Java" data-language-autonym="Tiếng Việt" data-language-local-name="Vietnamese" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/Java%E8%99%9A%E6%8B%9F%E6%9C%BA" title="Java虚拟机 – Chinese" lang="zh" hreflang="zh" data-title="Java虚拟机" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q193321#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Java_virtual_machine" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Java_virtual_machine" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Java_virtual_machine"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Java_virtual_machine&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Java_virtual_machine&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Java_virtual_machine"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Java_virtual_machine&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Java_virtual_machine&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Java_virtual_machine" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Java_virtual_machine" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Java_virtual_machine&oldid=1243042627" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Java_virtual_machine&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=Java_virtual_machine&id=1243042627&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FJava_virtual_machine"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FJava_virtual_machine"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Java_virtual_machine&action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Java_virtual_machine&printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-commons mw-list-item"><a href="https://commons.wikimedia.org/wiki/Category:Java_Virtual_Machine" hreflang="en"><span>Wikimedia Commons</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q193321" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Virtual machine that runs Java programs</div> <style data-mw-deduplicate="TemplateStyles:r1236090951">.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}</style><div role="note" class="hatnote navigation-not-searchable">"JVM" redirects here. For other uses, see <a href="/wiki/JVM_(disambiguation)" class="mw-disambig" title="JVM (disambiguation)">JVM (disambiguation)</a>.</div> <style data-mw-deduplicate="TemplateStyles:r1257001546">.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme) div:not(.notheme){background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table tr{display:table-row!important}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}</style><table class="infobox"><caption class="infobox-title">Java virtual machine</caption><tbody><tr><th scope="row" class="infobox-label">Designer</th><td class="infobox-data"><a href="/wiki/Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a></td></tr><tr><th scope="row" class="infobox-label">Bits</th><td class="infobox-data"><a href="/wiki/32-bit_computing" title="32-bit computing">32-bit</a></td></tr><tr><th scope="row" class="infobox-label">Introduced</th><td class="infobox-data">1994</td></tr><tr><th scope="row" class="infobox-label">Version</th><td class="infobox-data">20.0.1<sup id="cite_ref-latest-stable-JDK20_1-0" class="reference"><a href="#cite_note-latest-stable-JDK20-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></td></tr><tr><th scope="row" class="infobox-label">Type</th><td class="infobox-data"><a href="/wiki/Stack_machine" title="Stack machine">Stack</a> and <a href="/wiki/Load%E2%80%93store_architecture" title="Load–store architecture">register–register</a></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Instruction_set" class="mw-redirect" title="Instruction set">Encoding</a></th><td class="infobox-data">Variable</td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Branch_(computer_science)" title="Branch (computer science)">Branching</a></th><td class="infobox-data">Compare and branch</td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Endianness" title="Endianness">Endianness</a></th><td class="infobox-data"><a href="/wiki/Endianness#Big-endian" title="Endianness">Big</a></td></tr><tr><th scope="row" class="infobox-label">Open</th><td class="infobox-data">Yes</td></tr><tr><th colspan="2" class="infobox-header"><a href="/wiki/Processor_register" title="Processor register">Registers</a></th></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/General-purpose_register" class="mw-redirect" title="General-purpose register">General-purpose</a></th><td class="infobox-data">Per-method operand stack (up to 65535 operands) plus per-method local variables (up to 65535)</td></tr></tbody></table> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:JvmSpec7.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/d/dd/JvmSpec7.png/220px-JvmSpec7.png" decoding="async" width="220" height="133" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/dd/JvmSpec7.png/330px-JvmSpec7.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/dd/JvmSpec7.png/440px-JvmSpec7.png 2x" data-file-width="1152" data-file-height="698" /></a><figcaption>Overview of a Java virtual machine (JVM) architecture based on The Java Virtual Machine Specification Java SE 7 Edition</figcaption></figure> <p>A <b>Java virtual machine</b> (<b>JVM</b>) is a <a href="/wiki/Virtual_machine" title="Virtual machine">virtual machine</a> that enables a computer to run <a href="/wiki/Java_(software_platform)" title="Java (software platform)">Java</a> programs as well as programs written in <a href="/wiki/List_of_JVM_languages" title="List of JVM languages">other languages</a> that are also compiled to <a href="/wiki/Java_bytecode" title="Java bytecode">Java bytecode</a>. The JVM is detailed by a <a href="/wiki/Specification_(technical_standard)" title="Specification (technical standard)">specification</a> that formally describes what is required in a JVM implementation. Having a specification ensures interoperability of Java programs across different implementations so that program authors using the <a href="/wiki/Java_Development_Kit" title="Java Development Kit">Java Development Kit</a> (JDK) need not worry about idiosyncrasies of the underlying hardware platform. </p><p>The JVM <a href="/wiki/Reference_implementation" title="Reference implementation">reference implementation</a> is developed by the <a href="/wiki/OpenJDK" title="OpenJDK">OpenJDK</a> project as <a href="/wiki/Open-source_software" title="Open-source software">open source</a> code and includes a <a href="/wiki/JIT_compiler" class="mw-redirect" title="JIT compiler">JIT compiler</a> called <a href="/wiki/HotSpot_(virtual_machine)" title="HotSpot (virtual machine)">HotSpot</a>. The commercially supported Java releases available from <a href="/wiki/Oracle_Corporation" title="Oracle Corporation">Oracle</a> are based on the OpenJDK runtime. Eclipse <a href="/wiki/OpenJ9" title="OpenJ9">OpenJ9</a> is another open source JVM for OpenJDK. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="JVM_specification">JVM specification</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_virtual_machine&action=edit&section=1" title="Edit section: JVM specification"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The Java virtual machine is an abstract (virtual) computer defined by a specification. It is a part of the Java runtime environment. The <a href="/wiki/Garbage_collection_(computer_science)" title="Garbage collection (computer science)">garbage collection</a> algorithm used and any internal optimization of the Java virtual machine instructions (their translation into <a href="/wiki/Machine_code" title="Machine code">machine code</a>) are not specified. The main reason for this omission is to not unnecessarily constrain implementers. Any Java application can be run only inside some concrete implementation of the abstract specification of the Java virtual machine.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> </p><p>Starting with <a href="/wiki/Java_Platform,_Standard_Edition" title="Java Platform, Standard Edition">Java Platform, Standard Edition</a> (J2SE) 5.0, changes to the JVM specification have been developed under the <a href="/wiki/Java_Community_Process" title="Java Community Process">Java Community Process</a> as JSR 924.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> As of 2006<sup class="plainlinks noexcerpt noprint asof-tag update" style="display:none;"><a class="external text" href="https://en.wikipedia.org/w/index.php?title=Java_virtual_machine&action=edit">[update]</a></sup>, changes to the specification to support changes proposed to the <a href="/wiki/Class_(file_format)" class="mw-redirect" title="Class (file format)">class file format</a> (JSR 202)<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> are being done as a maintenance release of JSR 924. The specification for the JVM was published as the <i>blue book</i>,<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> whose preface states: </p> <style data-mw-deduplicate="TemplateStyles:r1244412712">.mw-parser-output .templatequote{overflow:hidden;margin:1em 0;padding:0 32px}.mw-parser-output .templatequotecite{line-height:1.5em;text-align:left;margin-top:0}@media(min-width:500px){.mw-parser-output .templatequotecite{padding-left:1.6em}}</style><blockquote class="templatequote"><p><a href="/wiki/Sun_Microsystems" title="Sun Microsystems">We</a> intend that this specification should sufficiently document the Java Virtual Machine to make possible compatible clean-room implementations. Oracle provides tests that verify the proper operation of implementations of the Java Virtual Machine.</p></blockquote> <p>One of Oracle's JVMs is named HotSpot; the other, inherited from <a href="/wiki/BEA_Systems" title="BEA Systems">BEA Systems</a>, is <a href="/wiki/JRockit" title="JRockit">JRockit</a>. Oracle owns the Java trademark and may allow its use to certify implementation suites as fully compatible with Oracle's specification. </p> <div class="mw-heading mw-heading3"><h3 id="Class_loader">Class loader</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_virtual_machine&action=edit&section=2" title="Edit section: Class loader"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="/wiki/Java_class_file" title="Java class file">Java class file</a></div> <p>One of the organizational units of JVM byte code is a <a href="/wiki/Class_(computer_programming)" title="Class (computer programming)">class</a>. A class loader implementation must be able to recognize and load anything that conforms to the Java class <a href="/wiki/File_format" title="File format">file format</a>. Any implementation is free to recognize other binary forms besides <i>class</i> files, but it must recognize <i>class</i> files. </p><p>The class loader performs three basic activities in this strict order: </p> <ol><li>Loading: finds and imports the binary data for a type</li> <li>Linking: performs verification, preparation, and (optionally) resolution <ul><li>Verification: ensures the correctness of the imported type</li> <li>Preparation: allocates memory for class variables and initializing the memory to default values</li> <li>Resolution: transforms symbolic references from the type into direct references.</li></ul></li> <li>Initialization: invokes Java code that initializes class variables to their proper starting values.</li></ol> <p>In general, there are three types of class loader: bootstrap class loader, extension class loader and System / Application class loader. </p><p>Every Java virtual machine implementation must have a bootstrap class loader that is capable of loading trusted classes, as well as an extension class loader or application class loader. The Java virtual machine specification does not specify how a class loader should locate classes. </p> <div class="mw-heading mw-heading3"><h3 id="Virtual_machine_architecture">Virtual machine architecture</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_virtual_machine&action=edit&section=3" title="Edit section: Virtual machine architecture"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The JVM operates on specific types of data as specified in Java Virtual Machine specifications. The data types can be divided<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> into primitive types (<a href="/wiki/Integer" title="Integer">integers</a>, Floating-point, long etc.) and Reference types. The earlier JVM were only <a href="/wiki/32-bit_computing" title="32-bit computing">32-bit</a> machines. <code>long</code> and <code>double</code> types, which are <a href="/wiki/64-bit_computing" title="64-bit computing">64-bits</a>, are supported natively, but consume two units of storage in a frame's local variables or operand stack, since each unit is 32 bits. <code>boolean</code>, <code>byte</code>, <code>short</code>, and <code>char</code> types are all <a href="/wiki/Sign-extended" class="mw-redirect" title="Sign-extended">sign-extended</a> (except <code>char</code> which is <a href="/wiki/Sign_extension#zero-extended" title="Sign extension">zero-extended</a>) and operated on as 32-bit integers, the same as <code>int</code> types. The smaller types only have a few type-specific instructions for loading, storing, and type conversion. <code>boolean</code> is operated on as 8-bit <code>byte</code> values, with 0 representing <code>false</code> and 1 representing <code>true</code>. (Although <code>boolean</code> has been treated as a type since <i>The Java Virtual Machine Specification, Second Edition</i> clarified this issue, in compiled and executed code there is little difference between a <code>boolean</code> and a <code>byte</code> except for <a href="/wiki/Name_mangling#Java" title="Name mangling">name mangling</a> in <a href="/wiki/Method_signature" class="mw-redirect" title="Method signature">method signatures</a> and the type of boolean arrays. <code>boolean</code>s in method signatures are mangled as <code>Z</code> while <code>byte</code>s are mangled as <code>B</code>. Boolean arrays carry the type <code>boolean[]</code> but use 8 bits per element, and the JVM has no built-in capability to pack booleans into a <a href="/wiki/Bit_array" title="Bit array">bit array</a>, so except for the type they perform and behave the same as <code>byte</code> arrays. In all other uses, the <code>boolean</code> type is effectively unknown to the JVM as all instructions to operate on booleans are also used to operate on <code>byte</code>s.) However the newer JVM releases (OpenJDK HotSpot JVM) support 64-bit, so you can either have 32-bit/64-bit JVM on a 64-bit OS. The primary advantage of running Java in a 64-bit environment is the larger address space. This allows for a much larger Java heap size and an increased maximum number of Java Threads, which is needed for certain kinds of large applications; however there is a performance hit in using 64-bit JVM compared to 32-bit JVM. </p><p>The JVM has a garbage-collected heap for storing objects and arrays. Code, constants, and other class data are stored in the "method area". The method area is logically part of the heap, but implementations may treat the method area separately from the heap, and for example might not garbage collect it. Each JVM thread also has its own <a href="/wiki/Call_stack" title="Call stack">call stack</a> (called a "Java Virtual Machine stack" for clarity), which stores <a href="/wiki/Call_stack#STACK-FRAME" title="Call stack">frames</a>. A new frame is created each time a method is called, and the frame is destroyed when that method exits. </p><p>Each frame provides an "operand stack" and an array of "local variables". The operand stack is used for operands to run computations and for receiving the return value of a called method, while local variables serve the same purpose as <a href="/wiki/Processor_register" title="Processor register">registers</a> and are also used to pass method arguments. Thus, the JVM is both a <a href="/wiki/Stack_machine" title="Stack machine">stack machine</a> and a <a href="/wiki/Register_machine" title="Register machine">register machine</a>. In practice, HotSpot eliminates every stack besides the native thread/call stack even when running in Interpreted mode, as its Templating Interpreter technically functions as a compiler. </p> <div class="mw-heading mw-heading3"><h3 id="Bytecode_instructions">Bytecode instructions</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_virtual_machine&action=edit&section=4" title="Edit section: Bytecode instructions"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="/wiki/Java_bytecode" title="Java bytecode">Java bytecode</a></div> <p>The JVM has <a href="/wiki/Instruction_(computer_science)" class="mw-redirect" title="Instruction (computer science)">instructions</a> for the following groups of tasks: </p> <style data-mw-deduplicate="TemplateStyles:r1129693374">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}</style><div class="hlist"> <ul><li><a href="/wiki/Load/store_architecture" class="mw-redirect" title="Load/store architecture">Load and store</a></li> <li><a href="/wiki/Arithmetic" title="Arithmetic">Arithmetic</a></li> <li><a href="/wiki/Type_conversion" title="Type conversion">Type conversion</a></li> <li><a href="/wiki/Dynamic_memory_allocation" class="mw-redirect" title="Dynamic memory allocation">Object creation and manipulation</a></li> <li><a href="/wiki/Stack_(abstract_data_type)" title="Stack (abstract data type)">Operand stack management (push / pop)</a></li> <li><a href="/wiki/Branch_(computer_science)" title="Branch (computer science)">Control transfer (branching)</a></li> <li><a href="/wiki/Subroutine" class="mw-redirect" title="Subroutine">Method invocation and return</a></li> <li><a href="/wiki/Exception_handling" title="Exception handling">Throwing exceptions</a></li> <li><a href="/wiki/Monitor_(synchronization)" title="Monitor (synchronization)">Monitor-based concurrency</a></li></ul> </div> <p>The aim is binary compatibility. Each particular host <a href="/wiki/Operating_system" title="Operating system">operating system</a> needs its own implementation of the JVM and runtime. These JVMs interpret the bytecode semantically the same way, but the actual implementation may be different. More complex than just emulating bytecode is compatibly and efficiently implementing the <a href="/wiki/Java_Class_Library" title="Java Class Library">Java core API</a> that must be mapped to each host operating system. </p><p>These instructions operate on a set of common <style data-mw-deduplicate="TemplateStyles:r1238216509">.mw-parser-output .vanchor>:target~.vanchor-text{background-color:#b1d2ff}@media screen{html.skin-theme-clientpref-night .mw-parser-output .vanchor>:target~.vanchor-text{background-color:#0f4dc9}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .vanchor>:target~.vanchor-text{background-color:#0f4dc9}}</style><span class="vanchor"><span id="abstracted_[[data_type]]s"></span><span id="DATA_TYPE"></span><span class="vanchor-text">abstracted <a href="/wiki/Data_type" title="Data type">data types</a></span></span> rather the <a href="/wiki/Native_data_type" class="mw-redirect" title="Native data type">native data types</a> of any specific <a href="/wiki/Instruction_set_architecture" title="Instruction set architecture">instruction set architecture</a>. </p> <div class="mw-heading mw-heading3"><h3 id="JVM_languages">JVM languages</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_virtual_machine&action=edit&section=5" title="Edit section: JVM languages"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="/wiki/List_of_JVM_languages" title="List of JVM languages">List of JVM languages</a></div> <p>A JVM language is any language with functionality that can be expressed in terms of a valid class file which can be hosted by the Java Virtual Machine. A class file contains Java Virtual Machine instructions (<a href="/wiki/Java_byte_code" class="mw-redirect" title="Java byte code">Java byte code</a>) and a symbol table, as well as other ancillary information. The class file format is the hardware- and operating system-independent binary format used to represent compiled classes and interfaces.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> </p><p>There are several JVM languages, both old languages ported to JVM and completely new languages. <a href="/wiki/JRuby" title="JRuby">JRuby</a> and <a href="/wiki/Jython" title="Jython">Jython</a> are perhaps the most well-known ports of existing languages, i.e. <a href="/wiki/Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a> and <a href="/wiki/Python_(programming_language)" title="Python (programming language)">Python</a> respectively. Of the new languages that have been created from scratch to compile to Java bytecode, <a href="/wiki/Clojure" title="Clojure">Clojure</a>, <a href="/wiki/Apache_Groovy" title="Apache Groovy">Groovy</a>, <a href="/wiki/Scala_(programming_language)" title="Scala (programming language)">Scala</a> and <a href="/wiki/Kotlin_(programming_language)" title="Kotlin (programming language)">Kotlin</a> may be the most popular ones. A notable feature with the JVM languages is that they are <a href="/wiki/Language_interoperability" title="Language interoperability">compatible with each other</a>, so that, for example, Scala libraries can be used with Java programs and vice versa.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> </p><p>Java 7 JVM implements <i>JSR 292: Supporting Dynamically Typed Languages</i><sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> on the Java Platform, a new feature which supports dynamically typed languages in the JVM. This feature is developed within the <a href="/wiki/Da_Vinci_Machine" title="Da Vinci Machine">Da Vinci Machine</a> project whose mission is to extend the JVM so that it supports languages other than Java.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Bytecode_verifier">Bytecode verifier</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_virtual_machine&action=edit&section=6" title="Edit section: Bytecode verifier"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A basic philosophy of Java is that it is inherently safe from the standpoint that no user program can crash the host machine or otherwise interfere inappropriately with other operations on the host machine, and that it is possible to protect certain methods and data structures belonging to trusted code from access or corruption by untrusted code executing within the same JVM. Furthermore, common programmer errors that often led to data corruption or unpredictable behavior such as accessing off the end of an array or using an uninitialized pointer are not allowed to occur. Several features of Java combine to provide this safety, including the class model, the garbage-collected <a href="#Heap">heap</a>, and the verifier. </p><p>The JVM verifies all bytecode before it is executed. This verification consists primarily of three types of checks: </p> <ul><li>Branches are always to valid locations</li> <li>Data is always initialized and references are always type-safe</li> <li>Access to private or package private data and methods is rigidly controlled</li></ul> <p>The first two of these checks take place primarily during the verification step that occurs when a class is loaded and made eligible for use. The third is primarily performed dynamically, when data items or methods of a class are first accessed by another class. </p><p>The verifier permits only some bytecode sequences in valid programs, e.g. a <a href="/wiki/Branch_(computer_science)" title="Branch (computer science)">jump (branch) instruction</a> can only target an instruction within the same <a href="/wiki/Method_(computer_programming)" title="Method (computer programming)">method</a>. Furthermore, the verifier ensures that any given instruction operates on a fixed stack location,<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> allowing the JIT compiler to transform stack accesses into fixed register accesses. Because of this, that the JVM is a stack architecture does not imply a speed penalty for emulation on <a href="/wiki/Register_machine" title="Register machine">register-based architectures</a> when using a JIT compiler. In the face of the code-verified JVM architecture, it makes no difference to a JIT compiler whether it gets named imaginary registers or imaginary stack positions that must be allocated to the target architecture's registers. In fact, code verification makes the JVM different from a classic stack architecture, of which efficient emulation with a JIT compiler is more complicated and typically carried out by a slower interpreter. Additionally, the Interpreter used by the default JVM is a special type known as a Template Interpreter, which translates bytecode directly to native, register based machine language rather than emulate a stack like a typical interpreter.<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> In many aspects the HotSpot Interpreter can be considered a JIT compiler rather than a true interpreter, meaning the stack architecture that the bytecode targets is not actually used in the implementation, but merely a specification for the intermediate representation that can well be implemented in a register based architecture. Another instance of a stack architecture being merely a specification and implemented in a register based virtual machine is the <a href="/wiki/Common_Language_Runtime" title="Common Language Runtime">Common Language Runtime</a>.<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> </p><p>The original specification for the bytecode verifier used natural language that was incomplete or incorrect in some respects. A number of attempts have been made to specify the JVM as a formal system. By doing this, the security of current JVM implementations can more thoroughly be analyzed, and potential security exploits prevented. It will also be possible to optimize the JVM by skipping unnecessary safety checks, if the application being run is proven to be safe.<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading4"><h4 id="Secure_execution_of_remote_code">Secure execution of remote code</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_virtual_machine&action=edit&section=7" title="Edit section: Secure execution of remote code"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A virtual machine architecture allows very fine-grained control over the actions that code within the machine is permitted to take. It assumes the code is "semantically" correct, that is, it successfully passed the (formal) bytecode verifier process, materialized by a tool, possibly off-board the virtual machine. This is designed to allow safe execution of untrusted code from remote sources, a model used by <a href="/wiki/Java_applet" title="Java applet">Java applets</a>, and other secure code downloads. Once bytecode-verified, the downloaded code runs in a restricted "<a href="/wiki/Sandbox_(computer_security)" title="Sandbox (computer security)">sandbox</a>", which is designed to protect the user from misbehaving or malicious code. As an addition to the bytecode verification process, publishers can purchase a certificate with which to <a href="/wiki/Digital_signature" title="Digital signature">digitally sign</a> applets as safe, giving them permission to ask the user to break out of the sandbox and access the local file system, <a href="/wiki/Clipboard_(software)" class="mw-redirect" title="Clipboard (software)">clipboard</a>, execute external pieces of software, or network. </p><p>Formal proof of bytecode verifiers have been done by the Javacard industry (Formal Development of an Embedded Verifier for Java Card Byte Code<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>) </p> <div class="mw-heading mw-heading3"><h3 id="Bytecode_interpreter_and_just-in-time_compiler">Bytecode interpreter and just-in-time compiler</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_virtual_machine&action=edit&section=8" title="Edit section: Bytecode interpreter and just-in-time compiler"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>For each <a href="/wiki/Hardware_architecture" title="Hardware architecture">hardware architecture</a> a different Java bytecode <a href="/wiki/Interpreter_(computing)" title="Interpreter (computing)">interpreter</a> is needed. When a computer has a Java bytecode interpreter, it can run any Java bytecode program, and the same program can be run on any computer that has such an interpreter. </p><p>When Java bytecode is executed by an interpreter, the execution will always be slower than the execution of the same program compiled into native machine language. This problem is mitigated by <a href="/wiki/Just-in-time_compilation" title="Just-in-time compilation">just-in-time (JIT) compilers</a> for executing Java bytecode. A JIT compiler may translate Java bytecode into native machine language while executing the program. The translated parts of the program can then be executed much more quickly than they could be interpreted. This technique gets applied to those parts of a program frequently executed. This way a JIT compiler can significantly speed up the overall execution time. </p><p>There is no necessary connection between the Java programming language and Java bytecode. A program written in Java can be compiled directly into the machine language of a real computer and programs written in other languages than Java can be compiled into Java bytecode. </p><p>Java bytecode is intended to be platform-independent and secure.<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> Some JVM implementations do not include an interpreter, but consist only of a just-in-time compiler.<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="JVM_in_the_web_browser">JVM in the web browser</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_virtual_machine&action=edit&section=9" title="Edit section: JVM in the web browser"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>At the start of the Java platform's lifetime, the JVM was marketed as a web technology for creating <a href="/wiki/Rich_web_application" class="mw-redirect" title="Rich web application">Rich Web Applications</a>. As of 2018<sup class="plainlinks noexcerpt noprint asof-tag update" style="display:none;"><a class="external text" href="https://en.wikipedia.org/w/index.php?title=Java_virtual_machine&action=edit">[update]</a></sup>, most web browsers and operating systems bundling web browsers do not ship with a Java <a href="/wiki/Plug-in_(computing)" title="Plug-in (computing)">plug-in</a>, nor do they permit side-loading any non-<a href="/wiki/Adobe_Flash" title="Adobe Flash">Flash</a> plug-in. The Java browser plugin was deprecated in <a href="/wiki/JDK" class="mw-redirect" title="JDK">JDK</a> 9.<sup id="cite_ref-ars-nopluginjdk9_19-0" class="reference"><a href="#cite_note-ars-nopluginjdk9-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup> </p><p>The <a href="/wiki/NPAPI" title="NPAPI">NPAPI</a> Java browser plug-in was designed to allow the JVM to execute so-called <a href="/wiki/Java_applets" class="mw-redirect" title="Java applets">Java applets</a> embedded into HTML pages. For browsers with the plug-in installed, the applet is allowed to draw into a rectangular region on the page assigned to it. Because the plug-in includes a JVM, Java applets are not restricted to the Java programming language; any language targeting the JVM may run in the plug-in. A restricted set of APIs allow applets access to the user's microphone or 3D acceleration, although applets are not able to modify the page outside its rectangular region. <a href="/wiki/Adobe_Flash_Player" title="Adobe Flash Player">Adobe Flash Player</a>, the main competing technology, works in the same way in this respect. </p><p>As of June 2015<sup class="plainlinks noexcerpt noprint asof-tag update" style="display:none;"><a class="external text" href="https://en.wikipedia.org/w/index.php?title=Java_virtual_machine&action=edit">[update]</a></sup> according to W3Techs, Java applet and <a href="/wiki/Microsoft_Silverlight" title="Microsoft Silverlight">Silverlight</a> use had fallen to 0.1% each for all web sites, while Flash had fallen to 10.8%.<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="JavaScript_JVMs_and_interpreters">JavaScript JVMs and interpreters</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_virtual_machine&action=edit&section=10" title="Edit section: JavaScript JVMs and interpreters"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Since May 2016, JavaPoly allows users to import unmodified Java libraries, and invoke them directly from JavaScript. JavaPoly allows websites to use unmodified Java libraries, even if the user does not have Java installed on their computer.<sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Transpilation_to_JavaScript">Transpilation to JavaScript</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_virtual_machine&action=edit&section=11" title="Edit section: Transpilation to JavaScript"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>With the continuing improvements in JavaScript execution speed, combined with the increased use of mobile devices whose web browsers do not implement support for plugins, there are efforts to target those users through <a href="/wiki/Transpile" class="mw-redirect" title="Transpile">transpilation</a> to JavaScript. It is possible to either transpile the source code or JVM bytecode to JavaScript. </p><p>Compiling the JVM bytecode, which is universal across JVM languages, allows building upon the language's existing compiler to bytecode. The main JVM bytecode to JavaScript transpilers are TeaVM,<sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup> the compiler contained in Dragome Web SDK,<sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup> Bck2Brwsr,<sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup> and j2js-compiler.<sup id="cite_ref-25" class="reference"><a href="#cite_note-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup> </p><p>Leading transpilers from JVM languages to JavaScript include the Java-to-JavaScript transpiler contained in <a href="/wiki/Google_Web_Toolkit" title="Google Web Toolkit">Google Web Toolkit</a>, Clojurescript (Clojure), GrooScript (Apache Groovy), Scala.js (Scala) and others.<sup id="cite_ref-26" class="reference"><a href="#cite_note-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_virtual_machine&action=edit&section=12" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239009302">.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{clear:left;float:left;margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}</style><ul role="navigation" aria-label="Portals" class="noprint portalbox portalborder portalright"> <li class="portalbox-entry"><span class="portalbox-image"><span class="noviewer" typeof="mw:File"><a href="/wiki/File:Octicons-terminal.svg" class="mw-file-description"><img alt="icon" src="//upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/24px-Octicons-terminal.svg.png" decoding="async" width="24" height="28" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/37px-Octicons-terminal.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/49px-Octicons-terminal.svg.png 2x" data-file-width="896" data-file-height="1024" /></a></span></span><span class="portalbox-link"><a href="/wiki/Portal:Computer_programming" title="Portal:Computer programming">Computer programming portal</a></span></li></ul> <ul><li><a href="/wiki/Common_Language_Runtime" title="Common Language Runtime">Common Language Runtime</a></li> <li><a href="/wiki/List_of_Java_virtual_machines" title="List of Java virtual machines">List of Java virtual machines</a></li> <li><a href="/wiki/List_of_JVM_languages" title="List of JVM languages">List of JVM languages</a></li> <li><a href="/wiki/Comparison_of_Java_virtual_machines" title="Comparison of Java virtual machines">Comparison of Java virtual machines</a></li> <li><a href="/wiki/Comparison_of_application_virtualization_software" title="Comparison of application virtualization software">Comparison of application virtualization software</a></li> <li><a href="/wiki/Automated_exception_handling" title="Automated exception handling">Automated exception handling</a></li> <li><a href="/wiki/Java_performance" title="Java performance">Java performance</a></li> <li><a href="/wiki/Java_processor" title="Java processor">Java processor</a></li> <li><a href="/wiki/K_virtual_machine" title="K virtual machine">K virtual machine</a> (KVM)</li></ul> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_virtual_machine&action=edit&section=13" title="Edit section: References"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist reflist-columns references-column-width" style="column-width: 30em;"> <ol class="references"> <li id="cite_note-latest-stable-JDK20-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-latest-stable-JDK20_1-0">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite id="CITEREFyan2023" class="citation web cs1">yan (2023-06-24). <a rel="nofollow" class="external text" href="https://www.oracle.com/java/technologies/javase/20u-relnotes.html">"JDK 20 Release Notes"</a>. <i><a href="/wiki/Oracle_Corporation" title="Oracle Corporation">Oracle Corporation</a></i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20210709182235/https://hg.openjdk.java.net/jdk-updates/jdk15u/rev/1055f2102e6e">Archived</a> from the original on 2021-07-09<span class="reference-accessdate">. Retrieved <span class="nowrap">2023-06-24</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Oracle+Corporation&rft.atitle=JDK+20+Release+Notes&rft.date=2023-06-24&rft.au=yan&rft_id=https%3A%2F%2Fwww.oracle.com%2Fjava%2Ftechnologies%2Fjavase%2F20u-relnotes.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text">Bill Venners, <i><a rel="nofollow" class="external text" href="http://www.artima.com/insidejvm/ed2/index.html">Inside the Java Virtual Machine</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20210125092727/http://www.artima.com/insidejvm/ed2/index.html">Archived</a> 2021-01-25 at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a></i> Chapter 5</span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.jcp.org/en/jsr/detail?id=924">"The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 924"</a>. Jcp.org. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20201224125612/https://jcp.org/en/jsr/detail?id=924">Archived</a> from the original on 2020-12-24<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-06-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=The+Java+Community+Process%28SM%29+Program+-+JSRs%3A+Java+Specification+Requests+-+detail+JSR%23+924&rft.pub=Jcp.org&rft_id=http%3A%2F%2Fwww.jcp.org%2Fen%2Fjsr%2Fdetail%3Fid%3D924&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.jcp.org/en/jsr/detail?id=202">"The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 202"</a>. Jcp.org. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20120226185155/http://www.jcp.org/en/jsr/detail?id=202">Archived</a> from the original on 2012-02-26<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-06-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=The+Java+Community+Process%28SM%29+Program+-+JSRs%3A+Java+Specification+Requests+-+detail+JSR%23+202&rft.pub=Jcp.org&rft_id=http%3A%2F%2Fwww.jcp.org%2Fen%2Fjsr%2Fdetail%3Fid%3D202&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><i><a rel="nofollow" class="external text" href="http://java.sun.com/docs/books/vmspec/">The Java Virtual Machine Specification</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20080709010412/http://java.sun.com/docs/books/vmspec/.">Archived</a> 2008-07-09 at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a></i> (the <a rel="nofollow" class="external text" href="http://java.sun.com/docs/books/vmspec/html/VMSpecTOC.doc.html">first</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20081012060813/http://java.sun.com/docs/books/vmspec/html/VMSpecTOC.doc.html">Archived</a> 2008-10-12 at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a> and <a rel="nofollow" class="external text" href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html">second</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20110925050249/http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html">Archived</a> 2011-09-25 at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a> editions are also available online).</span> </li> <li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.2">"Chapter 2. The Structure of the Java Virtual Machine"</a>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20210915050448/https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.2">Archived</a> from the original on 2021-09-15<span class="reference-accessdate">. Retrieved <span class="nowrap">2021-09-15</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Chapter+2.+The+Structure+of+the+Java+Virtual+Machine&rft_id=https%3A%2F%2Fdocs.oracle.com%2Fjavase%2Fspecs%2Fjvms%2Fse8%2Fhtml%2Fjvms-2.html%23jvms-2.2&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://docs.oracle.com/javase/specs/jvms/se7/jvms7.pdf">"The Java Virtual Machine Specification : Java SE 7 Edition"</a> <span class="cs1-format">(PDF)</span>. Docs.oracle.com. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20210204093304/https://docs.oracle.com/javase/specs/jvms/se7/jvms7.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on 2021-02-04<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-06-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=The+Java+Virtual+Machine+Specification+%3A+Java+SE+7+Edition&rft.pub=Docs.oracle.com&rft_id=http%3A%2F%2Fdocs.oracle.com%2Fjavase%2Fspecs%2Fjvms%2Fse7%2Fjvms7.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.scala-lang.org/old/faq/4">"Frequently Asked Questions - Java Interoperability"</a>. <i>scala-lang.org</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20200809214018/https://www.scala-lang.org/old/faq/4">Archived</a> from the original on 2020-08-09<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-11-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=scala-lang.org&rft.atitle=Frequently+Asked+Questions+-+Java+Interoperability&rft_id=http%3A%2F%2Fwww.scala-lang.org%2Fold%2Ffaq%2F4&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://jcp.org/en/jsr/detail?id=292">"The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 292"</a>. Jcp.org. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20201220200733/https://jcp.org/en/jsr/detail?id=292">Archived</a> from the original on 2020-12-20<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-06-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=The+Java+Community+Process%28SM%29+Program+-+JSRs%3A+Java+Specification+Requests+-+detail+JSR%23+292&rft.pub=Jcp.org&rft_id=https%3A%2F%2Fjcp.org%2Fen%2Fjsr%2Fdetail%3Fid%3D292&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://openjdk.java.net/projects/mlvm/">"Da Vinci Machine project"</a>. Openjdk.java.net. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20201111162302/https://openjdk.java.net/projects/mlvm/">Archived</a> from the original on 2020-11-11<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-06-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Da+Vinci+Machine+project&rft.pub=Openjdk.java.net&rft_id=http%3A%2F%2Fopenjdk.java.net%2Fprojects%2Fmlvm%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.oracle.com/technetwork/articles/javase/dyntypelang-142348.html">"New JDK 7 Feature: Support for Dynamically Typed Languages in the Java Virtual Machine"</a>. Oracle.com. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20180913101203/http://www.oracle.com/technetwork/articles/javase/dyntypelang-142348.html">Archived</a> from the original on 2018-09-13<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-06-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=New+JDK+7+Feature%3A+Support+for+Dynamically+Typed+Languages+in+the+Java+Virtual+Machine&rft.pub=Oracle.com&rft_id=http%3A%2F%2Fwww.oracle.com%2Ftechnetwork%2Farticles%2Fjavase%2Fdyntypelang-142348.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#9766">"The Verification process"</a>. <i>The Java Virtual Machine Specification</i>. Sun Microsystems. 1999. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20110321165204/http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#9766">Archived</a> from the original on 2011-03-21<span class="reference-accessdate">. Retrieved <span class="nowrap">2009-05-31</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=The+Java+Virtual+Machine+Specification&rft.atitle=The+Verification+process&rft.date=1999&rft_id=http%3A%2F%2Fjava.sun.com%2Fdocs%2Fbooks%2Fjvms%2Fsecond_edition%2Fhtml%2FClassFile.doc.html%239766&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://openjdk.java.net/groups/hotspot/docs/RuntimeOverview.html#Interpreter">"HotSpot Runtime Overview - Interpreter"</a>. <i>OpenJDK</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20220521024017/https://openjdk.java.net/groups/hotspot/docs/RuntimeOverview.html#Interpreter">Archived</a> from the original on 2022-05-21<span class="reference-accessdate">. Retrieved <span class="nowrap">2021-05-24</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=OpenJDK&rft.atitle=HotSpot+Runtime+Overview+-+Interpreter&rft_id=https%3A%2F%2Fopenjdk.java.net%2Fgroups%2Fhotspot%2Fdocs%2FRuntimeOverview.html%23Interpreter&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/dotnet/runtime/issues/4775">"Why not make CLR register-based? · Issue #4775 · dotnet/runtime"</a>. <i>GitHub</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20230420122729/https://github.com/dotnet/runtime/issues/4775">Archived</a> from the original on 2023-04-20<span class="reference-accessdate">. Retrieved <span class="nowrap">2021-05-24</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=GitHub&rft.atitle=Why+not+make+CLR+register-based%3F+%C2%B7+Issue+%234775+%C2%B7+dotnet%2Fruntime&rft_id=https%3A%2F%2Fgithub.com%2Fdotnet%2Fruntime%2Fissues%2F4775&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFFreundMitchell1999" class="citation book cs1">Freund, Stephen N.; Mitchell, John C. (1999). "A formal framework for the Java bytecode language and verifier". <i>Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications - OOPSLA '99</i>. pp. 147–166. <a href="/wiki/CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.2.4663">10.1.1.2.4663</a></span>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F320384.320397">10.1145/320384.320397</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1581132380" title="Special:BookSources/978-1581132380"><bdi>978-1581132380</bdi></a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:14302964">14302964</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=A+formal+framework+for+the+Java+bytecode+language+and+verifier&rft.btitle=Proceedings+of+the+14th+ACM+SIGPLAN+conference+on+Object-oriented+programming%2C+systems%2C+languages%2C+and+applications+-+OOPSLA+%2799&rft.pages=147-166&rft.date=1999&rft_id=https%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fsummary%3Fdoi%3D10.1.1.2.4663%23id-name%3DCiteSeerX&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A14302964%23id-name%3DS2CID&rft_id=info%3Adoi%2F10.1145%2F320384.320397&rft.isbn=978-1581132380&rft.aulast=Freund&rft.aufirst=Stephen+N.&rft.au=Mitchell%2C+John+C.&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFCassetBurdyRequet2002" class="citation web cs1">Casset, Ludovic; Burdy, Lilian; Requet, Antoine (10 April 2002). <a rel="nofollow" class="external text" href="http://www-sop.inria.fr/everest/Lilian.Burdy/CBR02dsn.pdf">"Formal Development of an Embedded Verifier for Java Card Byte Code"</a> <span class="cs1-format">(PDF)</span>. <i>Inria - National Institute for Research in Digital Science and Technology at <a href="/wiki/C%C3%B4te_d%27Azur_University#National_research_organizations" title="Côte d'Azur University">Côte d'Azur University</a></i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20221003184410/http://www-sop.inria.fr/everest/Lilian.Burdy/CBR02dsn.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on 3 October 2022.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Inria+-+National+Institute+for+Research+in+Digital+Science+and+Technology+at+C%C3%B4te+d%27Azur+University&rft.atitle=Formal+Development+of+an+Embedded+Verifier+for+Java+Card+Byte+Code&rft.date=2002-04-10&rft.aulast=Casset&rft.aufirst=Ludovic&rft.au=Burdy%2C+Lilian&rft.au=Requet%2C+Antoine&rft_id=http%3A%2F%2Fwww-sop.inria.fr%2Feverest%2FLilian.Burdy%2FCBR02dsn.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text">David J. Eck, <i><a rel="nofollow" class="external text" href="http://math.hws.edu/javanotes/c1/s3.html">Introduction to Programming Using Java</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20141011192544/http://math.hws.edu/javanotes/c1/s3.html">Archived</a> 2014-10-11 at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a></i>, Seventh Edition, Version 7.0, August 2014 at Section 1.3 "The Java Virtual Machine"</span> </li> <li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><i><a rel="nofollow" class="external text" href="http://docs.oracle.com/cd/E15289_01/doc.40/e15058/underst_jit.htm">Oracle JRockit Introduction</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20150906145705/http://docs.oracle.com/cd/E15289_01/doc.40/e15058/underst_jit.htm">Archived</a> 2015-09-06 at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a></i> Release R28 at 2. "Understanding Just-In-Time Compilation and Optimization"</span> </li> <li id="cite_note-ars-nopluginjdk9-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-ars-nopluginjdk9_19-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://arstechnica.com/information-technology/2016/01/oracle-deprecates-the-java-browser-plugin-prepares-for-its-demise/">"Oracle deprecates the Java browser plugin, prepares for its demise"</a>. <i>Ars Technica</i>. 28 January 2016. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20160408145301/http://arstechnica.com/information-technology/2016/01/oracle-deprecates-the-java-browser-plugin-prepares-for-its-demise/">Archived</a> from the original on 8 April 2016<span class="reference-accessdate">. Retrieved <span class="nowrap">15 April</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Ars+Technica&rft.atitle=Oracle+deprecates+the+Java+browser+plugin%2C+prepares+for+its+demise&rft.date=2016-01-28&rft_id=https%3A%2F%2Farstechnica.com%2Finformation-technology%2F2016%2F01%2Foracle-deprecates-the-java-browser-plugin-prepares-for-its-demise%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://w3techs.com/technologies/history_overview/client_side_language/all/y">"Historical yearly trends in the usage of client-side programming languages, June 2015"</a>. W3techs.com<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-06-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Historical+yearly+trends+in+the+usage+of+client-side+programming+languages%2C+June+2015&rft.pub=W3techs.com&rft_id=http%3A%2F%2Fw3techs.com%2Ftechnologies%2Fhistory_overview%2Fclient_side_language%2Fall%2Fy&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFKrill2016" class="citation magazine cs1">Krill, Paul (13 May 2016). <a rel="nofollow" class="external text" href="http://www.infoworld.com/article/3069995/java/new-javascript-library-brings-java-to-browsers-without-applets.html">"JavaPoly.js imports existing Java code and invokes it directly from JavaScript"</a>. <i>InfoWorld</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20160725024906/http://www.infoworld.com/article/3069995/java/new-javascript-library-brings-java-to-browsers-without-applets.html">Archived</a> from the original on 25 July 2016<span class="reference-accessdate">. Retrieved <span class="nowrap">18 July</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=InfoWorld&rft.atitle=JavaPoly.js+imports+existing+Java+code+and+invokes+it+directly+from+JavaScript&rft.date=2016-05-13&rft.aulast=Krill&rft.aufirst=Paul&rft_id=http%3A%2F%2Fwww.infoworld.com%2Farticle%2F3069995%2Fjava%2Fnew-javascript-library-brings-java-to-browsers-without-applets.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-22"><span class="mw-cite-backlink"><b><a href="#cite_ref-22">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://teavm.org/">"TeaVM project home page"</a>. Teavm.org. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20150627045343/http://teavm.org/">Archived</a> from the original on 2015-06-27<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-06-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=TeaVM+project+home+page&rft.pub=Teavm.org&rft_id=http%3A%2F%2Fteavm.org%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-23"><span class="mw-cite-backlink"><b><a href="#cite_ref-23">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.dragome.com/">"Dragome Web SDK"</a>. Dragome.com. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20150801074231/http://dragome.com/">Archived</a> from the original on 2015-08-01<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-06-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Dragome+Web+SDK&rft.pub=Dragome.com&rft_id=http%3A%2F%2Fwww.dragome.com%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-24"><span class="mw-cite-backlink"><b><a href="#cite_ref-24">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://wiki.apidesign.org/wiki/Bck2Brwsr">"Bck2Brwsr - APIDesign"</a>. Wiki.apidesign.org. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20150627062724/http://wiki.apidesign.org/wiki/Bck2Brwsr">Archived</a> from the original on 2015-06-27<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-06-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Bck2Brwsr+-+APIDesign&rft.pub=Wiki.apidesign.org&rft_id=http%3A%2F%2Fwiki.apidesign.org%2Fwiki%2FBck2Brwsr&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> <li id="cite_note-25"><span class="mw-cite-backlink"><b><a href="#cite_ref-25">^</a></b></span> <span class="reference-text">Wolfgang Kuehn (decatur). <a rel="nofollow" class="external text" href="https://github.com/decatur/j2js-compiler">j2js-compiler</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20130929131436/https://github.com/decatur/j2js-compiler">Archived</a> 2013-09-29 at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a> GitHub</span> </li> <li id="cite_note-26"><span class="mw-cite-backlink"><b><a href="#cite_ref-26">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js">"List of languages that compile to JS · jashkenas/coffeescript Wiki · GitHub"</a>. Github.com. 2015-06-19. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20200131233044/https://github.com/jashkenas/coffeescript/wiki/List-of-languages-that-compile-to-JS">Archived</a> from the original on 2020-01-31<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-06-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=List+of+languages+that+compile+to+JS+%C2%B7+jashkenas%2Fcoffeescript+Wiki+%C2%B7+GitHub&rft.pub=Github.com&rft.date=2015-06-19&rft_id=https%3A%2F%2Fgithub.com%2Fjashkenas%2Fcoffeescript%2Fwiki%2Flist-of-languages-that-compile-to-js&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+virtual+machine" class="Z3988"></span></span> </li> </ol></div> <style data-mw-deduplicate="TemplateStyles:r1239549316">.mw-parser-output .refbegin{margin-bottom:0.5em}.mw-parser-output .refbegin-hanging-indents>ul{margin-left:0}.mw-parser-output .refbegin-hanging-indents>ul>li{margin-left:0;padding-left:3.2em;text-indent:-3.2em}.mw-parser-output .refbegin-hanging-indents ul,.mw-parser-output .refbegin-hanging-indents ul li{list-style:none}@media(max-width:720px){.mw-parser-output .refbegin-hanging-indents>ul>li{padding-left:1.6em;text-indent:-1.6em}}.mw-parser-output .refbegin-columns{margin-top:0.3em}.mw-parser-output .refbegin-columns ul{margin-top:0}.mw-parser-output .refbegin-columns li{page-break-inside:avoid;break-inside:avoid-column}@media screen{.mw-parser-output .refbegin{font-size:90%}}</style><div class="refbegin" style=""> <ul><li><i><a rel="nofollow" class="external text" href="http://java.sun.com/docs/books/vmspec/2nd-edition/jvms-clarify.html">Clarifications and Amendments to the Java Virtual Machine Specification, Second Edition</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20060110040426/http://java.sun.com/docs/books/vmspec/2nd-edition/jvms-clarify.html">Archived</a> 2006-01-10 at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a></i> includes list of changes to be made to support J2SE 5.0 and JSR 45</li> <li><a rel="nofollow" class="external text" href="http://www.jcp.org/en/jsr/detail?id=45">JSR 45</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20060205094707/http://www.jcp.org/en/jsr/detail?id=45">Archived</a> 2006-02-05 at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a>, specifies changes to the class file format to support source-level debugging of languages such as <a href="/wiki/JavaServer_Pages" class="mw-redirect" title="JavaServer Pages">JavaServer Pages</a> (JSP) and <a href="/wiki/SQLJ" title="SQLJ">SQLJ</a> that are translated to Java</li></ul> </div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><style data-mw-deduplicate="TemplateStyles:r1236075235">.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}</style></div><div role="navigation" class="navbox" aria-labelledby="Java_virtual_machines_(comparison)" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><style data-mw-deduplicate="TemplateStyles:r1239400231">.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}</style><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Java_Virtual_Machine" title="Template:Java Virtual Machine"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Java_Virtual_Machine" title="Template talk:Java Virtual Machine"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Java_Virtual_Machine" title="Special:EditPage/Template:Java Virtual Machine"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Java_virtual_machines_(comparison)" style="font-size:114%;margin:0 4em"><a class="mw-selflink selflink">Java virtual machines</a> (<a href="/wiki/Comparison_of_Java_virtual_machines" title="Comparison of Java virtual machines">comparison</a>)</div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Sun_Microsystems" title="Sun Microsystems">Sun</a>, <a href="/wiki/Oracle_Corporation" title="Oracle Corporation">Oracle</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/GraalVM" title="GraalVM">GraalVM</a></li> <li><a href="/wiki/HotSpot_(virtual_machine)" title="HotSpot (virtual machine)">HotSpot</a></li> <li><a href="/wiki/Maxine_Virtual_Machine" title="Maxine Virtual Machine">Maxine</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Major implementations</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/IKVM.NET" title="IKVM.NET">IKVM.NET</a></li> <li><a href="/wiki/JamVM" title="JamVM">JamVM</a></li> <li><a href="/wiki/Jikes_RVM" title="Jikes RVM">Jikes RVM</a></li> <li><a href="/wiki/OpenJ9" title="OpenJ9">OpenJ9</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Embedded_system" title="Embedded system">Embedded</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Android_Runtime" title="Android Runtime">Android Runtime</a></li> <li><a href="/wiki/JamaicaVM" title="JamaicaVM">JamaicaVM</a></li> <li><a href="/wiki/Mika_VM" title="Mika VM">Mika VM</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Others</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/IcedTea" title="IcedTea">IcedTea</a></li> <li><i><a href="/wiki/List_of_Java_virtual_machines" title="List of Java virtual machines">more…</a></i></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Discontinued</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Apache_Harmony" title="Apache Harmony">Apache Harmony</a></li> <li><a href="/wiki/Dalvik_(software)" title="Dalvik (software)">Dalvik</a></li> <li><a href="/wiki/GNU_Compiler_for_Java" title="GNU Compiler for Java">GCJ</a></li> <li><a href="/wiki/JRockit" title="JRockit">JRockit</a></li> <li><a href="/wiki/JX_(operating_system)" title="JX (operating system)">JX</a></li> <li><a href="/wiki/Kaffe" title="Kaffe">Kaffe</a></li> <li><a href="/wiki/K_virtual_machine" title="K virtual machine">KVM</a></li> <li><a href="/wiki/Microsoft_Java_Virtual_Machine" title="Microsoft Java Virtual Machine">Microsoft JVM</a></li> <li><a href="/wiki/SableVM" title="SableVM">SableVM</a></li> <li><a href="/wiki/Squawk_virtual_machine" title="Squawk virtual machine">Squawk</a></li> <li><a href="/wiki/Jupiter_JVM" title="Jupiter JVM">Jupiter</a></li> <li><a href="/wiki/Excelsior_JET" title="Excelsior JET">Excelsior JET</a></li> <li><i><a href="/wiki/Category:Discontinued_Java_virtual_machines" title="Category:Discontinued Java virtual machines">more…</a></i></li></ul> </div></td></tr></tbody></table></div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236075235"></div><div role="navigation" class="navbox" aria-labelledby="Java_(software_platform)" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="3"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239400231"><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Java_(software_platform)" title="Template:Java (software platform)"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Java_(software_platform)" title="Template talk:Java (software platform)"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Java_(software_platform)" title="Special:EditPage/Template:Java (software platform)"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Java_(software_platform)" style="font-size:114%;margin:0 4em"><a href="/wiki/Java_(software_platform)" title="Java (software platform)">Java (software platform)</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Platforms</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a class="mw-selflink selflink">JVM</a></li> <li><a href="/wiki/Java_Platform,_Micro_Edition" title="Java Platform, Micro Edition">Java ME</a> (Micro)</li> <li><a href="/wiki/Java_Platform,_Standard_Edition" title="Java Platform, Standard Edition">Java SE</a> (Standard)</li> <li><a href="/wiki/Jakarta_EE" title="Jakarta EE">Jakarta EE</a> (Enterprise)</li> <li><a href="/wiki/Java_Card" title="Java Card">Java Card</a></li> <li><a href="/wiki/Android_software_development#SDK" title="Android software development">Android SDK</a></li> <li><a href="/wiki/GraalVM" title="GraalVM">GraalVM</a></li></ul> </div></td><td class="noviewer navbox-image" rowspan="7" style="width:1px;padding:0 0 0 2px"><div><span typeof="mw:File"><a href="/wiki/File:Duke_(Java_mascot)_waving.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Duke_%28Java_mascot%29_waving.svg/75px-Duke_%28Java_mascot%29_waving.svg.png" decoding="async" width="75" height="135" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Duke_%28Java_mascot%29_waving.svg/113px-Duke_%28Java_mascot%29_waving.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Duke_%28Java_mascot%29_waving.svg/150px-Duke_%28Java_mascot%29_waving.svg.png 2x" data-file-width="226" data-file-height="407" /></a></span></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Oracle technologies</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Squawk_virtual_machine" title="Squawk virtual machine">Squawk</a></li> <li><a href="/wiki/Java_Development_Kit" title="Java Development Kit">Java Development Kit</a></li> <li><a href="/wiki/OpenJDK" title="OpenJDK">OpenJDK</a></li> <li><a class="mw-selflink selflink">Java virtual machine</a></li> <li><a href="/wiki/JavaFX" title="JavaFX">JavaFX</a></li> <li><a href="/wiki/Maxine_Virtual_Machine" title="Maxine Virtual Machine">Maxine VM</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Platform technologies</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Jakarta_Servlet" title="Jakarta Servlet">Servlets</a></li> <li><a href="/wiki/MIDlet" title="MIDlet">MIDlets</a></li> <li><a href="/wiki/Jakarta_Server_Pages" title="Jakarta Server Pages">JSP</a></li> <li><a href="/wiki/Jakarta_Faces" title="Jakarta Faces">JSF</a></li> <li><a href="/wiki/Java_Web_Start" title="Java Web Start">Web Start</a> (JNLP)</li> <li><a href="/wiki/Pack200" title="Pack200">Pack200</a></li> <li><a href="/wiki/Java_Platform_Module_System" title="Java Platform Module System">Modules</a></li> <li><a href="/wiki/Java_applet" title="Java applet">applets</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Major third-party<br />technologies</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Eclipse_(software)" title="Eclipse (software)">Eclipse</a></li> <li><a href="/wiki/GNU_Classpath" title="GNU Classpath">GNU Classpath</a></li> <li><a href="/wiki/Hibernate_(framework)" title="Hibernate (framework)">Hibernate</a></li> <li><a href="/wiki/Spring_Framework" title="Spring Framework">Spring</a></li> <li><a href="/wiki/Google_Web_Toolkit" title="Google Web Toolkit">GWT</a></li> <li><a href="/wiki/IcedTea" title="IcedTea">IcedTea</a></li> <li><a href="/wiki/Jazelle" title="Jazelle">Jazelle</a></li> <li><a href="/wiki/Apache_Struts" title="Apache Struts">Struts</a></li> <li><a href="/wiki/Oracle_TopLink" title="Oracle TopLink">TopLink</a></li> <li><a href="/wiki/WildFly" title="WildFly">WildFly</a></li> <li><a href="/wiki/Blackdown_Java" title="Blackdown Java">blackdown</a></li> <li><a href="/wiki/Apache_Harmony" title="Apache Harmony">harmony</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">History</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Java_version_history" title="Java version history">Java version history</a></li> <li><a href="/wiki/Java_Community_Process" title="Java Community Process">Java Community Process</a></li> <li><a href="/wiki/Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a></li> <li><a href="/wiki/Free_Java_implementations" title="Free Java implementations">Free Java implementations</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/List_of_JVM_languages" title="List of JVM languages">JVM languages</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a></li> <li><a href="/wiki/BeanShell" title="BeanShell">BeanShell</a></li> <li><a href="/wiki/Clojure" title="Clojure">Clojure</a></li> <li><a href="/wiki/Groovy_(programming_language)" class="mw-redirect" title="Groovy (programming language)">Groovy</a></li> <li><a href="/wiki/JRuby" title="JRuby">JRuby</a></li> <li><a href="/wiki/Jython" title="Jython">Jython</a></li> <li><a href="/wiki/Kotlin_(programming_language)" title="Kotlin (programming language)">Kotlin</a></li> <li><a href="/wiki/Processing" title="Processing">Processing</a></li> <li><a href="/wiki/Rhino_(JavaScript_engine)" title="Rhino (JavaScript engine)">Rhino</a></li> <li><a href="/wiki/Scala_(programming_language)" title="Scala (programming language)">Scala</a></li> <li><a href="/wiki/Oxygene_(programming_language)" title="Oxygene (programming language)">Oxygene</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Community</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Professional_conference" title="Professional conference">Conferences</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/JavaOne" title="JavaOne">JavaOne</a></li> <li><a href="/wiki/Devoxx" title="Devoxx">Devoxx</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Organizations</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Apache_Software_Foundation" class="mw-redirect" title="Apache Software Foundation">Apache Software Foundation</a></li> <li><a href="/wiki/Eclipse_Foundation" title="Eclipse Foundation">Eclipse Foundation</a></li> <li><a href="/wiki/Java_Community_Process" title="Java Community Process">Java Community Process</a></li> <li><a href="/wiki/Oracle_Corporation" title="Oracle Corporation">Oracle Corporation</a></li> <li><a href="/wiki/Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a>, <a href="/wiki/Sun_Microsystems_Laboratories" class="mw-redirect" title="Sun Microsystems Laboratories">Sun Microsystems Laboratories</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">People</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/James_Gosling" title="James Gosling">James Gosling</a></li> <li><a href="/wiki/Arthur_van_Hoff" title="Arthur van Hoff">Arthur van Hoff</a></li> <li><a href="/wiki/Urs_H%C3%B6lzle" title="Urs Hölzle">Urs Hölzle</a></li> <li><a href="/wiki/Patrick_Naughton" title="Patrick Naughton">Patrick Naughton</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><td class="navbox-abovebelow" colspan="3"><div><span class="noviewer" typeof="mw:File"><span title="Category"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/16px-Symbol_category_class.svg.png" decoding="async" width="16" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/23px-Symbol_category_class.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/31px-Symbol_category_class.svg.png 2x" data-file-width="180" data-file-height="185" /></span></span> <b><a href="/wiki/Category:Java_(programming_language)" title="Category:Java (programming language)">Category</a></b>   <span class="nowrap"><span class="noviewer" typeof="mw:File"><a href="/wiki/File:Octicons-terminal.svg" class="mw-file-description"><img alt="icon" src="//upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/24px-Octicons-terminal.svg.png" decoding="async" width="24" height="28" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/37px-Octicons-terminal.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/49px-Octicons-terminal.svg.png 2x" data-file-width="896" data-file-height="1024" /></a></span> </span><a href="/wiki/Portal:Computer_programming" title="Portal:Computer programming">Computer programming portal</a></div></td></tr></tbody></table></div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236075235"></div><div role="navigation" class="navbox" aria-labelledby="Sun_Microsystems" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="3"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239400231"><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Sun_Microsystems" title="Template:Sun Microsystems"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Sun_Microsystems" title="Template talk:Sun Microsystems"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Sun_Microsystems" title="Special:EditPage/Template:Sun Microsystems"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Sun_Microsystems" style="font-size:114%;margin:0 4em"><a href="/wiki/Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a></div></th></tr><tr><td class="navbox-abovebelow" colspan="3"><div><a href="/wiki/Acquisition_of_Sun_Microsystems_by_Oracle_Corporation" title="Acquisition of Sun Microsystems by Oracle Corporation">Acquired by Oracle</a></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Hardware</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Systems</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Sun-1" title="Sun-1">Sun-1</a></li> <li><a href="/wiki/Sun-2" title="Sun-2">Sun-2</a></li> <li><a href="/wiki/Sun-3" title="Sun-3">Sun-3</a></li> <li><a href="/wiki/Sun386i" title="Sun386i">Sun386i</a></li> <li><a href="/wiki/Sun-4" title="Sun-4">Sun-4</a></li> <li><a href="/wiki/SPARCstation" title="SPARCstation">SPARCstation/server/center</a> <ul><li><a href="/wiki/SPARCstation_1" title="SPARCstation 1">1</a></li> <li><a href="/wiki/SPARCstation_2" title="SPARCstation 2">2</a></li> <li><a href="/wiki/SPARCstation_4" class="mw-redirect" title="SPARCstation 4">4</a></li> <li><a href="/wiki/SPARCstation_5" title="SPARCstation 5">5</a></li> <li><a href="/wiki/SPARCstation_10" title="SPARCstation 10">10</a></li> <li><a href="/wiki/SPARCstation_20" title="SPARCstation 20">20</a></li> <li><a href="/wiki/SPARCstation_IPC" title="SPARCstation IPC">IPC</a></li> <li><a href="/wiki/SPARCstation_IPX" title="SPARCstation IPX">IPX</a></li> <li><a href="/wiki/SPARCstation_LX" title="SPARCstation LX">LX</a></li> <li><a href="/wiki/SPARCstation_ZX" title="SPARCstation ZX">ZX</a></li></ul></li> <li><a href="/wiki/SPARCclassic" title="SPARCclassic">SPARCclassic</a></li> <li><a href="/wiki/Sun_Netra" title="Sun Netra">Netra</a></li> <li><a href="/wiki/Sun_Ultra" title="Sun Ultra">Ultra</a> <ul><li><a href="/wiki/Ultra_1" title="Ultra 1">1</a></li> <li><a href="/wiki/Ultra_2" class="mw-redirect" title="Ultra 2">2</a></li> <li><a href="/wiki/Ultra_5/10" title="Ultra 5/10">5</a></li> <li><a href="/wiki/Ultra_5/10" title="Ultra 5/10">10</a></li> <li><a href="/wiki/Ultra_24" title="Ultra 24">24</a></li> <li><a href="/wiki/Ultra_30" title="Ultra 30">30</a></li> <li><a href="/wiki/Ultra_60" title="Ultra 60">60</a></li> <li><a href="/wiki/Ultra_80" title="Ultra 80">80</a></li></ul></li> <li><a href="/wiki/Sun_Enterprise" title="Sun Enterprise">Enterprise</a> <ul><li><a href="/wiki/Sun_Enterprise_10000" class="mw-redirect" title="Sun Enterprise 10000">10000</a></li></ul></li> <li><a href="/wiki/Sun_Blade" title="Sun Blade">Blade server</a></li> <li><a href="/wiki/Sun_Blade_(workstation)" title="Sun Blade (workstation)">Blade workstation</a></li> <li><a href="/wiki/Sun_Fire" title="Sun Fire">Fire</a> <ul><li><a href="/wiki/Sun_Fire_12K" class="mw-redirect" title="Sun Fire 12K">12K</a></li> <li><a href="/wiki/Sun_Fire_15K" title="Sun Fire 15K">15K</a></li> <li><a href="/wiki/Sun_Fire_E25K" class="mw-redirect" title="Sun Fire E25K">E25K</a></li> <li><a href="/wiki/Sun_Fire_T2000" title="Sun Fire T2000">T2000</a></li> <li><a href="/wiki/Sun_Fire_X4500" title="Sun Fire X4500">X4500</a></li></ul></li> <li><a href="/wiki/SPARC_Enterprise" title="SPARC Enterprise">SPARC Enterprise</a></li> <li><a href="/wiki/JavaStation" title="JavaStation">JavaStation</a></li> <li><a href="/wiki/Sun_Java_Workstation" title="Sun Java Workstation">Java Workstation</a></li> <li><a href="/wiki/Sun_Ray" title="Sun Ray">Ray</a></li> <li><a href="/wiki/Cobalt_Qube" title="Cobalt Qube">Cobalt Qube</a></li> <li><a href="/wiki/Cobalt_RaQ" title="Cobalt RaQ">Cobalt RaQ</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Processors</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/SPARC" title="SPARC">SPARC</a></li> <li><a href="/wiki/MB86900" title="MB86900">MB86900</a></li> <li><a href="/wiki/MicroSPARC" title="MicroSPARC">microSPARC</a></li> <li><a href="/wiki/SuperSPARC" title="SuperSPARC">SuperSPARC</a></li> <li><a href="/wiki/UltraSPARC" title="UltraSPARC">UltraSPARC</a></li> <li><a href="/wiki/UltraSPARC_II" title="UltraSPARC II">UltraSPARC II</a> <ul><li>UltraSPARC IIe</li> <li>UltraSPARC IIi</li> <li>Gemini</li></ul></li> <li><a href="/wiki/UltraSPARC_III" title="UltraSPARC III">UltraSPARC III</a> <ul><li>UltraSPARC III Cu</li> <li>UltraSPARC IIIi</li></ul></li> <li><a href="/wiki/UltraSPARC_IV" title="UltraSPARC IV">UltraSPARC IV</a></li> <li><a href="/wiki/UltraSPARC_T1" title="UltraSPARC T1">UltraSPARC T1</a></li> <li><a href="/wiki/UltraSPARC_T2" title="UltraSPARC T2">UltraSPARC T2</a></li> <li><a href="/wiki/SPARC_T3" title="SPARC T3">SPARC T3</a></li> <li><a href="/wiki/SPARC_T4" title="SPARC T4">SPARC T4</a></li> <li><a href="/wiki/SPARC_T5" title="SPARC T5">SPARC T5</a></li> <li><a href="/wiki/Rock_(processor)" title="Rock (processor)">Rock</a></li> <li><a href="/wiki/MAJC" title="MAJC">MAJC</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Sun4d" title="Sun4d">Sun4d</a></li> <li><a href="/wiki/SBus" title="SBus">SBus</a></li> <li><a href="/wiki/Fireplane" title="Fireplane">Fireplane</a></li> <li><a href="/wiki/LOM_port" title="LOM port">LOM port</a></li> <li><a href="/wiki/MBus_(SPARC)" title="MBus (SPARC)">MBus</a></li> <li><a href="/wiki/Sun_Modular_Datacenter" title="Sun Modular Datacenter">Modular Datacenter</a></li> <li><a href="/wiki/Sun_Neptune" title="Sun Neptune">Neptune</a></li> <li><a href="/wiki/System_Service_Processor" title="System Service Processor">System Service Processor</a></li> <li><a href="/wiki/SPARC_T_series" title="SPARC T series">SPARC T series</a></li> <li><a href="/wiki/Sun_SPOT" title="Sun SPOT">SPOT</a></li> <li><a href="/wiki/Ultra_Port_Architecture" title="Ultra Port Architecture">Ultra Port Architecture</a></li> <li><a href="/wiki/Visual_Instruction_Set" title="Visual Instruction Set">Visual Instruction Set</a></li></ul> </div></td></tr></tbody></table><div></div></td><td class="noviewer navbox-image" rowspan="9" style="width:1px;padding:0 0 0 2px"><div><span class="mw-default-size" typeof="mw:File/Frameless"><a href="/wiki/File:Sun-Logo.svg" class="mw-file-description" title="Sun Microsystems logo"><img alt="Sun Microsystems logo" src="//upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Sun-Logo.svg/110px-Sun-Logo.svg.png" decoding="async" width="110" height="48" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Sun-Logo.svg/165px-Sun-Logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Sun-Logo.svg/220px-Sun-Logo.svg.png 2x" data-file-width="129" data-file-height="56" /></a></span></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Software</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/SunOS" title="SunOS">SunOS</a></li> <li><a href="/wiki/Oracle_Solaris" title="Oracle Solaris">Solaris</a></li> <li><a href="/wiki/Network_Information_Service" title="Network Information Service">NIS</a> <ul><li><a href="/wiki/NIS%2B" title="NIS+">NIS+</a></li></ul></li> <li><a href="/wiki/Network_File_System" title="Network File System">NFS</a></li> <li><a href="/wiki/Oracle_ZFS" title="Oracle ZFS">ZFS</a> <ul><li><a href="/wiki/ZFS%2B" title="ZFS+">ZFS+</a></li></ul></li> <li><a href="/wiki/SunView" title="SunView">SunView</a></li> <li><a href="/wiki/NeWS" title="NeWS">NeWS</a></li> <li><a href="/wiki/OpenWindows" title="OpenWindows">OpenWindows</a></li> <li><a href="/wiki/Java_Desktop_System" title="Java Desktop System">Java Desktop System</a></li> <li><a href="/wiki/Oracle_Developer_Studio" title="Oracle Developer Studio">Studio</a></li> <li><a href="/wiki/Java_(software_platform)" title="Java (software platform)">Java</a></li> <li><a href="/wiki/StarOffice" title="StarOffice">StarOffice</a></li> <li><a href="/wiki/IPlanet" title="IPlanet">iPlanet</a></li> <li><a href="/wiki/Sun_Java_System" title="Sun Java System">Java System</a></li> <li><a href="/wiki/Oracle_Secure_Global_Desktop" title="Oracle Secure Global Desktop">Sun Secure Global Desktop</a></li> <li><a href="/wiki/MySQL" title="MySQL">MySQL</a></li> <li><a href="/wiki/Sun_xVM" title="Sun xVM">xVM</a></li> <li><a href="/wiki/GlassFish" title="GlassFish">GlassFish</a></li> <li><a href="/wiki/VirtualBox" title="VirtualBox">VirtualBox</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Storage</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Sun_StorageTek_5800_System" title="Sun StorageTek 5800 System">StorageTek 5800 System</a></li> <li><a href="/wiki/Sun_StorageTek_SL8500" title="Sun StorageTek SL8500">StorageTek SL8500</a></li> <li><a href="/wiki/Sun_Open_Storage" title="Sun Open Storage">Open Storage</a></li> <li><a href="/wiki/QFS" title="QFS">QFS</a></li> <li><a href="/wiki/Oracle_ZFS" title="Oracle ZFS">ZFS</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Performance</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Sun_Cloud" title="Sun Cloud">Cloud</a></li> <li><a href="/wiki/Sun_Constellation_System" title="Sun Constellation System">Constellation System</a></li> <li><a href="/wiki/Sun_Visualization_System" title="Sun Visualization System">Visualization System</a></li> <li><a href="/wiki/Oracle_Grid_Engine" title="Oracle Grid Engine">Grid Engine</a></li> <li><a href="/wiki/Lustre_(file_system)" title="Lustre (file system)">Lustre</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Research</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Oracle_Labs" title="Oracle Labs">Sun Microsystems Laboratories</a></li> <li><a href="/wiki/PicoJava" title="PicoJava">picoJava</a></li> <li><a href="/wiki/Fortress_(programming_language)" title="Fortress (programming language)">Fortress</a></li> <li><a href="/wiki/Project_Looking_Glass" title="Project Looking Glass">Project Looking Glass</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Education</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Oracle_Certification_Program" title="Oracle Certification Program">SCPs</a></li> <li><a href="/wiki/BlueJ" title="BlueJ">BlueJ</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Community</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><td colspan="2" class="navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Common_Development_and_Distribution_License" title="Common Development and Distribution License">Common Development and Distribution License</a></li> <li><a href="/wiki/Java_Community_Process" title="Java Community Process">Java Community Process</a></li> <li><a href="/wiki/NetBeans" title="NetBeans">NetBeans</a></li> <li><a href="/wiki/OpenOffice.org" title="OpenOffice.org">OpenOffice.org</a></li> <li><a href="/wiki/OpenSolaris" title="OpenSolaris">OpenSolaris</a></li> <li><a href="/wiki/OpenSPARC" title="OpenSPARC">OpenSPARC</a></li> <li><a href="/wiki/OpenJDK" title="OpenJDK">OpenJDK</a></li> <li><a href="/wiki/Open_Source_University_Meetup" title="Open Source University Meetup">Open Source University Meetup</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/List_of_Sun_Microsystems_employees" title="List of Sun Microsystems employees">People</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Bill_Joy" title="Bill Joy">Bill Joy</a></li> <li><a href="/wiki/Andy_Bechtolsheim" title="Andy Bechtolsheim">Andy Bechtolsheim</a></li> <li><a href="/wiki/Scott_McNealy" title="Scott McNealy">Scott McNealy</a></li> <li><a href="/wiki/Vinod_Khosla" title="Vinod Khosla">Vinod Khosla</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Acquisitions</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Afara_Websystems" title="Afara Websystems">Afara Websystems</a></li> <li><a href="/wiki/Cobalt_Networks" title="Cobalt Networks">Cobalt Networks</a></li> <li><a href="/wiki/Gridware" class="mw-redirect" title="Gridware">Gridware</a></li> <li><a href="/wiki/Lighthouse_Design" title="Lighthouse Design">Lighthouse Design</a></li> <li><a href="/wiki/Montalvo_Systems" title="Montalvo Systems">Montalvo Systems</a></li> <li><a href="/wiki/MySQL_AB" title="MySQL AB">MySQL AB</a></li> <li><a href="/wiki/Pixo" title="Pixo">Pixo</a></li> <li><a href="/wiki/Procom_Technology" title="Procom Technology">Procom Technology</a></li> <li><a href="/wiki/SavaJe" title="SavaJe">SavaJe</a></li> <li><a href="/wiki/StorageTek" title="StorageTek">StorageTek</a></li> <li><a href="/wiki/Tarantella,_Inc." title="Tarantella, Inc.">Tarantella</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Slogans</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/The_Network_is_the_Computer" title="The Network is the Computer">The Network is the Computer</a></li> <li><a href="/wiki/Write_once,_run_anywhere" title="Write once, run anywhere">Write once, run anywhere</a></li></ul> </div></td></tr><tr><td class="navbox-abovebelow" colspan="3"><div><a href="/wiki/Category:Sun_Microsystems" title="Category:Sun Microsystems">Category</a></div></td></tr></tbody></table></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐f69cdc8f6‐t4zsm Cached time: 20241122141050 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.631 seconds Real time usage: 0.808 seconds Preprocessor visited node count: 2735/1000000 Post‐expand include size: 111795/2097152 bytes Template argument size: 3775/2097152 bytes Highest expansion depth: 15/100 Expensive parser function count: 10/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 111101/5000000 bytes Lua time usage: 0.315/10.000 seconds Lua memory usage: 5847880/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 624.243 1 -total 38.60% 240.964 1 Template:Reflist 28.44% 177.535 19 Template:Cite_web 13.47% 84.082 6 Template:Navbox 12.99% 81.120 1 Template:Short_description 8.69% 54.259 1 Template:Java_Virtual_Machine 6.34% 39.561 1 Template:Infobox_CPU_architecture 6.28% 39.206 2 Template:Pagetype 6.12% 38.213 1 Template:Redirect 5.53% 34.522 1 Template:Infobox --> <!-- Saved in parser cache with key enwiki:pcache:idhash:16389-0!canonical and timestamp 20241122141050 and revision id 1243042627. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Java_virtual_machine&oldid=1243042627">https://en.wikipedia.org/w/index.php?title=Java_virtual_machine&oldid=1243042627</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Java_virtual_machine" title="Category:Java virtual machine">Java virtual machine</a></li><li><a href="/wiki/Category:Java_(programming_language)" title="Category:Java (programming language)">Java (programming language)</a></li><li><a href="/wiki/Category:Java_platform_software" title="Category:Java platform software">Java platform software</a></li><li><a href="/wiki/Category:Java_specification_requests" title="Category:Java specification requests">Java specification requests</a></li><li><a href="/wiki/Category:Stack-based_virtual_machines" title="Category:Stack-based virtual machines">Stack-based virtual machines</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:Webarchive_template_wayback_links" title="Category:Webarchive template wayback links">Webarchive template wayback links</a></li><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_is_different_from_Wikidata" title="Category:Short description is different from Wikidata">Short description is different from Wikidata</a></li><li><a href="/wiki/Category:Articles_containing_potentially_dated_statements_from_2006" title="Category:Articles containing potentially dated statements from 2006">Articles containing potentially dated statements from 2006</a></li><li><a href="/wiki/Category:All_articles_containing_potentially_dated_statements" title="Category:All articles containing potentially dated statements">All articles containing potentially dated statements</a></li><li><a href="/wiki/Category:Articles_containing_potentially_dated_statements_from_2018" title="Category:Articles containing potentially dated statements from 2018">Articles containing potentially dated statements from 2018</a></li><li><a href="/wiki/Category:Articles_containing_potentially_dated_statements_from_June_2015" title="Category:Articles containing potentially dated statements from June 2015">Articles containing potentially dated statements from June 2015</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 30 August 2024, at 05:03<span class="anonymous-show"> (UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Java_virtual_machine&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-zdfpm","wgBackendResponseTime":141,"wgPageParseReport":{"limitreport":{"cputime":"0.631","walltime":"0.808","ppvisitednodes":{"value":2735,"limit":1000000},"postexpandincludesize":{"value":111795,"limit":2097152},"templateargumentsize":{"value":3775,"limit":2097152},"expansiondepth":{"value":15,"limit":100},"expensivefunctioncount":{"value":10,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":111101,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 624.243 1 -total"," 38.60% 240.964 1 Template:Reflist"," 28.44% 177.535 19 Template:Cite_web"," 13.47% 84.082 6 Template:Navbox"," 12.99% 81.120 1 Template:Short_description"," 8.69% 54.259 1 Template:Java_Virtual_Machine"," 6.34% 39.561 1 Template:Infobox_CPU_architecture"," 6.28% 39.206 2 Template:Pagetype"," 6.12% 38.213 1 Template:Redirect"," 5.53% 34.522 1 Template:Infobox"]},"scribunto":{"limitreport-timeusage":{"value":"0.315","limit":"10.000"},"limitreport-memusage":{"value":5847880,"limit":52428800},"limitreport-logs":"table#1 {\n}\n"},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-t4zsm","timestamp":"20241122141050","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Java virtual machine","url":"https:\/\/en.wikipedia.org\/wiki\/Java_virtual_machine","sameAs":"http:\/\/www.wikidata.org\/entity\/Q193321","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q193321","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2002-02-25T15:51:15Z","dateModified":"2024-08-30T05:03:06Z","image":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/d\/dd\/JvmSpec7.png","headline":"runtime environment that can execute Java bytecode as a result of compiling computer programs written in the Java programming language"}</script> </body> </html>