Конспект лекций по java

Обновлено: 05.07.2024

Содержание лекции: 1:20 — принципиальный момент в Java. 2:34 — пакеты. 4:43 — поля, конструкторы и методы. 8:43 — this. 11:41 — жизненный цикл объекта. 13:02 — области видимости полей и методов. 15:44 — распределение классов по файлам. 17:25 — наследование. 22:06 — наследование и массивы. 25:03 — переопределение методов (overriding). 30:16 — final. 31:43 — перегрузка методов (overloading). 34:40 — статические поля и методы. 41:11 — конструкторы. 45:36 — явный вызов конструктора из конструктора. 46:12 — секции инициализации. 48:17 — деструкторов не существует. 51:11 — абстрактные классы и методы. 53:34 — интерфейсы. 1:00:00 — instanceof. 1:02:18 — приведение типов. 1:06:07 — вложенные классы. 1:08:55 — локальные вложенные классы. 1:11:40 — вложенные статические классы. 1:12:43 — анонимные классы. 1:16:01 — класс Object. 1:16:25 — equals() и hashCode(). 1:18:46 — toString().

Лекция 4. Исключения, JUnit, Lombok, строки

Содержание лекции: 0:53 — enumeration classes. 4:09 — общие принципы проектирования классов. 6:15 — исключения. 7:46 — иерархия. 9:27 — общие принципы обработки. 10:08 — декларирование и выбрасывание. 12:43 — от кого наследовать своё исключение? 14:36 — ловка. 17:29 — перевыбрасывание. 20:08 — обёртывание. 22:32 — переопределение методов с исключениями. 25:02 — исключения для переиспользования. 26:43 — антипаттерн. 31:44 — ещё общие принципы. 32:15 — finally. 34:14 — try-with-resources. 37:58 — антипаттерн. 40:28 — исследование stack trace в IDE. 44:23 — JUnit. 46:20 — как выглядит тестирование. 52:23 — Lombok. 53:54 — лаконичный конструктор от всех полей. 55:05 — лаконичные equals() и hashCode(). 59:49 — строки. 1:01:08 — что внутри строки. 1:03:04 — пул строковых констант. 1:04:08 — сравнение строк. 1:07:39 — оператор + 1:10:04 — быстрая конкатенация строк. 1:13:19 — хорошие методы. 1:14:24 — плохие методы.

Лекция 5. Regexp, Wrapper classes, IO classes, Time

Содержание лекции: 01:07 - Регулярные выражения. 12:52 - Wrapper Classes. 16:51 - Autoboxing / Unboxing. 25:30 - I/O classes. 37:35 - Работа с файловой системой. 44:02 - Часы и API для работы со временем.

Лекция 6. Generics

Содержание лекции: 04:31 - Generic methods. 10:46 - Intersection types. 17:28 - Полиморфизм и bridge methods. 22:58 - Что нельзя делать с дженериками?. 44:41 - Разные параметризации одного интерфейса. 47:56 - Wildcard types: мотивировка и решение. 1:04:31 - Recursive generics. 1:07:24 - Материалы для дальнейшего изучения. 1:08:11 - Nada Amin, Rose Tate example. 1:10:59 - Radu Grigore example.

Лекция 7. Collections, lambdas, method references

Содержание лекции: 00:16 - Коллекции. 02:24 - Интерфейсы коллекций. 03:44 - Интерфейс Iterable. 05:28 - ListIterator. 06:47 - Comparable и Comparator. 18:31 - List'ы. 30:55 - HashMap. 41:46 - Алгоритмы из Collections. 44:13 - Callbacks: До появления лямбд. 46:29 - Lambda expressions. 54:45 - Closures. 1:01:46 - Method references.

Лекция 8. Core Java

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

Лекция 9. Streams

Содержание лекции: Streams.

Лекция 10. Concurrency

Содержание лекции: Конкурентное выполнение программы.

Лекция 11. Аннотации. Concurrency (окончание). Рефлексия (начало)

Содержание лекции: Окончание Concurrency: 0:21 — потокобезопасные коллекции, 7:10 — Executor Framework, 35:17 — благодарности :3. Аннотации: 36:56 — введение, 40:31 — примеры применения, 42:16 — собственно, что это, 58:45 — встроенные в язык аннотации. Рефлексия.

Лекция 12. Рефлексия (окончание). Singleton pattern. Dependency Injection

Содержание лекции: Рефлексия (окончание). Singleton pattern. Dependency Injection.

Лекция 13. Dependency Injection (часть 2). Spring Framework

Содержание лекции: Dependency Injection (часть 2). Spring Framework.

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

Java изначально появилась на свет как язык для создания небольших приложений для Интернета (апплетов), но со временем развилась как универсальная платформа для создания программного обеспечения, которое работает буквально везде – от мобильных устройств и смарт-карт до мощных серверов. Данный курс начинается с изложения истории появления и развития Java. Такие знания позволят лучше понять особенности платформы и спектр существующих продуктов и технологий. Также создание Java является интересным примером истории одного из самых популярных и успешных проектов в компьютерном мире. Затем излагаются основные концепции ООП, необходимые для освоения объектно-ориентированного языка программирования Java. Ключевые понятия и конструкции языка описываются доступным языком, но, тем не менее, на достаточно глубоком уровне. Детально рассмотрены особенности лексики, системы типов данных, объектной модели. Уделяется особое внимание модификаторам доступа, соглашениям по именованию, преобразованию типов, работе с массивами, обработке ошибок (исключительных ситуаций). Курс завершается рассмотрением базовых библиотек Java, предоставляющих всю необходимую функциональность для создания самых разных приложений – коллекции объектов, работа с файлами, сетью, создание GUI приложений, построение многопоточной архитектуры и многое другое. Описание сетевой библиотеки предваряется изложением основ сетевых протоколов и технологий.

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


Поэтому я подготовил данный сборник видео докладов на русском языке с различных конференций (Joker, JPoint, JavaDays, JEEConf, конечно, с DEV labs, которые организовывает Luxoft), и, естественно, видео из канала Luxoft Training Center. Всё видео разделено на различные категории и при необходимости добавлено описание.

Update: Внимание, актуальная версия со всеми ссылками на видео находиться теперь в моем github'e проекте useful-java-links, по этой ссылке.


Чего НЕ БУДЕТ в данном сборнике:
1. Не будет видео про scala, так как scala это целый отдельный мир, для программистов на scala могу порекомендовать вот этот сборник,
2. Не будет видео на английском языке, я старался выбирать русскоязычное видео, так как далеко не все программисты все-таки владеют английским в совершенстве, ну и англоязычного видео слишком много, поэтому я решил остановится пока только на русскоязычных видео (и небольшом количестве видео на украинском языке), К тому же, уверен, для англоязычного видео по Java в инете и так найдется немало подобных сборников.

Не стесняйтесь писать в комментариях (или мне в личку) о других интересных видео по Java, которое нет в этом списке.

В рамках технологии Java можно использовать следующие языки:

  • Java
  • Clojure — функциональный язык, диалект Lisp;
  • Groovy — сценарный язык;
  • Kotlin — объектно-ориентированный язык для индустриальной разработки
  • Scala — объектно-ориентированный и функциональный язык;
  • Ceylon — объектно-ориентированный язык со строгой статической типизацией;
  • JRuby — реализация Ruby;
  • Jython — реализация Python;
  • Nashorn — реализация JavaScript.

История¶

  • Язык Java разрабатывался в 1991-1995 в компании Sun
  • Изначально язык разрабатывался как замена С++

Главная причина недовольства С++

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

Сборка и выполнение программы на С++¶

_static/01/cpp.jpg

Сборка и выполнение программ на JAVA¶

_static/01/java.jpg

Сборка и выполнение JAVA¶

_static/01/bytecode.jpg

История выпусков¶

  • Java 1 - 1996. Начальный релиз.
  • Java 2 - 1998. Swing, коллекции, Java2D.
  • Java 3 - 2000. JavaSound, JNDI
  • Java 4 - 2002. Регулярные выражения, xml, работа с изображениями.
  • Java 5 - 2004. Enum, аннотации, generics.
  • Java 6 - 2006. Улучшение производительности
  • Java 7 - 2011. Новая JVM, JavaFX.
  • Java 8 - 2014. Lambda-выражения и др. поддержка ФП.

История_выпусков¶

  • Java 9 - сен 2017. Модульная система, jshell, List.of,Map.of, Set.of.
  • Java 10 - мар 2018. Вывод типов локальных переменных (var a).
  • Java 11 - сен 2018. Вывод типов в lambda, пропуск компиляции однофайлового приложения.
  • Java 12 - мар 2019. Новая форма switch.
  • Java 13 - сен 2019. Текстовые блоки.
  • Java 14 - coming soon.

Особенности лицензирования¶

Компания Oracle собирает и публикует две версии JDK:

  1. Oracle JDK (aka Java SE, расположена на )
  2. Open JDK (расположена на ).
  • OpenJDK — это эталонная реализация JDK, Oracle JDK базируется на OpenJDK.
  • Раньше были различия между OpenJDK и Oracle JDK, теперь их нет.
  • OpenJDK полностью бесплатная и распространяется под GPL.
  • Oracle JDK раньше была бесплатной, теперь платная.
  • Oracle JDK отличается от OpenJDK только наличием платной поддержки.

Программное обеспечение¶

Среды разработки (IDE):

  1. Netbeans
  2. Eclipse
  3. Intellij Idea
  • JDK
  • Intellij Idea
  • Scene Builder
  • Maven (Gradle)

Особенности¶

Ключевые особенности языка Java¶

  • архитектурная независимость и переносимость кода
  • полная объектная ориентированность
  • устойчивость (надежность) кода
  • безопасность Java-программ
  • механизм поддержки многопоточности
  • возможность создания приложений и апплетов

Важность классов¶

Основная структурная единица программы – класс,

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

одного или нескольких классов.

Надежность кода¶

Особенности¶

  • Поддержка многопоточности. Имеется встроенная поддержка параллельно
  • выполняющихся потоков (класс Thread)
  • Безопасность. Код выполняется внутри изолированного виртуального компьютера.
  • Встроенные коллекции. Удобны для работы со сложно организованными данными.
  • Удобство разработки GUI. Библиотеки оконного интерфейса входят в состав стандартного набора.
  • Web. Программы Java можно встраивать в веб-страницы.

Окружения¶

есть два основных окружения:

  • JRE – Java Runtime Environment. Для выполнения готовых Java приложений
  • JDK (JSDK, SDK) - Java (Software) Development Kit. Для разработки Java приложений. Уже включает в себя JRE

Классы и программа¶

Текст всей программы состоит из описания классов.

В отличие от С++ глобального кода не существует.

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

  1. статическими - элемент принадлежит классу;
  2. обычными - элемент принадлежит объекту;

Для работы со статическими членами не требуется выделять память под объект

Пример программы¶

Программа печати приветствия (“Hello World!”)

Построение и запуск программы¶

  • Текст программы помещается в файл HelloWorld.java.
  • Компиляция из командной строки осуществляется командой: javac HelloWorld.java
  • В результате компиляции появляется файл с байт-кодом HelloWorld.class.
  • Запуск программы на выполнение: java HelloWorld (без расширения!)

Ключевые слова¶

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

идентификаторов и объектов:

Зарезервированные литералы: true,false,null

const,goto зарезервированы, но не используются.

Данные¶

Рассмотрим встроенные типы языка Java, которые используются при объявлении переменных:

_static/01/types1.jpg

В языке Java нет беззнаковых типов данных

Встроенные типы¶

Целочисленные типы¶

Имя типа Ширина Диапазон
byte 8 -128 … 127
short 16 -32 768 … 32 767
int 32 -2 147 483 648 … 2 147 483 647
long 64 -9 223 372 036 854 775 808 … 9 223 372 036 854 775 807

Вещественные типы¶

Имя типа Ширина Диапазон
float 32 3.4е-038 … 3.4е+038
double 64 1.7е-308 … 1.7е+308

Символьный тип¶

Логический тип¶

boolean

Принимает два значения: true и false.

_static/01/logical.jpg

Строки¶

Строковый тип String является ссылочным типом, но работает как простой:

Строки String являются константами!

Операции равенства строк:

Константы¶

Типы констант¶

  • целочисленные: 1 2 3 3453 -123 0x55 123L
  • с плавающей точкой: 3.14159 314159E-5 .45f
  • булевские: true false
  • символьные: ‘a’
  • строковые: “hello”

Целочисленные константы¶

Целочисленные константы можно задавать в разных системах счисления

Ключевое слово final¶

Ключевое слово final применяется для фиксации значения переменной

Работа с двоичным представлением¶

Преобразования типов¶

Преобразование типов¶

Массивы¶

Многомерные и ступенчатые массивы:

Работа с массивами:

У каждого массива есть поле для хранения количества элементов:

Ссылки и копии для массивов¶

Пример с ссылкой на массив:

А вот пример с копированием:

Сортировка¶

Пример с сортировкой:

Операторы и операции¶

Операторы ветвления и цикла совпадают с аналогичными в С/С++:

Можно использовать break,continue,return

Оператора goto нет!

Проверяемые выражения в заголовках операторов должны иметь логический тип (а не целый) Операция ++ может применяться к вещественным типам

Функции¶

Функции в java могут быть только методами классов.

Могут быть статическими или нестатическими.

Читайте также: