Курсы: Технопарк
Преподаватель: Виталий Чибриков
Наконец-то я добрался до этого курса. Давно хотел хорошенько в них разобраться, т.к. собираюсь искать работу по Java. Я его уже пару раз просмотрел. Считаю его одним из лучших продолжения изучения Java, когда вы уже прочитали 1-2 книжки по ней.
Java (21:20)
Краткий экскурс в историю. Полезно для общего развития. Из полезного:
- Компилляция в байт код, а потом интерпретирование его в виртуальной машине (JVM)
- Встроенный сборщик мусора
P.S. Поначалу так и было. В JVM был встроен интерпритор, сейчас же там еще находится еще один компилятор (JIT – Just-In-Time Compiler). Это сделано для оптимизации исполнения.
Углубленное (38:00)
Знания, которые должны быть для прохождения этого курса
- Примитивные типы, переполнения примитивных типов
- Объекты, классы, наследование, полиморфизм, инкапсуляция
- Область видимости переменной, статические переменные
- Ветвления и циклы
- Преобразования прмитивных типов
- Интерфейс, реализация интерфейса
- Операторы
- Стек, куча
- private, protected, public
А вот что мы будем изучать:
- Платформа Java. Java editions. Java Virtual Machine
- Контейнеры и алгоритмы (Hash, Map, Set, List, Array), Generics
- Многопоточность. Thread Object. Concurrency
- Исключение, обработка исключений
- Message System. Address. Abonent
- Frontend. Game Mechanics
- Serialization. I/O. Stream
- Reflection. Annotation
- JDBC. DataSet. DAO. Hibernate.
- QA. Tests. Автоматизация тестирования
Программирование (41:15)
Схема, на которой показаны в какой последовательности будут изучаться части нашей игры и как они соотносятся друг с другом
Платформа Java (47:20)
Запуск приложений
JRE (Java Runtime Environment) – это окружение, которое должен скачать пользователь, чтобы запускать ваши приложения. В ее состав входит:
- JVM (Java Virtual Machine)
- Class Libraries
JVM загрузила байт-код (который вы собрали до этого) + подключила нужные классы из библиотеки = Работает
Создание приложений:
JDK (Java Development Kit) – то что нам нужно для разработки (добавляется компилятор):
- JRE
- Java compiler (при помощи его мы компилируем байт-код)
Общие моменты:
- Все файлы которые Вы пишите имеет расширение *.java
- В одном файле один класс, имена файла и класса совпадает
- Javac (компилятор) превращает *.java в *.class
- Хорошая практика запаковать эти файлы в zip-архив (jar)
JVM состоит:
- Interpreter
- JIT (Just-In-Time) compiler
- Byte code verifier
- GC (Garbage collector)
P.S. JVM не важно откуда взялся байт-код. Вывод: байт код можно скомпилировать из других языков.
Сборщик мусора (GC) (59:30)
Работает в отдельном потоке. Проверяет достижимость объектов из Stack.
- Поиск ненужных объектов
- Освобождение памяти
Java editions (редакции) (01:02:30):
- Java SE (Standard Edition) Эту редакцию мы изучаем на курсе
- Стандартная редакция
- JVM + библиотека классов
- Java EE (Enterprise Edition) Отличие от SE, то что в JVM живет еще некий набор сервисов (в своих потоках), с которыми можно общаться через систему обмена сообщений.
- Java SE
- Спецификация
- API + runtime environment services
- Java ME (Micro Edition) useless
- Мобильные телефоны, бытовые приборы
Стандарт (01:07:55)
- Классы в Java собирают в пакеты (packages)
- Пакеты обычно собирают в *.jar файлы (zip архивы)
- Класс может быть однозначно идентифицирован по полному имени packageName.directoryName.ClassName
- Имена пакетов и директорий принято начинать с маленькой буквы
- Имена классов MySuperClassName
- Имена функций getMyVariable()
- Имена переменных myVariable
- Пакеты не могут иметь циклических зависимостей
Настройка окружения (01:13:30)
- JDK 1.8 – Java Development Kit 8
- IntelliJ IDEA – среда разработки приложений на Java
- Maven – система сборки проекта
- Git – система контроля версий
- Jetty – библиотека для web-сервера
- freemarker – шаблонизатор
Небольшой рассказ про установку. Проще найти в интернете свежие мануалы
Jetty (01:31:40)
java based http server
- Мы создаем объект Jetty
- Цепляем на порт (8080)
- Когда приходит запрос от пользователя, то его принимает Connector
- Server выбирает из ThreadPool кому отдать на обработку запрос
- Поток выполняет наш код Handle
Сервлеты (01:42:45)
Класс расширяющий возможности сервера
Объект, который обрабатывает http request и взвращает response (html page).
ServletContainer – часть web-сервера, содержащая сервлеты связывает URL с сервлетом
Шаблонизатор (01:49:35)
Облегчает формирование response (подставляет значения переменных в определенные места, заданными в шаблоне)
P.S. github