Программирование на Java, осень 2016: Java-классы под капотом
Java осень 2014 занятие 1
-
Upload
technopark -
Category
Education
-
view
297 -
download
2
description
Transcript of Java осень 2014 занятие 1
Углубленное программирование на
Java Занятие 1.1 «Введение»
Виталий Чибриков
Java сервер
2
Один проект на два предмета
100 баллов = отлично = демонстрация проекта
модуль = лекция + 2 * лекция и семинар + РК
Ревью кода на github
Разработка игровой механики начиная с 2 модуля
Углубленное программирование на Java
Особенности курса
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
Освой 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.окт
Освой 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.дек
План лекции
6
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. Настройка окружения
6. Jetty
7. Сервлеты
8. Шаблонизатор
История Java
Java ― ОО язык программирования разработанный в 1995г.
Изначально ― платформа для программирования бытовых приборов
Компилляция в байт код и исполнение байт кода в виртуальной машине
Встроенный сборщик мусора
Платформа .Net от Microsoft осована на идеях Java
7
История успеха
1995 - 2000 ― скрипты для браузера
2000 - 2005 ― приложения для телефонов
8
2005 - 2014 ― сервера
1995 - 2014 ― приложения для бытовых приборов
Cross-platform
9
Компиллятор ― поставляем исходники, перед стартом сибираем
Интерпретатор ― поставляем скрипты, не эффективное выполнение
«Классические» варианты решения
Собираем в byte-code, интерпретируем «на месте»
Гибридное решение
JVM для Windows JVM для Linux
Архитектурно независимый байт код
Приложение
Задумка Java платформы
10
Написанно один раз – работает везде
Встроенный сборщик мусора
Безопасность исполнения
Ключевые идеи
Результат
Задачи и результат
+ «Переносимые» программисты
- Программы все равно зависят от архитектуры
+ Сборщик мусора устраняет утечки памяти
- Сборщик мусора «всегда» работает в ненужное время
11
Постоянные улучшения и доработки
ОО язык высокого уровня с простым и понятным синтаксисом
Большое количество специалистов со знанием Java
Легкость перехода с С++
Большое количество библиотек
Прекрасная документация
Почему Java?
12
План лекции
13
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. Настройка окружения
6. Jetty
7. Сервлеты
8. Шаблонизатор
Углубленное значит «глубже чем»
«Углубленное»
14
Примитивные типы, переполнение примитивных типов
Объекты, классы, наследование, полиморфизм, инкапсуляция
Область видимости переменной, статические переменные
Ветвления и циклы
Преобразования примитивных типов
Интерфейс, реализация интерфейса
Операторы
Стек, куча
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. Автоматизация тестрования.
Исключение, обработка исключений
«Углубленное»
15
План лекции
16
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. Настройка окружения
6. Jetty
7. Сервлеты
8. Шаблонизатор
Модули учебного сервера
utils
gameMechanics
base
messageSystem
frontend
main
resourceSystem
1.
1.
4.
2.
2. 2.
2.
dbService3.
17
План лекции
18
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. Настройка окружения
6. Jetty
7. Сервлеты
8. Шаблонизатор
Обзор платформы Java
Java Runtime Environment (JRE)
Java Virtual Machine(JVM)
Class Libraries
Запуск приложений
Java Development Kit (JDK)
JRE
Java compiler
IDE ― в состав Java не входит
Создание приложений
19
Обзор платформы Java
Interpreter
Just-In-Time (JIT) compiler
Byte code verifier
Garbage collector (GC)
JVM
Превращает *.java в *.class
*.class можно собрать в *.jar (zip архив)
Javac
20
Сборщик мусора
Stack HeapПоиск ненужных объектов
Освобождение памяти
Garbage collector (GC)
21
Java editions
Стандартная редакция
JVM + библиотека классов
Java SE (Standard Edition)
Java SE
Спецификация
API + runtime environment services
Java EE (Enterprise Edition)
Мобильные телефоны, бытовые приборы
Java ME (Micro Edition)
22
Класс может быть однозначно идетифицирован по полному имени packageName.directoryName.ClassName
Классы в Java собирают в пакеты (packages)
Пакеты обычно собирают в *.jar файлы (zip архивы)
Имена пакетов и директорий принято начинать с маленькой буквы
Имена классов: MySuperClassName
Имена функций: getMyVariable()
Имена переменных: myVariable
Пакеты не могут иметь циклических зависимостей
Наименования
23
Анонимный тест
24
План лекции
25
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. Настройка окружения
6. Jetty
7. Сервлеты
8. Шаблонизатор
Инструменты
26
JDK 1.8 Java Development Kit 8
IntelliJ IDEA среда разработки приложений на Java
Maven система сборки проекта
Git система контроля версий
*Jetty библиотека для web сервера
*freemarker шаблонизатор
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
IntelliJ IDEA
28
http://www.jetbrains.com/idea/download/
Linux: запуск через bin/idea.sh
Windows: обычная установка и запуск
Community Edition FREE
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
Создание проекта
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>
Git
31
Git http://git-scm.com/downloads
github https://help.github.com/
План лекции
32
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. Настройка окружения
6. Jetty
7. Сервлеты
8. Шаблонизатор
Jetty
33
java based http server
создание динамических страниц
пересылка статических файлов (html страницы, картинки…)
<dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> <version>9.1.0.M0</version> </dependency>
Jetty
connector принимает http запросы (request)
handler(s) возвращают response
ThreadPool pool потоков для обработки запроса
34
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
План лекции
36
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. Настройка окружения
6. Jetty
7. Сервлеты
8. Шаблонизатор
Java Servlet
Servlet класс расширяющий возможности сервера
как applet, только на web сервере
java решение для создания динамических страниц
объект, который обрабатывает http запрос (request) и возвращает ответ (response) – html станицу
ServletContainer часть web сервера, содержащая сервлеты
связывает URL с сервлетом
37
Java Servlet
<dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-webapp</artifactId> <version>9.1.0.M0</version> </dependency>
38
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
Java Servlet
public class Frontend extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) { … }
public void doPost(HttpServletRequest request, HttpServletResponse response) { … } }
40
План лекции
41
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. Настройка окружения
6. Jetty
7. Сервлеты
8. Шаблонизатор
<freemarker>
Шаблонизатор создает страницы для response
42
<freemarker>
<html> <head> <title>Пример шаблона</title> </head> <body> <p>Имя пользователя: ${userName}</p> <p>Id пользователя: ${userId}</p> </body>
43
<freemarker>
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.20</version> </dependency>
44
Спасибо за внимание
Виталий Чибриков [email protected]