2. Java сервер
2
Углубленное программирование на Java
Особенности курса
Один проект на два предмета
100 баллов = отлично = демонстрация проекта
модуль = лекция + 2 * лекция и семинар + РК
Ревью кода на github
Разработка игровой механики начиная с 2 модуля
3. Освой Java за 24 часа
Дополнительные материалы и ресурсы
Skype tully_at_work «Кружок любителей Java»
3
SCORM http://www.intuit.ru/studies/courses/3711/953/info
Видео https://tech-mail.ru/learn
Github https://github.com/vitaly-chibrikov
4. Освой Java за семестр
4
№ Тема занятия тип занятия
max
баллов
ДЗ дата
1
Знакомство, инструменты,
настройка окружения
Лекция
Настроить переменные окружения и
среду разработки. Запустить свой Jetty
сервер.
06.сен
2
Сервлеты, вебсокеты,
фронтенд на сервере
лекция + семинар
Обрабатывать ассинхронные запросы от
браузера я помощью вебсокетов.
Обрабатывать запросы на авторизацию.
13.сен
3
Углубленные основы языка,
деплой проекта
лекция + семинар Запустить проект на внешнем сервере. 20.сен
4 КР-1 20 баллов 20 27.сен
5
Организация классов в
проекте. Игровая механика.
Тестирование
Лекция
Написать тесты на авторизацию
пользователя. Написать примитивную
механику.
04.окт
6
Утилиты. Работа со
времением, случаными
числами, фаловой системой.
Лекция Разработка механики. 11.окт
7 Ресурсная система лекция + семинар
Перевести все константы механики в
ресурсы.
18.окт
8 КР-2 25 баллов 45 25.окт
5. Освой Java за семестр
5
9 Работа с базами Лекция
Перевести модуль авторизации на работу
с базами данных.
30.окт
10 ORM. Аннотации лекция + семинар 08.ноя
11
Объединение первых трех
модулей. Запуск проекта на
внешнем сервере
семинар
Подготовить проект к предзащите.
Проект должен содержать основы
игровой механики, пользователи могут
пройти аторизацию и сыграть партию.
15.ноя
12 КР-3 25 баллов 70 22.ноя
13 Многопоточность Лекция 29.ноя
14 Система обмена сообщениями лекция + семинар
Запустить сервисы игры в разных
потоках.
06.дек
15 Альфа версия проекта семинар 13.дек
16 КР-4 20 баллов 95 20.дек
17 Защита проекта 5 баллов 100 27.дек
7. История Java
Java ― ОО язык программирования разработанный в 1995г.
Изначально ― платформа для программирования бытовых приборов
Компилляция в байт код и исполнение байт кода в виртуальной машине
Встроенный сборщик мусора
Платформа .Net от Microsoft осована на идеях Java
7
8. История успеха
1995 - 2000 ― скрипты для браузера
2000 - 2005 ― приложения для телефонов
8
2005 - 2014 ― сервера
1995 - 2014 ― приложения для бытовых приборов
9. Cross-platform
9
«Классические» варианты решения
Компиллятор ― поставляем исходники, перед стартом сибираем
Интерпретатор ― поставляем скрипты, не эффективное выполнение
Гибридное решение
Собираем в byte-code, интерпретируем «на месте»
10. Задумка Java платформы
Приложение
Архитектурно независимый байт код
JVM для Windows JVM для Linux
10
11. Задачи и результат
Ключевые идеи
Написанно один раз – работает везде
Встроенный сборщик мусора
Безопасность исполнения
Результат
+ «Переносимые» программисты
- Программы все равно зависят от архитектуры
+ Сборщик мусора устраняет утечки памяти
- Сборщик мусора «всегда» работает в ненужное время
11
12. Почему Java?
ОО язык высокого уровня с простым и понятным синтаксисом
Большое количество специалистов со знанием Java
Легкость перехода с С++
Большое количество библиотек
Постоянные улучшения и доработки
Прекрасная документация
12
19. Обзор платформы Java
Запуск приложений
Java Runtime Environment (JRE)
Java Virtual Machine(JVM)
Class Libraries
Создание приложений
Java Development Kit (JDK)
JRE
Java compiler
IDE ― в состав Java не входит
19
20. Обзор платформы Java
JVM
Interpreter
Just-In-Time (JIT) compiler
Byte code verifier
Garbage collector (GC)
Javac
Превращает *.java в *.class
*.class можно собрать в *.jar (zip архив)
20
21. Сборщик мусора
Garbage collector (GC)
Поиск ненужных объектов Stack Heap
Освобождение памяти
21
22. Java editions
Java SE (Standard Edition)
Стандартная редакция
JVM + библиотека классов
Java EE (Enterprise Edition)
Java SE
Спецификация
API + runtime environment services
Java ME (Micro Edition)
Мобильные телефоны, бытовые приборы
22
23. Наименования
Классы в Java собирают в пакеты (packages)
Пакеты обычно собирают в *.jar файлы (zip архивы)
Класс может быть однозначно идетифицирован по полному имени
packageName.directoryName.ClassName
Имена пакетов и директорий принято начинать с маленькой буквы
Имена классов: MySuperClassName
Имена функций: getMyVariable()
Имена переменных: myVariable
Пакеты не могут иметь циклических зависимостей
23
26. Инструменты
26
JDK 1.8 Java Development Kit 8
IntelliJ IDEA среда разработки приложений на Java
Maven система сборки проекта
Git система контроля версий
*Jetty библиотека для web сервера
*freemarker шаблонизатор
27. JDK 1.8
27
http://www.oracle.com/technetwork/java/javase/downloads/
Linux export JAVA_HOME = your java directory
в файле /etc/profile
Windows Control Panel -> System -> Advanced
добавьте в переменные среды
JAVA_HOME = your java directory
28. IntelliJ IDEA
28
http://www.jetbrains.com/idea/download/
Community Edition FREE
Linux: запуск через bin/idea.sh
Windows: обычная установка и запуск
29. Maven
29
Распакуйте архив в инсталляционную директорию.
Windows: C:Program Filesmaven
Linux: /opt/maven
Установите переменную окружения
M2_HOME = инсталляционная директория
Установите переменную окружения PATH
Windows: в переменной PATH добавьте к списку директорий строку
%M2_HOME%bin.
Linux: можно добавить строку export PATH=$PATH:$M2_HOME/bin в
файл /etc/profile .
Запустите в командной строке mvn -version
30. Создание проекта
30
http://wiki.jetbrains.net/intellij/Creating_and_importing_Maven_projects
Project Object Model – pom.xml
<groupId> адрес проекта </groupId>
<artifactId> название приложения </artifactId>
<version> версия приложения</version>
<dependencies>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.1.0.M0</version>
</dependency>
</dependencies>
33. Jetty
33
java based http server
создание динамических страниц
пересылка статических файлов
(html страницы, картинки…)
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.1.0.M0</version>
</dependency>
34. Jetty
connector принимает http запросы (request)
handler(s) возвращают response
ThreadPool pool потоков для обработки запроса
34
35. Jetty
public class Main {
public static void main(String[] args) throws Exception {
Frontend frontend = new Frontend();
Server server = new Server(8080);
ServletContextHandler context =
new ServletContextHandler(ServletContextHandler.SESSIONS);
server.setHandler(context);
context.addServlet(new ServletHolder(frontend), "/authform");
server.start();
server.join();
}
}
35
37. Java Servlet
Servlet класс расширяющий возможности сервера
как applet, только на web сервере
java решение для создания динамических страниц
объект, который обрабатывает http запрос
(request) и возвращает ответ (response) –
html станицу
ServletContainer часть web сервера, содержащая сервлеты
связывает URL с сервлетом
37