Что такое Java Core

Что такое Java Core

Обзор средств и технологий из минимального набора Java-разработчика
8 минут9618

Java — современный язык программирования высокого уровня, разработанный и выпущенный в 1995 году компанией Sun Microsystems. Изначально создавался для программирования бытовых электронных устройств. Однако с момента появления фактически используется для разработки клиентских приложений и серверного программного обеспечения.

По состоянию на август 2020 года Java занимает второе место в рейтинге самых популярных языков программирования. На сайтах для поиска работы опубликовано множество вакансий по запросу «Java-разработчик». В списке требований к соискателю, как правило, присутствует пункт «знание Java Core» или даже «уверенное знание Java Core».

Core Java — термин Sun, используемый для обозначения Java Standard Edition (Java SE), стандартной версии и набора связанных технологий, таких как Java VM, CORBA и так далее. Дополнительную ясность вносит книга с одноимённым названием на английском языке. В русском переводе она называется «Java. Библиотека профессионала. Том 1. Основы», автор — Хорстманн Кей С. Мы также будем ссылаться на «Java 8. Полное руководство» Герберта Шилдта.

В статье мы обзорно рассмотрим следующие части Java Core:

  • базовые конструкции;
  • объектно-ориентированное программирование;
  • введение в Swing;
  • обобщённое программирование;
  • коллекции (JCF);
  • исключения (Exception);
  • потоки ввода-вывода;
  • многопоточное программирование.

Базовые конструкции

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

Изучение начинается с написания простейшей программы, вроде Hello World, выводящей в консоль строку приветствия. Далее в разной степени изучается следующий «джентльменский набор»:

  • понятия класса и метода;
  • переменные и константы, их типы и основы работы с ними;
  • массивы;
  • работа со строками как объектами, String API;
  • арифметические и логические операции и выражения;
  • команды для написания нелинейных программ, включающие в себя условный оператор if-else, тернарный оператор, оператор множественного выбора switch, циклы с определённым числом повторений for, включая его вариант for each, c неопределённым числом повторений while и do-while;
  • операторы для изменения порядка выполнения break и continue;
  • введение в пакетную систему Java, импорт классов, создание объектов, вызов статических и нестатических методов.

В этот раздел также входят навыки по установке и настройке JDK, вызову компилятора и виртуальной машины JVM в командной строке.

Материал по базовым конструкциям можно найти в упомянутых выше книгах:

  • «Java. Библиотека профессионала. Том 1. Основы» — глава 3;
  • «Java 8. Полное руководство» — главы 3, 4, 5.

Объектно-ориентированное программирование

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

Изучение ООП начинается с рассмотрения класса — элемента, составляющего основу Java. Поля класса содержат данные, методы — код. Методы могут иметь параметры и возвращать значения. Конструкторы — особые методы. Объекты создаются на основании классов. Инкапсуляция — первый принцип ООП — подразумевает связывание и сокрытие. Изучаются модификаторы полей и методов: public, protected, private. Вводится понятие перегрузки методов. Затем рассматриваются понятия и механизмы наследования и полиморфизма. Разъясняется разница между статическими полями и методами и нестатическими. Обсуждаются абстрактные классы и методы, вводится понятие интерфейса.

Материал по этому разделу можно найти в книгах:

  • «Java. Библиотека профессионала. Том 1. Основы» — главы 4, 5, 6;
  • «Java 8. Полное руководство» — главы 6, 7, 8.

Введение в Swing

Swing — это набор классов для создания графического интерфейса пользователя (GUI) в Java-программах. В сравнении с ранее использовавшейся библиотекой AWT, у библиотеки Swing есть ряд преимуществ:

  • богатый набор интерфейсных примитивов;
  • настраивающийся внешний вид на различных платформах (look and feel);
  • раздельная архитектура «модель-вид» (model-view);
  • встроенная поддержка HTML.

Изучение Swing начинается с написания пустого окна на основании класса JFrame. Затем изучается назначение JPanel, JLabel, JButton и других элементов библиотеки java.awt, размещение элементов с помощью BorderLayout и других компоновщиков, обработка кликов по кнопке и кликов мыши по элементу, а также рисование на JPanel.

Материал по разделу можно найти в книгах:

  • «Java. Библиотека профессионала. Том 1. Основы» — главы 10, 11, 12;
  • «Java 8. Полное руководство» — главы 31, 32, 33.

Обобщённое программирование

Обобщения — это параметризованные типы. Они позволяют объявлять классы, интерфейсы и методы, где тип данных указан в виде параметра. Используя обобщения, можно создать универсальный класс, который будет правильно обрабатывать данные разных типов. Классы, интерфейсы или методы, оперирующие параметризованными типами, называют обобщёнными.

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

Материал по этому разделу можно найти в книгах:

  • «Java. Библиотека профессионала. Том 1. Основы» — глава 8;
  • «Java 8. Полное руководство» — глава 14.

Коллекции (JCF)

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

Коллекция — это объект, способный хранить группу однотипных элементов. Она также содержит методы для операций с данными. Основные преимущества классов JCF перед теми, которые можно разработать самостоятельно, следующие:

  • ускоряется процесс разработки и улучшается качество кода;
  • обеспечивается поддержка повторного использования кода;
  • производится стандартизация интерфейса ваших классов;
  • реализуется поддержка многопоточного доступа.

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

  • Collection — группа элементов (охватывает Set и List);
  • Set — множество элементов (без дублирования);
  • SortedSet — то же самое, что Set, только элементы упорядочены;
  • List — список;
  • Map — словарь, где каждый элемент имеет уникальный ключ;
  • SortedMap — то же, что и Map, однако элементы упорядочены;
  • Queue — интерфейс для работы с очередью.

Разумеется, интерфейсы были бы «пустыми», если бы не существовало встроенных классов, реализующих необходимые функции:

  • ArrayList — список List как массив элементов;
  • LinkedList — список List, выполняющий функции связанного списка;
  • HashSet — множество Set как хеш-таблица;
  • TreeSet — множество SortedSet, используемое как дерево;
  • HashMap — индексированный словарь хешей;
  • TreeMap — коллекция SortedMap древовидной структуры.

Материал по этому разделу можно найти в книгах:

  • «Java. Библиотека профессионала. Том 1. Основы» — глава 9;
  • «Java 8. Полное руководство» — глава 18.

Исключения (Exception)

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

При возникновении ошибки в процессе выполнения программы JVM создаёт объект нужного типа из иерархии исключений Java — множества возможных исключительных ситуаций, унаследованных от общего «предка» — класса Throwable. Исключение можно также создать вручную с помощью оператора throw. При этом выполнение основного кода программы прерывается, а обработчик исключений JVM пытается найти способ обработать исключение.

Блоки кода, для которых предусмотрена обработка исключений в Java, создаются с помощью конструкций try{}catch, try{}catch{}finally, try{}finally{}.

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

После выполнения блока catch управление передаётся в необязательный блок finally. Если подходящий блок catch не найден, JVM останавливает выполнение программы и выводит стек вызовов методов (stack trace), выполнив перед этим код блока finally при его наличии.

Материал по этому разделу можно найти в книгах:

  • «Java. Библиотека профессионала. Том 1. Основы» — глава 7;
  • «Java 8. Полное руководство» — глава 10.

Потоки ввода-вывода

Основная функциональность работы с потоками ввода-вывода сосредоточена в классах из пакета java.io.

Ключевым здесь является понятие потока. В программировании этот термин описывает различные концепции. Применительно к работе с файлами и вводом-выводом речь идёт о потоке (stream), который используется для чтения или записи информации (файлов, сетевых сокетов, консоли и так далее).

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

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

Материал по этому разделу можно найти в книгах:

  • «Java. Библиотека профессионала. Том 1. Основы» — глава 2;
  • «Java 8. Полное руководство» — глава 13, 20, 21.

Многопоточное программирование

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

Создать новый поток можно двумя способами:

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

Материал по этому разделу можно найти в книгах:

  • «Java. Библиотека профессионала. Том 1. Основы» — глава 14;
  • «Java 8. Полное руководство» — глава 11.

Если вас заинтересовал язык программирования Java, предлагаю ознакомиться с моими статьями:

 

Осень — отличное время, чтобы построить далеко идущие планы и начать идти к новым целям! Если вы хотите освоить профессию мечты, то с 1 по 11 октября 2020 г. мы дарим вам скидку 40% почти на все программы обучения GeekBrains. Успехов! :)

 

программированиеjava
Нашли ошибку в тексте? Напишите нам.
Спасибо,
что читаете наш блог!
Posts popup