java осень 2014 занятие 1
DESCRIPTION
Java осень 2014 занятие 1TRANSCRIPT
![Page 1: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/1.jpg)
Углубленное программирование на
Java Занятие 1.1 «Введение»
Виталий Чибриков
![Page 2: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/2.jpg)
Java сервер
2
Один проект на два предмета
100 баллов = отлично = демонстрация проекта
модуль = лекция + 2 * лекция и семинар + РК
Ревью кода на github
Разработка игровой механики начиная с 2 модуля
Углубленное программирование на Java
Особенности курса
![Page 3: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/3.jpg)
Skype tully_at_work «Кружок любителей Java»
Освой Java за 24 часа
3
SCORM http://www.intuit.ru/studies/courses/3711/953/info
Видео https://tech-mail.ru/learn
Дополнительные материалы и ресурсы
Github https://github.com/vitaly-chibrikov
![Page 4: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/4.jpg)
Освой 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.окт
![Page 5: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/5.jpg)
Освой 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.дек
![Page 6: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/6.jpg)
План лекции
6
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. Настройка окружения
6. Jetty
7. Сервлеты
8. Шаблонизатор
![Page 7: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/7.jpg)
История Java
Java ― ОО язык программирования разработанный в 1995г.
Изначально ― платформа для программирования бытовых приборов
Компилляция в байт код и исполнение байт кода в виртуальной машине
Встроенный сборщик мусора
Платформа .Net от Microsoft осована на идеях Java
7
![Page 8: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/8.jpg)
История успеха
1995 - 2000 ― скрипты для браузера
2000 - 2005 ― приложения для телефонов
8
2005 - 2014 ― сервера
1995 - 2014 ― приложения для бытовых приборов
![Page 9: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/9.jpg)
Cross-platform
9
Компиллятор ― поставляем исходники, перед стартом сибираем
Интерпретатор ― поставляем скрипты, не эффективное выполнение
«Классические» варианты решения
Собираем в byte-code, интерпретируем «на месте»
Гибридное решение
![Page 10: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/10.jpg)
JVM для Windows JVM для Linux
Архитектурно независимый байт код
Приложение
Задумка Java платформы
10
![Page 11: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/11.jpg)
Написанно один раз – работает везде
Встроенный сборщик мусора
Безопасность исполнения
Ключевые идеи
Результат
Задачи и результат
+ «Переносимые» программисты
- Программы все равно зависят от архитектуры
+ Сборщик мусора устраняет утечки памяти
- Сборщик мусора «всегда» работает в ненужное время
11
![Page 12: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/12.jpg)
Постоянные улучшения и доработки
ОО язык высокого уровня с простым и понятным синтаксисом
Большое количество специалистов со знанием Java
Легкость перехода с С++
Большое количество библиотек
Прекрасная документация
Почему Java?
12
![Page 13: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/13.jpg)
План лекции
13
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. Настройка окружения
6. Jetty
7. Сервлеты
8. Шаблонизатор
![Page 14: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/14.jpg)
Углубленное значит «глубже чем»
«Углубленное»
14
Примитивные типы, переполнение примитивных типов
Объекты, классы, наследование, полиморфизм, инкапсуляция
Область видимости переменной, статические переменные
Ветвления и циклы
Преобразования примитивных типов
Интерфейс, реализация интерфейса
Операторы
Стек, куча
private, protected, public
![Page 15: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/15.jpg)
Платформа 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. Автоматизация тестрования.
Исключение, обработка исключений
«Углубленное»
15
![Page 16: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/16.jpg)
План лекции
16
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. Настройка окружения
6. Jetty
7. Сервлеты
8. Шаблонизатор
![Page 17: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/17.jpg)
Модули учебного сервера
utils
gameMechanics
base
messageSystem
frontend
main
resourceSystem
1.
1.
4.
2.
2. 2.
2.
dbService3.
17
![Page 18: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/18.jpg)
План лекции
18
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. Настройка окружения
6. Jetty
7. Сервлеты
8. Шаблонизатор
![Page 19: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/19.jpg)
Обзор платформы Java
Java Runtime Environment (JRE)
Java Virtual Machine(JVM)
Class Libraries
Запуск приложений
Java Development Kit (JDK)
JRE
Java compiler
IDE ― в состав Java не входит
Создание приложений
19
![Page 20: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/20.jpg)
Обзор платформы Java
Interpreter
Just-In-Time (JIT) compiler
Byte code verifier
Garbage collector (GC)
JVM
Превращает *.java в *.class
*.class можно собрать в *.jar (zip архив)
Javac
20
![Page 21: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/21.jpg)
Сборщик мусора
Stack HeapПоиск ненужных объектов
Освобождение памяти
Garbage collector (GC)
21
![Page 22: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/22.jpg)
Java editions
Стандартная редакция
JVM + библиотека классов
Java SE (Standard Edition)
Java SE
Спецификация
API + runtime environment services
Java EE (Enterprise Edition)
Мобильные телефоны, бытовые приборы
Java ME (Micro Edition)
22
![Page 23: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/23.jpg)
Класс может быть однозначно идетифицирован по полному имени packageName.directoryName.ClassName
Классы в Java собирают в пакеты (packages)
Пакеты обычно собирают в *.jar файлы (zip архивы)
Имена пакетов и директорий принято начинать с маленькой буквы
Имена классов: MySuperClassName
Имена функций: getMyVariable()
Имена переменных: myVariable
Пакеты не могут иметь циклических зависимостей
Наименования
23
![Page 24: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/24.jpg)
Анонимный тест
24
![Page 25: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/25.jpg)
План лекции
25
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. Настройка окружения
6. Jetty
7. Сервлеты
8. Шаблонизатор
![Page 26: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/26.jpg)
Инструменты
26
JDK 1.8 Java Development Kit 8
IntelliJ IDEA среда разработки приложений на Java
Maven система сборки проекта
Git система контроля версий
*Jetty библиотека для web сервера
*freemarker шаблонизатор
![Page 27: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/27.jpg)
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
![Page 28: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/28.jpg)
IntelliJ IDEA
28
http://www.jetbrains.com/idea/download/
Linux: запуск через bin/idea.sh
Windows: обычная установка и запуск
Community Edition FREE
![Page 29: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/29.jpg)
Maven
29
Распакуйте архив в инсталляционную директорию. Windows: C:\Program Files\maven\ Linux: /opt/maven
Установите переменную окружения M2_HOME = инсталляционная директория
Установите переменную окружения PATH Windows: в переменной PATH добавьте к списку директорий строку %M2_HOME%\bin. Linux: можно добавить строку export PATH=$PATH:$M2_HOME/bin в файл /etc/profile .
Запустите в командной строке mvn -version
![Page 30: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/30.jpg)
Создание проекта
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>
![Page 31: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/31.jpg)
Git
31
Git http://git-scm.com/downloads
github https://help.github.com/
![Page 32: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/32.jpg)
План лекции
32
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. Настройка окружения
6. Jetty
7. Сервлеты
8. Шаблонизатор
![Page 33: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/33.jpg)
Jetty
33
java based http server
создание динамических страниц
пересылка статических файлов (html страницы, картинки…)
<dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> <version>9.1.0.M0</version> </dependency>
![Page 34: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/34.jpg)
Jetty
connector принимает http запросы (request)
handler(s) возвращают response
ThreadPool pool потоков для обработки запроса
34
![Page 35: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/35.jpg)
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
![Page 36: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/36.jpg)
План лекции
36
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. Настройка окружения
6. Jetty
7. Сервлеты
8. Шаблонизатор
![Page 37: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/37.jpg)
Java Servlet
Servlet класс расширяющий возможности сервера
как applet, только на web сервере
java решение для создания динамических страниц
объект, который обрабатывает http запрос (request) и возвращает ответ (response) – html станицу
ServletContainer часть web сервера, содержащая сервлеты
связывает URL с сервлетом
37
![Page 38: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/38.jpg)
Java Servlet
<dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-webapp</artifactId> <version>9.1.0.M0</version> </dependency>
38
![Page 39: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/39.jpg)
Jetty
public class Frontend extends HttpServlet {
private String login = "";
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { … }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { … } }
39
![Page 40: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/40.jpg)
Java Servlet
public class Frontend extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) { … }
public void doPost(HttpServletRequest request, HttpServletResponse response) { … } }
40
![Page 41: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/41.jpg)
План лекции
41
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. Настройка окружения
6. Jetty
7. Сервлеты
8. Шаблонизатор
![Page 42: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/42.jpg)
<freemarker>
Шаблонизатор создает страницы для response
42
![Page 43: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/43.jpg)
<freemarker>
<html> <head> <title>Пример шаблона</title> </head> <body> <p>Имя пользователя: ${userName}</p> <p>Id пользователя: ${userId}</p> </body>
43
![Page 44: Java осень 2014 занятие 1](https://reader034.vdocuments.net/reader034/viewer/2022052311/558b88dad8b42a171b8b4763/html5/thumbnails/44.jpg)
<freemarker>
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.20</version> </dependency>
44