Курсы: Технопарк

Преподаватель: Виталий Чибриков

Наконец-то я добрался до этого курса. Давно хотел хорошенько в них разобраться, т.к. собираюсь искать работу по 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 (при помощи его мы компилируем байт-код)

Общие моменты:

  1. Все файлы которые Вы пишите имеет расширение *.java
  2. В одном файле один класс, имена файла и класса совпадает
  3. Javac (компилятор) превращает *.java в *.class
  4. Хорошая практика запаковать эти файлы в 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):

  1. Java SE (Standard Edition) Эту редакцию мы изучаем на курсе
    • Стандартная редакция
    • JVM + библиотека классов
  2. Java EE (Enterprise Edition) Отличие от SE, то что в JVM живет еще некий набор сервисов (в своих потоках), с которыми можно общаться через систему обмена сообщений.
    • Java SE
    • Спецификация
    • API + runtime environment services
  3. 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

  1. Мы создаем объект Jetty
  2. Цепляем на порт (8080)
  3. Когда приходит запрос от пользователя, то его принимает Connector
  4. Server выбирает из ThreadPool кому отдать на обработку запрос
  5. Поток выполняет наш код Handle

Сервлеты (01:42:45)

Класс расширяющий возможности сервера

Объект, который обрабатывает http request и взвращает response (html page).

ServletContainer – часть web-сервера, содержащая сервлеты связывает URL с сервлетом

Шаблонизатор (01:49:35)

Облегчает формирование response (подставляет значения переменных в определенные места, заданными в шаблоне)

 

P.S. github