
Что такое Java простыми словами: это язык программирования и платформа, в которой код компилируется в байт-код и выполняется виртуальной машиной JVM — на сервере, в Android-приложении или на обычном компьютере. JavaScript — отдельный язык с похожим названием, он работает в браузере и в Node.js. Общего у них — часть синтаксиса и история названия.
Что такое Java: язык, JVM, JRE и JDK
Java — объектно-ориентированный язык со строгой статической типизацией. Его создали в компании Sun Microsystems под руководством Джеймса Гослинга, первый публичный выпуск состоялся в 1995 году. В 2010 году Sun купила Oracle, и с тех пор развитием платформы руководит она, а сам код открыт в проекте OpenJDK.
Главная идея Java — «написал один раз, запускай где угодно». Исходник в файле .java компилятор javac превращает не в машинный код конкретного процессора, а в байт-код — файл .class. Байт-код исполняет виртуальная машина Java (JVM), которая есть для Windows, Linux, macOS и других систем. Часто вызываемые участки JVM на лету компилирует в машинный код (JIT-компиляция), поэтому Java-сервисы работают быстро, хотя и тратят время на «прогрев» после старта.
Когда говорят «установить Java», имеют в виду один из трёх компонентов:
- JVM — виртуальная машина, которая исполняет байт-код. Отдельно её не ставят, она входит в JRE и JDK.
- JRE (Java Runtime Environment) — среда выполнения: JVM и стандартные библиотеки. Её достаточно, чтобы запускать готовые программы.
- JDK (Java Development Kit) — набор разработчика: всё из JRE плюс компилятор
javac, упаковщикjar, интерактивная консольjshell, отладчик и другие утилиты.
Oracle начиная с Java 11 не выпускает отдельную JRE — только JDK, а для поставки программ предлагает собрать урезанную среду утилитой jlink. Сборки OpenJDK от сторонних поставщиков, например Eclipse Temurin, по-прежнему публикуют и JRE, и JDK.
Версии Java и LTS
С 2018 года новая версия Java выходит каждые полгода, в марте и сентябре. Большинство из них поддерживаются только до следующего релиза. Для серверов берут LTS-версии с долгой поддержкой: 8, 11, 17, 21 и 25. Если вы видите в требованиях программы «Java 17+», подойдёт любая версия начиная с 17.
Как выглядит программа на Java
Минимальная программа — класс с методом main:
public class Hello {
public static void main(String[] args) {
System.out.println("Привет, JVM");
}
}
Сохраните код в файл Hello.java и выполните в терминале с установленным JDK:
javac Hello.java
java Hello
Начиная с Java 11 один файл можно запустить и без отдельной компиляции: java Hello.java. Писать код удобнее в редакторе с поддержкой Java — IntelliJ IDEA или VS Code с расширениями для Java; как настроить редактор, разобрано в руководстве по Visual Studio Code.
Java — что это за программа на компьютере
Если в списке установленных программ Windows вы нашли «Java 8 Update …», «Java(TM) SE Development Kit» или «Eclipse Temurin JDK», это среда выполнения Java. Сама по себе она ничего не делает — её поставила программа, написанная на Java, или вы сами, когда какой-то сайт или установщик потребовал «установить Java». В Диспетчере задач Java-программы видны как процессы java.exe или javaw.exe (второй — без окна консоли). Старые установки Oracle Java ставили ещё и планировщик обновлений jusched.exe.
Кому Java нужна на рабочем компьютере:
- настольным программам на Java — корпоративным клиентам, утилитам администрирования, некоторым бухгалтерским и банковским приложениям старого поколения;
- разработчикам — для сборки и запуска Java- и Kotlin-проектов, Android-разработки, инструментов вроде Maven и Gradle;
- серверному софту, который вы запускаете локально: Elasticsearch, Apache Kafka, Jenkins и подобным.
Многие современные программы приносят Java с собой и системная установка им не нужна: например, IntelliJ IDEA и Android Studio идут со встроенной средой JetBrains Runtime.
Нужно ли удалять Java
Если ни одна программа Java не использует — удалите. Устаревшая среда выполнения без обновлений безопасности не приносит пользы, а лишний софт — это лишняя поверхность атаки. Браузеры давно не запускают Java-апплеты, поэтому для обычного веб-сёрфинга Java не нужна вовсе.
Если не уверены, нужна ли она: посмотрите в Диспетчере задач (вкладка «Подробности»), кто запускает java.exe/javaw.exe, либо удалите Java и проверьте, какая программа перестанет запускаться — её установщик обычно подскажет, какую версию поставить обратно.
Удаление в Windows 11: Параметры → Приложения → Установленные приложения, найдите Java, нажмите «…» → «Удалить». В Windows 10 путь — Параметры → Приложения → Приложения и возможности. В Linux (Debian, Ubuntu) сначала посмотрите установленные пакеты, затем удалите лишний:
apt list --installed | grep openjdk
sudo apt remove openjdk-11-jre
Как проверить, установлена ли Java и какая версия
В командной строке Windows, PowerShell, терминале Linux или macOS:
java -version
Команда выводит версию и поставщика сборки. Если ответ «java не является внутренней или внешней командой», Java не установлена или не прописана в PATH. Где лежит исполняемый файл:
:: Windows, cmd
where java
echo %JAVA_HOME%
# PowerShell
Get-Command java
$env:JAVA_HOME
# Linux и macOS
which java
echo $JAVA_HOME
# macOS: все установленные JDK
/usr/libexec/java_home -V
# Debian/Ubuntu: переключение между версиями
sudo update-alternatives --config java
Проверить, есть ли компилятор (то есть стоит JDK, а не только JRE), можно командой javac -version.
Где скачать Java официально: Oracle или OpenJDK
Скачивайте Java только с сайтов поставщиков сборок или из менеджера пакетов вашей ОС. «Java» на файлообменниках и в рекламных баннерах «обновите Java» — классическая упаковка для вредоносных программ.
| Источник | Что там | Условия | Кому подходит |
|---|---|---|---|
| java.com | Oracle Java 8 (JRE) для пользователей | Бесплатно для личного использования, для бизнеса — по лицензии Oracle | Тем, кому конкретная программа требует «Java 8 от Oracle» |
| oracle.com/java | Oracle JDK актуальных версий | Условия лицензии Oracle неоднократно менялись — прочитайте их перед использованием в компании | Разработчикам и компаниям, выбравшим поддержку Oracle |
| jdk.java.net | Сборки OpenJDK от Oracle | Открытая лицензия GPLv2 с исключением Classpath; обновления только до выхода следующей версии | Для экспериментов с самой свежей версией |
| adoptium.net | Eclipse Temurin — сборки OpenJDK, JRE и JDK | Бесплатно, LTS-версии получают обновления безопасности | Универсальный выбор для разработки и серверов |
| Менеджер пакетов Linux | Пакеты openjdk-*-jre и openjdk-*-jdk | Бесплатно, обновляются вместе с системой | Серверам на Debian, Ubuntu, RHEL и производных |
Установка на Ubuntu выглядит так: sudo apt install openjdk-21-jdk (доступные номера версий зависят от релиза дистрибутива, проверить их можно командой apt search openjdk).
Про обновления: Oracle выпускает пакеты исправлений безопасности (Critical Patch Update) раз в квартал — в январе, апреле, июле и октябре, и сборки OpenJDK обновляются по тому же графику. Если Java стоит на сервере, эти даты стоит держать в календаре.
Язык программирования Java: где используется
Java редко видна обычному пользователю, но на ней работает большая часть «невидимой» инфраструктуры:
- Бэкенд сайтов и сервисов. Фреймворк Spring, стандарт Jakarta EE, серверы приложений и контейнеры сервлетов Apache Tomcat, Jetty, WildFly. Банки, страховые, телеком, маркетплейсы и госсистемы строят на Java ядро своих систем.
- Android. Библиотеки Android SDK написаны на Java, и приложения долго писали именно на ней. С 2019 года Google объявила основным языком для Android Kotlin — он тоже работает на JVM-совместимом байт-коде и свободно смешивается с Java в одном проекте.
- Данные и инфраструктура. Apache Kafka, Elasticsearch, Apache Cassandra, Hadoop — всё это JVM-проекты.
- Инструменты разработчика. IntelliJ IDEA, Android Studio, Jenkins, системы сборки Maven и Gradle.
Поэтому ответ на вопрос «жива ли Java» — да: новые версии выходят каждые полгода, а корпоративного кода на ней написано столько, что он будет работать ещё десятилетия.
Java и JavaScript — в чём разница
Путаница идёт из 1995 года. Тогда в Netscape Брендан Эйх создал язык для веб-страниц, который сначала назывался Mocha, потом LiveScript, а к выходу браузера Netscape Navigator 2.0 был переименован в JavaScript — Java в тот момент была на пике популярности, и имя помогало продвижению. Технически языки независимы. Стандарт JavaScript называется ECMAScript (спецификация ECMA-262, её развивает комитет TC39), а товарный знак «JavaScript» по наследству от Sun принадлежит Oracle. Сама Oracle в справке прямо пишет, что это разные технологии.
| Параметр | Java | JavaScript |
|---|---|---|
| Где выполняется | JVM: серверы, Android, настольные программы | Браузер (V8 в Chrome, SpiderMonkey в Firefox, JavaScriptCore в Safari), на сервере — Node.js, Deno, Bun |
| Как запускается | Компиляция javac в байт-код, затем исполнение в JVM | Исходный код отдаётся как есть (часто минифицированным), движок разбирает и компилирует его на лету |
| Типизация | Статическая: тип переменной известен при компиляции, ошибки типов ловит компилятор | Динамическая: тип определяется во время выполнения; статические типы добавляет надстройка TypeScript |
| Объектная модель | Классы и интерфейсы | Прототипы; синтаксис class с ES2015 — надстройка над ними |
| Параллельность | Потоки, пулы потоков, виртуальные потоки (с Java 21) | Один поток и цикл событий; фоновая работа — через Web Workers в браузере и worker_threads в Node.js |
| Файлы | .java → .class, упаковка в .jar и .war | .js, .mjs; в браузер попадает через тег script |
| Основное назначение | Бэкенд, корпоративные системы, Android, обработка данных | Интерактивность веб-страниц, фронтенд-фреймворки, серверы на Node.js, скрипты автоматизации |
| Стандарт | Java Language Specification, развитие через OpenJDK | ECMAScript (ECMA-262), комитет TC39 |
Разница на примере кода
Одинаковые на вид выражения ведут себя по-разному. В Java тип переменной нельзя сменить, а бессмысленная операция не скомпилируется:
int count = 5;
count = "пять"; // ошибка компиляции: incompatible types
String s = "5" + 1; // "51" — конкатенация строк
int n = "5" - 1; // ошибка компиляции
В JavaScript то же самое выполнится, а типы приведутся неявно:
let count = 5;
count = "пять"; // допустимо, теперь это строка
console.log("5" + 1); // "51"
console.log("5" - 1); // 4 — строка приведена к числу
Попробовать JavaScript можно прямо сейчас: откройте консоль разработчика в браузере (F12 или Ctrl+Shift+J в Chrome) и введите строку выше. Для Java такой «встроенной консоли» в браузере нет — нужен установленный JDK и jshell.
Что учить первым — Java или JavaScript
Зависит от цели, а не от «сложности» языка. Хотите делать сайты и интерфейсы — начинайте с JavaScript — он единственный язык, который браузер исполняет напрямую (не считая WebAssembly). Интересует бэкенд крупных систем или Android — Java или Kotlin. Знание одного языка для второго не требуется: JavaScript учат без Java, и наоборот.
Как включить JavaScript в браузере — и почему Java тут ни при чём
Сообщение «Для работы сайта включите JavaScript» относится к JavaScript. Установка Java его не уберёт — нужно разрешить JavaScript в браузере:
- Chrome на компьютере: вставьте в адресную строку
chrome://settings/content/javascriptи выберите «Сайты могут использовать JavaScript». Через меню: «Настройки → Конфиденциальность и безопасность → Настройки сайтов → JavaScript». - Microsoft Edge: адрес
edge://settings/content/javascript, там же переключатель. - Chrome на Android: «⋮ → Настройки → Настройки сайтов → JavaScript».
- Яндекс Браузер: «Настройки → Сайты → Расширенные настройки сайтов», раздел JavaScript.
- Safari на iPhone: «Настройки → Safari → Дополнения → JavaScript» (в новых версиях iOS Safari находится в разделе «Настройки → Приложения»).
Владельцу сайта полезно и обратное — посмотреть, как страница выглядит без JavaScript — так её видит часть поисковых роботов до рендеринга. В Chrome откройте DevTools (F12), нажмите Ctrl+Shift+P и выполните команду «Disable JavaScript»; после закрытия DevTools настройка сбрасывается.
Как узнать, на чём работает сайт: Java или JavaScript
Во фронтенде почти любого сайта есть JavaScript, так что вопрос обычно в другом: на чём написан сервер. Как страница проходит путь от сервера до браузера, описано в статье «Как работает сайт», а здесь — признаки, по которым сервер выдаёт свой стек. Большая часть из них видна в HTTP-заголовках ответа и cookie.
| Признак | Где увидеть | На что указывает |
|---|---|---|
Cookie JSESSIONID | Заголовок Set-Cookie | Стандартное имя сессии Java-сервлетов: Tomcat, Jetty, WildFly и другие |
;jsessionid= в адресе ссылки | URL страниц | Java-сервер, передающий сессию через URL, если cookie отключены |
Адреса с .jsp, .do, .action | URL страниц и форм | JSP, Struts и другие Java-фреймворки |
Server: Apache-Coyote/1.1 | Заголовок Server | Старые версии Apache Tomcat |
Server: Jetty(…) | Заголовок Server | Сервер Jetty, часто с номером версии |
X-Powered-By: Servlet/… JSP/… | Заголовок X-Powered-By | Java-сервер приложений |
| Подпись «Apache Tomcat/…» внизу страницы ошибки | Страницы 404 и 500 | Tomcat со стандартными страницами ошибок и точной версией |
X-Powered-By: Express, cookie connect.sid | Заголовки ответа | Node.js с фреймворком Express — серверный JavaScript |
X-Powered-By: Next.js | Заголовки ответа | Next.js — JavaScript-фреймворк на Node.js |
Cookie PHPSESSID | Заголовок Set-Cookie | Для сравнения: это PHP, не Java и не JavaScript |
Посмотреть заголовки можно одной командой. В Linux, macOS и Windows 10/11 есть curl (в PowerShell пишите curl.exe, иначе сработает псевдоним другой команды):
curl -sI https://example.com
curl -s -o /dev/null -D - https://example.com | grep -iE "server|x-powered-by|set-cookie"
В PowerShell без curl:
(Invoke-WebRequest -Uri https://example.com -Method Head -UseBasicParsing).Headers
Учитывайте ограничения. Отсутствие признака ничего не доказывает: заголовки убирают, а за CDN или обратным прокси вы увидите заголовок Server прокси (например, nginx или cloudflare), а не сервера приложений. Заголовки можно и подделать. Поэтому вывод делают по совокупности признаков. Подробнее о каждом заголовке — в разборе HTTP-заголовков, а о движках сайтов — в статье как определить CMS сайта.
Почему версия сервера в заголовках — риск
Строка вроде Server: Jetty(9.4.x) или «Apache Tomcat/9.0.x» на странице ошибки сообщает атакующему точную версию. Дальше достаточно сверить её со списком известных уязвимостей и выбрать эксплойт — без долгой разведки. В Java-экосистеме были громкие случаи: Log4Shell (CVE-2021-44228) в библиотеке Log4j 2, Spring4Shell (CVE-2022-22965) во фреймворке Spring, Ghostcat (CVE-2020-1938) в AJP-коннекторе Tomcat. Раскрытая версия не создаёт уязвимость, но экономит атакующему время и помогает автоматическим сканерам выбирать цели.
Как убрать лишнее:
- Tomcat: в
server.xmlзадайте атрибутserverу элементаConnector(значение этого заголовка) и отключите подробности на страницах ошибок:<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />внутриHost. - Express:
app.disable('x-powered-by'); - Next.js: в
next.config.js—poweredByHeader: false. - nginx перед приложением:
server_tokens off;скрывает версию самого nginx, аproxy_hide_header X-Powered-By;вырезает заголовок бэкенда.
Скрытие версии — вторая линия. Первая — обновления: пропатченный сервер с видимой версией безопаснее уязвимого, который её прячет. Что ещё стоит добавить в ответы сервера, разобрано в статье о заголовках безопасности.
Как проверить стек и заголовки своего сайта
- Определите технологии сайта в Tech Detect — это тот же вопрос «на чём работает сайт», только без ручного разбора заголовков.
- Посмотрите сами HTTP-заголовки ответа на главной странице enterno.io:
Server,X-Powered-By,Set-Cookie— выдают ли они стек и версию. - Прогоните сайт через проверку безопасности, чтобы увидеть, что стоит убрать или добавить в заголовки.
Проверяйте после каждого обновления сервера или смены прокси: конфигурация, скрывавшая версию, могла не пережить переустановку. За подробностями о самих языках лучше идти к первоисточникам: справочник JavaScript на MDN и сборки Eclipse Temurin на adoptium.net.
Частые вопросы
Java и JavaScript — это один язык?
Нет. Это разные языки с разным устройством, средой выполнения и назначением. Название JavaScript получил в 1995 году из маркетинговых соображений, на волне популярности Java.
Нужна ли Java, чтобы сайты работали в браузере?
Нет. Современные браузеры не запускают Java-апплеты. Сайтам нужен JavaScript, а он встроен в браузер и отдельной установки не требует.
Можно ли удалить Java с компьютера?
Да, если её не использует ни одна программа. Если после удаления что-то перестало запускаться, поставьте версию, которую требует эта программа, из официального источника и обновляйте её.
Java бесплатная?
Сборки OpenJDK — например, Eclipse Temurin или пакеты openjdk из дистрибутива Linux — бесплатны, в том числе для коммерческого использования. Для Oracle JDK условия зависят от версии и лицензии, их нужно читать перед использованием в компании.
Что такое джава и ява — это то же самое?
Да, «джава», «жава» и «ява» — разговорные варианты произношения Java. Остров Ява, в честь кофе с которого назван язык, к программированию отношения не имеет.
Как понять, какая Java нужна программе?
Смотрите системные требования программы: обычно там указана минимальная версия, например «Java 11+» или «Java 17». Текущую версию на компьютере покажет команда java -version.