Java setup welcome что это за программа
Перейти к содержимому

Java setup welcome что это за программа

  • автор:

Запуск первой программы на Java — Java: Настройка окружения

Начнем с установки Java и знакомства с REPL. Если на вашем компьютере пока не стоит Java, то выполните установку по нашей инструкции .

Если установка прошла без ошибок, то самое время убедиться в том, что Java работает. Заметьте, что «установилось» и «работает» — не одно и тоже. Наберите в терминале java —version . Вывод должен быть примерно такой:

# Вывод может отличаться, главное чтобы не было ошибок java --version openjdk 20 23-03-21 OpenJDK Runtime Environment Homebrew (build 20) OpenJDK 64-Bit Server VM Homebrew (build 20, mixed mode, sharing) 

REPL

Если все прошло удачно, то теперь самое время начать выполнять код на Java. Java поставляется со встроенным REPL (Read Eval Print Loop). REPL – это программа, которая работает как командная оболочка. Она ожидает ввод от пользователя (Read), выполняет введенный код (Eval) и печатает на экран результат (Print), затем снова входит в режим ожидания (Loop). Для его запуска достаточно набрать jshell :

-- Version 20 | For an introduction type: /help intro jshell> 

Теперь можно выполнять код на Java и сразу же смотреть результат его выполнения. Наберите любой корректный код на Java и нажмите Enter:

jshell> 10 + 5 $1 ==> 15 jshell> 

REPL выводит результат выполнения операции прямо на экран и снова входит в режим ожидания ввода команд. Для выхода из репла достаточно нажать Ctrl + d . Такой способ работы очень хорошо подходит для быстрой проверки гипотез «а как работает эта штука?», а также для отладки и простых вычислений. REPL позволяет использовать переменные и запоминает предыдущий ввод:

jshell> var a = 5 a ==> 5 jshell> var b = 3 b ==> 3 jshell> a + b $4 ==> 8 jshell> 

Для успешного обучения крайне важно, чтобы весь код, который мы демонстрируем в дальнейшем, вы набирали и запускали локально. Только тогда будет приходить настоящее понимание того, что происходит. В тех случаях, когда репла недостаточно, код можно и нужно запускать в виде файлов.

Файлы

Создайте файл HelloWorld.java внутри git-репозитория hexlet-java из прошлого урока. Добавьте туда следующий код:

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

Теперь осталось запустить его на выполнение:

# Обязательно указать расширение java HelloWorld.java Hello, Hexlet! 

Если все было сделано правильно, то на экране появится строка Hello, Hexlet!, а программа успешно завершится. На этом этапе появляются первые соглашения и правила, о которых нужно знать:

  1. Файлы Java имеют расширение java
  2. Каждый Java файл содержит ровно один Java класс. Практически все файлы в Java это файлы с классами (еще есть интерфейсы, но мы их рассмотрим позже)
  3. Имя класса совпадает с именем файла без расширения

Класс HelloWorld , в нашем случае, не обычный Java класс, это точка входа в программу. Именно с нее начинается выполнение. Откуда Java знает как запустить этот класс? Это благодаря методу main . Его необходимо реализовать ровно в таком виде, в котором мы его видим выше:

// args – сюда попадают аргументы командной строки // если они есть public static void main(String[] args)  > 

Метод main() нужен только у входной точки, в остальных классах его не добавляют, так как эти классы не запускаются отдельно.

Компиляция и запуск

Команда java выглядит очень простой. На вход ей подается файл с исходным кодом, на выходе – результат выполнения. Под капотом происходит два действия: компиляция и запуск. Их можно выполнить отдельно и тогда станет виден весь процесс.

Java — компилируемый язык программирования. Файл с исходным кодом компилируемого языка нельзя взять и просто так запустить, сначала его нужно превратить в понятный для машины код. За это отвечает компилятор javac. Вызывается он так:

# ничего не выводит 

javac не запускает программу, он выполняет компиляцию, во время которой проверяется корректность программы (соответствие типов) и формируется файл HelloWorld.class с байткодом.

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

После того как компиляция прошла, программа готова к запуску. Запуск выполняется командой java:

# Расширение не указывается java HelloWorld 

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Наши выпускники работают в компаниях:

Java setup welcome что это за программа

Java Development Kit (JDK) является одним из трех основных технологий, используемых в программировании на языке Java. К ним также относятся JVM (Java Virtual Machine) и JRE (Java Runtime Environment). Важно их различать, а также понимать, как они связаны:

  • JVM отвечает за исполнение Java-программ;
  • JRE создает и запускает JVM;
  • JDK позволяет разработчикам создавать программы, которые могут выполняться и запускаться посредством JVM и JRE;

Начинающие Java-разработчики часто путают JDK и JRE. Различие заключается в том, что JDK представляет собой пакет инструментов для разработки программного обеспечения, тогда как JRE представляет собой пакет инструментов для запуска Java-кода.

JRE может использоваться, как отдельный компонент для простого запуска Java-программ, либо быть частью JDK. JDK требуется JRE, потому что запуск программ является неотъемлемой частью их разработки.

Давайте рассмотрим техническое и обобщенное определение JDK:

  • Техническое определение: JDK — это реализация спецификации платформы Java, включающая в себя компилятор и библиотеки классов.
  • Обобщенное определение: JDK — это программный пакет, который вы загружаете для создания Java-приложений.

JDK и компилятор Java

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

Знакомство с JDK

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

Пакеты JDK

В дополнение к версии Java, необходимо выбрать пакет (платформу). В Java доступны следующие платформы: Java Enterprise Edition (Java EE), Java Standard Edition (Java SE) и Java Mobile Edition (Java ME).

Начинающие разработчики иногда не могут разобраться, какой именно пакет подходит для их проекта. Как правило, каждая версия JDK содержит инструменты Java SE. Например, Java EE это стандартная платформа (SE) с дополнительными инструментами, полезными для разработки корпоративных приложений таких, как Enterprise JavaBeans или поддержка Object Relational Mapping.

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

Совместимость версий JDK

Так как совместно с JDK поставляется компилятор, то, используемый вами JDK определяет, какую версию Java вы можете применить при разработке. Например, если вы хотите использовать новый функционал, появившийся в Java 15, то для корректной компиляции необходима, как минимум, Java 15 JDK. В противном случае команда javac сообщит о синтаксической ошибке в коде.

Загрузка JDK

В этой статье мы остановимся на JDK SE и сосредоточимся на основных классах и технологиях Java SE. Чтобы загрузить JDK, посетите сайт любой компании, которая формирует бинарные сборки JDK, например Oracle, BellSoft и т. д. и скачайте нужную версию. Актуальный список таких компаний можно посмотреть по этой ссылке.

О Java EE

Вам необходимо использовать Java EE, если вы собираетесь создавать веб-приложения. Java EE JDK включает спецификацию Java Servlet, которая поддерживает обработку HTTP-запросов. Для любой реализации Java EE JDK также требуется специальный контейнер, который является сервером, запускающим приложения. Glassfish является эталонной реализацией сервера Java EE от компании Oracle. Другими популярными реализациями являются Tomcat and Jetty.

Установка JDK

При запуске установщика JDK, вам для установки будет предложен выбор из трех компонентов: инструменты разработки, исходный код и JRE. Вы можете установить один или все из них.

Установка инструментов разработки дает вам доступ непосредственно к JDK. Исходный код содержит исходники публичных классов из Java Core API. Установка этого пункта позволит вам обращаться к исходному коду классов при разработке ваших приложений.

Устанавливайте все предлагаемые компоненты и принимайте значения по умолчанию. В вашу операционную систему будут установлены JDK, JRE и исходные коды классов. Путь установки используйте тот, который предлагается по умолчанию.

JDK в командной строке

Установка JDK и JRE добавляет команду java в вашу командную строку. Вы можете проверить это, выполнив в командной строке команду java -version , которая должна вывести в консоль, установленную версию Java.

Команда javac

Утилита javac находится в директории /bin, но автоматически не добавляется в системную переменную PATH (представляет собой набор путей до каталогов, в которых расположены исполняемые файлы) во время установки (хотя, некоторые дистрибутивы такие, как Axiom делают это автоматически). Мы можем установить javac самостоятельно или установить IDE (интегрированная среда разработки), которая содержит эту команду.

Простая Java программа
Шаг 1. Пишем код на Java

Создайте новый текстовый файл под названием Intro.java в каком-нибудь редакторе и сохраните его куда-нибудь на своем компьютере.

Затем добавьте в него следующий код:

 public class Intro < public static void main(String[] args) < System.out.println("Welcome to the JDK!"); >> 

Шаг 2. Компиляция с помощью JDK

Затем используйте JDK-компилятор, чтобы превратить ваш текстовый файл в исполняемую программу. Скомпилированный код в Java известен, как байт-код и имеет расширение class.

Для компиляции программ необходимо использовать команду javac :

 > javac Intro.java 

Это должно привести к успешной компиляции. Если компиляция прошла удачно, то в консоли не отобразится сообщение об ее успешном завершении. В противном случае любые ошибки будут отображены в консоли.

Шаг 3. Запуск .class-файла

После компиляции должен появиться файл Intro.class в той же папке, что и Intro.java. Для его запуска используйте команду java :

 > java Intro Welcome to the JDK! 

Обратите внимание, что при вводе команды расширение .class не указывается.
Результат работы команды отобразится в командной строке.
Команда jar

Javac является важной частью JDK, но каталог /bin содержит и другие инструменты, которые вам понадобятся. Вероятно, наиболее важным после javac является инструмент jar.

Файл с расширением .jar является архивом для Java-классов. После того как компилятор создал class-файлы , разработчик может объединить их в .jar , который сжимает и структурирует их в необходимом порядке.

Давайте преобразуем Intro.java в jar-файл .

>Вернитесь в каталог, где вы разместили файл Intro.java и выполните следующую команду в командной строке:

 > jar --create --file Intro.jar Intro.class 

Запуск .jar-файла

Если все прошло хорошо, то в каталоге появился файл intro.jar . Вы можете его запустить, используя следующую команду:

 > java -cp Intro.jar Intro 

Эта команда говорит Java, что искать метод main надо в классе Intro по пути intro.jar . Для такой маленькой программы не имеет смысла создавать .jar — файл. Но такие файлы необходимы, когда программа разрастается, а также использует сторонние библиотеки классов.

JDK в вашей IDE

IDE (Integrated Development Environment) или интегрированная среда разработки — это программное обеспечение, которое представляет собой функциональный набор инструментов для разработки приложений. Воспринимайте IDE, как визуальную операционную систему с набором таких инструментов, как браузер файлов и текстовый редактор с дополнительными возможностями, специфичными для разработки (автодополнение кода, форматирование и т. д.).

В Java-разработке одной из ключевых обязанностей IDE является автоматическое управление компиляцией. Среда сама запускает процесс компиляции в фоновом режиме, поэтому вам не нужно постоянно делать это самостоятельно. Также IDE «на лету» ловит и отображает ошибки кодирования.

Мы уже обсудили, как JDK работает в командной строке, теперь давайте немного посмотрим, как она работает в среде IntelliJ IDEA.

Руководство по версиям и возможностям Java

Здесь есть все, что вам нужно знать о различных версиях и функциях Java.

Java 8, Java 11, Java 13 — какая разница?

Вы можете использовать это руководство, чтобы найти и установить последнюю версию Java, понять различия между дистрибутивами Java (AdoptOpenJdk, OpenJDK, OracleJDK и т.д.), А также получить обзор возможностей языка Java, включая версии Java 8-13.

Примечание переводчика
09 апреля 2020 г. Марко опубликовал новую версию Руководства, в которую добавлено описание Java 14.
Перевод новой версии Руководства предлагается Вашему вниманию.

Исходная информация

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

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

Какую версию Java я должен использовать?

По состоянию на сентябрь 2019 года Java 13 является последней выпущенной версией Java, с новыми версиями, выходящими каждые 6 месяцев — Java 14 запланирована на март 2020 года, Java 15 на сентябрь 2020 года и т.д. В прошлом циклы выпуска Java были намного длиннее, до 3-5 лет!

С появлением такого количества новых версий в действительности имеются следующие основные сценарии использования:

  • Унаследованные проекты в компаниях часто связаны с использованием Java 8 (см. Раздел «Почему компании все еще застревают на Java 8?» Ниже). Таким образом, вы также будете вынуждены использовать Java 8.
  • Некоторые унаследованные проекты даже работают на Java 1.5 (выпущен в 2004 г.) или 1.6 (выпущен в 2006 г.) — сожалею, друзья!
  • Если вы уверены, что используете самые последние IDE, интегрированные среды и инструменты сборки и запускаете новый проект, вы можете без колебаний использовать Java 11 (LTS) или даже самую последнюю версию Java 13.
  • Есть специальная область разработки Android, где Java в основном застряла на версии Java 7, с доступом к определенному набору функций Java 8. Но вы можете переключиться на использование языка программирования Kotlin.

Почему компании все еще застряли на Java 8?

Существует множество разных причин, по которым компании все еще придерживаются Java 8. Вот некоторые из них:

  • Инструменты сборки (Maven, Gradle и т.д.) и некоторые библиотеки изначально имели ошибки с версиями Java версий> 8 и нуждались в обновлениях. Даже сегодня, например, с Java 9+, некоторые инструменты сборки выводят предупреждения «reflective access» при создании проектов Java, которые просто «не готовы», даже если со сборкой все в порядке.
  • До Java 8 вы в основном использовали JDK-сборки Oracle, и вам не нужно было заботиться о лицензировании. Однако в 2019 году Oracle изменила схему лицензирования, что привело к тому, что Интернет сошел с ума, сказав, что «Java больше не является бесплатной», — и последовало значительное замешательство. Однако на самом деле это не проблема, о чем вы узнаете в разделе «Дистрибутивы Java» данного руководства.
  • В некоторых компаниях действуют политики, позволяющие использовать только версии LTS, и полагаются на поставщиков своих ОС для предоставления этих сборок, что требует времени.

Подводя итог, у вас есть сочетание практических вопросов (обновление ваших инструментов, библиотек, фреймворков) и политических проблем.

Почему некоторые версии Java называются 1.X?

Java до версии 9 просто имела другую схему именования. Итак, Java 8 также может называться 1.8, Java 5 может называться 1.5 и т.д. Когда вы выполнили команду java -version с этими версиями, вы получили такой вывод:

c:\Program Files\Java\jdk1.8.0_191\bin>java -version java version "1.8.0_191" (1) Java(TM) SE Runtime Environment (build 1.8.0_191-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

Это просто означает Java 8. С переходом к основанным на времени выпускам с Java 9 также изменилась схема именования, и версии Java больше не имеют префикса 1.x. Теперь номер версии выглядит так:

c:\Program Files\Java\jdk11\bin>java -version openjdk version "11" 2018-09-25 (1) OpenJDK Runtime Environment 18.9 (build 11+28) OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)

В чем разница между версиями Java?

Должен ли я изучать конкретную?

Придя из других языков программирования с большими перерывами между выпусками, как, например, Python 2–3, вы можете спросить, применимо ли это к Java.

Java особенная в этом отношении, поскольку она чрезвычайно обратно совместима. Это означает, что ваша программа на Java 5 или 8 гарантированно будет работать с виртуальной машиной Java 8-13 — с некоторыми исключениями, о которых вам сейчас не нужно беспокоиться.

Очевидно, что это не работает наоборот, скажем, ваша программа использует функции Java 13, которые просто недоступны в Java 8 JVM.

Это означает несколько вещей:

  • Вы не просто «изучаете» конкретную версию Java, например Java 12.
  • Скорее, вам нужно получить хорошую основу для всех языковых возможностей вплоть до Java 8.
  • И затем, из этого руководства вы можете узнать, какие дополнительные функции появились в Java 9-13, чтобы использовать их всегда, когда это возможно.

Каковы примеры этих новых возможностей новых версий Java?

Взгляните на раздел «Возможности Java 8-13» ниже.

Но, как правило: старые, более длинные циклы выпуска (3-5 лет, вплоть до Java 8) означали множество новых функций в каждом выпуске.

Шестимесячный цикл выпуска означает меньшее количество функций на выпуск, поэтому вы можете быстро освоить языковые функции Java 9-13.

В чем разница между JRE и JDK?

До сих пор мы говорили только о Java. Но что именно означает «Java»?

Во-первых, вам нужно провести различие между JRE (Java Runtime Environment) и JDK (Java Development Kit).

Исторически, вы загружали только JRE, если вас интересовали только программы Java. JRE включает, помимо прочего, виртуальную машину Java (JVM) и инструмент командной строки «java».

Для разработки новых программ на Java вам нужно было загрузить JDK. JDK включает в себя все, что есть в JRE, а также компилятор javac и несколько других инструментов, таких как javadoc (генератор документации Java) и jdb (отладчик Java).

Теперь, почему я говорю в прошедшем времени?

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

Таким образом, хотя некоторые дистрибутивы (см. Раздел «Дистрибутивы Java») по-прежнему предлагают отдельную загрузку JRE, похоже, существует тенденция предлагать только JDK. Следовательно, теперь мы будем использовать Java и JDK взаимозаменяемо.

Как мне установить Java или JDK?

На данный момент не обращайте внимания на образы Java-Docker, оболочки MSI или пакеты для конкретной платформы. В конце концов, Java — это просто файл .zip; ни больше ни меньше.

Поэтому все, что вам нужно сделать, чтобы установить Java на свой компьютер, — это разархивировать файл jdk-.zip. Вам даже не нужны права администратора для этого.

Ваш распакованный файл Java будет выглядеть так:

Directory C:\dev\jdk-11 12.11.2019 19:24 . 12.11.2019 19:24 .. 12.11.2019 19:23 bin 12.11.2019 19:23 conf 12.11.2019 19:24 include 12.11.2019 19:24 jmods 22.08.2018 19:18 legal 12.11.2019 19:24 lib 12.11.2019 19:23 1.238 release

Магия происходит в каталоге / bin, который в Windows выглядит следующим образом:

Directory C:\dev\jdk-11\bin . 12.11.2019 19:23 272.736 java.exe . 12.11.2019 19:23 20.832 javac.exe . 

Поэтому все, что вам нужно сделать, это разархивировать этот файл и поместить каталог /bin в переменную PATH, чтобы вы могли вызывать команду java из любого места.

В случае, если вам интересно, установщики с графическим интерфейсом, такие как Oracle или AdoptOpenJDK, выполняет распаковку и изменение переменной PATH вместо вас.

Чтобы убедиться, что вы правильно установили Java, вы можете просто выполнить команду java -version. Если вывод выглядит так, как показано ниже, вы готовы!

openjdk version "11" 2018-09-25 OpenJDK Runtime Environment 18.9 (build 11+28) OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)

Теперь остался один вопрос: откуда вам взять этот .zip файл с Java? Что подводит нас к теме дистрибутивов.

Дистрибутивы Java

Существует множество сайтов, предлагающих загрузку Java (читай: JDK), и неясно, «кто что предлагает и с каким лицензированием». Этот раздел проливает свет на это.

Проект OpenJDK

С точки зрения исходного кода Java (читай: исходный код вашего JRE / JDK) есть только один — на сайте проекта OpenJDK.

Однако это всего лишь исходный код, а не распространяемая сборка (подумайте: ваш файл .zip с скомпилированной командой java для вашей конкретной операционной системы). Теоретически вы и я могли бы создать сборку из этого исходного кода, назвать ее, скажем, MarcoJDK, и начать ее дистрибуцию. Но наш дистрибутив не будет сертифицирован, чтобы можно было называть этот дистрибутив совместимым с Java SE.

Вот почему на практике есть несколько поставщиков, которые фактически создают эти сборки, сертифицируют (см. TCK) и затем распространяют их.

И хотя поставщики не могут, скажем, удалить метод из класса String перед созданием новой сборки Java, они могут добавить брэндинг (вay!) или добавить некоторые другие утилиты (например, CLI), которые они считают полезными. Но в остальном исходный код одинаков для всех дистрибутивов Java.

OpenJDK (от Oracle) и сборки OracleJDK

Один из поставщиков, который создает Java из исходного кода, — это Oracle. Это приводит к двум разным дистрибутивам Java, что поначалу может быть очень запутанными.

  1. Сборки OpenJDK от Oracle (!). Эти сборки бесплатны и не имеют торговой марки, но Oracle не выпустит обновления для более старых версий, скажем, Java 13, как только выйдет Java 14.
  2. OracleJDK — это коммерческая сборка под брендом, выпускаемая начиная с изменения лицензии в 2019 году. Это означает, что ее можно использовать бесплатно во время разработки, но вы должны платить Oracle, если используете ее в рабочей среде. При этом вы получаете более длительную поддержку, то есть все обновления дистрибутива и номер телефона, по которому можно позвонить, если с вашей JVM будут проблемы.

Исторически (до Java 8) существовали реальные исходные различия между сборками OpenJDK и сборками OracleJDK, при этом можно было сказать, что OracleJDK был «лучше». Но на сегодняшний день обе версии практически одинаковы, с небольшими отличиями.

Впрочем все сводится к тому, что вам требуется платная коммерческая поддержка (номер телефона) для используемой версии Java.

AdoptOpenJDK

В 2017 году группа участников, разработчиков и поставщиков Java User Group (Amazon, Microsoft, Pivotal, Red Hat и другие) создала сообщество под названием AdoptOpenJDK.

Они предоставляют бесплатные надежные сборки OpenJDK с более длительной доступностью / обновлениями и даже предлагают вам выбор из двух разных виртуальных машин Java: HotSpot и OpenJ9.

Я очень рекомендую ее, если вы хотите установить Java.

Azul Zulu, Amazon Corretto, SAPMachine

Полный список сборок OpenJDK вы найдете на сайте OpenJDK Wikipedia. Среди них Azul Zulu, Amazon Corretto, а также https://sap.github.io/SapMachine/ и многие другие. Упрощенно говоря, различия сводятся к тому, что у вас есть различные варианты поддержки/ гарантии обслуживания.

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

Рекомендация

Повторим с еще раз, что с 2019 года, если у вас нет особых требований, найдите файл jdk.zip (.tar.gz/.msi/.pkg) по адресу https://adoptopenjdk.net или выберите пакет, предоставленный вашим поставщиком ОС.

Возможности Java 8-13

Как уже упоминалось в самом начале этого руководства: в сущности все (если вы не будьте слишком требовательны) функции языка Java 8 работают в Java 13. То же самое касается всех других версий Java между ними.

В свою очередь, это означает, что знание всех языковых функций Java 8 дает хорошую базу в изучении Java, а все остальные версии (Java 9-13) в значительной степени дают дополнительные функции поверх этого базового уровня.

Вот краткий обзор того, что конкретные версии могут предложить:

Java 8

Java 8 была массовым выпуском, и вы можете найти список всех функций на веб-сайте Oracle. Здесь я хотел бы упомянуть два основных набора функций:

Особенности языка: лямбды и т.д.

До Java 8 всякий раз, когда вы хотели создать экземпляр, например, нового Runnable, вы должны были написать анонимный внутренний класс, например, так:

 Runnable runnable = new Runnable() < @Override public void run()< System.out.println("Hello world !"); >>;

С лямбдами тот же код выглядит так:

Runnable runnable = () -> System.out.println("Hello world two!");

Вы также получили ссылки на методы, повторяющиеся аннотации, методы по умолчанию для интерфейсов и некоторые другие языковые функции.

Коллекции и потоки

В Java 8 вы также получили операции в функциональном стиле для коллекций, также известные как Stream API. Быстрый пример:

List list = Arrays.asList("franz", "ferdinand", "fiel", "vom", "pferd");

До Java 8, вам нужно было написать циклы for, чтобы что-то сделать с этим списком.

С помощью API Streams вы можете сделать следующее:

list.stream() .filter(name -> name.startsWith("f")) .map(String::toUpperCase) .sorted() .forEach(System.out::println);

Java 9

Java 9 также была довольно большой версией, с несколькими дополнениями:

Коллекции

Коллекции получили несколько новых вспомогательных методов для простого создания списков, наборов и карт.

List list = List.of("one", "two", "three"); Set set = Set.of("one", "two", "three"); Map map = Map.of("foo", "one", "bar", "two");
Streams

Потоки получили несколько дополнений, в виде методов takeWhile, dropWhile и iterate.

Stream stream = Stream.iterate("", s -> s + "s") .takeWhile(s -> s.length() < 10);
Optionals

Optionals получили метод ifPresentOrElse, которого крайне не хватало.

user.ifPresentOrElse(this::displayAccount, this::displayLogin);
Интерфейсы

Интерфейсы получили private методы:

public interface MyInterface < private static void myPrivateMethod()< System.out.println("Yay, I am private!"); >>
Другие возможности языка

И пара других улучшений, таких как улучшенный оператор try-with-resources или расширения diamond оператора.

JShell

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

% jshell | Welcome to JShell -- Version 9 | For an introduction type: /help intro jshell> int x = 10 x ==> 10
HTTPClient

Java 9 принес первоначальную предварительную версию нового HttpClient. До этого встроенная поддержка Http в Java была довольно низкоуровневой, и вам приходилось использовать сторонние библиотеки, такие как Apache HttpClient или OkHttp (кстати, отличные библиотеки).

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

Проект Jigsaw: модули Java и файлы Jar с несколькими выпусками

Java 9 получила Jigsaw Module System, которая чем-то напоминает старую добрую спецификацию OSGI. Целью данного руководства не является подробное описание Jigsaw — посмотрите предыдущие ссылки, чтобы узнать больше.

Файлы Multi-Release .jar позволили создать один файл .jar, содержащий разные классы для разных версий JVM. Таким образом, ваша программа может вести себя по-разному / иметь разные классы, используемые при запуске на Java 8 и на Java 10, например.

Java 10

В Java 10 было несколько изменений, таких как сборка мусора и т.д. Но единственное реальное изменение, которое вы, как разработчик, вероятно, заметите, — это введение ключевого слова var, также называемого выводом типа локальной переменной.

Вывод типа локальной переменной: ключевое слово var

// Pre-Java 10 String myName = "Marco"; // With Java 10 var myName = "Marco"

Чувствуете себя как в Javascript-е, не так ли? Однако Java все еще строго типизирован и var применяется только к переменным внутри методов (спасибо, dpash, за то, что снова указал на это).

Java 11

Java 11 также была несколько меньшей версией с точки зрения разработчика.

Строки и файлы

Строки и файлы получили несколько новых методов (не все перечислены здесь):

"Marco".isBlank(); "Mar\nco".lines(); "Marco ".strip(); Path path = Files.writeString(Files.createTempFile("helloworld", ".txt"), "Hi, my name is!"); String s = Files.readString(path);
Запустить исходные файлы

Начиная с Java 10, вы можете запускать исходные файлы Java без предварительной компиляции. Шаг к написанию сценариев.

ubuntu@DESKTOP-168M0IF:~$ java MyScript.java
Вывод типа локальной переменной (var) для лямбда-параметров

В заголовке все сказано:

(var firstName, var lastName) -> firstName + lastName
HttpClient

HttpClient из Java 9, но уже в окончательной, а не превью версии.

Другие вкусности

Flight Recorder (Регистратор полетов), сборщик мусора No-Op, Nashorn-Javascript-Engine объявлен deprecated (устаревшим) и т.д.

Java 12

В Java 12 появилось несколько новых функций и исправлений, но здесь стоит упомянуть только поддержку Unicode 11 и превью нового выражения switch, о котором вы узнаете в следующем разделе.

Java 13

Вы можете найти полный список возможностей здесь, но, по сути, вы получаете поддержку Unicode 12.1, а также две новые или улучшенные превью функции (могут быть изменены в будущем):

Switch выражение (Preview — предварительная версия)

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

Старые операторы switch выглядели так:

switch(status) < case SUBSCRIBER: // code block break; case FREE_TRIAL: // code block break; default: // code block >

В то время как в Java 13 операторы switch могут выглядеть так:

boolean result = switch (status) < case SUBSCRIBER ->true; case FREE_TRIAL -> false; default -> throw new IllegalArgumentException("something is murky!"); >;
Многострочные строки (превью)

Наконец-то вы можете сделать это на Java:

String htmlBeforeJava13 + " \n" + " 

Hello, world

\n" + " \n" + "\n"; String htmlWithJava13 = """

Hello, world

""";

Java 14 и позже

Будет рассмотрено здесь, как только их выпустят. Зайдите в ближайшее время!

Вывод

К настоящему времени у вас должен быть довольно хорошее представление о нескольких вещах:

  • Как установить Java, какую версию получить и где ее получить (подсказка: AdoptOpenJDK).
  • Что такое дистрибутив Java, какие существуют и в чем различия.
  • Каковы различия между конкретными версиями Java.

Обратная связь, исправления и случайный ввод всегда приветствуются! Просто оставьте комментарий внизу.

Спасибо за прочтение!

Там больше, откуда это появилось

Эта статья первоначально появилась на сайте как часть серии руководств по современному программированию на Java. Чтобы найти больше руководств, посетите веб-сайт или подпишитесь на рассылку, чтобы получать уведомления о недавно опубликованных руководствах: https://bit.ly/2K0Ao4F.

Благодарности

Стивен Колебурн написал фантастическую статью о различных доступных дистрибутивах Java. Спасибо, Стивен!

Основы программирования на Java

Основным строительным блоком программы на языке Java являются инструкции (statement). Каждая инструкция выполняет некоторое действие, например, вызовы методов, объявление переменных и присвоение им значений. После завершения инструкции в Java ставится точка с запятой (;). Данный знак указывает компилятору на конец инструкции. Например:

System.out.println("Hello Java!");

Данная строка представляет вызов метода System.out.println , который выводит на консоль строку "Hello Java!". В данном случае вызов метода является инструкцией и поэтому завершается точкой с запятой.

Кроме отдельных инструкций распространенной конструкцией является блок кода. Блок кода содержит набор инструкций, он заключается в фигурные скобки, а инструкции помещаются между открывающей и закрывающей фигурными скобками:

В этом блоке кода две инструкции, которые выводят на консоль определенную строку.

Выполнение программы. Метод main

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

public class Program < public static void main (String args[])< System.out.println("Hello Java!"); >>

То есть основу нашей программы составляет класс Program. При определении класса вначале идет модификатор доступа public , который указывает, что данный класс будет доступен всем, то есть мы сможем его запустить из командной строки. Далее идет ключевое слово class , а затем название класса. После названия класса идет блок кода, в котором расположено содержимое класса.

Входной точкой в программу на языке Java является метод main , который определен в классе Program. Именно с него начинается выполнение программы. Он обязательно должен присутствовать в программе. При этом его заголовок может быть только таким:

public static void main (String args[])

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

Вначале заголовка метода идет модификатор public , который указывает, что метод будет доступен извне. Слово static указывает, что метод main - статический, а слово void - что он не возвращает никакого значения. Далее в скобках у нас идут параметры метода - String args[] - это массив args, который хранит значения типа String, то есть строки. При запуске программы через этот массив мы можем передать в программу различные данные.

После заголовка метода идет его блок, который содержит набор выполняемых инструкций.

Комментарии

Код программы может содержать комментарии. Комментарии позволяют понять смысл программы, что делают те или иные ее части. При компиляции комментарии игнорируются и не оказывают никакого влияния на работу приложения и на его размер.

В Java есть два типа комментариев: однострочный и многострочный. Однострочный комментарий размещается на одной строке после двойного слеша //. А многострочный комментарий заключается между символами /* текст комментария */ . Он может размещаться на нескольких строках. Например:

/* многострочный комментарий Объявление нового класса, который содержит код программы */ public class Program < // начало объявления класса Program // определение метода main public static void main (String args[])< // объявление нового метода System.out.println("Hello Java!"); // вывод строки на консоль >// конец объявления нового метода > // конец объявления класса Program

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *