<!DOCTYPE html>
<html class="client-nojs" lang="ru" dir="ltr"><head>
    <meta charset="UTF-8">
    <title>Java</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="icon" type="image/png" href="./_res_/favicon.png">
    <link rel="canonical" href="https://ru.wikipedia.org/wiki/Java"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.math.styles.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/skins.vector.styles.legacy.css" rel="stylesheet" type="text/css">
    <meta name="ResourceLoaderDynamicStyles" content="">
    <link href="./_mw_/ext.gadget.common-site.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.gadget.logo.css" rel="stylesheet" type="text/css">
    <link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
    <link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
    <link rel="stylesheet" type="text/css" href="./_res_/footer.css">
    <link rel="stylesheet" type="text/css" href="./_res_/vector.css">
  </head>

  <body class="skin-vector-legacy mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Java rootpage-Java skin-vector action-view">
    <div id="content" class="mw-body" role="main">
      <a id="top"></a>
      <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Java</span></h1>
      <div id="bodyContent" class="vector-body">
        <div id="contentSub">
          <div id="mw-content-subtitle"></div>
        </div>
        <div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="ru" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="ru" dir="ltr"><div role="note" class="hatnote navigation-not-searchable dabhide">Эта статья&nbsp;— о&nbsp;языке программирования. О&nbsp;прикладной платформе на основе данного языка см.&nbsp;<a href="Java_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%B0)" title="Java (программная платформа)">Java (программная платформа)</a>.</div>
<div role="note" class="hatnote navigation-not-searchable dabhide">Не следует путать с <a href="JavaScript" title="JavaScript">JavaScript</a>.</div>
<table class="infobox infobox-99aabbc8f784a185" style="" data-name="Язык программирования"><tbody><tr><th colspan="2" scope="colgroup" class="infobox-above" style="">Java</th></tr><tr><td colspan="2" class="infobox-image" style=""> <span data-wikidata-property-id="P154" class="no-wikidata"><span typeof="mw:File"><img src="./_assets_/77b641a46e0598227f9c92a25bbf9884/Java_logo.svg.png" decoding="async" width="121" height="221" class="mw-file-element" data-file-width="234" data-file-height="428" loading="lazy"></span></span> </td></tr>
<tr>
<th scope="row" class="plainlist">Класс языка</th>
<td class="plainlist">
<div data-wikidata-property-id="P31" class="no-wikidata">
<p><a href="Java_Virtual_Machine#Среда_исполнения" title="Java Virtual Machine">язык JVM</a>, <a href="%D0%9C%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%BF%D0%B0%D1%80%D0%B0%D0%B4%D0%B8%D0%B3%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F" title="Мультипарадигменный язык программирования">мультипарадигменный</a>: <a href="%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Объектно-ориентированное программирование">объектно-ориентированный</a>,
<a href="%D0%90%D1%81%D0%BF%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Аспектно-ориентированное программирование">аспектно-ориентированный</a>,
</p>
<a href="%D0%9E%D0%B1%D0%BE%D0%B1%D1%89%D1%91%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Обобщённое программирование">обобщённый</a>, <a href="%D0%9E%D1%82%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" class="mw-redirect" title="Отражение (программирование)">рефлективный</a></div></td>
</tr>
<tr>
<th scope="row" class="plainlist">Появился в</th>
<td class="plainlist">
<span data-wikidata-property-id="P571" class="no-wikidata"><a href="23_%D0%BC%D0%B0%D1%8F" title="23 мая">23 мая</a> <a href="1995_%D0%B3%D0%BE%D0%B4" title="1995 год">1995</a></span></td>
</tr>
<tr>
<th scope="row" class="plainlist">Автор</th>
<td class="plainlist">
<span data-wikidata-claim-id="q251$5c0c3e73-42b5-5d2b-2a12-565b67fc10bb" class="wikidata-claim" data-wikidata-property-id="P287"><span class="wikidata-snak wikidata-main-snak"><a href="%D0%93%D0%BE%D1%81%D0%BB%D0%B8%D0%BD%D0%B3%2C_%D0%94%D0%B6%D0%B5%D0%B9%D0%BC%D1%81" title="Гослинг, Джеймс">Джеймс Гослинг</a></span></span> и <span data-wikidata-claim-id="q251$33581cb9-47b2-d23a-5c05-8913c32f4057" class="wikidata-claim" data-wikidata-property-id="P287"><span class="wikidata-snak wikidata-main-snak"><a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a></span></span></td>
</tr>
<tr>
<th scope="row" class="plainlist">Разработчик</th>
<td class="plainlist">
<span data-wikidata-claim-id="q251$D03E0133-2A59-41BB-9FBB-B7801506EA6A" class="wikidata-claim" data-wikidata-property-id="P178"><span class="wikidata-snak wikidata-main-snak"><a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a></span></span>, <span data-wikidata-claim-id="q251$e84f27d0-420f-420d-ea73-e179c370fdc3" class="wikidata-claim" data-wikidata-property-id="P178"><span class="wikidata-snak wikidata-main-snak"><a href="Oracle" title="Oracle">Oracle</a></span><sup id="cite_ref-_fd34c11ce3184bd5_1-1" class="reference"><a href="#cite_note-_fd34c11ce3184bd5-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></span> и <span data-wikidata-claim-id="Q251$b5bec705-4467-a250-1df6-db55470e9d7b" class="wikidata-claim" data-wikidata-property-id="P178"><span class="wikidata-snak wikidata-main-snak"><a href="%D0%93%D0%BE%D1%81%D0%BB%D0%B8%D0%BD%D0%B3%2C_%D0%94%D0%B6%D0%B5%D0%B9%D0%BC%D1%81" title="Гослинг, Джеймс">Джеймс Гослинг</a></span></span></td>
</tr>
<tr>
<th scope="row" class="plainlist"><a href="%D0%A0%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8%D0%BC%D0%B5%D0%BD%D0%B8_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0" title="Расширение имени файла">Расширение</a> файлов</th>
<td class="plainlist">
<span data-wikidata-property-id="P1195" class="no-wikidata">.java, .class, <a href="JAR" title="JAR">.jar</a>, .jad, .jmod, <a href="WAR_(%D1%82%D0%B8%D0%BF_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0)" title="WAR (тип файла)">.war</a>, <a href="EAR" title="EAR">.ear</a></span></td>
</tr>
<tr>
<th scope="row" class="plainlist"><a href="%D0%A1%D1%82%D0%B0%D0%B4%D0%B8%D0%B8_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F" title="Стадии разработки программного обеспечения">Выпуск</a></th>
<td class="plainlist">
<span data-wikidata-property-id="P348" class="no-wikidata"><span data-wikidata-property-id="P348" class="no-wikidata">Java SE 24<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>&nbsp;(18.03.2025)</span></span></td>
</tr>
<tr>
<th scope="row" class="plainlist">Испытал влияние</th>
<td class="plainlist">
<span data-wikidata-claim-id="Q251$57EA6E53-67C3-43DE-BED5-59F76A87C9CD" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="C%2B%2B" title="C++"><span lang="C++">C++</span></a></span></span>, <span data-wikidata-claim-id="Q251$5A73B8E8-EF25-42D0-B6A7-42F8A1E3F5EC" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Си (язык программирования)">Си</a></span></span>, <span data-wikidata-claim-id="Q251$EF037641-93D8-4563-9104-7EB540ADFFE8" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="%D0%90%D0%B4%D0%B0_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Ада (язык программирования)">Ада</a></span></span>, <span data-wikidata-claim-id="Q251$8E7DF780-72BB-4652-A9C2-C74E86CEDA03" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak">Simula 67</span></span>, <span data-wikidata-claim-id="Q251$6ACEDF25-C2F7-4B76-A124-E05544615AB8" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="Smalltalk" title="Smalltalk"><span lang="Smalltalk">Smalltalk</span></a></span></span>, <span data-wikidata-claim-id="Q251$8503bd73-48c2-ffea-6643-e3a8cfee2696" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="Objective-C" title="Objective-C"><span lang="Objective-C">Objective-C</span></a></span></span>, <span data-wikidata-claim-id="Q251$d6d4b282-4a16-8293-e2a5-38b8ff7c7e87" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="Object_Pascal" title="Object Pascal"><span lang="Object Pascal">Object Pascal</span></a></span></span>, <span data-wikidata-claim-id="Q251$aa02500a-4c5c-f037-0226-85d1002222db" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="%D0%9E%D0%B1%D0%B5%D1%80%D0%BE%D0%BD_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Оберон (язык программирования)">Оберон</a></span></span>, <span data-wikidata-claim-id="Q251$217c9d7d-4107-1d7a-7bf1-1a5e7ba90888" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="Eiffel" title="Eiffel">Eiffel</a></span></span>, <span data-wikidata-claim-id="Q251$292144d2-47ad-1c6a-4377-378ba3786792" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D0%B0-3" title="Модула-3">Модула-3</a></span></span>, <span data-wikidata-claim-id="Q251$60007f14-43e6-80e0-7e31-27bbd1bb3542" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak">Mesa</span></span>, <span data-wikidata-claim-id="Q251$ddc01ad8-455b-9986-5328-e83632c0b215" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D0%B0" title="Симула">Симула</a></span></span>, <span data-wikidata-claim-id="Q251$04bff15a-ecb7-4f99-986b-9ad0ca31e72e" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="C_Sharp" title="C Sharp"><span lang="C#">C#</span></a></span></span> и <span data-wikidata-claim-id="Q251$80dc9a8a-46f2-2f97-6e8d-ab07f3d43577" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="UCSD_Pascal" title="UCSD Pascal">UCSD Pascal</a></span></span></td>
</tr>
<tr>
<th scope="row" class="plainlist">Повлиял на</th>
<td class="plainlist">
<a href="%D0%90%D0%B4%D0%B0_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Ада (язык программирования)">Ada</a>, <a href="C_Sharp" title="C Sharp">C#</a>, <a href="Chapel_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Chapel (язык программирования)">Chapel</a>, <a href="Clojure" title="Clojure">Clojure</a>, <a href="ECMAScript" title="ECMAScript">ECMAScript</a>, <a href="Fantom" title="Fantom">Fantom</a>, <a href="Gambas" title="Gambas">Gambas</a>, <a href="Groovy" title="Groovy">Groovy</a>, <a href="Hack_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Hack (язык программирования)">Hack</a>, <a href="Haxe" title="Haxe">Haxe</a>, <a href="Visual_J_Sharp" title="Visual J Sharp">J#</a>, <a href="Kotlin" title="Kotlin">Kotlin</a>, <a href="PHP" title="PHP">PHP</a>, <a href="Python" title="Python">Python</a>, <a href="Scala_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Scala (язык программирования)">Scala</a>, <a href="Seed7" title="Seed7">Seed7</a>, <a href="Vala" title="Vala">Vala</a>, <a href="JavaScript" title="JavaScript">JavaScript</a></td>
</tr>
<tr>
<th scope="row" class="plainlist"><a href="%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5" title="Лицензия на программное обеспечение">Лицензия</a></th>
<td class="plainlist">
<span data-wikidata-claim-id="q251$85096891-D4C1-4645-BD20-620DD0F28AC8" class="wikidata-claim" data-wikidata-property-id="P275"><span class="wikidata-snak wikidata-main-snak"><a href="GNU_General_Public_License" title="GNU General Public License">GNU GPL</a></span><sup id="cite_ref-_48acebb557b8c2b7_3-0" class="reference"><a href="#cite_note-_48acebb557b8c2b7-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup></span></td>
</tr>
<tr>
<th scope="row" class="plainlist">Сайт</th>
<td class="plainlist">
<span data-wikidata-property-id="P856" class="no-wikidata"><a rel="nofollow" class="external text" href="https://java.com">java.com</a></span></td>
</tr><tr><td colspan="2" class="infobox-below" style=";"><span data-wikidata-claim-id="Q251$284D6796-0023-4F3B-BBF6-965CCBE39FDD" class="wikidata-claim" data-wikidata-property-id="P373"><span class="wikidata-snak wikidata-main-snak"><span typeof="mw:File"><a href="https://commons.wikimedia.org/wiki/Category:Java_(programming_language)" title="commons:Category:Java (programming language)" class="external"><img alt="Логотип Викисклада" src="./_assets_/0c70a452f799bfe840676ee341124611/Commons-logo.svg.png" decoding="async" width="15" height="20" class="mw-file-element" data-file-width="1024" data-file-height="1376" loading="lazy"></a></span>&nbsp;<a href="https://commons.wikimedia.org/wiki/Category:Java_(programming_language)" class="extiw external" title="commons:Category:Java (programming language)">Медиафайлы на Викискладе</a></span></span></td></tr>
</tbody></table>
<p><b>Java</b><sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>прим. 1<span class="cite-bracket">]</span></a></sup>&nbsp;— <a href="%D0%A1%D0%B8%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B8_%D1%81%D0%BB%D0%B0%D0%B1%D0%B0%D1%8F_%D1%82%D0%B8%D0%BF%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F" title="Сильная и слабая типизация">строго</a> <a href="%D0%A1%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%82%D0%B8%D0%BF%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F" title="Статическая типизация">типизированный</a> <a href="%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F" title="Объектно-ориентированный язык программирования">объектно-ориентированный язык программирования</a> общего назначения, разработанный компанией <a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a> (в последующем приобретённой компанией <a href="Oracle" title="Oracle">Oracle</a>). Разработка ведётся сообществом, организованным через <a href="Java_Community_Process" title="Java Community Process">Java Community Process</a>; язык и основные реализующие его технологии распространяются по лицензии <a href="GPL" class="mw-redirect" title="GPL">GPL</a>. Права на <a href="%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%B0%D1%80%D0%BA%D0%B0" class="mw-redirect" title="Торговая марка">торговую марку</a> принадлежат корпорации <a href="Oracle" title="Oracle">Oracle</a>.
</p><p>Приложения Java обычно <a href="%D0%A2%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%82%D0%BE%D1%80" title="Транслятор">транслируются</a> в специальный <a href="%D0%91%D0%B0%D0%B9%D1%82-%D0%BA%D0%BE%D0%B4" title="Байт-код">байт-код</a>, поэтому они могут работать на любой <a href="%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0" class="mw-redirect" title="Компьютерная архитектура">компьютерной архитектуре</a>, для которой существует реализация <a href="Java_Virtual_Machine" title="Java Virtual Machine">виртуальной Java-машины</a>. Дата официального выпуска&nbsp;— 23 мая 1995&nbsp;года. Java занимает высокие места в рейтингах популярности языков программирования (2-е место в рейтингах <a href="IEEE_Spectrum" title="IEEE Spectrum">IEEE Spectrum</a> (2020)<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> и <a href="%D0%98%D0%BD%D0%B4%D0%B5%D0%BA%D1%81_TIOBE" title="Индекс TIOBE">TIOBE</a> (2021<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>)).
</p>

<div class="mw-heading mw-heading2"><h2 id="История_создания"><span id=".D0.98.D1.81.D1.82.D0.BE.D1.80.D0.B8.D1.8F_.D1.81.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D1.8F"></span>История создания</h2></div>
<figure class="mw-default-size" typeof="mw:File/Thumb"><img src="./_assets_/0c70a452f799bfe840676ee341124611/James_Gosling_2008.jpg" decoding="async" width="250" height="252" class="mw-file-element" data-file-width="1460" data-file-height="1469" loading="lazy"><figcaption><a href="%D0%93%D0%BE%D1%81%D0%BB%D0%B8%D0%BD%D0%B3%2C_%D0%94%D0%B6%D0%B5%D0%B9%D0%BC%D1%81" title="Гослинг, Джеймс">Джеймс Гослинг</a></figcaption></figure>
<p>Изначально язык назывался Oak («Дуб»), разрабатывался <a href="%D0%93%D0%BE%D1%81%D0%BB%D0%B8%D0%BD%D0%B3%2C_%D0%94%D0%B6%D0%B5%D0%B9%D0%BC%D1%81" title="Гослинг, Джеймс">Джеймсом Гослингом</a> для программирования бытовых электронных устройств. Из-за того, что язык с таким названием уже существовал, Oak был переименован в Java<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>. Назван в честь марки <a href="%D0%9A%D0%BE%D1%84%D0%B5" title="Кофе">кофе</a> Java, которая, в свою очередь, получила наименование одноимённого острова (<a href="%D0%AF%D0%B2%D0%B0" title="Ява">Ява</a>), поэтому на официальной эмблеме языка изображена чашка с горячим кофе. Существует и другая версия происхождения названия языка, связанная с <a href="%D0%90%D0%BB%D0%BB%D1%8E%D0%B7%D0%B8%D1%8F" title="Аллюзия">аллюзией</a> на кофемашину как пример бытового устройства, для программирования которого изначально язык создавался. В соответствии с этимологией в русскоязычной литературе с конца двадцатого и до первых лет двадцать первого века название языка нередко переводилось как Ява, а не транскрибировалось.
</p><p>В результате работы проекта мир увидел принципиально новое устройство, <a href="%D0%9A%D0%B0%D1%80%D0%BC%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BF%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80" title="Карманный персональный компьютер">карманный персональный компьютер</a> Star7<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>, который опередил своё время более чем на 10 лет, но из-за большой стоимости в 50 долларов не смог произвести переворот в мире технологии и был забыт.
</p><p>Устройство Star7 не пользовалось популярностью, в отличие от языка программирования Java и его окружения. Следующим этапом жизни языка стала разработка интерактивного телевидения. Однако в 1994&nbsp;году стало очевидным, что интерактивное телевидение было ошибкой.
</p><p>С середины 1990-х годов язык стал широко использоваться для написания клиентских приложений и <a href="%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5)" title="Сервер (программное обеспечение)">серверного</a> программного обеспечения. Тогда же определённое распространение получила технология <a href="Java-%D0%B0%D0%BF%D0%BF%D0%BB%D0%B5%D1%82" title="Java-апплет">Java-апплетов</a>&nbsp;— графических Java-приложений, встраиваемых в веб-страницы; с развитием возможностей <a href="%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%81%D0%B0%D0%B9%D1%82" title="Динамический сайт">динамических веб-страниц</a> в 2000-е годы технология стала применяться редко.
</p><p>В <a href="%D0%92%D0%B5%D0%B1-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0" title="Веб-разработка">веб-разработке</a> применяется <a href="Spring_Framework" title="Spring Framework">Spring Framework</a>; для документирования используется утилита <a href="Javadoc" title="Javadoc">Javadoc</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Основные_особенности_языка"><span id=".D0.9E.D1.81.D0.BD.D0.BE.D0.B2.D0.BD.D1.8B.D0.B5_.D0.BE.D1.81.D0.BE.D0.B1.D0.B5.D0.BD.D0.BD.D0.BE.D1.81.D1.82.D0.B8_.D1.8F.D0.B7.D1.8B.D0.BA.D0.B0"></span>Основные особенности языка</h2></div>
<p>Программы на Java <a href="%D0%A2%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%82%D0%BE%D1%80" title="Транслятор">транслируются</a> в <a href="%D0%91%D0%B0%D0%B9%D1%82-%D0%BA%D0%BE%D0%B4_Java" title="Байт-код Java">байт-код Java</a>, выполняемый <a href="Java_Virtual_Machine" title="Java Virtual Machine">виртуальной машиной Java</a> (JVM)&nbsp;— программой, обрабатывающей байтовый код и передающей инструкции оборудованию как <a href="%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D1%80%D0%B5%D1%82%D0%B0%D1%82%D0%BE%D1%80" title="Интерпретатор">интерпретатор</a>.
</p>
<figure typeof="mw:File/Thumb"><img src="./_assets_/0c70a452f799bfe840676ee341124611/Duke_(Java_mascot)_waving.svg.png" decoding="async" width="150" height="270" class="mw-file-element" data-file-width="226" data-file-height="407" loading="lazy"><figcaption>Дюк&nbsp;— талисман Java</figcaption></figure>
<p>Достоинством подобного способа выполнения программ является полная независимость байт-кода от <a href="%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0" title="Операционная система">операционной системы</a> и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности, в рамках которой исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером), вызывают немедленное прерывание.
</p><p>Часто к недостаткам концепции виртуальной машины относят снижение производительности. Ряд усовершенствований немного увеличил скорость выполнения программ на Java:
</p>
<ul><li>применение технологии трансляции <a href="%D0%91%D0%B0%D0%B9%D1%82-%D0%BA%D0%BE%D0%B4_Java" title="Байт-код Java">байт-кода</a> в <a href="%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4" title="Машинный код">машинный код</a> непосредственно во время работы программы (<a href="JIT" class="mw-redirect" title="JIT">JIT</a>-технология) с возможностью сохранения версий класса в машинном коде,</li>
<li>обширное использование <a href="%D0%9F%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4" class="mw-redirect" title="Платформенно-ориентированный код">платформенно-ориентированного кода</a> (native-код) в стандартных библиотеках,</li>
<li>аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология <a href="Jazelle" title="Jazelle">Jazelle</a>, поддерживаемая некоторыми процессорами <a href="ARM_(%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0)" title="ARM (архитектура)">архитектуры ARM</a>).</li></ul>
<p>По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, но при этом в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее<sup id="cite_ref-slow_java_9-0" class="reference"><a href="#cite_note-slow_java-9"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10—30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией <a href="Google_(%D0%BA%D0%BE%D0%BC%D0%BF%D0%B0%D0%BD%D0%B8%D1%8F)" title="Google (компания)">Google</a>, согласно которому отмечается существенно более низкая производительность и бо́льшее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на <a href="C%2B%2B" title="C++">C++</a><sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>.
</p><p>Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>. Эти идеи нашли также выражение в спецификации общеязыковой инфраструктуры <a href="Common_Language_Infrastructure" title="Common Language Infrastructure">CLI</a>, заложенной в основу платформы <a href=".NET_Framework" title=".NET Framework">.NET</a> компанией <a href="Microsoft" title="Microsoft">Microsoft</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Классификация_платформ_Java"><span id=".D0.9A.D0.BB.D0.B0.D1.81.D1.81.D0.B8.D1.84.D0.B8.D0.BA.D0.B0.D1.86.D0.B8.D1.8F_.D0.BF.D0.BB.D0.B0.D1.82.D1.84.D0.BE.D1.80.D0.BC_Java"></span>Классификация платформ Java</h2></div>
<p>Внутри Java существует несколько основных семейств технологий:
</p>
<ul><li><a href="Java_SE" class="mw-redirect" title="Java SE">Java SE</a>&nbsp;— Java Standard Edition&nbsp;— основное издание Java. Содержит компиляторы, <a href="API" title="API">API</a>, <a href="Java_Runtime_Environment" title="Java Runtime Environment">Java Runtime Environment</a>; подходит для создания пользовательских приложений, в первую очередь&nbsp;— для настольных систем.</li>
<li><a href="Jakarta_EE" title="Jakarta EE">Jakarta EE</a> (ранее&nbsp;— Java EE (Enterprise Edition)) представляет собой набор спецификаций для создания <a href="%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5" title="Программное обеспечение">ПО</a> уровня предприятия. В 2017-м проект Java EE был передан <a href="Eclipse_Foundation" title="Eclipse Foundation">Eclipse Foundation</a>, и тогда же его наименование изменилось на текущее<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>. Модули Java EE удалены из Java SE с 11-й версии<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>.</li>
<li><a href="Java_ME" class="mw-redirect" title="Java ME">Java ME</a>&nbsp;— Java Micro Edition, создана для использования в устройствах, ограниченных по вычислительной мощности, например, в <a href="%D0%9C%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%82%D0%B5%D0%BB%D0%B5%D1%84%D0%BE%D0%BD" class="mw-redirect" title="Мобильный телефон">мобильных телефонах</a>, <a href="%D0%9A%D0%B0%D1%80%D0%BC%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BF%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80" title="Карманный персональный компьютер">КПК</a>, <a href="%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0" title="Встраиваемая система">встроенных системах</a>;</li>
<li><a href="Java_Card" title="Java Card">Java Card</a>&nbsp;— технология предоставляет безопасную среду для приложений, работающих на <a href="%D0%A1%D0%BC%D0%B0%D1%80%D1%82-%D0%BA%D0%B0%D1%80%D1%82%D0%B0" title="Смарт-карта">смарт-картах</a> и других устройствах с очень ограниченным объёмом памяти и возможностями обработки.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Java_и_Microsoft"><span id="Java_.D0.B8_Microsoft"></span>Java и Microsoft</h2></div>
<p>Компанией <a href="Microsoft" title="Microsoft">Microsoft</a> была разработана собственная реализация <a href="JVM" class="mw-redirect" title="JVM">JVM</a> под названием <span data-interwiki-lang="en" data-interwiki-article="Microsoft Java Virtual Machine">Microsoft Java Virtual Machine</span> (MSJVM)<sup id="cite_ref-msjvm_17-0" class="reference"><a href="#cite_note-msjvm-17"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>, включавшаяся в состав различных <a href="%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0" title="Операционная система">операционных систем</a>, начиная с <a href="Windows_98" title="Windows 98">Windows 98</a> (также входила в <a href="Internet_Explorer" title="Internet Explorer">Internet Explorer</a> от версии 3 и выше, что позволяло использовать MSJVM в ОС <a href="Windows_95" title="Windows 95">Windows 95</a> и <a href="Windows_NT_4.0" title="Windows NT 4.0">Windows NT 4</a> после установки IE3+ на данные ОС).
</p><p>MSJVM имела существенные отличия от Sun Java, во многом ломающие основополагающую концепцию переносимости программ между разными платформами:
</p>
<ul><li>отсутствие поддержки <a href="%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9" class="mw-redirect" title="Интерфейс программирования приложений">программного интерфейса</a> <a href="Remote_Procedure_Call" class="mw-redirect" title="Remote Procedure Call">вызова удалённых методов</a> (<a href="RMI" title="RMI">RMI</a>);</li>
<li>отсутствие поддержки технологии <a href="JNI" class="mw-redirect" title="JNI">JNI</a>;</li>
<li>наличие нестандартных расширений, таких, как средства интеграции Java и <a href="DCOM" title="DCOM">DCOM</a>, работающих только на платформе Windows.</li></ul>
<p>Тесная интеграция Java с DCOM и <a href="Windows_API" title="Windows API">Win32</a> поставила под вопрос <a href="%D0%9A%D1%80%D0%BE%D1%81%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C" title="Кроссплатформенность">кроссплатформенную</a> парадигму языка. Впоследствии это явилось поводом для судебных исков со стороны <a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a> к Microsoft. Суд принял сторону компании Sun Microsystems. В конечном счёте между двумя компаниями была достигнута договорённость о возможности продления срока официальной поддержки пользователей нестандартной Microsoft JVM до конца 2007&nbsp;года<sup id="cite_ref-msjvm_17-1" class="reference"><a href="#cite_note-msjvm-17"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>.
</p><p>В 2005&nbsp;году компанией Microsoft для платформы <a href=".NET_Framework" title=".NET Framework">.NET</a> был представлен Java-подобный язык <a href="Visual_J_Sharp" title="Visual J Sharp">J#</a>, не соответствующий официальной спецификации языка Java и исключённый впоследствии из стандартного инструментария разработчика <a href="Microsoft_Visual_Studio" title="Microsoft Visual Studio">Microsoft Visual Studio</a>, начиная с Visual Studio 2008<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Java_и_Android"><span id="Java_.D0.B8_Android"></span>Java и Android</h2></div>
<div role="note" class="hatnote navigation-not-searchable ts-main"><style data-mw-deduplicate="TemplateStyles:r142002967">
/* start https://ru.wikipedia.org/ */


.mw-parser-output .ts-main a{font-weight:bold}.mw-parser-output .ts-main a.new,.mw-parser-output .ts-main a.extiw,.mw-parser-output .ts-main a.external{font-weight:normal}


/* end   https://ru.wikipedia.org/ */
</style>Основная статья: <a href="Android" title="Android">Android</a></div>
<p>Язык Java активно используется для создания мобильных приложений под операционную систему Android. При этом программы компилируются в нестандартный байт-код для использования их виртуальной машиной <a href="Dalvik_virtual_machine" class="mw-redirect" title="Dalvik virtual machine">Dalvik</a> (начиная с <a href="Android_Lollipop" title="Android Lollipop">Android 5.0 Lollipop</a> виртуальная машина заменена на <a href="Android_Runtime" title="Android Runtime">ART</a>). Для такой компиляции используется дополнительный инструмент, а именно <a href="Android_SDK" title="Android SDK">Android SDK</a> (<a href="SDK" title="SDK">Software Development Kit</a>), разработанный компанией <a href="Google_(%D0%BA%D0%BE%D0%BC%D0%BF%D0%B0%D0%BD%D0%B8%D1%8F)" title="Google (компания)">Google</a>.
</p><p>Разработку приложений можно вести в среде <a href="Android_Studio" title="Android Studio">Android Studio</a>, <a href="NetBeans" title="NetBeans">NetBeans</a>, в среде <a href="Eclipse_(%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8)" title="Eclipse (среда разработки)">Eclipse</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Применения_платформы_Java"><span id=".D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D0.BF.D0.BB.D0.B0.D1.82.D1.84.D0.BE.D1.80.D0.BC.D1.8B_Java"></span>Применения платформы Java</h2></div>
<p>Следующие успешные проекты реализованы с привлечением Java (<a href="J2EE" class="mw-redirect" title="J2EE">J2EE</a>) технологий: <a href="RuneScape" title="RuneScape">RuneScape</a>, <a href="Amazon" title="Amazon">Amazon</a><sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup>, <a href="EBay" title="EBay">eBay</a><sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup>, <a href="LinkedIn" title="LinkedIn">LinkedIn</a><sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup>, <a href="Yahoo!" title="Yahoo!">Yahoo!</a><sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup>.
</p><p>Следующие компании в основном фокусируются на Java- (<a href="J2EE" class="mw-redirect" title="J2EE">J2EE</a>-) технологиях: <a href="SAP" title="SAP">SAP</a>, <a href="IBM" title="IBM">IBM</a>, <a href="Oracle" title="Oracle">Oracle</a>. В частности, <a href="%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B1%D0%B0%D0%B7%D0%B0%D0%BC%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" title="Система управления базами данных">СУБД</a> <a href="Oracle_Database" title="Oracle Database">Oracle Database</a> включает JVM как свою составную часть, обеспечивающую возможность непосредственного программирования СУБД на языке Java, включая, например, <a href="%D0%A5%D1%80%D0%B0%D0%BD%D0%B8%D0%BC%D0%B0%D1%8F_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80%D0%B0" title="Хранимая процедура">хранимые процедуры</a><sup id="cite_ref-25" class="reference"><a href="#cite_note-25"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Производительность"><span id=".D0.9F.D1.80.D0.BE.D0.B8.D0.B7.D0.B2.D0.BE.D0.B4.D0.B8.D1.82.D0.B5.D0.BB.D1.8C.D0.BD.D0.BE.D1.81.D1.82.D1.8C"></span>Производительность</h3></div>
<p>Программы, написанные на Java, имеют репутацию более медленных и занимающих больше оперативной памяти, чем написанные на языке C<sup id="cite_ref-slow_java_9-1" class="reference"><a href="#cite_note-slow_java-9"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>. Тем не менее, скорость выполнения программ, написанных на языке Java, была существенно улучшена с выпуском в 1997—1998&nbsp;годах JIT-компилятора в версии 1.1 в дополнение к другим особенностям языка для поддержки лучшего анализа кода (такие, как внутренние классы, класс <code>StringBuffer</code><sup id="cite_ref-26" class="reference"><a href="#cite_note-26"><span class="cite-bracket">[</span>док. 1<span class="cite-bracket">]</span></a></sup>, упрощённые логические вычисления и&nbsp;так&nbsp;далее). Кроме того, была произведена оптимизация виртуальной машины Java&nbsp;— с 2000&nbsp;года для этого используется виртуальная машина <a href="HotSpot" title="HotSpot">HotSpot</a>. По состоянию на февраль 2012&nbsp;года код Java 7 приблизительно в 1,8 раза медленнее кода, написанного на языке Си<sup id="cite_ref-27" class="reference"><a href="#cite_note-27"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup>.
</p><p>Некоторые платформы предлагают аппаратную поддержку выполнения для Java<sup id="cite_ref-28" class="reference"><a href="#cite_note-28"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup>. К примеру, микроконтроллеры, выполняющие код Java на аппаратном обеспечении вместо программной JVM, а также основанные на ARM процессоры, которые поддерживают выполнение байт-кода Java через опцию Jazelle.
</p>
<div class="mw-heading mw-heading2"><h2 id="Основные_возможности"><span id=".D0.9E.D1.81.D0.BD.D0.BE.D0.B2.D0.BD.D1.8B.D0.B5_.D0.B2.D0.BE.D0.B7.D0.BC.D0.BE.D0.B6.D0.BD.D0.BE.D1.81.D1.82.D0.B8"></span>Основные возможности</h2></div>
<ul><li><a href="%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%BC%D1%83%D1%81%D0%BE%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" class="mw-redirect" title="Сборка мусора (программирование)">Автоматическое управление памятью</a>;</li>
<li>Расширенные возможности обработки <a href="%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%B8%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B9" title="Обработка исключений">исключительных ситуаций</a>;</li>
<li>Богатый набор средств фильтрации ввода-вывода;</li>
<li>Набор стандартных <a href="%D0%9A%D0%BE%D0%BB%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Коллекция (программирование)">коллекций</a>: <a href="%D0%98%D0%BD%D0%B4%D0%B5%D0%BA%D1%81%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2" class="mw-redirect" title="Индексный массив">массив</a>, <a href="%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)" title="Список (информатика)">список</a>, <a href="%D0%A1%D1%82%D0%B5%D0%BA" title="Стек">стек</a> и т.п;</li>
<li>Наличие простых средств создания сетевых приложений (в том числе&nbsp;— с использованием <a href="%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B9_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB" class="mw-redirect" title="Сетевой протокол">протокола</a> <a href="RMI" title="RMI">RMI</a>);</li>
<li>Наличие классов, позволяющих выполнять <a href="HTTP" title="HTTP">HTTP</a>-запросы и обрабатывать ответы;</li>
<li>Встроенные в язык средства создания многопоточных приложений, которые потом были портированы на многие языки, например, <a href="Python" title="Python">Python</a>;</li>
<li>Унифицированный доступ к <a href="%D0%91%D0%B0%D0%B7%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" title="База данных">базам данных</a>:
<ul><li>на уровне отдельных <a href="SQL" title="SQL">SQL</a>-запросов&nbsp;— на основе <a href="JDBC" class="mw-redirect" title="JDBC">JDBC</a>, <a href="SQLJ" title="SQLJ">SQLJ</a>;</li>
<li>на уровне концепции объектов, обладающих способностью к хранению в базе данных&nbsp;— на основе <span data-interwiki-lang="en" data-interwiki-article="Java Data Objects">Java Data Objects</span> и <a href="Java_Persistence_API" title="Java Persistence API">Java Persistence API</a>;</li></ul></li>
<li>Поддержка <a href="%D0%9E%D0%B1%D0%BE%D0%B1%D1%89%D1%91%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Обобщённое программирование">обобщений</a> (с версии 1.5);</li>
<li>Поддержка <a href="%D0%9B%D1%8F%D0%BC%D0%B1%D0%B4%D0%B0-%D0%B8%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5" title="Лямбда-исчисление">лямбд</a>, <a href="%D0%97%D0%B0%D0%BC%D1%8B%D0%BA%D0%B0%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Замыкание (программирование)">замыканий</a>, возможностей <a href="%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Функциональное программирование">функционального программирования</a> (с Java 8).</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Основные_идеи"><span id=".D0.9E.D1.81.D0.BD.D0.BE.D0.B2.D0.BD.D1.8B.D0.B5_.D0.B8.D0.B4.D0.B5.D0.B8"></span>Основные идеи</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Примитивные_типы"><span id=".D0.9F.D1.80.D0.B8.D0.BC.D0.B8.D1.82.D0.B8.D0.B2.D0.BD.D1.8B.D0.B5_.D1.82.D0.B8.D0.BF.D1.8B"></span>Примитивные типы</h3></div>
<p>В языке Java только 8 примитивных (скалярных, простых) <a href="%D0%A2%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" title="Тип данных">типов</a>: <code><a href="%D0%9B%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%82%D0%B8%D0%BF" title="Логический тип">boolean</a></code>, <code><a href="%D0%91%D0%B0%D0%B9%D1%82" title="Байт">byte</a></code>, <code><a href="%D0%A1%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%82%D0%B8%D0%BF" title="Символьный тип">char</a></code>, <code>short</code>, <code><a href="%D0%A6%D0%B5%D0%BB%D1%8B%D0%B9_%D1%82%D0%B8%D0%BF" class="mw-redirect" title="Целый тип">int</a></code>, <code>long</code>, <code><a href="%D0%A7%D0%B8%D1%81%D0%BB%D0%BE_%D0%BE%D0%B4%D0%B8%D0%BD%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D0%B8" title="Число одинарной точности">float</a></code>, <code><a href="%D0%A7%D0%B8%D1%81%D0%BB%D0%BE_%D0%B4%D0%B2%D0%BE%D0%B9%D0%BD%D0%BE%D0%B9_%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D0%B8" title="Число двойной точности">double</a></code>. Существует также вспомогательный девятый примитивный тип&nbsp;— <code><a href="Void" title="Void">void</a></code>, однако переменные и поля такого типа не могут быть объявлены в коде, а сам тип используется только для описания соответствующего ему класса, для использования при <a href="%D0%9E%D1%82%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" class="mw-redirect" title="Отражение (программирование)">рефлексии</a>: например, с помощью класса <code>Void</code><sup id="cite_ref-29" class="reference"><a href="#cite_note-29"><span class="cite-bracket">[</span>док. 2<span class="cite-bracket">]</span></a></sup> можно узнать, является ли определённый метод типа <code>void</code>: <code>Hello.class.getMethod("main", String[].class).getReturnType() == Void.TYPE</code>.
</p><p>Длины и диапазоны значений примитивных типов определяются стандартом, а не реализацией, и приведены в таблице. Тип char сделали двухбайтовым для удобства локализации (один из идеологических принципов Java): когда складывался стандарт, уже существовал <a href="Unicode" class="mw-redirect" title="Unicode">Unicode</a>-16, но не Unicode-32. Поскольку в результате не осталось однобайтового типа, добавили новый тип byte, причём в Java, в отличие от других языков, он не является беззнаковым. Типы <code>float</code> и <code>double</code> могут иметь специальные значения <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle +\infty }">
  <semantics>
    <mrow class="MJX-TeXAtom-ORD">
      <mstyle displaystyle="true" scriptlevel="0">
        <mo>+</mo>
        <mi mathvariant="normal">∞<!-- ∞ --></mi>
      </mstyle>
    </mrow>
    <annotation encoding="application/x-tex">{\displaystyle +\infty }</annotation>
  </semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/bddbb0e4420a7e744cf71bd71216e11b0bf88831.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:4.132ex; height:2.176ex;" alt="{\displaystyle +\infty }" loading="lazy"></span>, <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle -\infty }">
  <semantics>
    <mrow class="MJX-TeXAtom-ORD">
      <mstyle displaystyle="true" scriptlevel="0">
        <mo>−<!-- − --></mo>
        <mi mathvariant="normal">∞<!-- ∞ --></mi>
      </mstyle>
    </mrow>
    <annotation encoding="application/x-tex">{\displaystyle -\infty }</annotation>
  </semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/ca2608c4b5fd3bffc73585f8c67e379b4e99b6f1.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:4.132ex; height:2.176ex;" alt="{\displaystyle -\infty }" loading="lazy"></span> и «не число» (<a href="NaN" title="NaN">NaN</a>). Для типа double они обозначаются <code>Double.POSITIVE_INFINITY</code>, <code>Double.NEGATIVE_INFINITY</code>, <code>Double.NaN</code>; для типа <code>float</code>&nbsp;— так же, но с приставкой <code>Float</code> вместо <code>Double</code>. Минимальные и максимальные значения, принимаемые типами <code>float</code> и <code>double</code>, тоже стандартизованы.
</p>
<table class="wikitable">
<tbody><tr>
<th>Тип
</th>
<th>Длина (в байтах)</th>
<th>Диапазон или набор значений
</th></tr>
<tr>
<td>boolean</td>
<td>1 в массивах, 4 в переменных<sup id="cite_ref-30" class="reference"><a href="#cite_note-30"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup></td>
<td>true, false
</td></tr>
<tr>
<td>byte</td>
<td>1</td>
<td>−128..127
</td></tr>
<tr>
<td>char</td>
<td>2</td>
<td>0..2<sup>16</sup>−1, или 0..65535
</td></tr>
<tr>
<td>short</td>
<td>2</td>
<td>−2<sup>15</sup>..2<sup>15</sup>−1, или −32768..32767
</td></tr>
<tr>
<td>int</td>
<td>4</td>
<td>−2<sup>31</sup>..2<sup>31</sup>−1, или −2147483648..2147483647
</td></tr>
<tr>
<td>long</td>
<td>8</td>
<td>−2<sup>63</sup>..2<sup>63</sup>−1, или примерно −9.2·10<sup>18</sup>..9.2·10<sup>18</sup>
</td></tr>

<tr>
<td>float</td>
<td>4</td>
<td>-(2-2<sup>−23</sup>)·2<sup>127</sup>..(2-2<sup>−23</sup>)·2<sup>127</sup>, или примерно −3.4·10<sup>38</sup>..3.4·10<sup>38</sup>, а также <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle -\infty }">
  <semantics>
    <mrow class="MJX-TeXAtom-ORD">
      <mstyle displaystyle="true" scriptlevel="0">
        <mo>−<!-- − --></mo>
        <mi mathvariant="normal">∞<!-- ∞ --></mi>
      </mstyle>
    </mrow>
    <annotation encoding="application/x-tex">{\displaystyle -\infty }</annotation>
  </semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/ca2608c4b5fd3bffc73585f8c67e379b4e99b6f1.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:4.132ex; height:2.176ex;" alt="{\displaystyle -\infty }" loading="lazy"></span>, <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \infty }">
  <semantics>
    <mrow class="MJX-TeXAtom-ORD">
      <mstyle displaystyle="true" scriptlevel="0">
        <mi mathvariant="normal">∞<!-- ∞ --></mi>
      </mstyle>
    </mrow>
    <annotation encoding="application/x-tex">{\displaystyle \infty }</annotation>
  </semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/c26c105004f30c27aa7c2a9c601550a4183b1f21.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.324ex; height:1.676ex;" alt="{\displaystyle \infty }" loading="lazy"></span>, NaN
</td></tr>
<tr>
<td>double</td>
<td>8</td>
<td>-(2-2<sup>−52</sup>)·2<sup>1023</sup>..(2-2<sup>−52</sup>)·2<sup>1023</sup>, или примерно −1.8·10<sup>308</sup>..1.8·10<sup>308</sup>, а также <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle -\infty }">
  <semantics>
    <mrow class="MJX-TeXAtom-ORD">
      <mstyle displaystyle="true" scriptlevel="0">
        <mo>−<!-- − --></mo>
        <mi mathvariant="normal">∞<!-- ∞ --></mi>
      </mstyle>
    </mrow>
    <annotation encoding="application/x-tex">{\displaystyle -\infty }</annotation>
  </semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/ca2608c4b5fd3bffc73585f8c67e379b4e99b6f1.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:4.132ex; height:2.176ex;" alt="{\displaystyle -\infty }" loading="lazy"></span>, <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \infty }">
  <semantics>
    <mrow class="MJX-TeXAtom-ORD">
      <mstyle displaystyle="true" scriptlevel="0">
        <mi mathvariant="normal">∞<!-- ∞ --></mi>
      </mstyle>
    </mrow>
    <annotation encoding="application/x-tex">{\displaystyle \infty }</annotation>
  </semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/c26c105004f30c27aa7c2a9c601550a4183b1f21.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.324ex; height:1.676ex;" alt="{\displaystyle \infty }" loading="lazy"></span>, NaN
</td></tr></tbody></table>
<p>Такая жёсткая стандартизация была необходима, чтобы сделать язык платформенно-независимым, что является одним из идеологических требований к Java. Тем не менее, одна небольшая проблема с платформенной независимостью всё же осталась. Некоторые процессоры используют для промежуточного хранения результатов 10-байтовые <a href="%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B0" title="Регистр процессора">регистры</a> или другими способами улучшают точность вычислений. Для того, чтобы сделать Java максимально совместимой между разными системами, в ранних версиях любые способы повышения точности вычислений были запрещены. Однако это приводило к снижению быстродействия. Выяснилось, что ухудшение точности ради платформенной независимости мало кому нужно, тем более если за это приходится платить замедлением работы программ. После многочисленных протестов этот запрет отменили, но добавили ключевое слово <code>strictfp</code>, запрещающее повышение точности. Начиная с Java 17, запрет на повышение точности снова начал действовать, а ключевое слово <code>strictfp</code> было объявлено устаревшим<sup id="cite_ref-31" class="reference"><a href="#cite_note-31"><span class="cite-bracket">[</span>28<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading4"><h4 id="Преобразования_при_математических_операциях"><span id=".D0.9F.D1.80.D0.B5.D0.BE.D0.B1.D1.80.D0.B0.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F_.D0.BF.D1.80.D0.B8_.D0.BC.D0.B0.D1.82.D0.B5.D0.BC.D0.B0.D1.82.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D1.85_.D0.BE.D0.BF.D0.B5.D1.80.D0.B0.D1.86.D0.B8.D1.8F.D1.85"></span>Преобразования при математических операциях</h4></div>
<p>В языке Java действуют следующие правила:
</p>
<ol><li>Если один <a href="%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D0%BD%D0%B4" title="Операнд">операнд</a> имеет тип <code>double</code>, другой тоже преобразуется к типу <code>double</code>.</li>
<li>Иначе, если один операнд имеет тип <code>float</code>, другой тоже преобразуется к типу <code>float</code>.</li>
<li>Иначе, если один операнд имеет тип <code>long</code>, другой тоже преобразуется к типу <code>long</code>.</li>
<li>Иначе оба операнда преобразуются к типу <code>int</code>.</li></ol>
<p>Данный способ неявного преобразования встроенных типов полностью совпадает с преобразованием типов в <a href="%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Си (язык программирования)">Си</a>/<a href="C%2B%2B" title="C++">C++</a><sup id="cite_ref-32" class="reference"><a href="#cite_note-32"><span class="cite-bracket">[</span>29<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Объектные_переменные,_объекты,_ссылки_и_указатели"><span id=".D0.9E.D0.B1.D1.8A.D0.B5.D0.BA.D1.82.D0.BD.D1.8B.D0.B5_.D0.BF.D0.B5.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D0.BD.D1.8B.D0.B5.2C_.D0.BE.D0.B1.D1.8A.D0.B5.D0.BA.D1.82.D1.8B.2C_.D1.81.D1.81.D1.8B.D0.BB.D0.BA.D0.B8_.D0.B8_.D1.83.D0.BA.D0.B0.D0.B7.D0.B0.D1.82.D0.B5.D0.BB.D0.B8"></span>Объектные переменные, объекты, ссылки и указатели</h3></div>
<p>В языке Java имеются только динамически создаваемые объекты. <a href="%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Переменная (программирование)">Переменные</a> объектного типа и объекты в Java&nbsp;— совершенно разные сущности. Переменные объектного типа являются <a href="%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Ссылка (программирование)">ссылками</a>, то есть аналогами <a href="%D0%A3%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C_(%D1%82%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)" title="Указатель (тип данных)">указателей</a> на динамически создаваемые объекты. Это подчёркивается <a href="%D0%A1%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Синтаксис (программирование)">синтаксисом</a> описания переменных. Так, код на <a href="C%2B%2B" title="C++">C++</a> может выглядеть следующим образом:
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">double</span><span class="w"> </span><span class="n">a</span><span class="o">[</span><span class="mi">10</span><span class="o">][</span><span class="mi">20</span><span class="o">]</span><span class="p">;</span>
<span class="n">Foo</span><span class="w"> </span><span class="nf">b</span><span class="p">(</span><span class="mi">30</span><span class="p">);</span>
</pre></div>
<p>Но то же самое на Java будет выглядеть совсем по-другому:
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">double</span><span class="o">[][]</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">double</span><span class="o">[</span><span class="mi">10</span><span class="o">][</span><span class="mi">20</span><span class="o">]</span><span class="p">;</span>
<span class="n">Foo</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Foo</span><span class="p">(</span><span class="mi">30</span><span class="p">);</span>
</pre></div>
<p>При присваиваниях, передаче в <a href="%D0%9F%D0%BE%D0%B4%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0" title="Подпрограмма">подпрограммы</a> и сравнениях объектные переменные ведут себя как указатели, то есть присваиваются, копируются и сравниваются <a href="%D0%90%D0%B4%D1%80%D0%B5%D1%81_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8" class="mw-redirect" title="Адрес памяти">адреса</a> объектов. А при доступе с помощью объектной переменной к полям данных или методам объекта не требуется никаких специальных операций <a href="%D0%A3%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C_(%D1%82%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)#Действия_над_указателями" title="Указатель (тип данных)">разыменовывания</a>&nbsp;— этот доступ осуществляется так, как если бы объектная переменная была самим объектом.
</p><p>Объектными являются переменные любого типа, кроме примитивного. Явных указателей в Java нет. В отличие от указателей C, C++ и других языков программирования, ссылки в Java в высокой степени безопасны благодаря жёстким ограничениям на их использование.
</p>
<ul><li>Нельзя преобразовывать объект типа <code>int</code> или любого другого примитивного типа в указатель или ссылку и наоборот.</li>
<li>Над ссылками запрещено выполнять операции <code>++</code>, <code>−−</code>, <code>+</code>, <code>−</code> или любые другие арифметические и логические операции (<code>&amp;&amp;</code>, <code>||</code>, <code>^^</code>).</li>
<li>Преобразование типов между ссылками жёстко регламентировано. За исключением ссылок на массивы, разрешено преобразовывать ссылки только между наследуемым типом и его наследником, причём преобразование наследуемого типа в наследующий должно быть явно задано, а во время выполнения производится проверка его осмысленности. Преобразования ссылок на массивы разрешены лишь тогда, когда разрешены преобразования их базовых типов, а также нет конфликтов размерности.</li>
<li>В Java нет операций взятия адреса (<code>&amp;</code>) или взятия объекта по адресу (<code>*</code>). <a href="%D0%90%D0%BC%D0%BF%D0%B5%D1%80%D1%81%D0%B0%D0%BD%D0%B4#Прочие_применения" title="Амперсанд">Амперсанд</a> (<code>&amp;</code>) означает всего лишь «побитовое и» (двойной амперсанд&nbsp;— «логическое и»). Однако для булевых типов одиночный амперсанд означает «логическое и», отличающееся от двойного тем, что цепь проверок не прекращается при получении в выражении значения <code>false</code><sup id="cite_ref-33" class="reference"><a href="#cite_note-33"><span class="cite-bracket">[</span>30<span class="cite-bracket">]</span></a></sup>. Например, <code>a == b &amp;&amp; foo() == bar()</code> не повлечёт вызовов <code>foo()</code> и <code>bar()</code> в случае, если <code>a&nbsp;!= b</code>, тогда как использование <code>&amp;</code>&nbsp;— повлечёт в любом случае.</li></ul>
<p>Благодаря таким специально введённым ограничениям в Java невозможно прямое манипулирование памятью на уровне физических адресов (хотя определено значение ссылки, не указывающей ни на что: <code>null</code>).
</p><p>Если нужен указатель на примитивный тип, используются классы-обёртки примитивных типов: <code>Boolean</code>, <code>Byte</code>, <code>Character</code>, <code>Short</code>, <code>Integer</code>, <code>Long</code>, <code>Float</code>, <code>Double</code>.
</p>
<div class="mw-heading mw-heading4"><h4 id="Дублирование_ссылок_и_клонирование"><span id=".D0.94.D1.83.D0.B1.D0.BB.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D1.81.D1.81.D1.8B.D0.BB.D0.BE.D0.BA_.D0.B8_.D0.BA.D0.BB.D0.BE.D0.BD.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5"></span>Дублирование ссылок и клонирование</h4></div>
<p>При присваивании не происходит копирования объекта, так как объектные переменные&nbsp;— ссылочные. Так, если написать
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="n">Foo</span><span class="w"> </span><span class="n">foo</span><span class="p">,</span><span class="w"> </span><span class="n">bar</span><span class="p">;</span>
<span class="p">.</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="p">.</span>
<span class="n">bar</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">foo</span><span class="p">;</span>
</pre></div>
<p>то произойдёт копирование адреса из переменной <code>foo</code> в переменную <code>bar</code>. То есть <code>foo</code> и <code>bar</code> будут указывать на одну и ту же область памяти, то есть на один и тот же объект; попытка изменить поля объекта, на который ссылается переменная <code>foo</code>, будет менять объект, с которым связана переменная <code>bar</code>, и наоборот. Если же необходимо получить именно ещё одну <i>копию</i> исходного объекта, пользуются или <a href="%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_(%D1%8F%D0%B7%D1%8B%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" class="mw-redirect" title="Метод (языки программирования)">методом</a> (функцией-членом, в терминологии C++) <code>clone()</code>, создающим копию объекта, или (реже) копирующим <a href="%D0%9A%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D0%BE%D1%80_(%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Конструктор (объектно-ориентированное программирование)">конструктором</a> (конструкторы в Java не могут быть виртуальными, поэтому экземпляр класса-потомка будет неправильно скопирован конструктором класса-предка; метод клонирования вызывает нужный конструктор и тем самым позволяет обойти это ограничение).
</p><p>Метод <code>clone()</code><sup id="cite_ref-34" class="reference"><a href="#cite_note-34"><span class="cite-bracket">[</span>док. 3<span class="cite-bracket">]</span></a></sup> требует, чтобы класс реализовывал <a href="%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_(%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Интерфейс (объектно-ориентированное программирование)">интерфейс</a> <code>Cloneable</code><sup id="cite_ref-35" class="reference"><a href="#cite_note-35"><span class="cite-bracket">[</span>док. 4<span class="cite-bracket">]</span></a></sup>. Если класс реализует интерфейс <code>Cloneable</code>, по умолчанию <code>clone()</code> копирует все поля (<i>мелкая копия</i>). Если требуется не копировать, а клонировать поля (а также их поля и так далее), надо переопределять метод <code>clone()</code>. Определение и использование метода <code>clone()</code> часто является нетривиальной задачей<sup id="cite_ref-36" class="reference"><a href="#cite_note-36"><span class="cite-bracket">[</span>31<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading4"><h4 id="Инициализация_переменных"><span id=".D0.98.D0.BD.D0.B8.D1.86.D0.B8.D0.B0.D0.BB.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D1.8F_.D0.BF.D0.B5.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D0.BD.D1.8B.D1.85"></span>Инициализация переменных</h4></div>
<p>Все переменные или требуют явного определения, или автоматически заполняются нулями (0, <code>null</code>, <code>false</code>). Таким образом, исчезают <a href="%D0%93%D0%B5%D0%B9%D0%B7%D0%B5%D0%BD%D0%B1%D0%B0%D0%B3" title="Гейзенбаг">гейзенбаги</a>, связанные со случайным использованием неинициализированной памяти, характерные для низкоуровневых языков вроде <a href="%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Си (язык программирования)">Си</a>.
</p>
<div class="mw-heading mw-heading4"><h4 id="Сборка_мусора"><span id=".D0.A1.D0.B1.D0.BE.D1.80.D0.BA.D0.B0_.D0.BC.D1.83.D1.81.D0.BE.D1.80.D0.B0"></span>Сборка мусора</h4></div>
<p>В языке Java невозможно явное удаление объекта из памяти&nbsp;— вместо этого реализована <a href="%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%BC%D1%83%D1%81%D0%BE%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" class="mw-redirect" title="Сборка мусора (программирование)">сборка мусора</a>. Традиционным приёмом, дающим сборщику мусора «намёк» на необходимость освобождения памяти, является присваивание переменной значения <code>null</code>, что может оказаться эффективным при необходимости освободить более не требующийся объект, ссылка на который хранится в долгоживущем объекте<sup id="cite_ref-37" class="reference"><a href="#cite_note-37"><span class="cite-bracket">[</span>32<span class="cite-bracket">]</span></a></sup>. Это, однако, не значит, что объект, заменённый значением <code>null</code>, будет немедленно удалён, но есть гарантия, что этот объект будет удалён в будущем. Данный приём всего лишь устраняет ссылку на объект, то есть отвязывает указатель от объекта в памяти. При этом следует учитывать, что объект не будет удалён сборщиком мусора, пока на него указывает хотя бы одна ссылка из используемых переменных или объектов. Существуют также методы для инициации принудительной сборки мусора, но не гарантируется, что они будут вызваны исполняющей средой, и их не рекомендуется использовать для обычной работы. Помимо периодических сборок мусора стоит отметить так называемую «общую сборку мусора» (STW, <a href="%D0%90%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA" title="Английский язык">англ.</a>&nbsp;<span lang="en" style="font-style:italic;">Stop The World</span>), которая может привести ко временному «подвисанию» исполняемой программы<sup id="cite_ref-38" class="reference"><a href="#cite_note-38"><span class="cite-bracket">[</span>33<span class="cite-bracket">]</span></a></sup>.
</p><p>В Java используется несколько сборщиков мусора (Serial GC, Parallel GC, G1, ZGC), какой из них используется по умолчанию&nbsp;— зависит от версии <a href="%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8" title="Интегрированная среда разработки">IDE</a>. Чтобы выбрать какой-то определённый, нужно запустить <a href="JRE" class="mw-redirect" title="JRE">JRE</a> с ключом командной строки «-XX:+Use&lt;имя сборщика&gt;GC -jar &lt;имя-jar-файла.jar&gt;», например, вызов «java -XX:+UseG1GC -jar Application.java» приведёт к сборке мусора его сборщиком G1<sup id="cite_ref-39" class="reference"><a href="#cite_note-39"><span class="cite-bracket">[</span>34<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Классы_и_функции"><span id=".D0.9A.D0.BB.D0.B0.D1.81.D1.81.D1.8B_.D0.B8_.D1.84.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D0.B8"></span>Классы и функции</h3></div>
<p>Java не является процедурным языком: любая функция может существовать только внутри класса. Это подчёркивает терминология языка Java, где нет понятий «функция» или «функция-член» (<a href="%D0%90%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA" title="Английский язык">англ.</a>&nbsp;<span lang="en" style="font-style:italic;">member function</span>), а только <i>метод</i>. В методы превратились и стандартные функции. Например, в Java нет функции <code>sin()</code>, а есть метод <code>Math.sin()</code> класса <code>Math</code> (содержащего, кроме <code>sin()</code>, методы <code>cos()</code>, <code>exp()</code>, <code>sqrt()</code>, <code>abs()</code> и многие другие).
</p><p>Как и в языке <a href="%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Си (язык программирования)">C</a>, любая исполняемая программа на Java должна иметь <a href="%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)#Точка_входа_программы" title="Си (язык программирования)">точку входа</a>, которой является метод main&nbsp;— он должен/может быть единственным в программе и, в отличие от Си, всегда статическим. При этом, начиная с Java 21, в которой были экспериментально введены безымянные классы, допускается определять этот метод, не определяя имени главного класса.
</p><p>Конструкторы в Java не считаются методами. Деструкторов в Java не существует, а метод <code>finalize()</code> ни в коем случае нельзя считать аналогом деструктора.
</p>
<div class="mw-heading mw-heading4"><h4 id="Конструкторы"><span id=".D0.9A.D0.BE.D0.BD.D1.81.D1.82.D1.80.D1.83.D0.BA.D1.82.D0.BE.D1.80.D1.8B"></span>Конструкторы</h4></div>
<p>Конструктор&nbsp;— это специальный метод, который обязательно вызывается при создании нового объекта, то есть объект (экземпляр класса) не может быть создан без вызова конструктора класса. Не всегда удобно инициализировать все переменные класса при создании его экземпляра, поэтому переменные экземпляра часто объявляют внутри тела конструктора, а инициализируют как аргументы конструктора при создании экземпляра класса. Иногда проще, чтобы какие-то значения были бы созданы по умолчанию при создании объекта. В таком случае переменные объявляются и инициализируются внутри тела конструктора.
</p><p>
Конструктор инициализирует объект непосредственно во время создания. Имя конструктора совпадает с именем класса, включая регистр, а по синтаксису конструктор похож на метод без возвращаемого значения.</p><div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">private</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">Cat</span><span class="p">();</span><span class="w">  </span><span class="c1">// так выглядит метод по имени Cat</span>
<span class="n">Cat</span><span class="p">();</span><span class="w">              </span><span class="c1">// так выглядит конструктор класса Cat</span>
</pre></div><p>В отличие от метода, конструктор никогда ничего не возвращает.
</p><p>Конструктор определяет действия, выполняемые при создании объекта класса, и является важной частью класса. Как правило, программисты стараются явно указать конструктор. Если явного конструктора нет, то Java автоматически создаст его (пустым) для использования по умолчанию.
</p><p>
В качестве примера можно рассмотреть некий класс <code>Box</code>, представляющий собой описание коробки. Конструктор класса просто установит начальные размеры для коробки.</p><div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">class</span> <span class="nc">Box</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="kt">int</span><span class="w"> </span><span class="n">width</span><span class="p">;</span><span class="w"> </span><span class="c1">// ширина коробки</span>
<span class="w">    </span><span class="kt">int</span><span class="w"> </span><span class="n">height</span><span class="p">;</span><span class="w"> </span><span class="c1">// высота коробки</span>
<span class="w">    </span><span class="kt">int</span><span class="w"> </span><span class="n">depth</span><span class="p">;</span><span class="w"> </span><span class="c1">// глубина коробки</span>

<span class="w">    </span><span class="c1">// Конструктор</span>
<span class="w">    </span><span class="n">Box</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="n">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="p">;</span>
<span class="w">        </span><span class="n">height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">b</span><span class="p">;</span>
<span class="w">        </span><span class="n">depth</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span>
<span class="w">    </span><span class="p">}</span>

<span class="w">    </span><span class="c1">// вычисляем объём коробки</span>
<span class="w">    </span><span class="kt">int</span><span class="w"> </span><span class="nf">getVolume</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">    	</span><span class="k">return</span><span class="w"> </span><span class="n">width</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">height</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">depth</span><span class="p">;</span>
<span class="w">    </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading4"><h4 id="Статические_методы_и_поля"><span id=".D0.A1.D1.82.D0.B0.D1.82.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B5_.D0.BC.D0.B5.D1.82.D0.BE.D0.B4.D1.8B_.D0.B8_.D0.BF.D0.BE.D0.BB.D1.8F"></span>Статические методы и поля</h4></div>
<p>В Java (как и в C++) используются <i>статические поля и</i> <i>статические методы</i> (<a href="%D0%90%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA" title="Английский язык">англ.</a>&nbsp;<span lang="en" style="font-style:italic;">static method</span>&nbsp;— в теории программирования их также называют методами класса), которые задаются при помощи ключевого слова <code>static</code>. Статические поля (переменные класса) имеют тот же смысл, что и в C++: каждое такое поле является собственностью класса, поэтому для доступа к статическим полям не требуется создавать экземпляры соответствующего класса.
</p><p>Например, математические функции, реализованные в классе <code>Math</code><sup id="cite_ref-40" class="reference"><a href="#cite_note-40"><span class="cite-bracket">[</span>док. 5<span class="cite-bracket">]</span></a></sup>, представляют собой как раз статические методы данного класса. Поэтому их можно вызывать напрямую из класса, не создавая его экземпляра, например:
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">double</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Math</span><span class="p">.</span><span class="na">sin</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
</pre></div>
<p>Создание экземпляра статического класса запрещают с помощью приватного конструктора. Например, создание экземпляра класса <code>Math</code> приведёт к ошибке на этапе компиляции:
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="n">Math</span><span class="w"> </span><span class="n">m</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Math</span><span class="p">();</span><span class="w"> </span><span class="c1">// Error: Math() has private access in java.lang.Math</span>
<span class="kt">double</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">m</span><span class="p">.</span><span class="na">sin</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span><span class="w"> </span><span class="c1">// Метода sin у объекта не существовало бы, т. к. он статичный</span>
</pre></div>
<p>Поскольку статические методы существуют независимо от объектов (экземпляров класса), они не имеют доступа к обычным (не статическим) полям и методам данного класса. В частности, при реализации статического метода недопустимо использовать идентификатор <code>this</code>.
</p><p>Возможность статического импорта позволяет вызывать статические функции и константы без указания класса. Пример без статического импорта:
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">double</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Math</span><span class="p">.</span><span class="na">sin</span><span class="p">(</span><span class="n">Math</span><span class="p">.</span><span class="na">tan</span><span class="p">(</span><span class="n">Math</span><span class="p">.</span><span class="na">sqrt</span><span class="p">(</span><span class="n">y</span><span class="p">))</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">Math</span><span class="p">.</span><span class="na">floor</span><span class="p">(</span><span class="mf">24.5</span><span class="p">))</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">Math</span><span class="p">.</span><span class="na">cos</span><span class="p">(</span><span class="mi">42</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">Math</span><span class="p">.</span><span class="na">PI</span><span class="p">);</span>
</pre></div>
<p>Тот же пример, но со статическим импортом:
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kn">import static</span><span class="w"> </span><span class="nn">java.lang.Math.*</span><span class="p">;</span>
<span class="p">...</span>
<span class="kt">double</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sin</span><span class="p">(</span><span class="n">tan</span><span class="p">(</span><span class="n">sqrt</span><span class="p">(</span><span class="n">y</span><span class="p">))</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">floor</span><span class="p">(</span><span class="mf">24.5</span><span class="p">))</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">cos</span><span class="p">(</span><span class="mi">42</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">PI</span><span class="p">);</span>
</pre></div>
<div class="mw-heading mw-heading4"><h4 id="Завершённость_(final)"><span id=".D0.97.D0.B0.D0.B2.D0.B5.D1.80.D1.88.D1.91.D0.BD.D0.BD.D0.BE.D1.81.D1.82.D1.8C_.28final.29"></span>Завершённость (final)</h4></div>
<p>Ключевое слово <code>final</code> (финальный) имеет разные значения при описании поля, метода или класса.
</p>
<ol><li>Финальное <b>поле</b> класса инициализируется при описании или в конструкторе класса (а статическое поле&nbsp;— в статическом блоке инициализации). Впоследствии его значение не может быть изменено. Если статическое поле класса или переменная проинициализированы константным выражением, они рассматриваются компилятором как <a href="%D0%9A%D0%BE%D0%BD%D1%81%D1%82%D0%B0%D0%BD%D1%82%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Константа (программирование)">именованная константа</a>; в таком случае их значение может быть использовано в <a href="Switch_(%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80)" class="mw-redirect" title="Switch (оператор)">операторах <code>switch</code></a> (для констант типов <code>int</code> и <code>String</code>, в том числе&nbsp;— элементов <a href="%D0%9F%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D1%8F%D0%B5%D0%BC%D1%8B%D0%B9_%D1%82%D0%B8%D0%BF#Java" title="Перечисляемый тип">перечислений</a>), а также для условной компиляции (для констант типа <code>boolean</code>) при использовании с <a href="%D0%A3%D1%81%D0%BB%D0%BE%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80" class="mw-redirect" title="Условный оператор">оператором <code>if</code></a>.</li>
<li>Значения <b>локальных переменных</b>, а также <b>параметров метода</b>, помеченных ключевым словом <code>final</code>, не могут быть изменены после присвоения. При этом их значения могут использоваться внутри <a href="%D0%92%D0%BD%D1%83%D1%82%D1%80%D0%B5%D0%BD%D0%BD%D0%B8%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%81#Анонимные_(безымянные)_классы" title="Внутренний класс">анонимных классов</a>.</li>
<li><b>Метод</b> класса, отмеченный словом <code>final</code>, не может быть переопределён при наследовании. В случае <b>статического</b> метода с модификатором <code>final</code> метод не может быть скрыт (hide) методом дочернего класса при наследовании.</li>
<li><a href="%D0%9B%D0%B8%D1%81%D1%82%D0%BE%D0%B2%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%81" title="Листовой класс">Финальный <b>класс</b></a> не может иметь наследников.</li></ol>
<div class="mw-heading mw-heading4"><h4 id="Абстрактность"><span id=".D0.90.D0.B1.D1.81.D1.82.D1.80.D0.B0.D0.BA.D1.82.D0.BD.D0.BE.D1.81.D1.82.D1.8C"></span>Абстрактность</h4></div>
<p>В Java методы, не объявленные явно как <code>static</code>, <code>final</code> или <code>private</code>, являются <a href="%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4" title="Виртуальный метод">виртуальными</a> в терминологии C++: при вызове метода, по-разному определённого в базовом и наследующем классах, всегда производится проверка времени выполнения.
</p><p><a href="%D0%90%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0%BA%D1%82%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4" title="Абстрактный метод">Абстрактным методом</a> (модификатор <code>abstract</code>) в Java называется метод, для которого заданы параметры и тип возвращаемого значения, но не задано тело. Абстрактный метод определяется в классах-наследниках. Аналог абстрактного метода в C++&nbsp;— чисто виртуальная функция (pure virtual function). Для того чтобы в классе можно было описывать абстрактные методы, сам класс тоже должен быть описан как абстрактный. Объекты абстрактного класса создавать нельзя.
</p>
<div class="mw-heading mw-heading4"><h4 id="Интерфейсы"><span id=".D0.98.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D1.8B"></span>Интерфейсы</h4></div>
<p>Высшей степенью абстрактности в Java является интерфейс (модификатор <code>interface</code>). Интерфейс содержит преимущественно абстрактные методы, имеющие всеобщий уровень доступа: описатели <code>abstract</code> и <code>public</code> для них даже не требуются. Однако с версий Java 8 и 9 были введены возможности использования в интерфейсах
</p><p>— Java 8: статических (<code>static</code>) методов и методов по умолчанию (<code>default</code>);
</p><p>— Java 9: методов, имеющих уровень доступа <code>private</code>.
</p><p>Эти методы содержат тело, а значит абстрактными не являются, но в конкретной реализации интерфейса <code>default</code>-методы могут быть переопределены.
</p><p>Интерфейс в Java не считается классом, хотя, по сути, является полностью абстрактным классом.
</p><p>Класс может наследовать/<i>расширять</i> (<code>extends</code>) другой класс или <i>реализовывать</i> (<code>implements</code>) интерфейс. Интерфейсы же могут наследовать/расширять другие интерфейсы. В Java класс не может наследовать более одного класса, зато может реализовывать несколько интерфейсов. Множественное наследование интерфейсов не запрещено&nbsp;— один интерфейс может наследоваться от нескольких.
</p><p>С версии Java 15 (экспериментально, официально&nbsp;— с версии Java 17) добавлена возможность использования запечатанных (<code>sealed</code>) классов/интерфейсов, при объявлении которых, с помощью ключевого слова <code>permits</code>, можно указывать, какие классы/интерфейсы могут наследовать данный запечатанный класс/интерфейс.
</p><p>Интерфейсы можно использовать в качестве типов параметров методов. Нельзя создавать экземпляры интерфейсов.
</p>
<div class="mw-heading mw-heading5"><h5 id="Маркерные_интерфейсы"><span id=".D0.9C.D0.B0.D1.80.D0.BA.D0.B5.D1.80.D0.BD.D1.8B.D0.B5_.D0.B8.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D1.8B"></span>Маркерные интерфейсы</h5></div>
<p>В Java есть интерфейсы, которые не содержат методов для реализации, а специальным образом обрабатываются JVM: <code>Cloneable</code>, <code>Serializable</code>, <code>RandomAccess</code>, <code>Remote</code>.
</p>
<div class="mw-heading mw-heading4"><h4 id="Шаблоны_в_Java_(generics)"><span id=".D0.A8.D0.B0.D0.B1.D0.BB.D0.BE.D0.BD.D1.8B_.D0.B2_Java_.28generics.29"></span>Шаблоны в Java (generics)</h4></div>
<p><span id="generics"></span>
Начиная с версии Java 5.0 в языке появился механизм <a href="%D0%9E%D0%B1%D0%BE%D0%B1%D1%89%D1%91%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Обобщённое программирование">обобщённого программирования</a>&nbsp;— шаблоны, внешне близкие к шаблонам C++. С помощью специального синтаксиса в описании классов и методов можно указать параметры-типы, которые внутри описания могут использоваться в качестве типов полей, параметров и возвращаемых значений методов.
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// Объявление обобщённого класса</span>
<span class="kd">class</span> <span class="nc">GenericClass</span><span class="o">&lt;</span><span class="n">E</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">E</span><span class="w"> </span><span class="nf">getFirst</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">}</span>
<span class="w">  </span><span class="kt">void</span><span class="w"> </span><span class="nf">add</span><span class="p">(</span><span class="n">E</span><span class="w"> </span><span class="n">obj</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">}</span>
<span class="p">}</span>

<span class="c1">// Использование обобщённого класса в коде</span>
<span class="n">GenericClass</span><span class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span><span class="w"> </span><span class="n">obj</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">GenericClass</span><span class="o">&lt;&gt;</span><span class="p">();</span>
<span class="n">obj</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="s">"qwerty"</span><span class="p">);</span>
<span class="n">String</span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">obj</span><span class="p">.</span><span class="na">getFirst</span><span class="p">();</span>
</pre></div>
<p>Допускается обобщённое объявление классов, интерфейсов и методов. Кроме того, синтаксис поддерживает ограниченные объявления типов-параметров: указание в объявлении конструкции вида <code>&lt;T extends A &amp; B &amp; C...&gt;</code> требует, чтобы тип-параметр T реализовывал интерфейсы A, B, C и так далее.
</p><p>В отличие от шаблонов C#, шаблоны Java не поддерживаются средой исполнения&nbsp;— компилятор просто создаёт байт-код, в котором никаких шаблонов уже нет. Реализация шаблонов в Java принципиально отличается от реализации аналогичных механизмов в C++: компилятор не порождает для каждого случая использования шаблона отдельный вариант класса или метода-шаблона, а просто создаёт одну реализацию байт-кода, содержащую необходимые проверки и преобразования типов. Это приводит к ряду ограничений использования шаблонов в программах на Java.
</p>
<div class="mw-heading mw-heading4"><h4 id="Проверка_принадлежности_к_классу"><span id=".D0.9F.D1.80.D0.BE.D0.B2.D0.B5.D1.80.D0.BA.D0.B0_.D0.BF.D1.80.D0.B8.D0.BD.D0.B0.D0.B4.D0.BB.D0.B5.D0.B6.D0.BD.D0.BE.D1.81.D1.82.D0.B8_.D0.BA_.D0.BA.D0.BB.D0.B0.D1.81.D1.81.D1.83"></span>Проверка принадлежности к классу</h4></div>
<p>В Java можно явно проверить, к какому классу принадлежит объект. Выражение <code>foo instanceof Foo</code> равно <code>true</code>, если объект <code>foo</code> принадлежит классу <code>Foo</code> или его наследнику, или реализует интерфейс <code>Foo</code> (или, в общем виде, наследует класс, который реализует интерфейс, который наследует <code>Foo</code>).
</p><p>Далее функция <code>getClass()</code><sup id="cite_ref-41" class="reference"><a href="#cite_note-41"><span class="cite-bracket">[</span>док. 6<span class="cite-bracket">]</span></a></sup>, определённая для всех объектов, выдаёт объект типа <code>Class&lt;?&gt;</code>. Для каждого класса создаётся не более одного описывающего его объекта типа <code>Class</code>, поэтому эти объекты можно сравнивать. Так, например, <code>foo.getClass() == bar.getClass()</code> будет истинно, если объекты <code>foo</code> и <code>bar</code> принадлежат к одному классу.
</p><p>Кроме того, объект типа <code>Class&lt;?&gt;</code> любого типа можно получить так: <code>Integer.class</code>, <code>Object.class</code>.
</p><p>Прямое сравнение классов не всегда является оптимальным средством проверки на принадлежность к классу. Зачастую вместо него используют функцию <code>isAssignableFrom()</code>. Эта функция определена у объекта типа <code>Class</code> и принимает объект типа <code>Class&lt;?&gt;</code> в качестве параметра. Таким образом, вызов <code>Foo.class.isAssignableFrom(Bar.class)</code> вернёт <code>true</code> в случае, если <code>Foo</code> является предком класса <code>Bar</code>. Так как все объекты являются потомками типа <code>Object</code>, вызов <code>Object.class.isAssignableFrom()</code> всегда вернёт <code>true</code>.
</p><p>В паре с упомянутыми функциями объекта типа <code>Class</code> используются также функции <code>isInstance</code><sup id="cite_ref-42" class="reference"><a href="#cite_note-42"><span class="cite-bracket">[</span>док. 7<span class="cite-bracket">]</span></a></sup> (эквивалентно <code>instanceof</code>), а также <code>cast()</code> (преобразует параметр в объект выбранного класса).
</p>
<div class="mw-heading mw-heading3"><h3 id="Обработка_ошибок"><span id=".D0.9E.D0.B1.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.BA.D0.B0_.D0.BE.D1.88.D0.B8.D0.B1.D0.BE.D0.BA"></span>Обработка ошибок</h3></div>
<p>Обработка ошибок в Java похожа на обработку ошибок в <a href="C%2B%2B" title="C++">C++</a> за исключением необходимости в блоке <code>finally</code>. Данное отличие обусловлено тем, что Java не может придерживаться концепции <a href="%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%B0_%D0%B5%D1%81%D1%82%D1%8C_%D0%B8%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F" title="Получение ресурса есть инициализация">RAII</a> из-за наличия сборщика мусора, а автоматическое освобождение ресурсов в деструкторе может идти в непредсказуемом порядке через произвольные промежутки времени.
</p><p>Осуществляется обработка ошибок с помощью операторов <code>try</code>, <code>catch</code> и <code>finally</code>. Выбрасываемая ошибка описывается объектом определённого класса, наследующегося от <code>Throwable</code><sup id="cite_ref-43" class="reference"><a href="#cite_note-43"><span class="cite-bracket">[</span>док. 8<span class="cite-bracket">]</span></a></sup> и соответствующего типу ошибки. Внутрь блока <code>try</code> помещается код, который может выбросить исключение, а блок <code>catch</code> отлавливает заданные программистом типы ошибок. При этом можно указывать более одного блока <code>catch</code> для обработки различных классов ошибок, или multi-catch для обработки нескольких ошибок. Блок <code>finally</code> является необязательным, но при наличии выполняется независимо от возникновения ошибки и предназначен для освобождения выделенных в ходе работы блока <code>try</code> ресурсов.
</p><p>Начиная с Java 7 поддерживается интерфейс <code>AutoCloseable</code><sup id="cite_ref-44" class="reference"><a href="#cite_note-44"><span class="cite-bracket">[</span>док. 9<span class="cite-bracket">]</span></a></sup>, который позволяет реализовывать классы, автоматически освобождающие ресурсы. Объекты подобных классов требуется создавать в круглых скобках перед блоком <code>try</code>. Простым примером автоматического освобождения ресурсом может служить чтение содержимого файла:
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr mw-highlight-lines" dir="ltr"><pre><span></span><span class="linenos" data-line="1"></span><span class="kn">import</span><span class="w"> </span><span class="nn">java.io.*</span><span class="p">;</span>
<span class="linenos" data-line="2"></span>
<span class="linenos" data-line="3"></span><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Main</span><span class="w"> </span><span class="p">{</span>
<span class="linenos" data-line="4"></span><span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span><span class="w"> </span><span class="p">{</span>
<span class="linenos" data-line="5"></span><span class="w">        </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="na">length</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="linenos" data-line="6"></span><span class="w">            </span><span class="n">System</span><span class="p">.</span><span class="na">err</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">"Не указано имя файла."</span><span class="p">);</span>
<span class="linenos" data-line="7"></span><span class="w">            </span><span class="k">return</span><span class="p">;</span>
<span class="linenos" data-line="8"></span><span class="w">        </span><span class="p">}</span>
<span class="linenos" data-line="9"></span><span class="w">        </span><span class="n">String</span><span class="w"> </span><span class="n">filename</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">args</span><span class="o">[</span><span class="mi">1</span><span class="o">]</span><span class="p">;</span>
<span class="linenos" data-line="10"></span><span class="w">        </span><span class="c1">// Открытый файл будет автоматически закрыт по ошибке</span>
<span class="linenos" data-line="11"></span><span class="w">        </span><span class="k">try</span><span class="w"> </span><span class="p">(</span><span class="n">BufferedReader</span><span class="w"> </span><span class="n">reader</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">BufferedReader</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">FileReader</span><span class="p">(</span><span class="n">filename</span><span class="p">)))</span><span class="w"> </span><span class="p">{</span>
<span class="linenos" data-line="12"></span><span class="w">            </span><span class="n">String</span><span class="w"> </span><span class="n">line</span><span class="p">;</span>
<span class="linenos" data-line="13"></span><span class="w">            </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="p">(</span><span class="n">line</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">reader</span><span class="p">.</span><span class="na">readLine</span><span class="p">())</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="linenos" data-line="14"></span><span class="w">                </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">": "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">line</span><span class="p">);</span>
<span class="linenos" data-line="15"></span><span class="w">            </span><span class="p">}</span>
<span class="linenos" data-line="16"></span><span class="w">        </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">FileNotFoundException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="linenos" data-line="17"></span><span class="w">            </span><span class="n">System</span><span class="p">.</span><span class="na">err</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">"Указанный файл не найден."</span><span class="p">);</span>
<span class="linenos" data-line="18"></span><span class="w">        </span><span class="p">}</span>
<span class="linenos" data-line="19"></span><span class="w">        </span><span class="c1">// finally {</span>
<span class="linenos" data-line="20"></span><span class="w">        </span><span class="c1">//     reader.close(); // автоматическое закрытие ресурса</span>
<span class="linenos" data-line="21"></span><span class="w">        </span><span class="c1">// }</span>
<span class="linenos" data-line="22"></span><span class="w">    </span><span class="p">}</span>
<span class="linenos" data-line="23"></span><span class="p">}</span>
</pre></div>
<p>Java придерживается концепции обязательного указания классов ошибок, которые может выбросить метод. Делается это с помощью ключевого слова <code>throws</code> после описания метода. Если в методе не указать класс исключения (или его предка), которое может быть выброшено из метода, то это вызовет ошибку компиляции. Концепция должна была позволить делать код самодокументируемым, обозначая, какие исключения может выбросить тот или иной метод, но на практике редко себя оправдывает, поскольку в силу разных обстоятельств программист может указать в качестве выбрасываемого исключения класс <code>Exception</code> либо заключить проблемные части метода в блок <code>try</code>...<code>catch</code> для игнорирования отдельных ошибок, либо&nbsp;— в блок <code>try</code>...<code>finally</code>, скрывая все возможные ошибки. Недостатком концепции также является и то, что программист сам должен определять и прописывать исключения, которые может выбрасывать метод<sup id="cite_ref-45" class="reference"><a href="#cite_note-45"><span class="cite-bracket">[</span>35<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Пространство_имён"><span id=".D0.9F.D1.80.D0.BE.D1.81.D1.82.D1.80.D0.B0.D0.BD.D1.81.D1.82.D0.B2.D0.BE_.D0.B8.D0.BC.D1.91.D0.BD"></span>Пространство имён</h3></div>
<div role="note" class="hatnote navigation-not-searchable ts-main">Основная статья: <a href="%D0%9F%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%82%D0%B2%D0%BE_%D0%B8%D0%BC%D1%91%D0%BD_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Пространство имён (программирование)">Пространство имён (программирование)</a></div>
<p>Идея пространств имён воплощена в <a href="Package_(Java)" class="mw-redirect" title="Package (Java)">Java-пакетах</a>.
</p><p>Название Java-пакета&nbsp;создаётся <a href="%D0%9B%D0%B0%D1%82%D0%B8%D0%BD%D1%81%D0%BA%D0%B8%D0%B9_%D0%B0%D0%BB%D1%84%D0%B0%D0%B2%D0%B8%D1%82" class="mw-redirect" title="Латинский алфавит">латиницей</a> (используется нижний и верхний регистр) с <a href="%D0%A6%D0%B8%D1%84%D1%80%D1%8B" title="Цифры">цифрами</a> (они не должны быть первыми в строке) и знаком подчёркивания (он не должен быть первым и последним в строке), не являющейся инструкциями языка (например, <code>if</code>, <code>null</code>), разделённой точками.
</p><p>Правильные примеры названий:
</p>
<ul><li><code>project.types.net.media</code></li>
<li><code>a0.a_b.canrepeat.canrepeat.UPPERCASE.RaNdOmCaSe</code> (хотя нежелательно, из-за нечитабельности)</li></ul>
<p>Неправильные примеры названий:
</p>
<ul><li><code>doubledots..something</code> (две точки подряд)</li>
<li><code>нестандартный.язык</code> (не латиница)</li>
<li><code>0first.characret.is.number</code> (число в начале)</li>
<li><code>contains.white space</code> (пробел вместо точки)</li>
<li><code>true.asd</code> (содержит <code>true</code>, см. выше)</li></ul>
<p>Пакеты содержат классы, интерфейсы, перечисления, аннотации (и&nbsp;т.&nbsp;д.), имена которых&nbsp;тоже создаются латиницей (используется нижний и верхний регистр) с цифрами (они не должны стоять первыми в строке). Публичный класс, интерфейс (и&nbsp;т.&nbsp;д.) в одном файле может быть только один. Имя публичного класса, интерфейса (и&nbsp;т.&nbsp;д.) в файле должно совпадать с названием файла. Каждый класс имеет своё пространство имён для функций, переменных и подклассов, подинтерфейсов (и&nbsp;т.&nbsp;д.), причём получить подкласс класса можно с помощью <code>OuterClass.InnerClass</code>, а можно&nbsp;— с помощью <code>OuterClass$InnerClass</code>, поэтому использование символа доллара в названии класса не рекомендуется.
</p>
<div class="mw-heading mw-heading2"><h2 id="Примеры_программ"><span id=".D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80.D1.8B_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC"></span>Примеры программ</h2></div>
<p>Код программы «<a href="Hello%2C_world!" title="Hello, world!">Hello, world!</a>».
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr mw-highlight-lines" dir="ltr"><pre><span></span><span class="linenos" data-line="1"></span><span class="kd">class</span> <span class="nc">HelloWorld</span><span class="w"> </span><span class="p">{</span>
<span class="linenos" data-line="2"></span><span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="linenos" data-line="3"></span><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">"Hello, world!"</span><span class="p">);</span>
<span class="linenos" data-line="4"></span><span class="w">    </span><span class="p">}</span>
<span class="linenos" data-line="5"></span><span class="p">}</span>
</pre></div>
<p><a href="%D0%9E%D0%B1%D0%BE%D0%B1%D1%89%D1%91%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Обобщённое программирование">Обобщения</a>:
</p>
<style data-mw-deduplicate="TemplateStyles:r142621938">
/* start https://ru.wikipedia.org/ */


.mw-parser-output .ts-Скрытый_блок{margin:0;overflow:hidden;border-collapse:collapse;box-sizing:border-box}.mw-parser-output .ts-Скрытый_блок-title{text-align:center;font-weight:bold;line-height:1.6em;min-height:1.2em}.mw-parser-output .ts-Скрытый_блок .mw-collapsible-content{overflow-x:auto;overflow-y:hidden;clear:both}.mw-parser-output .ts-Скрытый_блок::before,.mw-parser-output .ts-Скрытый_блок .mw-collapsible-toggle{padding-top:.1em;width:6em;font-weight:normal;font-size:calc(90%/0.95)}.mw-parser-output .ts-Скрытый_блок-rightHideLink .mw-collapsible-toggle{float:right;text-align:right}.mw-parser-output .ts-Скрытый_блок-leftHideLink .mw-collapsible-toggle{float:left;text-align:left}.mw-parser-output .ts-Скрытый_блок-gray{padding:2px;border:1px solid var(--border-color-base,#a2a9b1)}.mw-parser-output .ts-Скрытый_блок-transparent{border:none}.mw-parser-output .ts-Скрытый_блок-gray .ts-Скрытый_блок-title{background:var(--background-color-neutral,#eaecf0);padding:.1em 6em;padding-right:0}.mw-parser-output .ts-Скрытый_блок-transparent .ts-Скрытый_блок-title{background:transparent;padding:.1em 5.5em;padding-right:0}.mw-parser-output .ts-Скрытый_блок-gray .mw-collapsible-content{padding:.25em 1em}.mw-parser-output .ts-Скрытый_блок-transparent .mw-collapsible-content{padding:.25em 0}.mw-parser-output .ts-Скрытый_блок-gray.ts-Скрытый_блок-rightHideLink .mw-collapsible-toggle{padding-right:1em}.mw-parser-output .ts-Скрытый_блок-transparent.ts-Скрытый_блок-rightHideLink .mw-collapsible-toggle{padding-right:0}.mw-parser-output .ts-Скрытый_блок-gray.ts-Скрытый_блок-leftHideLink .mw-collapsible-toggle{padding-left:1em}.mw-parser-output .ts-Скрытый_блок-transparent.ts-Скрытый_блок-leftHideLink .mw-collapsible-toggle{padding-left:0}.mw-parser-output .ts-Скрытый_блок-gray.ts-Скрытый_блок-rightHideLink .ts-Скрытый_блок-title-leftTitle{padding-left:1em}.mw-parser-output .ts-Скрытый_блок-gray.ts-Скрытый_блок-leftHideLink .ts-Скрытый_блок-title-leftTitle{padding-left:6.5em}.mw-parser-output .ts-Скрытый_блок-gray.ts-Скрытый_блок-leftHideLink .ts-Скрытый_блок-title-rightTitle{padding-right:1em}.mw-parser-output .ts-Скрытый_блок-transparent.ts-Скрытый_блок-rightHideLink .ts-Скрытый_блок-title-rightTitle,.mw-parser-output .ts-Скрытый_блок-transparent.ts-Скрытый_блок-rightHideLink .ts-Скрытый_блок-title-leftTitle{padding-left:0}.mw-parser-output .ts-Скрытый_блок-transparent.ts-Скрытый_блок-leftHideLink .ts-Скрытый_блок-title-rightTitle,.mw-parser-output .ts-Скрытый_блок-transparent.ts-Скрытый_блок-leftHideLink .ts-Скрытый_блок-title-leftTitle{padding-right:0}.mw-parser-output .ts-Скрытый_блок+.ts-Скрытый_блок,.mw-parser-output .ts-Скрытый_блок+link+.ts-Скрытый_блок{border-top-style:hidden}


/* end   https://ru.wikipedia.org/ */
</style><div class="mw-collapsible mw-collapsed ts-Скрытый_блок ts-Скрытый_блок-gray ts-Скрытый_блок-rightHideLink" style=""><div class="ts-Скрытый_блок-title" style="">Пример использования обобщений<div class="mw-collapsible-toggle-placeholder"></div></div><div class="mw-collapsible-content" style="">
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">java.util.List</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.util.ArrayList</span><span class="p">;</span>

<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Sample</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// Создание объекта по шаблону.</span>
<span class="w">        </span><span class="n">List</span><span class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span><span class="w"> </span><span class="n">strings</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ArrayList</span><span class="o">&lt;&gt;</span><span class="p">();</span>
<span class="w">        </span><span class="n">strings</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="s">"Hello"</span><span class="p">);</span>
<span class="w">        </span><span class="n">strings</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="s">"world"</span><span class="p">);</span>
<span class="w">        </span><span class="n">strings</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="s">"!"</span><span class="p">);</span>
<span class="w">        </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">string</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">strings</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">            </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">print</span><span class="p">(</span><span class="n">string</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">" "</span><span class="p">);</span>
<span class="w">        </span><span class="p">}</span>
<span class="w">    </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div></div>
<p><a href="%D0%9E%D1%82%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" class="mw-redirect" title="Отражение (программирование)">Рефлексия</a>:
</p>
<div class="mw-collapsible mw-collapsed ts-Скрытый_блок ts-Скрытый_блок-gray ts-Скрытый_блок-rightHideLink" style=""><div class="ts-Скрытый_блок-title" style="">Пример использования рефлексии<div class="mw-collapsible-toggle-placeholder"></div></div><div class="mw-collapsible-content" style="">
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">java.lang.reflect.Field</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.lang.reflect.Method</span><span class="p">;</span>

<span class="kd">class</span> <span class="nc">TestClass</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="kd">private</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">value</span><span class="p">;</span>
<span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">getValue</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">value</span><span class="p">;</span><span class="w"> </span><span class="p">}</span>
<span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">setValue</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">valueIn</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">valueIn</span><span class="p">;</span><span class="w"> </span><span class="p">}</span>
<span class="p">}</span>

<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Main</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="kd">var</span><span class="w"> </span><span class="n">testClass</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">TestClass</span><span class="p">();</span>

<span class="w">        </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">field</span><span class="p">:</span><span class="w"> </span><span class="n">testClass</span><span class="p">.</span><span class="na">getClass</span><span class="p">().</span><span class="na">getDeclaredFields</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w">            </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">printf</span><span class="p">(</span><span class="s">"name:%s, type:%s \n"</span><span class="p">,</span><span class="w"> </span><span class="n">field</span><span class="p">.</span><span class="na">getName</span><span class="p">(),</span><span class="w"> </span><span class="n">field</span><span class="p">.</span><span class="na">getType</span><span class="p">().</span><span class="na">getCanonicalName</span><span class="p">());</span>
<span class="w">        </span><span class="p">}</span>

<span class="w">        </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">method</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">testClass</span><span class="p">.</span><span class="na">getClass</span><span class="p">().</span><span class="na">getDeclaredMethods</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w">            </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">printf</span><span class="p">(</span><span class="s">"name:%s, return type:%s  \n"</span><span class="p">,</span><span class="w"> </span><span class="n">method</span><span class="p">.</span><span class="na">getName</span><span class="p">(),</span><span class="w"> </span><span class="n">method</span><span class="p">.</span><span class="na">getReturnType</span><span class="p">().</span><span class="na">getCanonicalName</span><span class="p">());</span>
<span class="w">        </span><span class="p">}</span><span class="w">        </span>
<span class="w">    </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div></div>
<p><a href="%D0%90%D0%BD%D0%BD%D0%BE%D1%82%D0%B0%D1%86%D0%B8%D1%8F_(Java)" title="Аннотация (Java)">Аннотации</a>:
</p>
<div class="mw-collapsible mw-collapsed ts-Скрытый_блок ts-Скрытый_блок-gray ts-Скрытый_блок-rightHideLink" style=""><div class="ts-Скрытый_блок-title" style="">Пример использования аннотаций<div class="mw-collapsible-toggle-placeholder"></div></div><div class="mw-collapsible-content" style="">
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">java.lang.annotation.ElementType</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.lang.annotation.Retention</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.lang.annotation.RetentionPolicy</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.lang.annotation.Target</span><span class="p">;</span>

<span class="nd">@Retention</span><span class="p">(</span><span class="n">RetentionPolicy</span><span class="p">.</span><span class="na">RUNTIME</span><span class="p">)</span>
<span class="nd">@Target</span><span class="p">(</span><span class="n">ElementType</span><span class="p">.</span><span class="na">TYPE</span><span class="p">)</span>
<span class="kd">public</span><span class="w"> </span><span class="nd">@interface</span><span class="w"> </span><span class="n">MyAnnotation</span><span class="w"> </span><span class="p">{</span>

<span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">value</span><span class="p">()</span><span class="w"> </span><span class="k">default</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span>

<span class="p">}</span>

<span class="nd">@MyAnnotation</span><span class="p">(</span><span class="n">value</span><span class="o">=</span><span class="kc">true</span><span class="p">)</span>
<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">TestClass</span><span class="w"> </span><span class="p">{</span>

<span class="p">}</span>

<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Main</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="kd">var</span><span class="w"> </span><span class="n">testClass</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">TestClass</span><span class="p">();</span>

<span class="w">        </span><span class="kd">var</span><span class="w"> </span><span class="n">myAnnotation</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">testClass</span><span class="p">.</span><span class="na">getClass</span><span class="p">().</span><span class="na">getAnnotation</span><span class="p">(</span><span class="n">MyAnnotation</span><span class="p">.</span><span class="na">class</span><span class="p">);</span>
<span class="w">        </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">myAnnotation</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">            </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">printf</span><span class="p">(</span><span class="s">"value:%s \n"</span><span class="p">,</span><span class="w"> </span><span class="n">myAnnotation</span><span class="p">.</span><span class="na">value</span><span class="p">());</span>
<span class="w">        </span><span class="p">}</span>
<span class="w">    </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div></div>
<div class="mw-heading mw-heading2"><h2 id="Средства_разработки_ПО"><span id=".D0.A1.D1.80.D0.B5.D0.B4.D1.81.D1.82.D0.B2.D0.B0_.D1.80.D0.B0.D0.B7.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.BA.D0.B8_.D0.9F.D0.9E"></span>Средства разработки ПО</h2></div>
<ul><li><a href="JDK" class="mw-redirect" title="JDK">JDK</a>&nbsp;— помимо набора библиотек для платформ <a href="Java_SE" class="mw-redirect" title="Java SE">Java SE</a> и <a href="Java_EE" class="mw-redirect" title="Java EE">Java EE</a>, содержит компилятор командной строки javac и набор утилит, так же работающих в режиме командной строки.</li>
<li><a href="NetBeans_IDE" class="mw-redirect" title="NetBeans IDE">NetBeans IDE</a>&nbsp;— свободная интегрированная среда разработки для всех платформ Java&nbsp;— <a href="Java_ME" class="mw-redirect" title="Java ME">Java ME</a>, <a href="Java_SE" class="mw-redirect" title="Java SE">Java SE</a> и <a href="Java_EE" class="mw-redirect" title="Java EE">Java EE</a>. Пропагандируется <a href="Oracle" title="Oracle">Oracle</a>, владельцем технологии Java, как базовое средство для разработки ПО на языке Java и других языках (<a href="%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Си (язык программирования)">C</a>, <a href="C%2B%2B" title="C++">C++</a>, <a href="PHP" title="PHP">PHP</a>, <a href="Fortran" class="mw-redirect" title="Fortran">Fortran</a> и др.).</li>
<li><a href="Eclipse_(%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8)" title="Eclipse (среда разработки)">Eclipse IDE</a>&nbsp;— свободная интегрированная среда разработки для <a href="Java_SE" class="mw-redirect" title="Java SE">Java SE</a>, <a href="Java_EE" class="mw-redirect" title="Java EE">Java EE</a> и <a href="Java_ME" class="mw-redirect" title="Java ME">Java ME</a><sup id="cite_ref-46" class="reference"><a href="#cite_note-46"><span class="cite-bracket">[</span>36<span class="cite-bracket">]</span></a></sup>. Пропагандируется <a href="IBM" title="IBM">IBM</a>, одним из важнейших разработчиков корпоративного ПО, как базовое средство для разработки ПО на языке Java и других языках (<a href="%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Си (язык программирования)">C</a>, <a href="C%2B%2B" title="C++">C++</a>, <a href="Ruby" title="Ruby">Ruby</a>, <a href="Fortran" class="mw-redirect" title="Fortran">Fortran</a> и др.).</li>
<li><a href="IntelliJ_IDEA" title="IntelliJ IDEA">IntelliJ IDEA</a>&nbsp;— среда разработки для платформ <a href="Java_SE" class="mw-redirect" title="Java SE">Java SE</a>, <a href="Java_EE" class="mw-redirect" title="Java EE">Java EE</a> и <a href="Java_ME" class="mw-redirect" title="Java ME">Java ME</a>. Разработчик&nbsp;— компания <a href="JetBrains" title="JetBrains">JetBrains</a>. Распространяется в двух версиях: свободной бесплатной (Community Edition) и коммерческой проприетарной (Ultimate Edition).</li>
<li><a href="JDeveloper" title="JDeveloper">JDeveloper</a>&nbsp;— среда разработки для платформ <a href="Java_SE" class="mw-redirect" title="Java SE">Java SE</a>, <a href="Java_EE" class="mw-redirect" title="Java EE">Java EE</a> и <a href="Java_ME" class="mw-redirect" title="Java ME">Java ME</a>. Разработчик&nbsp;— компания <a href="Oracle" title="Oracle">Oracle</a>.</li>
<li><a href="BlueJ" title="BlueJ">BlueJ</a>&nbsp;— среда разработки программного обеспечения на языке Java, созданная в основном для использования в обучении, но также подходящая для разработки небольших программ.</li>
<li><a href="Geany" title="Geany">Geany</a>&nbsp;— <a href="%D0%A1%D0%B2%D0%BE%D0%B1%D0%BE%D0%B4%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5" title="Свободное программное обеспечение">свободная</a> <a href="%D0%A1%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F" class="mw-redirect" title="Среда разработки программного обеспечения">среда разработки программного обеспечения</a>, написанная с использованием <a href="%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F" class="mw-redirect" title="Библиотека времени исполнения">библиотеки</a> <a href="GTK2" class="mw-redirect" title="GTK2">GTK2</a>.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="См._также"><span id=".D0.A1.D0.BC._.D1.82.D0.B0.D0.BA.D0.B6.D0.B5"></span>См. также</h2></div>
<style data-mw-deduplicate="TemplateStyles:r137903846">
/* start https://ru.wikipedia.org/ */


.mw-parser-output .ts-Родственные_проекты{clear:right;float:right;width:19em;box-sizing:border-box;margin:0 0 .5em 1em;padding:.4em;background:var(--background-color-neutral-subtle,#f8f9fa);border:1px solid var(--border-color-base,#a2a9b1);font-size:90%}.mw-parser-output .ts-Родственные_проекты-header{margin-bottom:.2em;padding:.2em .6em;font-size:110%}.mw-parser-output .ts-Родственные_проекты-item{display:flex;padding:.2em .6em}.mw-parser-output .ts-Родственные_проекты-image{min-width:24px;display:inline-block;margin-right:.4em;flex:none;vertical-align:top;text-align:center}.mw-parser-output .ts-Родственные_проекты-image img{vertical-align:middle}.mw-parser-output .ts-Родственные_проекты-label{align-self:center}@media(max-width:719px){.mw-parser-output .ts-Родственные_проекты{clear:none;float:none;width:auto;margin-left:0;margin-right:0}}


/* end   https://ru.wikipedia.org/ */
</style>
<ul><li><a href="%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_C_Sharp_%D0%B8_Java" title="Сравнение C Sharp и Java">Сравнение C# и Java</a></li>
<li><a href="%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_Java_API" title="Список Java API">Список Java API</a></li>
<li><a href="Java_User_Group" title="Java User Group">Java User Groups</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Примечания"><span id=".D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.87.D0.B0.D0.BD.D0.B8.D1.8F"></span>Примечания</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Комментарии"><span id=".D0.9A.D0.BE.D0.BC.D0.BC.D0.B5.D0.BD.D1.82.D0.B0.D1.80.D0.B8.D0.B8"></span>Комментарии</h3></div>
<div class="reflist columns" style="list-style-type: decimal;">
<div class="mw-references-wrap"><ol class="references" data-mw-group="прим.">
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text">Произносится на английском как <span class="IPA"><a href="%D0%9C%D0%B5%D0%B6%D0%B4%D1%83%D0%BD%D0%B0%D1%80%D0%BE%D0%B4%D0%BD%D1%8B%D0%B9_%D1%84%D0%BE%D0%BD%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B0%D0%BB%D1%84%D0%B0%D0%B2%D0%B8%D1%82" title="Международный фонетический алфавит">/ˈdʒɑːvə/</a></span>, «Джава». В русском языке помимо «Джава» встречается транслитерация «Ява», но правообладатели торговой марки предпочитают первую транслитерацию.</span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading3"><h3 id="Документация"><span id=".D0.94.D0.BE.D0.BA.D1.83.D0.BC.D0.B5.D0.BD.D1.82.D0.B0.D1.86.D0.B8.D1.8F"></span>Документация</h3></div>
<div class="reflist columns" style="list-style-type: decimal;">
<div class="mw-references-wrap"><ol class="references" data-mw-group="док.">
<li id="cite_note-26"><span class="mw-cite-backlink"><a href="#cite_ref-26">↑</a></span> <span class="reference-text"><code><a rel="nofollow" class="external text" href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StringBuffer.html">StringBuffer</a></code></span>
</li>
<li id="cite_note-29"><span class="mw-cite-backlink"><a href="#cite_ref-29">↑</a></span> <span class="reference-text"><code><a rel="nofollow" class="external text" href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Void.html">Void</a></code></span>
</li>
<li id="cite_note-34"><span class="mw-cite-backlink"><a href="#cite_ref-34">↑</a></span> <span class="reference-text"><code><a rel="nofollow" class="external text" href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#clone()">clone()</a></code></span>
</li>
<li id="cite_note-35"><span class="mw-cite-backlink"><a href="#cite_ref-35">↑</a></span> <span class="reference-text"><code><a rel="nofollow" class="external text" href="https://docs.oracle.com/en/java/javase/11/docs/api/java/lang/Cloneable.html">Cloneable</a></code></span>
</li>
<li id="cite_note-40"><span class="mw-cite-backlink"><a href="#cite_ref-40">↑</a></span> <span class="reference-text"><code><a rel="nofollow" class="external text" href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Math.html">Math</a></code></span>
</li>
<li id="cite_note-41"><span class="mw-cite-backlink"><a href="#cite_ref-41">↑</a></span> <span class="reference-text"><code><a rel="nofollow" class="external text" href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#getClass()">getClass()</a></code></span>
</li>
<li id="cite_note-42"><span class="mw-cite-backlink"><a href="#cite_ref-42">↑</a></span> <span class="reference-text"><code><a rel="nofollow" class="external text" href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Class.html#isInstance(java.lang.Object)">isInstance()</a></code></span>
</li>
<li id="cite_note-43"><span class="mw-cite-backlink"><a href="#cite_ref-43">↑</a></span> <span class="reference-text"><code><a rel="nofollow" class="external text" href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html">Throwable</a></code></span>
</li>
<li id="cite_note-44"><span class="mw-cite-backlink"><a href="#cite_ref-44">↑</a></span> <span class="reference-text"><code><a rel="nofollow" class="external text" href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/AutoCloseable.html">AutoCloseable</a></code></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading3"><h3 id="Источники"><span id=".D0.98.D1.81.D1.82.D0.BE.D1.87.D0.BD.D0.B8.D0.BA.D0.B8"></span>Источники</h3></div>
<div class="reflist columns" style="list-style-type: decimal;">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-_fd34c11ce3184bd5-1"><span class="mw-cite-backlink">↑ <a href="#cite_ref-_fd34c11ce3184bd5_1-0"><sup><i><b>1</b></i></sup></a> <a href="#cite_ref-_fd34c11ce3184bd5_1-1"><sup><i><b>2</b></i></sup></a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.oracle.com/java/">https://www.oracle.com/java/</a><span class="wef_low_priority_links"></span></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="https://www.oracle.com/news/announcement/oracle-releases-java-24-2025-03-18/">Oracle Releases Java 24</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Дата обращения: 27 марта 2025.</span></span>
</li>
<li id="cite_note-_48acebb557b8c2b7-3"><span class="mw-cite-backlink"><a href="#cite_ref-_48acebb557b8c2b7_3-0">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.lemondeinformatique.fr/actualites/lire-java-open-source-c-est-fait-et-c-est-en-gpl-21350.html">https://www.lemondeinformatique.fr/actualites/lire-java-open-source-c-est-fait-et-c-est-en-gpl-21350.html</a><span class="wef_low_priority_links"></span></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r150646110">
/* start https://ru.wikipedia.org/ */


.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 a::after,.mw-parser-output .id-lock-limited a::after,.mw-parser-output .id-lock-registration a::after,.mw-parser-output .id-lock-subscription a::after,.mw-parser-output .cs1-ws-icon a::after{content:"";width:1.1em;height:1.1em;display:inline-block;vertical-align:middle;background-position:center;background-repeat:no-repeat;background-size:contain}.mw-parser-output .id-lock-free.id-lock-free a::after{background-image:url("./_mw_/Lock-green.svg")}.mw-parser-output .id-lock-limited.id-lock-limited a::after,.mw-parser-output .id-lock-registration.id-lock-registration a::after{background-image:url("./_mw_/Lock-gray-alt-2.svg")}.mw-parser-output .id-lock-subscription.id-lock-subscription a::after{background-image:url("./_mw_/Lock-red-alt-2.svg")}.mw-parser-output .cs1-ws-icon a::after{background-image:url("./_mw_/Wikisource-logo.svg")}.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}html.skin-theme-clientpref-night .mw-parser-output .id-lock-free a::after,html.skin-theme-clientpref-night .mw-parser-output .id-lock-limited a::after,html.skin-theme-clientpref-night .mw-parser-output .id-lock-registration a::after,html.skin-theme-clientpref-night .mw-parser-output .id-lock-subscription a::after{filter:invert(1)hue-rotate(180deg)}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}html.skin-theme-clientpref-os .mw-parser-output .id-lock-free a::after,html.skin-theme-clientpref-os .mw-parser-output .id-lock-limited a::after,html.skin-theme-clientpref-os .mw-parser-output .id-lock-registration a::after,html.skin-theme-clientpref-os .mw-parser-output .id-lock-subscription a::after{filter:invert(1)hue-rotate(180deg)}}


/* end   https://ru.wikipedia.org/ */
</style><cite class="citation news cs1 cs1-prop-foreign-lang-source"><a rel="nofollow" class="external text" href="https://spectrum.ieee.org/at-work/tech-careers/top-programming-language-2020">Top Programming Languages 2020</a>. <i>IEEE Spectrum</i>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20210118190122/https://spectrum.ieee.org/at-work/tech-careers/top-programming-language-2020">Архивировано</a> 18 января 2021<span class="reference-accessdate">. Дата обращения: 14 февраля 2021</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=IEEE+Spectrum&amp;rft.atitle=Top+Programming+Languages+2020&amp;rft_id=https%3A%2F%2Fspectrum.ieee.org%2Fat-work%2Ftech-careers%2Ftop-programming-language-2020&amp;rfr_id=info%3Asid%2Fru.wikipedia.org%3AJava" class="Z3988"></span></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="https://www.tiobe.com/tiobe-index/">TIOBE Index | TIOBE&nbsp;— The Software Quality Company</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. www.tiobe.com. Дата обращения: 19 ноября 2018. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20180225101948/https://www.tiobe.com/tiobe-index/">Архивировано</a> 25 февраля 2018 года.</span></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><a href="#cite_ref-7">↑</a></span> <span class="reference-text"><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Buyya.</i> <a rel="nofollow" class="external text" href="https://books.google.ru/books?id=rXGMFYXFDwMC&amp;pg=PA34&amp;dq=James+gosling+oak&amp;hl=ru&amp;sa=X&amp;ved=0ahUKEwiB9PfT-s3eAhXMqIsKHSC7BIkQ6AEILDAA">Object-oriented Programming with Java: Essentials and Applications</a>.&nbsp;— Tata McGraw-Hill Education, 2009.&nbsp;— 678&nbsp;с.&nbsp;— ISBN 9780070669086. — [<a rel="nofollow" class="external text" href="https://web.archive.org/web/20181112101707/https://books.google.ru/books?id=rXGMFYXFDwMC&amp;pg=PA34&amp;dq=James+gosling+oak&amp;hl=ru&amp;sa=X&amp;ved=0ahUKEwiB9PfT-s3eAhXMqIsKHSC7BIkQ6AEILDAA#v=onepage&amp;q=James%20gosling%20oak&amp;f=false">Архивировано</a> 12&nbsp;ноября 2018&nbsp;года.]</span></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><a href="#cite_ref-8">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="https://temofeev.ru/info/articles/star7-s-chego-nachinalas-java/">Star7: с чего начиналась Java</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Дата обращения: 2 октября 2022. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20221002075116/https://temofeev.ru/info/articles/star7-s-chego-nachinalas-java/">Архивировано</a> 2 октября 2022 года.</span></span>
</li>
<li id="cite_note-slow_java-9"><span class="mw-cite-backlink">↑ <a href="#cite_ref-slow_java_9-0"><sup><i><b>1</b></i></sup></a> <a href="#cite_ref-slow_java_9-1"><sup><i><b>2</b></i></sup></a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20110614210615/http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&amp;lang=java">Java 6 -server speed ÷ C++ GNU g++ speed | Computer Language Benchmarks Game</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Дата обращения: 4 марта 2010. Архивировано из <a rel="nofollow" class="external text" href="http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&amp;lang=java">оригинала</a> 14 июня 2011 года.</span></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><a href="#cite_ref-10">↑</a></span> <span class="reference-text"><span class="citation"><i>Metz, Cade.</i> <span lang="en"><a rel="nofollow" class="external text" href="https://www.theregister.co.uk/2011/06/03/google_paper_on_cplusplus_java_scala_go/">Google pits C++ against Java, Scala, and Go</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. <a href="The_Register" title="The Register">The Register</a> (3 июня 2011). Дата обращения: 5 июня 2011. <a rel="nofollow" class="external text" href="https://www.webcitation.org/6170nFPxZ?url=http://www.theregister.co.uk/2011/06/03/google_paper_on_cplusplus_java_scala_go/">Архивировано</a> 21 августа 2011 года.</span></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><a href="#cite_ref-11">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://days2011.scala-lang.org/sites/days2011/files/ws3-1-Hundt.pdf">Loop Recognition in C++/Java/Go/Scala</a>&nbsp;<small class="ref-info" style="cursor:help;" title="Размер файла 0.3 МБ">(0.3 МБ)</small> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20111116151424/https://days2011.scala-lang.org/sites/days2011/files/ws3-1-Hundt.pdf">Архивная копия</a> от 16 ноября 2011 на <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><a href="#cite_ref-12">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="http://www.opennet.ru/opennews/art.shtml?num=30784">В Google провели сравнение производительности C++, Java, Go и Scala</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Дата обращения: 5 июня 2011. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20110608232010/http://www.opennet.ru/opennews/art.shtml?num=30784">Архивировано</a> 8 июня 2011 года.</span></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><a href="#cite_ref-13">↑</a></span> <span class="reference-text"><span class="citation"><i>Robert Tolksdorf.</i> <span lang="en"><a rel="nofollow" class="external text" href="http://www.is-research.de/info/vmlanguages/">Programming languages for the Java Virtual Machine JVM</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. is-research GmbH.&nbsp;— Онлайн-каталог альтернативных языков и языковых расширений для JVM. Дата обращения: 5 июня 2009. <a rel="nofollow" class="external text" href="https://www.webcitation.org/6170nqDc9?url=http://www.is-research.de/info/vmlanguages/">Архивировано</a> 21 августа 2011 года.</span></span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><a href="#cite_ref-14">↑</a></span> <span class="reference-text"><cite id="CITEREFDelabassee" class="citation news cs1">Delabassee, David. <a rel="nofollow" class="external text" href="https://blogs.oracle.com/theaquarium/opening-up-ee-update">Opening Up Java EE - An Update</a>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20181126010151/https://blogs.oracle.com/theaquarium/opening-up-ee-update">Архивировано</a> 26 ноября 2018<span class="reference-accessdate">. Дата обращения: 25 ноября 2018</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.atitle=Opening+Up+Java+EE+-+An+Update&amp;rft.aulast=Delabassee&amp;rft.aufirst=David&amp;rft_id=https%3A%2F%2Fblogs.oracle.com%2Ftheaquarium%2Fopening-up-ee-update&amp;rfr_id=info%3Asid%2Fru.wikipedia.org%3AJava" class="Z3988"></span></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><a href="#cite_ref-15">↑</a></span> <span class="reference-text"><cite class="citation news cs1 cs1-prop-foreign-lang-source"><a rel="nofollow" class="external text" href="https://eclipse-foundation.blog/2018/02/26/and-the-name-is/">And the Name Is…</a>. <i>Life at Eclipse</i>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. 26 февраля 2018. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20181126010008/https://eclipse-foundation.blog/2018/02/26/and-the-name-is/">Архивировано</a> 26 ноября 2018<span class="reference-accessdate">. Дата обращения: 25 ноября 2018</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=Life+at+Eclipse&amp;rft.atitle=And+the+Name+Is%E2%80%A6&amp;rft.date=2018-02-26&amp;rft_id=https%3A%2F%2Feclipse-foundation.blog%2F2018%2F02%2F26%2Fand-the-name-is%2F&amp;rfr_id=info%3Asid%2Fru.wikipedia.org%3AJava" class="Z3988"></span></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><a href="#cite_ref-16">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="http://openjdk.java.net/jeps/320">JEP 320: Remove the Java EE and CORBA Modules</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. openjdk.java.net. Дата обращения: 25 ноября 2018. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20181124235611/http://openjdk.java.net/jeps/320">Архивировано</a> 24 ноября 2018 года.</span></span>
</li>
<li id="cite_note-msjvm-17"><span class="mw-cite-backlink">↑ <a href="#cite_ref-msjvm_17-0"><sup><i><b>1</b></i></sup></a> <a href="#cite_ref-msjvm_17-1"><sup><i><b>2</b></i></sup></a></span> <span class="reference-text"><span class="citation"><span lang="en"><a rel="nofollow" class="external text" href="http://www.microsoft.com/About/Legal/EN/US/Interoperability/Java/Default.aspx">Microsoft Java Virtual Machine Support</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. Microsoft (12 сентября 2003).&nbsp;— Официальное заявление Microsoft о программе поддержки MSJVM. Дата обращения: 9 октября 2010. <a rel="nofollow" class="external text" href="https://www.webcitation.org/6170oubDn?url=http://www.microsoft.com/About/Legal/EN/US/Interoperability/Java/Default.aspx">Архивировано</a> 21 августа 2011 года.</span></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><a href="#cite_ref-18">↑</a></span> <span class="reference-text"><span class="citation"><span lang="ru"><a rel="nofollow" class="external text" href="http://msdn.microsoft.com/ru-ru/library/7xsxf8e2(VS.90).aspx">Visual J#</a></span><span class="hidden-ref" style="display:none;">&nbsp;&nbsp;<span class="ref-info" title="на русском языке" style="cursor:help;">(рус.)</span></span>. Microsoft (ноябрь 2007).&nbsp;— Официальная информация Microsoft об исключении J# из комплекта Visual Studio 2008. Дата обращения: 10 октября 2010. <a rel="nofollow" class="external text" href="https://www.webcitation.org/6170pJXt3?url=http://msdn.microsoft.com/ru-ru/library/7xsxf8e2(VS.90).aspx">Архивировано</a> 21 августа 2011 года.</span></span>
</li>
<li id="cite_note-19"><span class="mw-cite-backlink"><a href="#cite_ref-19">↑</a></span> <span class="reference-text"><span class="citation"><i>Todd Hoff.</i> <span lang="en"><a rel="nofollow" class="external text" href="http://highscalability.com/amazon-architecture">Amazon Architecture</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span> (18 сентября 2007).&nbsp;— Обсуждение архитектуры Amazon с использованием Java-технологий. Дата обращения: 6 июня 2009. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20090228222248/http://highscalability.com/amazon-architecture">Архивировано</a> 28 февраля 2009 года.</span></span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><a href="#cite_ref-20">↑</a></span> <span class="reference-text"><span class="citation"><span lang="en"><a rel="nofollow" class="external text" href="http://aws.amazon.com/ec2/">Amazon Elastic Compute Cloud (Amazon EC2)</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. Amazon Web Services LLC.&nbsp;— Описание технологии и возможностей Amazon EC2 как веб-сервиса. Дата обращения: 6 июня 2009. <a rel="nofollow" class="external text" href="https://www.webcitation.org/6170rMoFx?url=http://aws.amazon.com/ec2/">Архивировано</a> 21 августа 2011 года.</span></span>
</li>
<li id="cite_note-21"><span class="mw-cite-backlink"><a href="#cite_ref-21">↑</a></span> <span class="reference-text"><span class="citation"><i>Todd Hoff.</i> <span lang="en"><a rel="nofollow" class="external text" href="http://highscalability.com/ebay-architecture">eBay Architecture</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span> (27 мая 2008).&nbsp;— Обсуждение архитектуры eBay на платформе Java. Дата обращения: 6 сентября 2009. <a rel="nofollow" class="external text" href="https://www.webcitation.org/6170rzVA7?url=http://highscalability.com/ebay-architecture">Архивировано</a> 21 августа 2011 года.</span></span>
</li>
<li id="cite_note-22"><span class="mw-cite-backlink"><a href="#cite_ref-22">↑</a></span> <span class="reference-text"><span class="citation"><i>Randy Shoup, Dan Pritchett.</i> <span lang="en"><a rel="nofollow" class="external text" href="http://www.addsimplicity.com/downloads/eBaySDForum2006-11-29.pdf">The eBay Architecture</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. <i>SD Forum 2006</i>. ??? (29 ноября 2006).&nbsp;— Презентация по истории развития архитектуры eBay. Дата обращения: 6 июня 2009. <a rel="nofollow" class="external text" href="https://www.webcitation.org/6170saktV?url=http://www.addsimplicity.com/downloads/eBaySDForum2006-11-29.pdf">Архивировано</a> 21 августа 2011 года.</span></span>
</li>
<li id="cite_note-23"><span class="mw-cite-backlink"><a href="#cite_ref-23">↑</a></span> <span class="reference-text"><span class="citation"><i>Brian Guan.</i> <span lang="en"><a rel="nofollow" class="external text" href="http://blog.linkedin.com/2008/06/11/grails-at-linkedin/">The LinkedIn Blog. Blog Archive. Grails at LinkedIn</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. LinkedIn.com (11 июня 2008).&nbsp;— История создания системы LinkedIn на основе Java-технологии Grails. Дата обращения: 5 июня 2009. <a rel="nofollow" class="external text" href="https://www.webcitation.org/6170ueU7e?url=http://blog.linkedin.com/2008/06/11/grails-at-linkedin/">Архивировано</a> 21 августа 2011 года.</span></span>
</li>
<li id="cite_note-24"><span class="mw-cite-backlink"><a href="#cite_ref-24">↑</a></span> <span class="reference-text"><span class="citation"><span lang="en"><a rel="nofollow" class="external text" href="http://developer.yahoo.com/hadoop/">Hadoop and Distributed Computing at Yahoo!</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. Yahoo!.&nbsp;— Стартовая страница Java-технологии распределённого обслуживания Hadoop на портале разработчиков Yahoo! Дата обращения: 21 июня 2009. <a rel="nofollow" class="external text" href="https://www.webcitation.org/6170vguJb?url=http://developer.yahoo.com/hadoop/">Архивировано</a> 21 августа 2011 года.</span></span>
</li>
<li id="cite_note-25"><span class="mw-cite-backlink"><a href="#cite_ref-25">↑</a></span> <span class="reference-text"><span class="citation"><span lang="en"><a rel="nofollow" class="external text" href="http://www.oracle.com/technology/tech/java/jsp/index.html">OracleJVM and Java Stored Procedures</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. Oracle Inc..&nbsp;— Раздел портала Oracle, посвящённый технологиям Java в составе сервера СУБД Oracle. Дата обращения: 5 июня 2009. <a rel="nofollow" class="external text" href="https://www.webcitation.org/6170wCzk5?url=http://www.oracle.com/technetwork/topics/index.html">Архивировано</a> 21 августа 2011 года.</span></span>
</li>
<li id="cite_note-27"><span class="mw-cite-backlink"><a href="#cite_ref-27">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="http://shootout.alioth.debian.org/u32q/which-programming-languages-are-fastest.php?gcc=on&amp;javasteady=on&amp;java=on&amp;csharp=on&amp;javaxint=on&amp;calc=chart">Ubuntu: Intel® Q6600® quad-core Computer Language Benchmarks</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. <a rel="nofollow" class="external text" href="https://www.webcitation.org/68bfPITT0?url=http://shootout.alioth.debian.org/u32q/which-programming-languages-are-fastest.php?gcc=on">Архивировано</a> 22 июня 2012 года.</span></span>
</li>
<li id="cite_note-28"><span class="mw-cite-backlink"><a href="#cite_ref-28">↑</a></span> <span class="reference-text"><span class="citation"><i>Wolfgang Puffitsch, Martin Schoeberl.</i> <a rel="nofollow" class="external text" href="http://orbit.dtu.dk/files/4176066/pjfpga.pdf">picoJava-II in an FPGA</a>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>&nbsp;// DTU Library.&nbsp;— 2007. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20181202202734/http://orbit.dtu.dk/files/4176066/pjfpga.pdf">Архивировано</a> 2&nbsp;декабря 2018&nbsp;года.</span></span>
</li>
<li id="cite_note-30"><span class="mw-cite-backlink"><a href="#cite_ref-30">↑</a></span> <span class="reference-text">JVM не имеет поддержки для переменных типа boolean, поэтому они представляются в виде значений типа int. Однако массивы boolean[] поддерживаются. <a rel="nofollow" class="external text" href="http://java.sun.com/docs/books/jvms/second_edition/html/Overview.doc.html#22909">VM Spec The Structure of the Java Virtual Machine</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20111124105915/http://java.sun.com/docs/books/jvms/second_edition/html/Overview.doc.html#22909">Архивная копия</a> от 24 ноября 2011 на <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a></span>
</li>
<li id="cite_note-31"><span class="mw-cite-backlink"><a href="#cite_ref-31">↑</a></span> <span class="reference-text"><span class="citation"><span lang="en"><a rel="nofollow" class="external text" href="https://openjdk.org/jeps/306">JEP 306: Restore Always-Strict Floating-Point Semantics</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. Дата обращения: 21 ноября 2022. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20221121205320/https://openjdk.org/jeps/306">Архивировано</a> 21 ноября 2022 года.</span></span>
</li>
<li id="cite_note-32"><span class="mw-cite-backlink"><a href="#cite_ref-32">↑</a></span> <span class="reference-text"><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i><a href="%D0%91%D1%8C%D1%8F%D1%80%D0%BD_%D0%A1%D1%82%D1%80%D0%B0%D1%83%D1%81%D1%82%D1%80%D1%83%D0%BF" class="mw-redirect" title="Бьярн Страуструп">Бьярн Страуструп</a>.</i> Язык программирования C++ = The C++ Programming Language.&nbsp;— М.—СПб.: Бином, Невский диалект, 2008.&nbsp;— 1104&nbsp;с.&nbsp;— <span class="nowrap">5000 экз.</span>&nbsp;— ISBN 5-7989-0226-2; ISBN 5-7940-0064-3; ISBN 0-201-70073-5.</span></span>
</li>
<li id="cite_note-33"><span class="mw-cite-backlink"><a href="#cite_ref-33">↑</a></span> <span class="reference-text"><span class="citation"><i><a href="%D0%93%D0%BE%D1%81%D0%BB%D0%B8%D0%BD%D0%B3%2C_%D0%94%D0%B6%D0%B5%D0%B9%D0%BC%D1%81" title="Гослинг, Джеймс">Джеймс Гослинг</a>, Билл Джой, Гай Стил, Гилад Брача, Алекс Бакли, Даниел Смит.</i> <span lang="en"><a rel="nofollow" class="external text" href="https://docs.oracle.com/javase/specs/jls/se11/html/jls-15.html#jls-15.23">Java Language Specification</a></span>. Chapter&nbsp;15.&nbsp;Expressions&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. docs.oracle.com. Дата обращения: 1 декабря 2018. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20181201135332/https://docs.oracle.com/javase/specs/jls/se11/html/jls-15.html#jls-15.23">Архивировано</a> 1 декабря 2018 года.</span></span>
</li>
<li id="cite_note-36"><span class="mw-cite-backlink"><a href="#cite_ref-36">↑</a></span> <span class="reference-text"><span class="citation"><span lang="en"><a rel="nofollow" class="external text" href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html">Java API Reference</a></span>. Class Object&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. docs.oracle.com. Дата обращения: 26 ноября 2018. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20181126222346/https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html">Архивировано</a> 26 ноября 2018 года.</span></span>
</li>
<li id="cite_note-37"><span class="mw-cite-backlink"><a href="#cite_ref-37">↑</a></span> <span class="reference-text"><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Scott Oaks.</i> <a rel="nofollow" class="external text" href="https://books.google.ru/books?id=aIhUAwAAQBAJ&amp;pg=PA195&amp;lpg=PA195&amp;dq=elementData%5B--size%5D+=+null;+//+Let+gc+do+its+work&amp;source=bl&amp;ots=E6Zs7rX4hE&amp;sig=g8RiFVjoILKL2o7mWRNrUWt_ytw&amp;hl=ru&amp;sa=X&amp;ved=2ahUKEwiBjvCGv_7eAhWUhaYKHfNaA-wQ6AEwCHoECAUQAQ">Java Performance: The Definitive Guide: Getting the Most Out of Your Code</a>.&nbsp;— "O'Reilly Media, Inc.", 2014-04-10.&nbsp;— 425&nbsp;с.&nbsp;— ISBN 9781449363543. — [<a rel="nofollow" class="external text" href="https://web.archive.org/web/20210721005409/https://books.google.ru/books?id=aIhUAwAAQBAJ&amp;pg=PA195&amp;lpg=PA195&amp;dq=elementData%5B--size%5D+%3D+null%3B+%2F%2F+Let+gc+do+its+work&amp;source=bl&amp;ots=E6Zs7rX4hE&amp;sig=g8RiFVjoILKL2o7mWRNrUWt_ytw&amp;hl=ru&amp;sa=X&amp;ved=2ahUKEwiBjvCGv_7eAhWUhaYKHfNaA-wQ6AEwCHoECAUQAQ#v=onepage&amp;q=elementData%5B--size%5D%20=%20null;%20//%20Let%20gc%20do%20its%20work&amp;f=false">Архивировано</a> 21&nbsp;июля 2021&nbsp;года.]</span></span>
</li>
<li id="cite_note-38"><span class="mw-cite-backlink"><a href="#cite_ref-38">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="https://www.ibm.com/docs/en/sdk-java-technology/8?topic=management-garbage-collection-gc">Garbage collection</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span> (12 февраля 2024). Дата обращения: 6 февраля 2025.</span></span>
</li>
<li id="cite_note-39"><span class="mw-cite-backlink"><a href="#cite_ref-39">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="https://www.baeldung.com/jvm-garbage-collectors">JVM Garbage Collectors</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span> (11 мая 2024). Дата обращения: 4 февраля 2025.</span></span>
</li>
<li id="cite_note-45"><span class="mw-cite-backlink"><a href="#cite_ref-45">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="https://www.artima.com/intv/handcuffs.html">The Trouble with Checked Exceptions</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. www.artima.com. Дата обращения: 21 декабря 2018. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20190108114501/https://www.artima.com/intv/handcuffs.html">Архивировано</a> 8 января 2019 года.</span></span>
</li>
<li id="cite_note-46"><span class="mw-cite-backlink"><a href="#cite_ref-46">↑</a></span> <span class="reference-text"><span class="citation"><span lang="en"><a rel="nofollow" class="external text" href="http://www.eclipse.org/pulsar/">Pulsar - Eclipse Mobile Tools Platform</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. Eclipse.&nbsp;— Проект eclipse для мобильных разработчиков. Дата обращения: 23 марта 2011. <a rel="nofollow" class="external text" href="https://www.webcitation.org/6170xVuSz?url=http://www.eclipse.org/pulsar/">Архивировано</a> 21 августа 2011 года.</span></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="Литература"><span id=".D0.9B.D0.B8.D1.82.D0.B5.D1.80.D0.B0.D1.82.D1.83.D1.80.D0.B0"></span>Литература</h2></div>
<ul><li><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Герберт Шилдт.</i> Java. Полное руководство, 10-е издание = Java. The Complete Reference, 10th Edition.&nbsp;— <abbr title="Москва">М.</abbr>: «Диалектика», 2018.&nbsp;— 1488&nbsp;с.&nbsp;— ISBN 978-5-6040043-6-4.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Кей С. Хорстманн.</i> Java SE 9. Базовый курс = Core Java SE 9 for the Impatient.&nbsp;— <abbr title="Москва">М.</abbr>: «Вильямс», 2018.&nbsp;— 576&nbsp;с.&nbsp;— ISBN 978-5-6040043-0-2, 978-0-13-469472-6.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Кей С. Хорстманн.</i> Java SE 8. Вводный курс = Java SE 8 for the Really Impatient.&nbsp;— <abbr title="Москва">М.</abbr>: «Вильямс», 2014.&nbsp;— 208&nbsp;с.&nbsp;— ISBN 978-5-8459-1900-7.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Фрэд Лонг, Дхрув Мохиндра, Роберт С. Сикорд, Дин Ф. Сазерленд, Дэвид Свобода.</i> Руководство для программиста на Java: 75 рекомендаций по написанию надёжных и защищённых программ = Java Coding Guidelines: 75 Recommendations for Reliable and Secure Programs.&nbsp;— <abbr title="Москва">М.</abbr>: «Вильямс», 2014.&nbsp;— 256&nbsp;с.&nbsp;— ISBN 978-5-8459-1897-0.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Кей С. Хорстманн.</i> Java. Библиотека профессионала, том 1. Основы. 10-е издание = Core Java. Volume I - Fundamentals (Tenth Edition).&nbsp;— <abbr title="Москва">М.</abbr>: «Вильямс», 2017.&nbsp;— 864&nbsp;с.&nbsp;— ISBN 978-5-8459-2084-3.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Кей С. Хорстманн.</i> Java. Библиотека профессионала, том 2. Расширенные средства программирования. 10-е издание = Core Java. Volume II - Advanced Feature (Tenth Edition).&nbsp;— <abbr title="Москва">М.</abbr>: «Вильямс», 2017.&nbsp;— 976&nbsp;с.&nbsp;— ISBN 978-5-9909445-0-3.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Барри Берд.</i> Java 9 для чайников = Java For Dummies, 7th edition.&nbsp;— <abbr title="Москва">М.</abbr>: «Диалектика», 2018.&nbsp;— 624&nbsp;с.&nbsp;— ISBN 978-5-9500296-1-5, 978-1-119-23555-2.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Кишори Шаран.</i> Java 9. Полный обзор нововведений = Java 9 Revealed.&nbsp;— <abbr title="Москва">М.</abbr>: «ДМК Пресс», 2018.&nbsp;— 544&nbsp;с.&nbsp;— ISBN 978-5-97060-575-2.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Джеймс Гослинг, Билл Джой, Гай Стил, Гилад Брача, Алекс Бакли.</i> Язык программирования Java SE 8. Подробное описание, 5-е издание = The Java Language Specification, Java SE 8 Edition (5th Edition) (Java Series).&nbsp;— <abbr title="Москва">М.</abbr>: «Вильямс», 2015.&nbsp;— 672&nbsp;с.&nbsp;— ISBN 978-5-8459-1875-8.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Джошуа Блох.</i> Java. Эффективное программирование = Effective Java.&nbsp;— 3-е.&nbsp;— <abbr title="Москва">М.</abbr>: Диалектика, 2019.&nbsp;— 464&nbsp;с.&nbsp;— ISBN 978-5-6041394-4-8.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Бенджамин Дж. Эванс, Джеймс Гоф, Крис Ньюленд.</i> Java: оптимизация программ. Практические методы повышения производительности приложений в JVM.&nbsp;— <abbr title="Москва">М.</abbr>: Диалектика, 2019.&nbsp;— 448&nbsp;с.&nbsp;— ISBN 978-5-907114-84-5.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Монахов Вадим.</i> Язык программирования Java и среда NetBeans.&nbsp;— 3-е изд.&nbsp;— <abbr title="Санкт-Петербург">СПб.</abbr>: БХВ-Петербург, 2011.&nbsp;— 704&nbsp;с.&nbsp;— ISBN 978-5-9775-0671-7.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Брюс Эккель.</i> Философия Java = Thinking in Java.&nbsp;— 4-е изд.&nbsp;— <abbr title="Санкт-Петербург">СПб.</abbr>: <a href="%D0%9F%D0%B8%D1%82%D0%B5%D1%80_(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)" title="Питер (издательство)">Питер</a>, 2018.&nbsp;— 1168&nbsp;с.&nbsp;— ISBN 978-5-496-01127-3.</span></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Ссылки"><span id=".D0.A1.D1.81.D1.8B.D0.BB.D0.BA.D0.B8"></span>Ссылки</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://www.java.com/ru/">Официальный сайт Java</a></li>
<li><a rel="nofollow" class="external text" href="https://docs.oracle.com/en/java/javase/">Официальная документация Java</a></li>
<li><a rel="nofollow" class="external text" href="https://docs.oracle.com/javase/specs/index.html">Спецификация языка и JVM</a></li></ul>
<div role="navigation" class="navbox" aria-labelledby="Ссылки_на_внешние_ресурсы" data-name="External links" style="padding-top:1px"><table class="nowraplinks hlist navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="colgroup" class="navbox-title" colspan="2" style="display:none"><span class="navbox-gear" style="float:left;text-align:left;width:5em;margin-right:0.5em"></span><div id="Ссылки_на_внешние_ресурсы" style="font-size:114%;margin:0 5em">Ссылки на внешние ресурсы</div></th></tr><tr><th scope="row" class="navbox-group" style="width:1px"><div style="padding: 0 35px 0 0; width: 100%;"><div class="skin-invert-image" style="float: left;">&nbsp;<span typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q251#identifiers" title="Перейти к элементу Викиданных" class="external"><img alt="Перейти к элементу Викиданных" src="./_assets_/0c70a452f799bfe840676ee341124611/OOjs_UI_icon_edit-ltr-progressive.svg.png" decoding="async" width="14" height="14" class="mw-file-element" data-file-width="20" data-file-height="20" loading="lazy"></a></span></div>&nbsp;&nbsp;В социальных сетях</div></th><td class="navbox-list navbox-odd" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a rel="nofollow" class="external text" href="https://x.com/java">X</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1px">Фото, видео и аудио</th><td class="navbox-list navbox-even" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a rel="nofollow" class="external text" href="https://www.youtube.com/channel/UCmRtPmgnQ04CMUpSUqPfhxQ">YouTube</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1px">Тематические сайты</th><td class="navbox-list navbox-odd" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a rel="nofollow" class="external text" href="https://www.openhub.net/p/java">Open Hub</a></li>
<li><a rel="nofollow" class="external text" href="https://www.pcgamingwiki.com/wiki/Engine:Java">PCGamingWiki</a>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1px">Словари и энциклопедии</th><td class="navbox-list navbox-even" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a class="external text" href="https://wikidata-externalid-url.toolforge.org/?p=8313&amp;url_prefix=https://denstoredanske.lex.dk/&amp;id=Java_-_programmeringssprog">Большая датская</a></li>
<li><a rel="nofollow" class="external text" href="https://www.enciclopedia.cat/ec-gec-0247716.xml">Большая каталанская</a></li>
<li><a rel="nofollow" class="external text" href="https://www.zgbk.com/ecph/words?SiteID=1&amp;ID=546625">Большая китайская</a></li>
<li><a rel="nofollow" class="external text" href="https://snl.no/Java_-_programmeringsspråk">Большая норвежская</a></li>
<li><a rel="nofollow" class="external text" href="https://www.britannica.com/technology/Java-computer-programming-language">Britannica (онлайн)</a></li>
<li><a rel="nofollow" class="external text" href="https://www.sapere.it/enciclopedia/Java+(informatica).html">De Agostini</a></li>
<li><a rel="nofollow" class="external text" href="https://www.treccani.it/enciclopedia/java">Treccani</a></li></ul>
</div></td></tr><tr><td colspan="2" class="navbox-list navbox-odd" style="width:100%;padding:0px"><div style="padding:0em 0.25em"><style data-mw-deduplicate="TemplateStyles:r113287755">
/* start https://ru.wikipedia.org/ */


.mw-parser-output .ts-navbox-plaintitle{font-size:100%!important;margin:0 6em!important}


/* end   https://ru.wikipedia.org/ */
</style></div><table class="nowraplinks authoritycontrol collapsible collapsed navbox-subgroup" style="border-spacing:0;text-align: left;"><tbody><tr><th scope="colgroup" class="navbox-title" colspan="2"><div id="В_библиографических_каталогах" class="ts-navbox-plaintitle" style="font-size:114%;margin:0 5em">В&nbsp;библиографических каталогах</div></th></tr><tr><td class="navbox-list navbox-even" style="width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="%D0%9D%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D0%98%D1%81%D0%BF%D0%B0%D0%BD%D0%B8%D0%B8" title="Национальная библиотека Испании">BNE</a>: <a rel="nofollow" class="external text" href="https://datos.bne.es/resource/XX540033">XX540033</a></li>
<li><a href="%D0%9D%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D0%A4%D1%80%D0%B0%D0%BD%D1%86%D0%B8%D0%B8" title="Национальная библиотека Франции">BNF</a>: <a rel="nofollow" class="external text" href="https://catalogue.bnf.fr/ark:/12148/cb12533207m">12533207m</a></li>
<li><a href="Gemeinsame_Normdatei" title="Gemeinsame Normdatei">GND</a>: <a rel="nofollow" class="external text" href="https://d-nb.info/gnd/4401313-9">4401313-9</a></li>
<li><a href="%D0%9D%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D0%98%D0%B7%D1%80%D0%B0%D0%B8%D0%BB%D1%8F" title="Национальная библиотека Израиля">J9U</a>: <a rel="nofollow" class="external text" href="https://www.nli.org.il/en/authorities/987007561288105171">987007561288105171</a></li>
<li><a href="%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8_%D0%9A%D0%BE%D0%BD%D0%B3%D1%80%D0%B5%D1%81%D1%81%D0%B0" title="Контрольный номер Библиотеки Конгресса">LCCN</a>: <a rel="nofollow" class="external text" href="https://id.loc.gov/authorities/sh95008574">sh95008574</a></li>
<li><a href="%D0%9D%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D0%A7%D0%B5%D1%88%D1%81%D0%BA%D0%BE%D0%B9_%D0%A0%D0%B5%D1%81%D0%BF%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D0%B8" title="Национальная библиотека Чешской Республики">NKC</a>: <a rel="nofollow" class="external text" href="https://aleph.nkp.cz/F/?func=find-c&amp;local_base=aut&amp;ccl_term=ica=ph117027&amp;CON_LNG=ENG">ph117027</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr></tbody></table></div>
<div role="navigation" class="navbox" aria-labelledby="Java" data-name="Java"><table class="nowraplinks collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="colgroup" class="navbox-title" colspan="2"><span class="navbox-gear" style="float:left;text-align:left;width:5em;margin-right:0.5em"></span><div id="Java" style="font-size:114%;margin:0 5em"><a class="mw-selflink selflink">Java</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1px">Платформы</th><td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="Java_Card" title="Java Card">Java Card</a></li>
<li><a href="Java_Platform%2C_Micro_Edition" title="Java Platform, Micro Edition">Java ME</a></li>
<li><a href="Java_Platform%2C_Standard_Edition" title="Java Platform, Standard Edition">Java SE</a></li>
<li><a href="Jakarta_EE" title="Jakarta EE">Java EE</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1px">Технологии <a href="Sun_Microsystems" title="Sun Microsystems">Sun</a></th><td class="navbox-list navbox-even hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a class="mw-selflink selflink">Java</a></li>
<li><a href="Java_Development_Kit" title="Java Development Kit">Java Development Kit</a></li>
<li><a href="OpenJDK" title="OpenJDK">OpenJDK</a></li>
<li><a href="Sun_Java_Wireless_Toolkit" title="Sun Java Wireless Toolkit">WTK</a></li>
<li><a href="Java_Virtual_Machine" title="Java Virtual Machine">Java Virtual Machine</a></li>
<li><a href="JavaFX" title="JavaFX">JavaFX</a></li>
<li><a href="Java_API_for_XML_Processing" title="Java API for XML Processing">JAXP</a></li>
<li><a href="Squawk" title="Squawk">Squawk</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1px">Основные сторонние технологии</th><td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="GNU_Classpath" title="GNU Classpath">GNU Classpath</a></li>
<li><a href="GNU_Compiler_for_Java" title="GNU Compiler for Java">GNU Compiler for Java</a></li>
<li><a href="Kaffe" title="Kaffe">Kaffe</a></li>
<li><span data-interwiki-lang="en" data-interwiki-article="Oracle TopLink">TopLink</span></li>
<li><a href="Apache_Harmony" title="Apache Harmony">Apache Harmony</a></li>
<li><a href="Apache_Struts" title="Apache Struts">Apache Struts</a></li>
<li><a href="Spring_Framework" title="Spring Framework">Spring Framework</a></li>
<li><a href="Dalvik_virtual_machine" class="mw-redirect" title="Dalvik virtual machine">Dalvik</a></li>
<li><a href="Hibernate_(%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0)" title="Hibernate (библиотека)">Hibernate</a></li>
<li><a href="WildFly" title="WildFly">JBoss</a></li>
<li><a href="Processing" title="Processing">Processing</a></li>
<li><a href="AspectJ" title="AspectJ">AspectJ</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1px">История</th><td class="navbox-list navbox-even hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="%D0%98%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%8F_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B9_Java_SE" title="История версий Java SE">История версий Java SE</a></li>
<li><a href="%D0%98%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%8F_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B9_Java_EE" title="История версий Java EE">История версий Java EE</a></li>
<li><a href="%D0%9A%D1%80%D0%B8%D1%82%D0%B8%D0%BA%D0%B0_Java" title="Критика Java">Критика Java</a></li>
<li><a href="Java_Community_Process" title="Java Community Process">Java Community Process</a></li>
<li><a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a></li>
<li><span data-interwiki-lang="en" data-interwiki-article="Free Java implementations">Свободные реализации Java</span></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1px">Свойства языка</th><td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="%D0%91%D0%B0%D0%B9%D1%82-%D0%BA%D0%BE%D0%B4" title="Байт-код">Байткод</a></li>
<li><span data-interwiki-lang="en" data-interwiki-article="Java syntax">Синтаксис</span></li>
<li><a href="%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8_Java" title="Модель памяти Java">Модель памяти</a></li>
<li><a href="Java-%D0%B0%D0%BF%D0%BF%D0%BB%D0%B5%D1%82" title="Java-апплет">Апплеты</a></li>
<li><a href="%D0%A1%D0%B5%D1%80%D0%B2%D0%BB%D0%B5%D1%82_(Java)" title="Сервлет (Java)">Сервлеты</a></li>
<li><a href="%D0%9C%D0%B8%D0%B4%D0%BB%D0%B5%D1%82" title="Мидлет">Мидлеты</a></li>
<li><a href="JavaServer_Pages" title="JavaServer Pages">JavaServer Pages</a></li>
<li><a href="Java_Web_Start" title="Java Web Start">Web Start</a></li>
<li><a href="Enterprise_JavaBeans" title="Enterprise JavaBeans">Enterprise JavaBeans</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1px"><a href="%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA" title="Сценарный язык">Скриптовые языки</a></th><td class="navbox-list navbox-even hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="Jython" title="Jython">Jython</a></li>
<li><a href="JRuby" title="JRuby">JRuby</a></li>
<li>BeanShell</li>
<li><a href="Groovy" title="Groovy">Groovy</a></li>
<li><span data-interwiki-lang="en" data-interwiki-article="Judoscript">Judoscript</span></li>
<li><a href="Bean_Scripting_Framework" title="Bean Scripting Framework">Bean Scripting Framework</a></li>
<li><span data-interwiki-lang="en" data-interwiki-article="Yoix">Yoix</span></li>
<li><a href="Rhino" title="Rhino">Rhino</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1px">Конференции Java</th><td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><span data-interwiki-lang="en" data-interwiki-article="JavaOne">JavaOne</span></li>
<li><span data-interwiki-lang="en" data-interwiki-article="Devoxx">Devoxx</span></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
    Эта статья взята у (из) <a class="external text" title="Последний раз редактировалась 2026-01-25" href="https://ru.wikipedia.org/wiki/?title=Java&amp;oldid=151349200">Википедия</a>. Текст лицензируется по <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.ru">Creative Commons Attribution-Share Alike 4.0</a>. К медиа файлам могут применятся дополнительные условия.
</div>
</div><!--/htdig_noindex--></div>
      </div>
    </div>
     <script src="./_webp_/webpHandler.js"></script>
  

</body></html>