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

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

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

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

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

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

Для начала вы загружаете Java Development Kit (JDK), который позволяет разрабатывать и запускать java-приложения.

Задний план

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

Очень немногие компьютеры могут напрямую запускать программы Java. Программное обеспечение Java часто работает на серверах. Приложения Java, предназначенные для запуска непосредственно на клиентских компьютерах, должны поставляться с собственными установщиками. (NB: до java9 вы просили конечных пользователей установить так называемую JRE; однако эта концепция устарела).

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

Версии

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

Java SE 15        [JSR 390]    (September 15, 2020)
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)

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

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

Java Standard Edition 15 (15.0.1) - (October 20, 2020)
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.9) - (October 20, 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 271 (1.8.0_271) - (October 20, 2020)
Java Standard Edition 7 Update 80 (1.7.0_80) - (April 14, 2015)

Дополнительные кодовые имена и даты выпуска см. На странице Кодовые имена Java SE. Чтобы просмотреть примечания к выпуску для каждой версии JDK, посетите статью в Википедииоб истории версий Java.

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

Java поставляется в версиях LTS (долгосрочная поддержка) и не-LTS. Каждый поставщик выбирает, как поступать с LTS-версиями. Некоторые (Oracle OpenJDK) имеют одинаковое короткое окно поддержки для всех выпусков, LTS или нет. Некоторые (Amazon Coretto) вообще не заботятся о выпуске версий, отличных от LTS. Большинство поставщиков выпускают все версии, которые будут поддерживать версии LTS намного дольше.

Версии LTS: Java 8, 11 и 17.

Основные поставщики:

  • AdoptOpenJDK, также известный как Adoptium - бесплатные версии LTS и версии без LTS, версии LTS поддерживаются долгое время. Рекомендуемые.
  • Oracle OpenJDK 15- обратите внимание, что они поддерживаются только в течение 6 месяцев, даже так называемые выпуски LTS (долгосрочная поддержка). Вам нужно будет обновлять по мере обновления Java.
  • Oracle JavaSE- лицензирован для тех, кому нужна коммерческая поддержка. Версии LTS и не-LTS, версии LTS поддерживаются давно. Доступна бесплатная, но очень ограниченная по лицензии тестовая версия.
  • Amazon Coretto- бесплатно, поддерживается Amazon, оптимизировано только для версий AWS, LTS.
  • Еще много коммерческих предложений.

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

Java SE 15 -  March 2020 for OpenJDK
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 Tutorials приступая к работе.

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

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

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

  • Имена типов (классы, интерфейсы, перечисления и т. Д.) Должны начинаться с заглавной буквы и с заглавной буквы первой буквы каждого последующего слова. Примеры включают: String, ThreadLocal и NullPointerException. Это иногда называют PascalCase.
  • Имена методов и полей должны быть в camelCased; то есть они должны начинаться со строчной буквы и начинаться с заглавной буквы первой буквы каждого последующего слова. Примеры : {{Х0}} , {{Х1}} , {{Х2}} .
  • Имена постоянных выражений (static final неизменяемые объекты) должны быть записаны в ALL_CAPS_SNAKE_CASE, с подчеркиванием, разделяющим каждое слово. Примеры : {{Х1}} , {{Х2}} . Это также относится к значениям класса 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), которую можно выполнить с {{ X0}} позже.

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

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

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

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

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

Расширенные ресурсы

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

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

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

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

Общая:

Classpath :

String, StringBuilder и toString:

equals и hashCode:

API Java Platform SE:

Обобщения :

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

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

Отладка :

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

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

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

Чаты