Java (не следует путать с JavaScript или JScript или JS) - это объектно-ориентированный язык программирования общего назначения, предназначенный для использования в сочетании с виртуальной машиной Java (JVM). "Java-платформа" - это название вычислительной системы, в которой установлены инструменты для разработки и запуска программ Java. Используйте этот тег для вопросов, относящихся к языку программирования Java или инструментам платформы Java.

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

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

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

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

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

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

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

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

Задний план

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

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

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

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

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

Версии

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

Java SE 10  [JSR 383]    (March 20, 2018)
Java SE 9   [JSR 376]    (September 21, 2017)
Java SE 8   [JSR 337]    (March 18, 2014)
Java SE 7   [Dolphin]    (July 28, 2011)
Java SE 6   [Mustang]    (December 11, 2006)
J2SE 5.0    [Tiger]      (September 30, 2004)
J2SE 1.4    [Merlin]     (February 6, 2002)
J2SE 1.3    [Kestrel]    (May 8, 2000)
J2SE 1.2    [Playground] (December 8, 1998)
JDK 1.1                  (February 19, 1997)
JDK 1.0                  (January 23, 1996)
JDK Beta                 (1995)

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

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 181 (1.8.0_181) - (July 17, 2018)
Java Standard Edition 7 Update 80 (1.7.0_80) - (April 14, 2015)

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

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

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

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.
  • Имена методов и полей должны быть camelCased; то есть они должны начинаться с строчной буквы и загладить первую букву каждого последующего слова. Примеры: indexOf, printStackTrace, interrupt.
  • Константные имена выражений (static final неизменяемые объекты) должны быть записаны в ALL_CAPS_SNAKE_CASE, с подчеркиванием, разделяющим каждое слово. Примеры: YELLOW, DO_NOTHING_ON_CLOSE. Это также относится к значениям класса Enum. Тем не менее, static final ссылки на неизменяемые объекты должны быть 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-темах:

Генеральная:

Classpath:

String, StringBuilder и toString :

equals и hashCode :

Java Platform SE API:

Обобщения:

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

Арифметика и конверсии:

Отладка:

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

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

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

Чаты