Мы используем cookie для стабильной работы сервиса. Подробнее

Эффективность Java

4.7
ФорматОнлайн
Длительность30 академ. часов
Объём10 занятий
УровеньСредний
По окончанииУдостоверение о прохождении
О курсе

Подробнее

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

Что нужно для старта

  • Базовые знания Java
  • Опыт работы с IDE (IntelliJ IDEA, Eclipse, NetBeans, VSCode)
Результат

Что вы получите

  • Создавать и уничтожать объекты эффективно.
  • Переопределять методы equals, hashCode, toString.
  • Использовать обобщенные типы и аннотации.
  • Применять паттерны проектирования.
  • Оптимизировать производительность кода.
Аудитория

Для кого этот курс

  • Разработчик
Содержание

Программа курса

10 занятий
ТемаЧто внутри
01Создание и уничтожение объектов

• Выбор статических фабричных методов вместо конструкторов.
• Шаблон Builder в случае большого количества параметров конструктора.
• Применение семантики шаблона Singleton с приватным конструктором или enum.
• Применение приватного конструктора.
• Как избежать создания ненужных объектов.
• Удаление устаревших ссылок на объекты.
• Отказ от использования финализаторов.

02Методы, применяемые ко всем объектам

• Выполнение общего контракта при переопределении метода equals.
• Обязательное переопределение hashCode при переопределении метода equals.
• Обязательное переопределение toString.
• Осмысленное переопределение клонов.
• Выбор реализации Comparable.

03Классы и интерфейсы

• Минимизация доступности классов и компонентов.
• Использование методов доступа вместо public-полей.
• Минимизация изменчивости.
• Предпочтение композиции наследованию.
• Проектирование с учётом дальнейшего наследования.
• Предпочтение интерфейсов абстрактным классам.
• Использование только интерфейсов для определения типов.
• Используйте иерархии классов вместо тег-классов.
• Использование объектов-функций для представления стратегий.
• Отдавайте предпочтение статическим внутренним классам над не статическими.

04Обобщенные типы

• В новом коде всегда используйте generic-типы.
• Исключение непроверенных предупреждений.
• Предпочтение списков массивам.
• Предпочтение generic-типов
• Предпочтение generic-методов
• Использование ограниченных обобщений для повышения гибкости API.
• Выбор однородных безопасных типов контейнеров (typesafe).

05Enums и аннотации

• Использование enums вместо констант int.
• Использование полей экземпляра вместо ordinals.
• Использование EnumSet вместо битовых полей.
• Использование EnumMap вместо порядкового индексирования.
• Эмуляция расширяемых enums с интерфейсами.
• Предпочтение аннотаций паттернам именования.
• Всегда используйте аннотацию Override.
• Использование интерфейсов-маркеров для определения типов.

06Методы

• Проверка параметров на валидность.
• Использование защитного копирования при необходимости.
• Тщательное проектирование сигнатур методов.
• Осмысленное использование перегрузки.
• Осмысленное использование varargs.
• Возврат пустых массивов или коллекций, вместо null.
• Написание документации для всех public элементов API.

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

• Минимизация области видимости локальных переменных.
• Предпочтение циклов for-each традиционным циклам for.
• Знание и использование библиотек.
• Отказ от использования float и double, если требуются точные ответы.
• Предпочтение примитивных типов над классами-обёртками.
• Избегайте строк, где более подходящими являются другие типы.
• Учитывайте производительность во время выполнения конкатенации строк.
• Ссылки на объекты по их интерфейсам.
• Предпочтение интерфейсов к reflection.
• Осмысленное использование нативных методов.
• Осмысленная оптимизация.
• Соблюдение общепринятых норм именования.

08Исключения

• Использование исключений только для исключительных условий.
• Использование checked exceptions для проверки условий и unchecked exceptions для ошибок программирования.
• Отказ от ненужного использования checked exceptions.
• Предпочтительное использование стандартных исключений.
• Выброс исключений, соответствующих абстракции.
• Документирование всех исключений, выданных каждым методом.
• Включение информации о failure-capture в подробные сообщения.
• Стремление к атомарности сбоев.
• Не допускайте игнорирования исключений.

09Параллелизм

• Синхронизация доступа к общим изменяемым данным.
• Исключение чрезмерной синхронизации.
• Предпочтение использованию Executor-ов.
• Предпочтение утилит параллелизма методам wait и notify.
• Документирование безопасности потоков.
• Осмысленное использование отложенной инициализации.
• Независимость от планировщика потоков.
• Исключение групп потоков.

10Сериализация

• Осмысленная реализация Serializable.
• Использование настраиваемой сериализированной формы.
• Безопасное написание методов readObject.
• Для контроля экземпляров лучше выбрать типы enum вместо readResolve.
• Выбор прокси сериализации вместо сериализированных экземпляров.

01Создание и уничтожение объектов

• Выбор статических фабричных методов вместо конструкторов.
• Шаблон Builder в случае большого количества параметров конструктора.
• Применение семантики шаблона Singleton с приватным конструктором или enum.
• Применение приватного конструктора.
• Как избежать создания ненужных объектов.
• Удаление устаревших ссылок на объекты.
• Отказ от использования финализаторов.

02Методы, применяемые ко всем объектам

• Выполнение общего контракта при переопределении метода equals.
• Обязательное переопределение hashCode при переопределении метода equals.
• Обязательное переопределение toString.
• Осмысленное переопределение клонов.
• Выбор реализации Comparable.

03Классы и интерфейсы

• Минимизация доступности классов и компонентов.
• Использование методов доступа вместо public-полей.
• Минимизация изменчивости.
• Предпочтение композиции наследованию.
• Проектирование с учётом дальнейшего наследования.
• Предпочтение интерфейсов абстрактным классам.
• Использование только интерфейсов для определения типов.
• Используйте иерархии классов вместо тег-классов.
• Использование объектов-функций для представления стратегий.
• Отдавайте предпочтение статическим внутренним классам над не статическими.

04Обобщенные типы

• В новом коде всегда используйте generic-типы.
• Исключение непроверенных предупреждений.
• Предпочтение списков массивам.
• Предпочтение generic-типов
• Предпочтение generic-методов
• Использование ограниченных обобщений для повышения гибкости API.
• Выбор однородных безопасных типов контейнеров (typesafe).

05Enums и аннотации

• Использование enums вместо констант int.
• Использование полей экземпляра вместо ordinals.
• Использование EnumSet вместо битовых полей.
• Использование EnumMap вместо порядкового индексирования.
• Эмуляция расширяемых enums с интерфейсами.
• Предпочтение аннотаций паттернам именования.
• Всегда используйте аннотацию Override.
• Использование интерфейсов-маркеров для определения типов.

06Методы

• Проверка параметров на валидность.
• Использование защитного копирования при необходимости.
• Тщательное проектирование сигнатур методов.
• Осмысленное использование перегрузки.
• Осмысленное использование varargs.
• Возврат пустых массивов или коллекций, вместо null.
• Написание документации для всех public элементов API.

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

• Минимизация области видимости локальных переменных.
• Предпочтение циклов for-each традиционным циклам for.
• Знание и использование библиотек.
• Отказ от использования float и double, если требуются точные ответы.
• Предпочтение примитивных типов над классами-обёртками.
• Избегайте строк, где более подходящими являются другие типы.
• Учитывайте производительность во время выполнения конкатенации строк.
• Ссылки на объекты по их интерфейсам.
• Предпочтение интерфейсов к reflection.
• Осмысленное использование нативных методов.
• Осмысленная оптимизация.
• Соблюдение общепринятых норм именования.

08Исключения

• Использование исключений только для исключительных условий.
• Использование checked exceptions для проверки условий и unchecked exceptions для ошибок программирования.
• Отказ от ненужного использования checked exceptions.
• Предпочтительное использование стандартных исключений.
• Выброс исключений, соответствующих абстракции.
• Документирование всех исключений, выданных каждым методом.
• Включение информации о failure-capture в подробные сообщения.
• Стремление к атомарности сбоев.
• Не допускайте игнорирования исключений.

09Параллелизм

• Синхронизация доступа к общим изменяемым данным.
• Исключение чрезмерной синхронизации.
• Предпочтение использованию Executor-ов.
• Предпочтение утилит параллелизма методам wait и notify.
• Документирование безопасности потоков.
• Осмысленное использование отложенной инициализации.
• Независимость от планировщика потоков.
• Исключение групп потоков.

10Сериализация

• Осмысленная реализация Serializable.
• Использование настраиваемой сериализированной формы.
• Безопасное написание методов readObject.
• Для контроля экземпляров лучше выбрать типы enum вместо readResolve.
• Выбор прокси сериализации вместо сериализированных экземпляров.

Документ после выпуска

Удостоверение о прохождении

Организатор

Автор курса

IBS Training CenterIBS Training Center
Оценка и обучение ИТ-специалистов по ключевым направлениям разработки программного обеспечения. Курсы от экспертов-практиков по языкам программирования, системному и бизнес-анализу, архитектуре ПО, ручному и автоматизированному тестированию ПО, Big Data и машинному обучению, управлению проектами и Agile. Действует скидка 10% на обучение физических лиц.
Подробнее об авторе
Мнения учеников

Отзывы о курсе

Оставьте отзыв

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

Напишите ваш коментарий, не менее 30 символов

Нажимая кнопку, вы даете согласие на обработку персональных данных

Оставьте заявку

Консультант ответит на вопросы о курсе «Эффективность Java» и поможет разобраться в деталях обучения.

Комментарий ...

Нажимая кнопку, вы даете согласие на обработку персональных данных

Направления:Java

Информация обновлена 7 сентября 2026 г.

Продолжить выбор

Похожие курсы

Взаимодействие с СУБД из Java-приложений посредством технологии JDBC v3
−10%16 академ. часов
Взаимодействие с СУБД из Java-приложений посредством технологии JDBC v3

Изучите JDBC API для создания мощных Java-приложений, взаимодействующих с базами данных. Слушатели научатся применять JDBC API для доступа к реляционным базам данных, выполнения S…

Онлайн5 занятийСредний
Практические занятия
27 900 ₽−10%
25 110 ₽
Java Persistence с использованием Hibernate
−10%16 ноября
Java Persistence с использованием Hibernate

Освойте JPA и Hibernate для эффективной работы с данными в Java‑приложениях. В курсе рассматриваются использование JPA и Hibernate для хранения и управления данными в реляционных…

Онлайн3 занятийСредний
Практические занятия
40 400 ₽−10%
36 360 ₽
Введение в Apache Maven с усилением ИИ
−10%6 академ. часов
Введение в Apache Maven с усилением ИИ

Мастерство сборки Java-проектов с Apache Maven. Освойте современные методы сборки и управления зависимостями Java-проектов с помощью Apache Maven. Научитесь эффективно использоват…

Онлайн12 занятийНачальный
Практические занятия
10 900 ₽−10%
9 810 ₽
Основы Java
1 час
Основы Java

Здесь вы познакомитесь с основами синтаксиса, типами данных, операторами и конструкциями языка.

Онлайн2 занятийНачальный
Домашние задания
495 ₽
Работа с SOAP веб-сервисами на Java
−10%24 академ. часов
Работа с SOAP веб-сервисами на Java

В рамках курса слушатели получат практические навыки разработки XML based web services на базе платформы Java SE 7, узнают об основных концепциях технологии XML based web services…

Онлайн6 занятийСредний
Практические занятия
34 200 ₽−10%
30 780 ₽
(Архив) ДО Профессия Java-разработчик  2024
−50%8 месяцев
(Архив) ДО Профессия Java-разработчик 2024

Онлайн курс «Java-разработчик» от GeekBrains: получи новую профессию дистанционно! ✅ Курс ориентирован на уровень: Junior. ⌚ Длительность обучения: 8 месяцев. ✅ Помощь в трудоустр…

Онлайн
Помощь с трудоустройством
236 509 ₽−50%
118 255 ₽
Начать без затрат

Бесплатные курсы

CloudCoder Exercises
Бесплатно
CloudCoder Exercises

Курс больше не поддерживается The course consists of a few hundred of programming assignments for Python, Java and C++. Problem set based on CloudCoder exercise repository (http…

Онлайн3 занятий
Бесплатно
Java. Базовый курс
Бесплатно2-4 часа в неделю
Java. Базовый курс

Данный курс предназначен для тех, кто только начинает изучать Java. Мы начнем с самых азов: компиляция и запуск Java-программ, синтаксис языка, система типов, основы объектно-орие…

Онлайн6 занятий
Бесплатно
Adaptive Java
Бесплатно
Adaptive Java

Please note: adaptive courses are no longer supported on Stepik The course consists of few hundreds of programming assignments for Java, ranging from basics up to complex topics.…

Онлайн3 занятий
Бесплатно