Java core для самых маленьких. часть 1. подготовка и первая программа

Содержание:

Как запустить Java на Mac OS

Вот что нужно сделать для Java программирование с нуля и установки платформы на Mac OS X или macOS:

  1. Скачайте свежую версию Java (JDK) со страницы загрузки Java SE.
  2. Дважды кликните по скачанному DMG-файлу и следуйте инструкциям программы-установщика.
  3. Для верификации установки откройте терминал и введите следующую команду:

javac –version

Если Java установлена верно, на экран будет выведена версия программы (например, javac 1.8.0_60).

Следующим шагом будет установка IDE (интегрированной среды разработки) для написания и запуска Java-кода. Мы установим бесплатную версию IntelliJ IDEA и запустим на ней Java. Вот что нужно для этого сделать:

Перейдите на страницу загрузки IntelliJ и скачайте бесплатную версию Community Edition.

  • Откройте скачанный DMG-файл и следуйте инструкциям по установке. Для быстрого доступа можно переместить IntelliJ IDEA в папку «Программы».
  • Откройте IntelliJ IDEA. Выберите опцию «Don’t import settings («Не импортировать настройки») и нажмите «Ok. После этого примите политику приватности Jetbrains, нажав на кнопку «Accept.
  • Теперь можно настроить интерфейс под себя. Также можно пропустить этот шаг и оставить всё по умолчанию. Если не уверены, просто пропускайте этот шаг, нажав кнопку «Skip All and Set Defaults («Пропустить всё и установить настройки по умолчанию»).

  • Программа покажет вам страницу приветствия. Нажмите на кнопку «Create New Project («Создать новый проект»).
  • В следующем окне выберите «Java в левой панели и нажмите «New вверху окна программы для выбора «JDK. Здесь надо выбрать место, куда установили JDK, после чего нажать Next.

  • У вас будет вариант создать проект из шаблона («Create project from template). Игнорируем его и нажимаем кнопку «Next.
  • На следующем шаге установки языка программирования Java введите имя проекта и нажмите кнопку «Finish.
  • В левой панели вы увидите свой проект. Если панели не видно, перейдите в меню Views > Tool Windows > Project.
  • Зайдите в Hello > New > Java и задайте имя класса. Мы назвали его First.

  1. Напишите Java-код и сохраните проект.
  2. Для запуска только что написанной программы, зайдите в Run > Run… Нажмите на First (то есть имя созданного нами файла) — программа скомпилирует файл и запустит его.

Где применяется Java?

Java — это язык широкого назначения. Его основной принцип: «Пиши один раз, запускай где угодно», или WORA (Write Once, Run Anywhere). Это значит, что скомпилированный (преобразованный в машинный код) Java-код можно можно запустить на всех поддерживающих Java платформах без необходимости повторной компиляции.

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

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

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

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

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

Десктопные приложения. В том числе и много IDE (интегрированная среда разработки — комплекс программных средств, используемый для разработки ПО) разработаны на Java — например, IntelliJ IDEA, Eclipse, Netbeans.

Веб-приложения. Например, большое количество RESTful-сервисов (REST — стиль архитектуры программного обеспечения для распределенных систем) и сервлетов (интерфейс Java, реализация которого расширяет функциональные возможности сервера) было создано с использованием Java.

Встраиваемые системы. От банкоматов, платежных терминалов и станков с ЧПУ до бытовой техники — Java может использоваться практически везде, как и обещали его создатели.

Большие данные. Java не доминирует в этой области, но применяться может.

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

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

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

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

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

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

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

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

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

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

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

В чем разница между 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-{5-14}.zip. Вам даже не нужны права администратора для этого.

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

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

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

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

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

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

Что нужно знать и уметь на старте

Начинающий Java-разработчик может устроиться джуном или стажёром. Требования к кандидатам на эти позиции будут немного отличаться.

От стажёров ждут таких знаний:

  • Java-core. Знать базовые конструкции языка: функции, переменные, типы данных. Помнить основные классы стандартной библиотеки.
  • Базы данных. Знать, что это такое и как к ним обращаться.

А к джунам уже больше требований:

  • Java-core. Уверенно ориентироваться в конструкциях языка, знать стандартные библиотеки и понимать, для каких задач они нужны.
  • Фреймворки. Основной, который нужно освоить, — это Spring.
  • Git. Система контроля версий, которая помогает совместно работать с кодом. Джуну нужно уметь ориентироваться в ней и вести разработку вместе с другими коллегами.
  • Базы данных. Нужно уметь работать с базами данных: организовывать таблицы, писать более сложные запросы, чтобы получать и обновлять данные.

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

То, сколько придётся учиться, зависит от вашего прошлого опыта и знаний. Человек, который хотя бы немного знаком с разработкой, может изучить Java-core месяца за три. Если опыта нет, то на то, чтобы освоить базу, уйдёт около пяти месяцев. Изучение языка вместе со всеми инструментами займёт от 10 месяцев до года.

Поиск работы тоже может занять разное время. Однако сразу после изучения Java-core, если вам хватает задора и уверенности в себе, уже можно идти и пробовать искать работу стажёром. Возможно, новичок получит десяток отказов и два оффера с невысоким окладом, зато он получит и опыт собеседований, и больше информации о рынке. Это вариант для тех, кому очень хочется поскорее ворваться в профессию.

Примеры Использования Программирования На Java. кто они такие?

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

  • Веб-приложения. Java, надежный, гибкий и высокопроизводительный язык, позволяет предприятиям и крупным компаниям создавать веб-приложения с использованием JSP и сервлетов. Почти все крупные компании имеют Java-приложения на своих серверах. Кроме того, когда программисты хотят добавить динамические данные на веб-сайт со статическими веб-страницами HTML, они также готовы использовать Java.

  • Программные средства. Java-популярный язык, используемый для создания как коммерческих, так и проектов с открытым исходным кодом с помощью различных IDE, inc. IntelliJ IDEA, Eclipse, BlueJ, NetBeans и многие онлайн-версии IDE.

  • Автоматизация тестирования. Среди других языков и инструментов для автоматизации тестирования Java не является последним и используется для тестирования корпоративных проектов и мобильных приложений.

  • Приложения для Android. Приложения разработаны с использованием Android Studio компанией Google на основе идеи Intellij. Приложения запускаются на JVM, что означает, что сам код выполняется так же, как и на настольных компьютерах. Кроме того, Kotlin, вдохновленный Java, является объектно-ориентированным языком программирования, который работает над JVM и Android. Кстати, начать с Kotlin будет намного проще, если вы знакомы с принципами Java.

  • Игры. Многие современные игры написаны на Java, как для ПК (Minecraft), так и для мобильных устройств, как и большинство игр для Android.

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

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

Синтаксис

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

Java использует комментарии в стиле C++. Есть три разных стиля комментариев: однострочный комментарий — начинается сразу после и заканчивается в конце строки, многострочный комментарий — начинается сразу после и заканчивается перед , и Javadoc-комментарий — начинается сразу после и заканчивается перед . Стиль Javadoc-комментирования позволяет пользователю использовать программу Javadoc для создания документации к коду.

Пример:

//Это пример однострочного комментария, полученного c использованием удвоенного слэша.

/* Это пример многострочного комментария, полученного с использованием слэша
и символа звездочки. Такой тип  может содержать много информации или может 
быть использован для деактивации кода, но нужно помнить что такой комментарий 
нужно закрывать в конце.*/

package fibsandlies;
import java.util.HashMap;

/**
 * Это пример Javadoc-комментария; Javadoc может скомпилировать документацию
 * из этого текста. Javadoc-комментарии должны стоять непосредственно перед 
 * документируемым классом, методом или полем.
 */
public class FibCalculator extends Fibonacci implements Calculator {
    private static Map<Integer, Integer> memoized = new HashMap<Integer, Integer>();

    /*
     * Метод main, написанный ниже, используется JVM как точка входа в программу.
     */
    public static void main(String[] args) {
        memoized.put(1, 1);
        memoized.put(2, 1);
        System.out.println(fibonacci(12)); //Получаем 12-е число Фибоначчи и выводим его в консоль
    }

    /**
     * Пример метода класса на Java.
     * Принимает не отрицательное число FIBINDEX, возвращает
     * число Фибоначчи с порядковым номером равным FIBINDEX.
     * @param fibIndex  Порядковый номер числа Фибоначчи
     * @return Число Фибоначчи
     */
    public static int fibonacci(int fibIndex) {
        if (memoized.containsKey(fibIndex)) {
            return memoized.get(fibIndex);
        } else {
            int answer = fibonacci(fibIndex - 1) + fibonacci(fibIndex - 2);
            memoized.put(fibIndex, answer);
            return answer;
        }
    }
}

Как стать программистом Java — мнение эксперта

Комментирует Алексей Золотарев, эксперт ПО Oracle Центра технической поддержки РДТЕХ, преподаватель Учебного центра РДТЕХ.

Однажды заданный вопрос: «Алексей, посоветуй, как мне стать разработчиком» поставил меня в тупик. Всегда казалось, что программистом/разработчиком стать очень просто. Это же примерно, как езда на велосипеде. Чего тут сложного? Крути педали и поворачивай руль, следя за изгибами дороги. Уже не вспомню, что именно я тогда ответил, но сейчас понимаю, что на самом деле вопрос не такой простой, и за ним скрывается множество условностей.

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

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

Java – это язык абстракций. И если такое мышление – не ваш конёк, то лучше сразу задуматься, так уж ли нужно вам программирование на Java. А как оценить степень своей готовности к восприятию абстрактного? Конечно, не походом в музей современного искусства 🙂 Лучше всего вспомните, как прошло в университете знакомство с предметами аналитической геометрии, теории множеств, теорией вероятности. Не было отвращения? Тогда замечательно.

Один из ключевых факторов успеха – правильное восприятие реальности. К сожалению, распространено представление, что программирование – это почти искусство. И в последствии часто следует одушевление продукта разработки создателем, переоценка собственных творческих возможностей и многое-многое другое. Лучше сразу осознать, что ваши будущие программы и автопортрет Альбрехта Дюрера – это всё-таки вещи из разных областей творчества.

Изучение самого языка можно начать с хорошей книги, например, Bruce Eckel «Thinking in Java». В русском переводе книга называется «Философия Java». Произведение как нельзя лучше подходит для того, чтобы изучить язык программирования через принятие его объектно-ориентированной сущности.

Сразу же после изучения языка необходимо приступить к его практическому применению, реализуя какие-то простые программные решения. Очень полезно пробовать расширить функциональность какого-нибудь java-продукта с открытым кодом.
Задерживаться на этапе самосовершенствования надолго не стоит. Спектр реальных прикладных задач гораздо шире, чем то, что может изобрести собственная фантазия, поэтому нужно незамедлительно пробовать перейти на профессиональный уровень и устроиться на работу Java-программистом в ИТ-компанию.

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

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

Рассмотрим недостатки Java-программирования.

— Платное коммерческое использование

Недавно Oracle объявила, что с 2019 года компания начнет взимать плату за использование Java Standard Edition 8 в «коммерческих целях». За все новые обновления и исправления ошибок придется заплатить. Плата зависит от количества пользователей или компьютеров.

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

— Низкая производительность

У любого языка высокого уровня довольно низкая производительность из-за компиляции и абстракции с помощью виртуальной машины. Однако это не единственная причина низкой скорости Java. Например, приложение очистки памяти: это полезная функция, которая, к сожалению, приводит к значительным проблемам с производительностью, если требует больше 20 процентов времени процессора. Плохая настройка кэширования может вызвать чрезмерное использование памяти. Существует также взаимная блокировка потоков: так происходит, когда несколько потоков пытаются получить доступ к одному и тому же ресурсу. В этом случае происходит кошмар каждого Java-разработчика — ошибка из-за нехватки памяти. Тем не менее умелое планирование может решить все эти проблемы.

— Отсутствие нативного дизайна

Для создания графического интерфейса пользователя (GUI) разработчики используют различные инструменты, ориентированные для конкретного языка. Для Android-приложений есть Android Studio, которая помогает создавать приложения с нативным дизайном. Однако, когда дело доходит до пользовательского интерфейса на ПК, Java-инструмента для создания нативного дизайна нет.

Есть несколько инструментов для разработки GUI для Java: самые популярные из них — Swing, SWT, JavaFX, JSF. Библиотека Swing — это старый, но надежный кросс-платформенный инструмент, интегрированный в различные Java-IDE, в том числе Eclipse и NetBeans. Однако, если вы не используете шаблоны, вы заметите несоответствия интерфейса. SWT использует собственные компоненты, но не подходит для сложного интерфейса. JavaFX — лаконичный и современный, но слишком новый. В целом, перед созданием GUI на Java нужно подробнее изучить инструменты.

— Многословный и сложный код

Многословность кода может показаться преимуществом, которое поможет при изучении языка. Однако, длинные, чрезмерно сложные предложения затрудняют чтение и просмотр кода. Как и естественные языки, многие языки программирования высокого уровня содержат лишнюю информацию. Java — это более легкая версия неприступного C ++, которая вынуждает программистов прописывать свои действия словами из английского языка. Это делает язык более понятным для неспециалистов, но менее компактным.

Сравним Java и Python и увидим, в чем преимущество лаконичного кода Python. В Python не используются точка с запятой, круглые и фигурные скобки. Вместо «и», «или» и «нет» в качестве операторов используются «&&», «||» и «!».

Сравнение Java и Python 

Другие инструменты и приложения

16. Создайте конвертер валют

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

Проект легко разрабатывать с использованием Java Netbeans, Java-сервлетов и других функций веб – разработчиков.

Видеоинструкция

17. Создайте простое банковское приложение

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

Этот удобный для начинающих проект займет у вас около полутора часов.

18. Создайте приложение электронной почты

Этот проект требует продвинутых навыков Java и даст четкое представление о математике.random для создания приложений электронной почты. Несмотря на то, что он продвинут, он по-прежнему удобен для начинающих и даст вам возможность практиковать концепции OOPs, такие как инкапсуляция. Это включает в себя настройку функций электронной почты, таких как емкость почтового ящика, а также настройку и изменение паролей. Вы также научитесь настраивать альтернативную электронную почту.

Чтобы понять, как это сделать, посмотрите видео, которое займет у вас 37 минут.

Видеоинструкция

19. Создайте интерфейс ATM

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

Видеоинструкция

20. Создайте систему бронирования авиабилетов

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

В начале вы можете пропустить в том числе возможность обработки платежей и отмены бронирования.

Видеоинструкция

Объявляем дженерик-классы и создаём их экземпляры

Давайте запрограммируем ту самую коробку, о которой шла речь в начале статьи: создадим класс Box, который умеет работать только с элементами определённого типа. Пусть для простоты в этой коробке пока будет только один элемент:

В классе два метода:

  • первый добавляет элемент в коробку;
  • второй достаёт его обратно и возвращает пользователю.

Во всех случаях, кроме заголовка класса, символ T пишется без угловых скобок, он обозначает один и тот же параметр типа.

Параметром типа для дженерика может быть только ссылочный тип, интерфейс или перечисление (enum). Примитивные типы и массивы с дженериками не используются, то есть нельзя создать Box<int> или Box<int[]>, но можно — Box<Integer> или Box<List<Integer>>.

Теперь создадим коробку для бумаги. Пусть за бумагу отвечает класс Paper, а значит, экземпляр правильной коробки создаётся вот так:

Это полный вариант записи, но можно и короче:

Так как слева мы уже показали компилятору, что нужна коробка именно для бумаги, справа можно опустить повторное упоминание Paper — компилятор «догадается» о нём сам.

Это «угадывание» называется type inference — выведение типа, а оператор «<>» — это diamond operator. Его так назвали из-за внешнего сходства с бриллиантом.

Для обозначения дженерик-типа в классе Box мы использовали латинскую букву T. Это необязательно, то есть можно было бы использовать любую другую букву или даже слово — Box<MyType>. Тем не менее есть набор рекомендаций от Oracle о том, когда какие обозначения лучше использовать в дженериках. Вот они:

E — element, для элементов параметризованных коллекций;

K — key, для ключей map-структур;

V — value, для значений map-структур;

N — number, для чисел;

T — type, для обозначения типа параметра в произвольных классах;

S, U, V и так далее — применяются, когда в дженерик-классе несколько параметров.

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

А можно пойти ещё дальше и создать дженерик-класс с двумя параметрами для коробки с двумя отсеками. Вот так:

Теперь легко запрограммировать коробку, в одном отсеке которой будет собираться пластик, а во втором — стекло:

Как освоить язык программирования Java?

Официальная документация Java

Oracle, компания, владеющая Java, публикует качественные уроки. Официальная документация освещает все функции Java и регулярно обновляется.

Примечание: единственный минус — официальная документация Java не всегда написана самым простым языком.

Рекомендуемые книги по Java

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

Java: Полное руководство (10-е издание)

Отличная книга для тех, кто только начинает изучать Java. Последнее издание включает все функции релиза Java 8.

В книге описано всё, что нужно знать про программирование на Java, включая синтаксис, ключевые слова и фундаментальные основы программирования, а также библиотеку API Java, апплеты Java и многое другое.

Философия Java (4-е издание)

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

Java 8. Карманный справочник: Скорая помощь Java-программистам

Эта книга содержит понятные ответы на вопросы, возникающие при обучении Java программированию с нуля. Она кратко рассказывает обо всех основных концепциях Java (включая Java 9). Не хотите листать сотни страниц в поисках нужной строчки? Купите эту книгу.

Что почитать и посмотреть на старте

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

●      Кэти Сьерра, Берт Бейтс, Изучаем Java. Эта книга хорошо подходит для новичков. В ней понятно изложены основы языка и программирования в целом, однако для более глубокого погружения вам придётся обращаться к дополнительным источникам.

●      Герберт Шилдт, Java: полное руководство. Классическая книга по разработке на Java — с разборами практических кейсов и подробным изложением теории.

●      Видеокурс «Программирование на Java». Курс лектора из Computer Science Center. Больше подойдёт тем, кто хотя бы немного знаком с разработкой.

●      Learning the Java Language (The Java Tutorials). Туториалы, подготовленные разработчиками языка — командой Oracle. Все материалы на английском языке и требуют хотя бы минимальных знаний в области программирования.

Ограничиваем дженерики сверху и снизу

Давайте немного расширим наше представление о мусоре и введём для него дополнительное свойство — массу «типичного представителя», то есть массу одной пластиковой бутылки или листка бумаги, например.

Теперь попробуем использовать эту массу в методе уже знакомого класса Box:

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

Теперь метод getItemWeight успешно скомпилируется.

Здесь T extends Garbage означает, что в качестве T можно подставить Garbage или любой класс-наследник Garbage. Из уже известных нам классов это могут быть, например, Paper или Plastic. Так как и у Garbage, и у всех его наследников есть метод getWeight, его можно вызывать в новой версии дженерик-класса Box.

Для одного класса или интерфейса можно добавить сразу несколько ограничений. Вспомним про интерфейс для пункта приёма мусора и введём класс для метода переработки — HandleMethod. Тогда GarbageHandler можно переписать так:

В качестве границы может выступать класс, интерфейс или перечисление (enum), но не примитивный тип и не массив. При этом для интерфейсов тоже используется слово extends, а не implements: <T extends SomeInterface> вместо <T implements SomeInterface>.

Wildcards

До этого мы использовали для параметров типов буквенные имена, но в Java есть и специальный символ для обозначения неизвестного типа — «?». Его принято называть wildcard, дословно — «дикая карта».

Термин wildcard пришёл в программирование из карточной игры. В покере, например, так называют карту, которая может сыграть вместо любой другой. Джокер — известный пример такой «дикой карты».

Wildcard нельзя подставлять везде, где до этого мы писали буквенные обозначения. Не получится, например, объявить класс Box<?> или дженерик-метод, который принимает такой тип:

Wildcards удобно использовать для объявления переменных и параметров методов совместно с классами из Java Collection Framework — здесь собраны инструменты Java для работы с коллекциями. Если вы не очень хорошо знакомы с ними, освежите знания, прочитав эту статью.

В примере ниже мы можем подставить вместо «?» любой тип, в том числе Paper, поэтому строка успешно скомпилируется:

Wildcards можно применять для ограничений типов:

Это уже знакомое нам ограничение сверху, upper bounding, — вместо «?» допустим Garbage или любой его класс-наследник, то есть Paper подходит.

Но можно ограничить тип и снизу. Это называется lower bounding и выглядит так:

Здесь <? super Garbage> означает, что вместо «?» можно подставить Garbage или любой класс-предок Garbage. Все ссылочные классы неявно наследуют класс Object, так что в правой части ещё может быть ArrayList<Object>.

Вместо заключения

Если начнёте изучать Java, не ошибётесь — это перспективный язык программирования, полный самых разнообразных возможностей.

Перед тем, как приступить к изучению Java, воспользуйтесь несколькими советами:

  • Не читайте обучающие статьи и примеры как роман. Единственный способ стать хорошим программистом — писать много кода.
  • Если переходите с другого языка программирования (скажем, C#), не надо писать код в стиле C#.
  • Найдите онлайн-сообщества, посвященные Java. Когда научитесь писать простые программы на Java, найдите популярные сайты и форумы, посвященные Java. Пробуйте решать проблемы, возникающие у других программистов. Это отличный способ расширить собственные знания. К тому же, если у вас возникнет загвоздка, вы будете знать, где можно попросить помощи.

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

Пожалуйста, оставьте свои комментарии по текущей теме материала. За комментарии, дизлайки, подписки, отклики, лайки низкий вам поклон!

МКМихаил Кузнецовавтор-переводчик статьи «Learn Java Programming. The Definitive Guide»

IntelliJ IDEA

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

Плюсом здесь является то, что среда заставляет писать и форматировать код правильно, в ней есть автодополнение и подсказки.

Наиболее популярной IDE для Java является IntelliJ IDEA от компании JetBrains. Существует две версии – бесплатная Community и платная Ultimate (30 дней триальный период). В случае Linux в документации рекомендуют распаковывать скаченный архив в каталог /opt/. После этого из подкаталога bin запускают скрипт idea.sh, который запускает мастер установки.

В одном из окон мастера будет предложено выбрать SDK (в данном случае JDK). Следует указать каталог, куда вы распаковывали пакет JDK. IDEA будет использовать компилятор и другое отсюда.

Когда вы напишите первую программу, надо будет сконфигурировать запуск, указав главный класс, содержащий функцию main(), или нажимать Ctrl + Shift + F10.

Пример 2: Арифметические операторы

class ArithmeticOperator {
    public static void main(String[] args) {

        double number1 = 12.5, number2 = 3.5, result;

        // Используется оператор сложения 
        result = number1 + number2;
        System.out.println("number1 + number2 = " + result);

        // Используется оператор вычитания 
        result = number1 - number2;
        System.out.println("number1 - number2 = " + result);

        // Используется оператор умножения
        result = number1 * number2;
        System.out.println("number1 * number2 = " + result);

        // Используется оператор деления
        result = number1 / number2;
        System.out.println("number1 / number2 = " + result);

        // Используется оператор остатка
        result = number1 % number2;
        System.out.println("number1 % number2 = " + result);
    }
}

Когда вы запустите программу, на экран выведется:

number1 + number2 = 16.0
number1 - number2 = 9.0
number1 * number2 = 43.75
number1 / number2 = 3.5714285714285716
number1 % number2 = 2.0

В примере с оператором деления Java, приведенном выше, использованные операнды – переменные. Кроме этого могут использоваться символьные значения. Например:

result = number1 + 5.2;
result = 2.3 + 4.5;
number2 = number1 -2.9;

Оператор «+» также может быть использован, чтобы соединить (конкатенировать) две строки или больше.

Объявляем и реализуем дженерик-интерфейсы

Объявление дженерик- интерфейсов похоже на объявление дженерик-классов. Продолжим тему переработки и создадим интерфейс пункта переработки GarbageHandler сразу с двумя параметрами: тип мусора и способ переработки:

Реализовать (имплементить) этот интерфейс можно в обычном, не дженерик- классе:

Но можно пойти другим путём и сначала объявить дженерик-класс с двумя параметрами:

Или скомбинировать эти два способа и написать дженерик-класс только с одним параметром:

Дженерик-классы и дженерик-интерфейсы вместе называются дженерик-типами.

Можно создавать экземпляры дженерик-типов «без расшифровки», то есть никто не запретит вам объявить переменную типа Box — просто Box:

Для такого случая даже есть термин — raw type, то есть «сырой тип». Эту возможность оставили в языке для совместимости со старым кодом, который был написан до появления дженериков.

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

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

Adblock
detector