CINXE.COM
La macchina virtuale (Java) - Wikiversità
<!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-disabled skin-theme-clientpref-day vector-toc-available" lang="it" dir="ltr"> <head> <meta charset="UTF-8"> <title>La macchina virtuale (Java) - Wikiversità</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-disabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )itwikiversitymwclientpreferences=([^;]+)/);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":[",\t."," \t,"],"wgDigitTransformTable":["",""], "wgDefaultDateFormat":"dmy","wgMonthNames":["","gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],"wgRequestId":"9fe2f3e3-45a3-40a6-ab3a-4e83696e7437","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"La_macchina_virtuale_(Java)","wgTitle":"La macchina virtuale (Java)","wgCurRevisionId":259136,"wgRevisionId":259136,"wgArticleId":35628,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Lezioni di Java","Risorse complete al 50%"],"wgPageViewLanguage":"it","wgPageContentLanguage":"it","wgPageContentModel":"wikitext","wgRelevantPageName":"La_macchina_virtuale_(Java)","wgRelevantArticleId":35628,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikiversity","wgCiteReferencePreviewsActive":false,"wgMediaViewerOnClick":true, "wgMediaViewerEnabledByDefault":true,"wgVisualEditor":{"pageLanguageCode":"it","pageLanguageDir":"ltr","pageVariantFallbacks":"it"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":7000,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"]};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","mediawiki.action.styles":"ready","mediawiki.interface.helpers.styles":"ready","mediawiki.codex.messagebox.styles":"ready","ext.cite.styles":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready", "skins.vector.icons":"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","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.Transclusione","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.checkUser.clientHints"];</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=it&modules=ext.cite.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cext.wikimediamessages.styles%7Cmediawiki.action.styles%7Cmediawiki.codex.messagebox.styles%7Cmediawiki.interface.helpers.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=it&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=it&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.5"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="noindex,nofollow,max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="La macchina virtuale (Java) - Wikiversità"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//it.m.wikiversity.org/wiki/La_macchina_virtuale_(Java)"> <link rel="alternate" type="application/x-wiki" title="Modifica" href="/w/index.php?title=La_macchina_virtuale_(Java)&action=edit"> <link rel="icon" href="/static/favicon/wikiversity.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikiversità (it)"> <link rel="EditURI" type="application/rsd+xml" href="//it.wikiversity.org/w/api.php?action=rsd"> <link rel="canonical" href="https://it.wikiversity.org/wiki/La_macchina_virtuale_(Java)"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.it"> <link rel="alternate" type="application/atom+xml" title="Feed Atom di Wikiversità" href="/w/index.php?title=Speciale:UltimeModifiche&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-La_macchina_virtuale_Java rootpage-La_macchina_virtuale_Java skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Vai al contenuto</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="Sito"> <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="Menu principale" > <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">Menu principale</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">Menu principale</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">sposta nella barra laterale</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">nascondi</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigazione </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage" class="mw-list-item"><a href="/wiki/Pagina_principale" title="Visita la pagina principale [z]" accesskey="z"><span>Pagina principale</span></a></li><li id="n-vetrina" class="mw-list-item"><a href="/wiki/Wikiversit%C3%A0:Vetrina"><span>Vetrina</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Speciale:UltimeModifiche" title="Elenco delle ultime modifiche del sito [r]" accesskey="r"><span>Ultime modifiche</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Speciale:PaginaCasuale" title="Mostra una pagina a caso [x]" accesskey="x"><span>Una risorsa a caso</span></a></li><li id="n-help" class="mw-list-item"><a href="/wiki/Aiuto:Aiuto" title="Pagine di aiuto"><span>Aiuto</span></a></li> </ul> </div> </div> <div id="p-community" class="vector-menu mw-portlet mw-portlet-community" > <div class="vector-menu-heading"> Comunità </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-portal" class="mw-list-item"><a href="/wiki/Wikiversit%C3%A0:Portale_Comunit%C3%A0" title="Descrizione del progetto, cosa puoi fare, dove trovare le cose"><span>Portale comunità</span></a></li><li id="n-villagepump" class="mw-list-item"><a href="/wiki/Wikiversit%C3%A0:Bar"><span>Bar</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Wikiversit%C3%A0:Bollettino_d%27Ateneo" title="Informazioni sugli eventi di attualità"><span>Bollettino d'Ateneo</span></a></li><li id="n-Dipartimento-Wikiversità" class="mw-list-item"><a href="/wiki/Dipartimento:Wikiversit%C3%A0"><span>Dipartimento Wikiversità</span></a></li><li id="n-Dipartimenti" class="mw-list-item"><a href="/wiki/Wikiversit%C3%A0:Dipartimenti"><span>Dipartimenti</span></a></li><li id="n-Contatti" class="mw-list-item"><a href="/wiki/Wikiversit%C3%A0:Contatti"><span>Contatti</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Pagina_principale" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikiversity.svg" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikiversità" src="/static/images/mobile/copyright/wikiversity-wordmark-it.svg" style="width: 9.125em; height: 1.1875em;"> </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/Speciale:Ricerca" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Cerca in Wikiversità [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Ricerca</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="Cerca in Wikiversità" aria-label="Cerca in Wikiversità" autocapitalize="sentences" title="Cerca in Wikiversità [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Speciale:Ricerca"> </div> <button class="cdx-button cdx-search-input__end-button">Ricerca</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Strumenti personali"> <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="Aspetto"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Modifica la dimensione, la larghezza e il colore del testo" > <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="Aspetto" > <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">Aspetto</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="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_it.wikiversity.org&uselang=it" class=""><span>Fai una donazione</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=Speciale:CreaUtenza&returnto=La+macchina+virtuale+%28Java%29&returntoquery=oldid%3D259136" title="Si consiglia di registrarsi e di effettuare l'accesso, anche se non è obbligatorio" class=""><span>registrati</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=Speciale:Entra&returnto=La+macchina+virtuale+%28Java%29&returntoquery=oldid%3D259136" title="Si consiglia di effettuare l'accesso, anche se non è obbligatorio [o]" accesskey="o" class=""><span>entra</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="Altre opzioni" > <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="Strumenti personali" > <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">Strumenti personali</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="Menu utente" > <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="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_it.wikiversity.org&uselang=it"><span>Fai una donazione</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Speciale:CreaUtenza&returnto=La+macchina+virtuale+%28Java%29&returntoquery=oldid%3D259136" title="Si consiglia di registrarsi e di effettuare l'accesso, anche se non è obbligatorio"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>registrati</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Speciale:Entra&returnto=La+macchina+virtuale+%28Java%29&returntoquery=oldid%3D259136" title="Si consiglia di effettuare l'accesso, anche se non è obbligatorio [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>entra</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"> Pagine per utenti anonimi <a href="/wiki/Aiuto:Introduzione" aria-label="Ulteriori informazioni sulla contribuzione"><span>ulteriori informazioni</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/Speciale:MieiContributi" title="Un elenco delle modifiche fatte da questo indirizzo IP [y]" accesskey="y"><span>contributi</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Speciale:MieDiscussioni" title="Discussioni sulle modifiche fatte da questo indirizzo IP [n]" accesskey="n"><span>discussioni</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="Sito"> <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="Indice" 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">Indice</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">sposta nella barra laterale</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">nascondi</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">Inizio</div> </a> </li> <li id="toc-Architettura" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Architettura"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Architettura</span> </div> </a> <button aria-controls="toc-Architettura-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>Attiva/disattiva la sottosezione Architettura</span> </button> <ul id="toc-Architettura-sublist" class="vector-toc-list"> <li id="toc-Due_linguaggi" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Due_linguaggi"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.1</span> <span>Due linguaggi</span> </div> </a> <ul id="toc-Due_linguaggi-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Il_linguaggio_Java" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Il_linguaggio_Java"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Il linguaggio Java</span> </div> </a> <ul id="toc-Il_linguaggio_Java-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-La_macchina_virtuale" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#La_macchina_virtuale"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>La macchina virtuale</span> </div> </a> <button aria-controls="toc-La_macchina_virtuale-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>Attiva/disattiva la sottosezione La macchina virtuale</span> </button> <ul id="toc-La_macchina_virtuale-sublist" class="vector-toc-list"> <li id="toc-Esecuzione" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Esecuzione"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>Esecuzione</span> </div> </a> <ul id="toc-Esecuzione-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Note" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Note"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Note</span> </div> </a> <ul id="toc-Note-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="Indice" 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="Mostra/Nascondi l'indice" > <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">Mostra/Nascondi l'indice</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">La macchina virtuale (Java)</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="Questa voce esiste solo in questa lingua. Aggiungi la voce per altre lingue" > <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-0" 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">Aggiungi lingue</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> <div class="after-portlet after-portlet-lang"><span class="uls-after-portlet-link"></span><span class="wb-langlinks-add wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:NewItem?site=itwikiversity&page=La+macchina+virtuale+%28Java%29" title="Aggiungi collegamento interlinguistico" class="wbc-editpage">Aggiungi collegamenti</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="Namespace"> <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/La_macchina_virtuale_(Java)" title="Vedi la risorsa [c]" accesskey="c"><span>Risorsa</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Discussione:La_macchina_virtuale_(Java)" rel="discussion" title="Vedi le discussioni relative a questa pagina [t]" accesskey="t"><span>Discussione</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="Cambia versione linguistica" > <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">italiano</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="Visite"> <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/La_macchina_virtuale_(Java)"><span>Leggi</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=La_macchina_virtuale_(Java)&action=edit" title="Modifica questa pagina [e]" accesskey="e"><span>Modifica</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=La_macchina_virtuale_(Java)&action=history" title="Versioni precedenti di questa pagina [h]" accesskey="h"><span>Cronologia</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Strumenti pagine"> <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="Strumenti" > <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">Strumenti</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">Strumenti</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">sposta nella barra laterale</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">nascondi</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="Altre opzioni" > <div class="vector-menu-heading"> Azioni </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/La_macchina_virtuale_(Java)"><span>Leggi</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=La_macchina_virtuale_(Java)&action=edit" title="Modifica questa pagina [e]" accesskey="e"><span>Modifica</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=La_macchina_virtuale_(Java)&action=history"><span>Cronologia</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> Generale </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Speciale:PuntanoQui/La_macchina_virtuale_(Java)" title="Elenco di tutte le pagine che sono collegate a questa [j]" accesskey="j"><span>Puntano qui</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Speciale:ModificheCorrelate/La_macchina_virtuale_(Java)" rel="nofollow" title="Elenco delle ultime modifiche alle pagine collegate a questa [k]" accesskey="k"><span>Modifiche correlate</span></a></li><li id="t-upload" class="mw-list-item"><a href="//commons.wikimedia.org/wiki/Special:UploadWizard?uselang=it" title="Carica file multimediali [u]" accesskey="u"><span>Carica un file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Speciale:PagineSpeciali" title="Elenco di tutte le pagine speciali [q]" accesskey="q"><span>Pagine speciali</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=La_macchina_virtuale_(Java)&oldid=259136" title="Collegamento permanente a questa versione di questa pagina"><span>Link permanente</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=La_macchina_virtuale_(Java)&action=info" title="Ulteriori informazioni su questa pagina"><span>Informazioni pagina</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Speciale:Cita&page=La_macchina_virtuale_%28Java%29&id=259136&wpFormIdentifier=titleform" title="Informazioni su come citare questa pagina"><span>Cita questa pagina</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Speciale:UrlShortener&url=https%3A%2F%2Fit.wikiversity.org%2Fw%2Findex.php%3Ftitle%3DLa_macchina_virtuale_%28Java%29%26oldid%3D259136"><span>Ottieni URL breve</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Speciale:QrCode&url=https%3A%2F%2Fit.wikiversity.org%2Fw%2Findex.php%3Ftitle%3DLa_macchina_virtuale_%28Java%29%26oldid%3D259136"><span>Scarica codice QR</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"> Stampa/esporta </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=Speciale:Libro&bookcmd=book_creator&referer=La+macchina+virtuale+%28Java%29"><span>Crea un libro</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Speciale:DownloadAsPdf&page=La_macchina_virtuale_%28Java%29&action=show-download-screen"><span>Scarica come PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=La_macchina_virtuale_(Java)&printable=yes" title="Versione stampabile di questa pagina [p]" accesskey="p"><span>Versione stampabile</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects emptyPortlet" > <div class="vector-menu-heading"> In altri progetti </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </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="Strumenti pagine"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Aspetto"> <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">Aspetto</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">sposta nella barra laterale</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">nascondi</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">Da Wikiversità, l'apprendimento libero.</div> </div> <div id="contentSub"><div id="mw-content-subtitle"><div class="cdx-message cdx-message--block cdx-message--warning mw-revision"><span class="cdx-message__icon"></span><div class="cdx-message__content"><div id="mw-revision-info">Versione del 13 giu 2022 alle 20:21 di <a href="/wiki/Utente:Samuele2002" class="mw-userlink" title="Utente:Samuele2002" data-mw-revid="259136"><bdi>Samuele2002</bdi></a> <span class="mw-usertoollinks">(<a href="/wiki/Discussioni_utente:Samuele2002" class="mw-usertoollinks-talk" title="Discussioni utente:Samuele2002">discussione</a> | <a href="/wiki/Speciale:Contributi/Samuele2002" class="mw-usertoollinks-contribs" title="Speciale:Contributi/Samuele2002">contributi</a>)</span> <span class="comment">(Creata pagina con "{{Risorsa|tipo=lezione|materia1=Java|avanzamento=50%}} == Architettura == === Due linguaggi === L'architettura fa sì che, di fatto, esistano due linguaggi distinti: *il linguaggio Java, quello in cui sono scritti i sorgenti di un programma Java. *il ''class file format'', in cui sono scritti i file risultanti dalla compilazione. Il secondo è stato progettato per essere il più compatto possibile (per ridurre al minimo le dimensioni dei file compilati). Esso è stato...")</span></div><div id="mw-revision-nav">(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)</div></div></div></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="it" dir="ltr"><table class="noprint" style="float:right; width:310px; border:3px solid #5090B0; margin:5px; -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px;"> <tbody><tr style="padding:3px; border-collapse:collapse;"> <td colspan="2"><figure class="mw-halign-left" typeof="mw:File"><a href="/wiki/File:Nuvola_apps_edu_miscellaneous.svg" class="mw-file-description" title="lezione"><img alt="lezione" src="//upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Nuvola_apps_edu_miscellaneous.svg/30px-Nuvola_apps_edu_miscellaneous.svg.png" decoding="async" width="30" height="30" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Nuvola_apps_edu_miscellaneous.svg/45px-Nuvola_apps_edu_miscellaneous.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Nuvola_apps_edu_miscellaneous.svg/60px-Nuvola_apps_edu_miscellaneous.svg.png 2x" data-file-width="128" data-file-height="128" /></a><figcaption>lezione</figcaption></figure> <div style="background-color:#CADFF5; border-bottom:1px solid #5090B0; font-weight:bold;">La macchina virtuale (Java)</div> </td></tr> <tr style="padding:2px; border-collapse:collapse'"> <td><span typeof="mw:File"><a href="/wiki/File:Fileshare.png" class="mw-file-description" title="Tipo di risorsa"><img alt="Tipo di risorsa" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/47/Fileshare.png/35px-Fileshare.png" decoding="async" width="35" height="35" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/47/Fileshare.png/53px-Fileshare.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/47/Fileshare.png/70px-Fileshare.png 2x" data-file-width="256" data-file-height="256" /></a></span> </td> <td><b><a href="/wiki/Wikiversit%C3%A0:Risorsa#Tipi_di_risorsa" title="Wikiversità:Risorsa">Tipo</a></b>: lezione </td></tr> <tr style="padding:2px; border-collapse:collapse;"> <td style="border-top:1px solid #5090B0;border-collapse:collapse;"><span typeof="mw:File"><a href="/wiki/File:Gnome-applications-office.svg" class="mw-file-description" title="Materia di appartenenza"><img alt="Materia di appartenenza" src="//upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Gnome-applications-office.svg/35px-Gnome-applications-office.svg.png" decoding="async" width="35" height="35" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Gnome-applications-office.svg/53px-Gnome-applications-office.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Gnome-applications-office.svg/70px-Gnome-applications-office.svg.png 2x" data-file-width="48" data-file-height="48" /></a></span> </td> <td style="border-top:1px solid #5090B0;width:100%; border-collapse:collapse;"><b><a href="/wiki/Wikiversit%C3%A0:Materia" title="Wikiversità:Materia">Materia</a></b>: <a href="/wiki/Materia:Java" title="Materia:Java">Java</a> </td></tr> <tr style="padding:2px; border-collapse:collapse;"> <td style="border-top:1px solid #5090B0;"><span typeof="mw:File"><a href="/wiki/File:50%25.svg" class="mw-file-description" title="Avanzamento"><img alt="Avanzamento" src="//upload.wikimedia.org/wikipedia/commons/thumb/c/c2/50%25.svg/35px-50%25.svg.png" decoding="async" width="35" height="35" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/c/c2/50%25.svg/53px-50%25.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/c/c2/50%25.svg/70px-50%25.svg.png 2x" data-file-width="9" data-file-height="9" /></a></span> </td> <td style="border-top:1px solid #5090B0;"><b>Avanzamento</b>: lezione completa al <i>50%</i> </td></tr> </tbody></table> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Architettura">Architettura</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=La_macchina_virtuale_(Java)&action=edit&section=1" title="Modifica la sezione Architettura"><span>modifica</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Due_linguaggi">Due linguaggi</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=La_macchina_virtuale_(Java)&action=edit&section=2" title="Modifica la sezione Due linguaggi"><span>modifica</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>L'architettura fa sì che, di fatto, esistano due linguaggi distinti: </p> <ul><li>il linguaggio Java, quello in cui sono scritti i sorgenti di un programma Java.</li> <li>il <i>class file format</i>, in cui sono scritti i file risultanti dalla compilazione.</li></ul> <p>Il secondo è stato progettato per essere il più compatto possibile (per ridurre al minimo le dimensioni dei file compilati). Esso è stato progettato anche per avere una certa indipendenza dallo stesso linguaggio Java; questo permette anche ad <a href="https://it.wikipedia.org/wiki/en:Da_Vinci_Machine" class="extiw" title="w:en:Da Vinci Machine">altri linguaggi</a> di essere compilati in questo formato. </p> <div class="mw-heading mw-heading2"><h2 id="Il_linguaggio_Java">Il linguaggio Java</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=La_macchina_virtuale_(Java)&action=edit&section=3" title="Modifica la sezione Il linguaggio Java"><span>modifica</span></a><span class="mw-editsection-bracket">]</span></span></div> <dl><dt>Caratteristiche di progettazione</dt></dl> <p>Java è stato progettato partendo da zero, nessuna compatibilità con il passato doveva essere rispettata: questo ha permesso ai progettisti di fare un linguaggio che rispondesse alle più moderne esigenze di programmazione. </p><p>Progettato per creare software altamente <b>affidabile</b>, fornisce ampi controlli in fase di compilazione, seguito da ulteriori controlli in fase di esecuzione. Il linguaggio rappresenta una guida ai programmatori verso l’abitudine a produrre programmi affidabili: gestione automatica della memoria, nessun puntatore da gestire, nessun codice "oscuro". </p><p>Java è nato per operare in ambiente distribuito, ciò significa che l’argomento <b>sicurezza</b> e di grande importanza. È stata dedicata particolare attenzione alla sicurezza sia a livello di linguaggio sia a livello di sistema run-time. Java permette di costruire applicazioni che possono difficilmente essere invase da altre applicazioni. </p><p>L’architettura neutrale di Java è solo una parte di un sistema veramente portabile. Java fa fare alla portabilità un passo avanti, precisando e specificando la grandezza dei tipi di dati e il comportamento degli operatori aritmetici, i programmi sono gli stessi su ogni piattaforma, non ci sono incompatibilità di tipi di dati attraverso diverse architetture hardware e software. </p><p>Le <b>prestazioni</b> sono sempre da considerare: Java ottiene ottime prestazioni adottando uno schema attraverso il quale l’interprete può eseguire i bytecode alla massima velocità senza necessariamente controllare l’ambiente run-time, anche grazie a tecnologie come il Just In Time Compiler. Una applicazione automatica, il <i>garbage collector</i>, eseguita in background si occupa inoltre di liberare periodicamente la memoria inutilizzata dai processi e quindi assicura, con elevata probabilità, che la memoria richiesta dalle applicazioni sia sempre disponibile. </p><p>La capacità <i><b>multithreading</b></i> di Java fornisce i mezzi per costruire applicazioni con più attività concorrenti: Java supporta il multithreading a livello di linguaggio con aggiunta di sofisticate primitive di sincronizzazione; inoltre il sistema Java è stato scritto per essere sicuro nella gestione del multithreding: delle funzionalità provvedono che le librerie siano disponibili senza conflitti tra thread concorrenti in esecuzione. </p> <dl><dt>Modifiche separate</dt></dl> <p>Uno degli aspetti più interessanti è che l'aggiunta di un nuovo costrutto al linguaggio <i>non sempre</i> comporta la modifica della specifica della macchina virtuale o la modifica delle macchine virtuali esistenti. Ad esempio, buona parte delle aggiunte che sono state introdotte con la versione 5 della piattaforma sono state progettate in modo che il compilatore possa compilare i nuovi costrutti del linguaggio usando istruzioni "vecchie" nel bytecode.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> </p><p>Un modo semplice per ottenere questo è progettare costrutti che siano "zucchero sintattico" per costrutti preesistenti e che già hanno un corrispettivo nel bytecode. In altre parole, vengono resi disponibili nuovi costrutti che rappresentano un modo più comodo e semplice di scrivere le stesse cose. </p><p>I vantaggi principali di questo approccio: </p> <ul><li>non è necessario modificare la macchina virtuale preesistente per supportare i nuovi costrutti;</li> <li>tende a mantenere i due linguaggi semplici da imparare, in quanto i nuovi costrutti si basano su quelli vecchi e già familiari;</li> <li>è possibile sviluppare indipendentemente la specifica di linguaggio e la specifica della macchina virtuale.</li></ul> <div class="mw-heading mw-heading2"><h2 id="La_macchina_virtuale">La macchina virtuale</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=La_macchina_virtuale_(Java)&action=edit&section=4" title="Modifica la sezione La macchina virtuale"><span>modifica</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Concretizza un modello di elaboratore astratto. Tra i vantaggi di questo approccio: </p> <ol><li>facilita la realizzazione di programmi portabili su piattaforme diverse.</li> <li>è possibile rendere l'esecuzione del codice più sicura e il programma più robusto, poiché il programma viene eseguito in un ambiente controllato, isolato dal sistema operativo.</li></ol> <dl><dt>Portabilità</dt></dl> <p>Il primo punto è dovuto al fatto che alcuni aspetti tecnici del modello astratto rendono completamente prevedibili determinati aspetti legati all'esecuzione del programma; questo non avviene in tutti i linguaggi. Ad esempio, le dimensioni dei tipi primitivi in Java sono le stesse su tutte le piattaforme (e sono ben definite a priori), cosa che non avviene in C. </p> <dl><dt>Isolamento dal sistema</dt></dl> <p><i>Sicurezza</i>. La macchina virtuale ha controllo completo sul codice che viene eseguito (perché il modello astratto su cui è stato scritto il programma è stato progettato proprio per questo) e ciò rende facile bloccare l'esecuzione di codice ritenuto non sicuro (o potenzialmente tale). Questo non sarebbe possibile se il programma interagisse direttamente con il sistema operativo, anziché con una macchina virtuale. </p><p><i>Robustezza</i>. Ecco un esempio: una delle caratteristiche più note della JVM è che essa effettua in automatico il <i>range check</i> su tutti gli accessi agli array. In linguaggi come il C, il codice del programma è libero di creare un array di una certa grandezza e leggere o scrivere al di fuori dei suoi limiti effettivi. Si tratta di un'operazione pericolosa, perché può potenzialmente portare a risultati non voluti dal programmatore, e, soprattutto, non prevedibili a priori. Invece, la macchina virtuale reagisce a questo comportamento erroneo con una reazione del tutto prevedibile e, soprattutto, gestibile dal programma: ciò che va "in crash" è la singola riga di codice (in realtà si dice che è stata sollevata un'eccezione), l'operazione pericolosa non viene eseguita, e il programma (informato dell'errore) può decidere se proseguire o terminare. </p> <div class="mw-heading mw-heading3"><h3 id="Esecuzione">Esecuzione</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=La_macchina_virtuale_(Java)&action=edit&section=5" title="Modifica la sezione Esecuzione"><span>modifica</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>La natura astratta del modello di macchina virtuale permette l'implementazione di sistemi molto diversi per eseguire un programma Java: </p> <ol><li><a href="https://it.wikipedia.org/wiki/it:Interprete_(informatica)" class="extiw" title="w:it:Interprete (informatica)">interpretato</a></li> <li>compilato in codice nativo</li> <li>soluzione mista (interprete dotato di un compilatore, chiamato <a href="https://it.wikipedia.org/wiki/it:Jitter" class="extiw" title="w:it:Jitter">JITter</a>, che a <i>run-time</i> compila in codice nativo determinate parti del programma)</li> <li>macchina virtuale implementata a livello hardware (ovvero: viene realizzato un vero e proprio processore il cui <a href="https://it.wikipedia.org/wiki/it:instruction_set" class="extiw" title="w:it:instruction set">instruction set</a> coincide con il repertorio delle istruzioni definito dal modello di macchina astratto)</li></ol> <p>Il primo sistema è, generalmente, il più lento, a causa dello <i>overhead</i> dovuto alla presenza dell'interprete. </p><p>La soluzione adottata per default dalle macchine virtuali distribuite dalla Sun a gennaio 2010 è la terza. Essa permette di raggiungere prestazioni in genere paragonabili a quelle di un programma scritto ad esempio in C e compilato direttamente in codice nativo. </p><p><br /> </p> <div class="mw-heading mw-heading2"><h2 id="Note">Note</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=La_macchina_virtuale_(Java)&action=edit&section=6" title="Modifica la sezione Note"><span>modifica</span></a><span class="mw-editsection-bracket">]</span></span></div> <ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Questo non è stato possibile per <i>tutto</i>: ad esempio, restano escluse da questo meccanismo le annotazioni.</span> </li> </ol> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐5c59558b9d‐5tpvc Cached time: 20241201060743 Cache expiry: 2592000 Reduced expiry: false Complications: [show‐toc] CPU time usage: 0.043 seconds Real time usage: 0.061 seconds Preprocessor visited node count: 269/1000000 Post‐expand include size: 2181/2097152 bytes Template argument size: 240/2097152 bytes Highest expansion depth: 8/100 Expensive parser function count: 0/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 424/5000000 bytes Lua time usage: 0.005/10.000 seconds Lua memory usage: 639341/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 37.189 1 Template:Risorsa 100.00% 37.189 1 -total 10.91% 4.059 7 Template:Risorsa/colore 8.36% 3.108 1 Template:Risorsa/tipo 7.87% 2.926 1 Template:Risorsa/icon 6.38% 2.374 1 Template:Border-radius --> <!-- Saved in parser cache with key itwikiversity:pcache:35628:|#|:idhash:canonical and timestamp 20241201060743 and revision id 259136. 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&useformat=desktop" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Estratto da "<a dir="ltr" href="https://it.wikiversity.org/w/index.php?title=La_macchina_virtuale_(Java)&oldid=259136">https://it.wikiversity.org/w/index.php?title=La_macchina_virtuale_(Java)&oldid=259136</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Speciale:Categorie" title="Speciale:Categorie">Categorie</a>: <ul><li><a href="/wiki/Categoria:Lezioni_di_Java" title="Categoria:Lezioni di Java">Lezioni di Java</a></li><li><a href="/wiki/Categoria:Risorse_complete_al_50%25" title="Categoria:Risorse complete al 50%">Risorse complete al 50%</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"> Questa pagina è stata modificata per l'ultima volta il 13 giu 2022 alle 20:21.</li> <li id="footer-info-copyright">Il testo è disponibile secondo la <a rel="nofollow" class="external text" href="//creativecommons.org/licenses/by-sa/4.0/deed.it">licenza Creative Commons Attribuzione-Condividi allo stesso modo</a>; possono applicarsi condizioni ulteriori. Vedi le <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use/it">condizioni d'uso</a> per i dettagli. Wikiversità® è un marchio registrato della <a rel="nofollow" class="external text" href="https://www.wikimediafoundation.org">Wikimedia Foundation, Inc.</a> <br /></li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy/it">Informativa sulla privacy</a></li> <li id="footer-places-about"><a href="/wiki/Wikiversit%C3%A0:Informazioni">Informazioni su Wikiversità</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikiversit%C3%A0:Avvertenze_generali">Avvertenze</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Codice di condotta</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Sviluppatori</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/it.wikiversity.org">Statistiche</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Dichiarazione sui cookie</a></li> <li id="footer-places-mobileview"><a href="//it.m.wikiversity.org/w/index.php?title=La_macchina_virtuale_(Java)&oldid=259136&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Versione mobile</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-5c59558b9d-5tpvc","wgBackendResponseTime":211,"wgPageParseReport":{"limitreport":{"cputime":"0.043","walltime":"0.061","ppvisitednodes":{"value":269,"limit":1000000},"postexpandincludesize":{"value":2181,"limit":2097152},"templateargumentsize":{"value":240,"limit":2097152},"expansiondepth":{"value":8,"limit":100},"expensivefunctioncount":{"value":0,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":424,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 37.189 1 Template:Risorsa","100.00% 37.189 1 -total"," 10.91% 4.059 7 Template:Risorsa/colore"," 8.36% 3.108 1 Template:Risorsa/tipo"," 7.87% 2.926 1 Template:Risorsa/icon"," 6.38% 2.374 1 Template:Border-radius"]},"scribunto":{"limitreport-timeusage":{"value":"0.005","limit":"10.000"},"limitreport-memusage":{"value":639341,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-5c59558b9d-5tpvc","timestamp":"20241201060743","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>