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

Post on 25-Jun-2015

297 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

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

Виталий Чибриков chibrikov@corp.mail.ru

top related