Java - популярный язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [gradle] и [maven].

Java - это высокоуровневый, платформенно-независимый, объектно-ориентированный, функциональный язык программирования и среда выполнения.

Язык Java в значительной степени заимствует свой синтаксис от C и C++, но его объектная модель проще, чем у последнего, и имеет меньше низкоуровневых возможностей. Приложения Java обычно компилируются в байт-код (называемые файлами классов), которые могут выполняться JVM (виртуальной машиной Java) независимо от архитектуры компьютера. JVM часто компилирует код в собственный машинный код для оптимизации производительности.

JVM управляет памятью с помощью сборщика мусора (см. Сборщик мусора), чтобы обрабатывать удаление объекта из памяти, когда объекты больше не используются. Дисциплина типизации в Java статична, сильна, безопасна, именительна и очевидна. Java поддерживает такие функции, как отражение и взаимодействие с C и C++ через JNI (собственный интерфейс Java).

Java спроектирована так, чтобы иметь как можно меньше зависимостей реализации, чтобы позволить разработчикам приложений писать один раз, запускать где угодно или иногда писать один раз, запускать везде (код, который выполняется на одной платформе, не нужно перекомпилировать для запуска на другой). Первоначально Java была разработана Джеймсом Гослингом в Sun Microsystems (которая полностью объединилась с Oracle Corporation 27 января 2010 г.) и была выпущена в 1995 г. как основной компонент платформы Java Sun Microsystems. Java была запущена Джеймсом Гослингом как проект "Дуб" в июне 1991 года.

Платформа Java - это название, данное Sun (ныне Oracle) вычислительным системам, в которых установлены инструменты для разработки и выполнения программ Java. Платформа включает широкий спектр инструментов, которые могут помочь разработчикам эффективно работать с языком программирования Java.

Платформа состоит из двух основных программных пакетов:

  • Среда выполнения Java (JRE): требуется для запуска приложений и апплетов Java.
  • Java Development Kit (JDK): требуется для разработки приложений и апплетов Java. JDK поставляется с JRE.

В этом разделе мы более подробно рассмотрим, что делают эти два программных компонента платформы Java.

Задний план

Основная эталонная реализация Java - это открытый исходный код ( OpenJDK), который поддерживается крупными компаниями, включая Oracle, Apple, SAP и IBM.

Очень немногие компьютеры могут напрямую запускать программы Java. Следовательно, среда Java обычно становится доступной путем установки подходящего программного компонента. На компьютерах с Windows это обычно делается путем загрузки бесплатной среды выполнения Java (JRE с сайта java.com. На компьютерах Macintosh пользователю предлагается загрузить Java при запуске приложения, требующего этого. В Linux-подобных системах Java обычно устанавливается через менеджер пакетов.

Разработчикам часто требуются дополнительные инструменты, которые доступны в бесплатном Java Development Kit, который для Windows и Mac необходимо загрузить из Oracle и установить вручную.

Java компилируется в байт-код, который затем компилируется JVM в собственный машинный код. Компиляция выполняется точно в срок (JIT). Первоначально это рассматривалось как снижение производительности, но улучшения JVM и JIT-компиляции сделали это менее опасным. В некоторых случаях JVM может быть даже быстрее, чем собственный код, скомпилированный для более старой версии процессора из соображений обратной совместимости. Начиная с Java 9, его можно скомпилировать заблаговременно (AOT).

Примечание. Существуют и другие поставщики, хотя почти у всех есть лицензионные сборы. Для Linux и других платформ обратитесь к документации по операционной системе.

Версии

Известные версии Java, кодовые названия (в скобках []) и даты выпуска (в скобках) включают:

Java SE 14        [JSR 389]    (March 17, 2020)
Java SE 13        [JSR 388]    (September 17, 2019)
Java SE 12        [JSR 386]    (March 19, 2019)
Java SE 11        [JSR 384]    (September 25, 2018)
Java SE 10        [JSR 383]    (March 20, 2018)
Java SE 9         [JSR 376]    (September 21, 2017)
Java SE 8 (1.8)   [JSR 337]    (March 18, 2014)
Java SE 7 (1.7)   [Dolphin]    (July 28, 2011)
Java SE 6 (1.6)   [Mustang]    (December 11, 2006)
J2SE 5.0 (1.5)    [Tiger]      (September 29, 2004)
J2SE 1.4          [Merlin]     (February 13, 2002)
J2SE 1.3          [Kestrel]    (May 8, 2000)
J2SE 1.2          [Playground] (December 4, 1998)
JDK 1.1                        (February 19, 1997)
JDK 1.0                        (January 23, 1996)
JDK Beta                       (1995)

Начиная с Tiger, каждая версия имеет два номера версии: внутренний номер, например 1.5.0, и внешний номер, например 5.0. посколькуJava SE 10, новые версии будут выпускаться каждые шесть месяцев.

Последние стабильные версии:

Java Standard Edition 14 (14.0.2) - (July 14, 2020)
Java Standard Edition 13 (13.0.2) - (January 14, 2020)
Java Standard Edition 12 (12.0.2) - (July 16, 2019)
Java Standard Edition 11 (11.0.8) - (July 14, 2020)
Java Standard Edition 10 (10.0.2) - (July 17, 2018)
Java Standard Edition 9 (9.0.4) - (January 16, 2018)
Java Standard Edition 8 Update 261 (1.8.0_261) - (July 14, 2020)
Java Standard Edition 7 Update 80 (1.7.0_80) - (April 14, 2015)

Для получения дополнительных кодовых имен и дат выпуска посетите J2SE Code Names. Чтобы увидеть примечания к выпуску для каждой версии JDK, посетите статью в Википедии об истории версий Java.

Java SE доступна для загрузки.

Конец общественного обновления (прежнее название End Of Life, а также называют EoPU) дат для свободно доступного распределения от Oracle являются:

Java SE 14 -  September 2020 for OpenJDK
Java SE 13 -  March 2020 for OpenJDK
Java SE 12 -  September 2019 for OpenJDK
Java SE 11 -  At least September 2022 for AdoptOpenJDK
Java SE 10 -  September 2018
Java SE 9  -  March 2018
Java SE 8  -  January 2019 (commercial user) | December 2020 (personal user)
Java SE 7  -  Apr 2015
Java SE 6  -  Feb 2013
J2SE 5.0   -  Oct 2009
J2SE 1.4   -  Oct 2008

Начальная помощь

Новичок в Java или вам нужна помощь, чтобы запустить свою первую Java-программу? См. Раздел " Учебники по Oracle Java" в разделе "Начало работы".

Прежде чем задавать вопрос, поищите, задавался ли он раньше (у нас много дубликатов, некоторые из них перечислены ниже в разделе " Часто задаваемые вопросы"), и прочтите Написание идеального вопроса, чтобы узнать, как заставить Джона Скита ответить на ваш вопрос.

Соглашения об именах

Программы на Java должны придерживаться следующих соглашений об именах, чтобы повысить удобочитаемость и снизить вероятность случайных ошибок. Следуя этим соглашениям об именах, вы упростите другим понимание вашего кода и поможете вам.

  • Имена типов (классы, интерфейсы, перечисления и т. Д.) Должны начинаться с заглавной буквы и начинаться с заглавной буквы в каждом последующем слове. Примеры включают:String, ThreadLocal, а также NullPointerException. Иногда это называют PascalCase.
  • Имена методов и полей должны быть в верблюжьем регистре; то есть они должны начинаться со строчной буквы и начинаться с заглавной буквы в каждом последующем слове. Примеры:indexOf, printStackTrace, interrupt.
  • Имена постоянных выражений (static finalнеизменяемые объекты) должны быть записаны в ALL_CAPS_SNAKE_CASE, с подчеркиванием, разделяющим каждое слово. Примеры:YELLOW, DO_NOTHING_ON_CLOSE. Это также относится к значениямEnumучебный класс. Однако,static finalссылки на не являющиеся-immutable объектов должны быть camelCased.

Hello World - Ваша первая программа

Код типичной программы Hello World:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

Компиляция и вызов программы Hello World:

javac -d . HelloWorld.java
java -cp . HelloWorld

Исходный код Java компилируется в промежуточную форму (инструкции байт-кода для виртуальной машины Java), которая может быть выполнена с помощьюjava команда позже.

Дополнительная информация:

## Полезные IDE для Java

Ресурсы для начинающих

Онлайн-компиляторы

Ежедневно обновляемые ресурсы

Дополнительные ресурсы

##Java-фреймворки, библиотеки и программное обеспечение

Книги и ресурсы по программированию на Java

Часто задаваемые вопросы

Люди часто спрашивают о следующих темах Java:

Общее:

Путь к классам:

String, StringBuilder а также toString:

equals а также hashCode:

Java Platform SE API:

Дженерики:

Классы и объекты:

Арифметика и преобразования:

Отладка:

Thread и многопоточность:

Взаимодействие с операционной системой:

(Редакторы, пожалуйста, только список вопросов, которые на самом деле являются часто задаваемые.)

Чаты