java осень 2014 занятие 1

45
Углубленное программирование на Java Занятие 1.1 «Введение» Виталий Чибриков

Upload: technopark

Post on 25-Jun-2015

295 views

Category:

Education


2 download

DESCRIPTION

Java осень 2014 занятие 1

TRANSCRIPT

Page 1: Java осень 2014 занятие 1

Углубленное программирование на

Java Занятие 1.1 «Введение»

Виталий Чибриков

Page 2: Java осень 2014 занятие 1

Java сервер

2

Один проект на два предмета

100 баллов = отлично = демонстрация проекта

модуль = лекция + 2 * лекция и семинар + РК

Ревью кода на github

Разработка игровой механики начиная с 2 модуля

Углубленное программирование на Java

Особенности курса

Page 3: Java осень 2014 занятие 1

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

Освой 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

Освой 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

План лекции

6

1. Java

2. Углубленное

4. Платформа Java

3. Программирование

5. Настройка окружения

6. Jetty

7. Сервлеты

8. Шаблонизатор

Page 7: Java осень 2014 занятие 1

История Java

Java ― ОО язык программирования разработанный в 1995г.

Изначально ― платформа для программирования бытовых приборов

Компилляция в байт код и исполнение байт кода в виртуальной машине

Встроенный сборщик мусора

Платформа .Net от Microsoft осована на идеях Java

7

Page 8: Java осень 2014 занятие 1

История успеха

1995 - 2000 ― скрипты для браузера

2000 - 2005 ― приложения для телефонов

8

2005 - 2014 ― сервера

1995 - 2014 ― приложения для бытовых приборов

Page 9: Java осень 2014 занятие 1

 Cross-platform

9

Компиллятор ― поставляем исходники, перед стартом сибираем

Интерпретатор ― поставляем скрипты, не эффективное выполнение

«Классические» варианты решения

Собираем в byte-code, интерпретируем «на месте»

Гибридное решение

Page 10: Java осень 2014 занятие 1

JVM для Windows JVM для Linux

Архитектурно независимый байт код

Приложение

Задумка Java платформы

10

Page 11: Java осень 2014 занятие 1

Написанно один раз – работает везде

Встроенный сборщик мусора

Безопасность исполнения

Ключевые идеи

Результат

Задачи и результат

+ «Переносимые» программисты

- Программы все равно зависят от архитектуры

+ Сборщик мусора устраняет утечки памяти

- Сборщик мусора «всегда» работает в ненужное время

11

Page 12: Java осень 2014 занятие 1

Постоянные улучшения и доработки

ОО язык высокого уровня с простым и понятным синтаксисом

Большое количество специалистов со знанием Java

Легкость перехода с С++

Большое количество библиотек

Прекрасная документация

Почему Java?

12

Page 13: Java осень 2014 занятие 1

План лекции

13

1. Java

2. Углубленное

4. Платформа Java

3. Программирование

5. Настройка окружения

6. Jetty

7. Сервлеты

8. Шаблонизатор

Page 14: Java осень 2014 занятие 1

Углубленное значит «глубже чем»

«Углубленное»

14

Примитивные типы, переполнение примитивных типов

Объекты, классы, наследование, полиморфизм, инкапсуляция

Область видимости переменной, статические переменные

Ветвления и циклы

Преобразования примитивных типов

Интерфейс, реализация интерфейса

Операторы

Стек, куча

private, protected, public

Page 15: Java осень 2014 занятие 1

Платформа 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

План лекции

16

1. Java

2. Углубленное

4. Платформа Java

3. Программирование

5. Настройка окружения

6. Jetty

7. Сервлеты

8. Шаблонизатор

Page 17: Java осень 2014 занятие 1

Модули учебного сервера

utils

gameMechanics

base

messageSystem

frontend

main

resourceSystem

1.

1.

4.

2.

2. 2.

2.

dbService3.

17

Page 18: Java осень 2014 занятие 1

План лекции

18

1. Java

2. Углубленное

4. Платформа Java

3. Программирование

5. Настройка окружения

6. Jetty

7. Сервлеты

8. Шаблонизатор

Page 19: Java осень 2014 занятие 1

Обзор платформы 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

Обзор платформы 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

Сборщик мусора

Stack HeapПоиск ненужных объектов

Освобождение памяти

Garbage collector (GC)

21

Page 22: Java осень 2014 занятие 1

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

Класс может быть однозначно идетифицирован по полному имени packageName.directoryName.ClassName

Классы в Java собирают в пакеты (packages)

Пакеты обычно собирают в *.jar файлы (zip архивы)

Имена пакетов и директорий принято начинать с маленькой буквы

Имена классов: MySuperClassName

Имена функций: getMyVariable()

Имена переменных: myVariable

Пакеты не могут иметь циклических зависимостей

Наименования

23

Page 24: Java осень 2014 занятие 1

Анонимный тест

24

Page 25: Java осень 2014 занятие 1

План лекции

25

1. Java

2. Углубленное

4. Платформа Java

3. Программирование

5. Настройка окружения

6. Jetty

7. Сервлеты

8. Шаблонизатор

Page 26: Java осень 2014 занятие 1

Инструменты

26

JDK 1.8 Java Development Kit 8

IntelliJ IDEA среда разработки приложений на Java

Maven система сборки проекта

Git система контроля версий

*Jetty библиотека для web сервера

*freemarker шаблонизатор

Page 27: Java осень 2014 занятие 1

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

IntelliJ IDEA

28

http://www.jetbrains.com/idea/download/

Linux: запуск через bin/idea.sh

Windows: обычная установка и запуск

Community Edition FREE

Page 29: Java осень 2014 занятие 1

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

Создание проекта

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

Git

31

Git http://git-scm.com/downloads

github https://help.github.com/

Page 32: Java осень 2014 занятие 1

План лекции

32

1. Java

2. Углубленное

4. Платформа Java

3. Программирование

5. Настройка окружения

6. Jetty

7. Сервлеты

8. Шаблонизатор

Page 33: Java осень 2014 занятие 1

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

Jetty

connector принимает http запросы (request)

handler(s) возвращают response

ThreadPool pool потоков для обработки запроса

34

Page 35: Java осень 2014 занятие 1

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

План лекции

36

1. Java

2. Углубленное

4. Платформа Java

3. Программирование

5. Настройка окружения

6. Jetty

7. Сервлеты

8. Шаблонизатор

Page 37: Java осень 2014 занятие 1

Java Servlet

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

как applet, только на web сервере

java решение для создания динамических страниц

объект, который обрабатывает http запрос (request) и возвращает ответ (response) – html станицу

ServletContainer часть web сервера, содержащая сервлеты

связывает URL с сервлетом

37

Page 38: Java осень 2014 занятие 1

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

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

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

План лекции

41

1. Java

2. Углубленное

4. Платформа Java

3. Программирование

5. Настройка окружения

6. Jetty

7. Сервлеты

8. Шаблонизатор

Page 42: Java осень 2014 занятие 1

<freemarker>

Шаблонизатор создает страницы для response

42

Page 43: Java осень 2014 занятие 1

<freemarker>

<html> <head> <title>Пример шаблона</title> </head> <body> <p>Имя пользователя: ${userName}</p> <p>Id пользователя: ${userId}</p> </body>

43

Page 44: Java осень 2014 занятие 1

<freemarker>

<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.20</version> </dependency>

44

Page 45: Java осень 2014 занятие 1

Спасибо за внимание

Виталий Чибриков [email protected]