SlideShare a Scribd company logo
1 of 45
Download to read offline
Углубленное 
программирование на 
Java 
Занятие 1.1 «Введение» 
Виталий Чибриков
Java сервер 
2 
Углубленное программирование на Java 
Особенности курса 
Один проект на два предмета 
100 баллов = отлично = демонстрация проекта 
модуль = лекция + 2 * лекция и семинар + РК 
Ревью кода на github 
Разработка игровой механики начиная с 2 модуля
Освой 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
Освой 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. Углубленное 
3. Программирование 
4. Платформа Java 
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, интерпретируем «на месте»
Задумка Java платформы 
Приложение 
Архитектурно независимый байт код 
JVM для Windows JVM для Linux 
10
Задачи и результат 
Ключевые идеи 
Написанно один раз – работает везде 
Встроенный сборщик мусора 
Безопасность исполнения 
Результат 
+ «Переносимые» программисты 
- Программы все равно зависят от архитектуры 
+ Сборщик мусора устраняет утечки памяти 
- Сборщик мусора «всегда» работает в ненужное время 
11
Почему Java? 
ОО язык высокого уровня с простым и понятным синтаксисом 
Большое количество специалистов со знанием Java 
Легкость перехода с С++ 
Большое количество библиотек 
Постоянные улучшения и доработки 
Прекрасная документация 
12
План лекции 
13 
1. Java 
2. Углубленное 
3. Программирование 
4. Платформа Java 
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. Углубленное 
3. Программирование 
4. Платформа Java 
5. Настройка окружения 
6. Jetty 
7. Сервлеты 
8. Шаблонизатор
Модули учебного сервера 
utils 
gameMechanics 
base 
messageSystem 
frontend 
main 
resourceSystem 
1. 
1. 
4. 
2. 
2. 2. 
2. 
3. dbService 
17
План лекции 
18 
1. Java 
2. Углубленное 
3. Программирование 
4. Платформа Java 
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 
JVM 
Interpreter 
Just-In-Time (JIT) compiler 
Byte code verifier 
Garbage collector (GC) 
Javac 
Превращает *.java в *.class 
*.class можно собрать в *.jar (zip архив) 
20
Сборщик мусора 
Garbage collector (GC) 
Поиск ненужных объектов Stack Heap 
Освобождение памяти 
21
Java editions 
Java SE (Standard Edition) 
Стандартная редакция 
JVM + библиотека классов 
Java EE (Enterprise Edition) 
Java SE 
Спецификация 
API + runtime environment services 
Java ME (Micro Edition) 
Мобильные телефоны, бытовые приборы 
22
Наименования 
Классы в Java собирают в пакеты (packages) 
Пакеты обычно собирают в *.jar файлы (zip архивы) 
Класс может быть однозначно идетифицирован по полному имени 
packageName.directoryName.ClassName 
Имена пакетов и директорий принято начинать с маленькой буквы 
Имена классов: MySuperClassName 
Имена функций: getMyVariable() 
Имена переменных: myVariable 
Пакеты не могут иметь циклических зависимостей 
23
Анонимный тест 
24
План лекции 
25 
1. Java 
2. Углубленное 
3. Программирование 
4. Платформа Java 
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/ 
Community Edition FREE 
Linux: запуск через bin/idea.sh 
Windows: обычная установка и запуск
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 
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. Углубленное 
3. Программирование 
4. Платформа Java 
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. Углубленное 
3. Программирование 
4. Платформа Java 
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. Углубленное 
3. Программирование 
4. Платформа Java 
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

More Related Content

What's hot

Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETЧто нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETDev2Dev
 
Java осень 2013 лекция 1-1
Java осень 2013 лекция 1-1Java осень 2013 лекция 1-1
Java осень 2013 лекция 1-1Technopark
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.Igor Shkulipa
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.Igor Shkulipa
 
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NETASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NETDev2Dev
 
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETDev2Dev
 
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Fedor Lavrentyev
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.Igor Shkulipa
 
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Fedor Malyshkin
 
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.Igor Shkulipa
 
использование Hibernate java persistence.part 1.
использование Hibernate java persistence.part 1.использование Hibernate java persistence.part 1.
использование Hibernate java persistence.part 1.Asya Dudnik
 
C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.Igor Shkulipa
 
C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.Igor Shkulipa
 
C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.Igor Shkulipa
 
Java весна 2013 лекция 8
Java весна 2013 лекция 8Java весна 2013 лекция 8
Java весна 2013 лекция 8Technopark
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyRegn
 

What's hot (19)

Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETЧто нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
 
Java осень 2013 лекция 1-1
Java осень 2013 лекция 1-1Java осень 2013 лекция 1-1
Java осень 2013 лекция 1-1
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.
 
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NETASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
 
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NET
 
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.
 
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)
 
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.
 
использование Hibernate java persistence.part 1.
использование Hibernate java persistence.part 1.использование Hibernate java persistence.part 1.
использование Hibernate java persistence.part 1.
 
C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.
 
C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.
 
C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.
 
Java: вчера, сегодня, завтра
Java: вчера, сегодня, завтраJava: вчера, сегодня, завтра
Java: вчера, сегодня, завтра
 
Сервлеты
СервлетыСервлеты
Сервлеты
 
Java весна 2013 лекция 8
Java весна 2013 лекция 8Java весна 2013 лекция 8
Java весна 2013 лекция 8
 
Drf vs Graphql
Drf vs GraphqlDrf vs Graphql
Drf vs Graphql
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
 

Viewers also liked

Serge P Nekoval Grails
Serge P  Nekoval  GrailsSerge P  Nekoval  Grails
Serge P Nekoval Grailsguest092df8
 
Monitoring and Optimization of Java Applications (Ukrainian)
Monitoring and Optimization of Java Applications (Ukrainian)Monitoring and Optimization of Java Applications (Ukrainian)
Monitoring and Optimization of Java Applications (Ukrainian)Oleksandr Kovalchuk
 
Java Training Ahmedabad , how to Insert Data in Servlet, iOS Classes Ahmedabad
Java Training Ahmedabad , how to Insert Data in Servlet, iOS Classes AhmedabadJava Training Ahmedabad , how to Insert Data in Servlet, iOS Classes Ahmedabad
Java Training Ahmedabad , how to Insert Data in Servlet, iOS Classes AhmedabadNicheTech Com. Solutions Pvt. Ltd.
 
Cтеки іт технологій
Cтеки іт технологійCтеки іт технологій
Cтеки іт технологійYevgen Vershynin
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaAlex Chistyakov
 
English skills in it company
English skills in it companyEnglish skills in it company
English skills in it companyspillector
 
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (1 часть)
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (1 часть)Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (1 часть)
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (1 часть)7bits
 
Keynote on JavaDay Omsk 2014 about new features in Java 8
Keynote on JavaDay Omsk 2014 about new features in Java 8Keynote on JavaDay Omsk 2014 about new features in Java 8
Keynote on JavaDay Omsk 2014 about new features in Java 8Alexey Zinoviev
 
Java c человеческим (и даже богатым) лицом / Филипп Дельгядо
Java c человеческим (и даже богатым) лицом / Филипп ДельгядоJava c человеческим (и даже богатым) лицом / Филипп Дельгядо
Java c человеческим (и даже богатым) лицом / Филипп ДельгядоOntico
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в ЯндексеYandex
 
Тестирование весна 2014 смешанное занятие 1
Тестирование весна 2014 смешанное занятие 1Тестирование весна 2014 смешанное занятие 1
Тестирование весна 2014 смешанное занятие 1Technopark
 
Дмитрий Исаев - Теория тестирования
Дмитрий Исаев - Теория тестированияДмитрий Исаев - Теория тестирования
Дмитрий Исаев - Теория тестированияYandex
 
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Nikolay Grebenshikov
 
Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простомуNikolay Grebenshikov
 
Лекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide WebЛекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide WebЯковенко Кирилл
 
Алгоритмы и структуры данных осень 2013 лекция 5
Алгоритмы и структуры данных осень 2013 лекция 5Алгоритмы и структуры данных осень 2013 лекция 5
Алгоритмы и структуры данных осень 2013 лекция 5Technopark
 
Лекция #1. Основы Web-технологий
Лекция #1. Основы Web-технологийЛекция #1. Основы Web-технологий
Лекция #1. Основы Web-технологийЯковенко Кирилл
 

Viewers also liked (20)

Java pt2
Java pt2Java pt2
Java pt2
 
Serge P Nekoval Grails
Serge P  Nekoval  GrailsSerge P  Nekoval  Grails
Serge P Nekoval Grails
 
Monitoring and Optimization of Java Applications (Ukrainian)
Monitoring and Optimization of Java Applications (Ukrainian)Monitoring and Optimization of Java Applications (Ukrainian)
Monitoring and Optimization of Java Applications (Ukrainian)
 
Java Training Ahmedabad , how to Insert Data in Servlet, iOS Classes Ahmedabad
Java Training Ahmedabad , how to Insert Data in Servlet, iOS Classes AhmedabadJava Training Ahmedabad , how to Insert Data in Servlet, iOS Classes Ahmedabad
Java Training Ahmedabad , how to Insert Data in Servlet, iOS Classes Ahmedabad
 
Cтеки іт технологій
Cтеки іт технологійCтеки іт технологій
Cтеки іт технологій
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
English skills in it company
English skills in it companyEnglish skills in it company
English skills in it company
 
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (1 часть)
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (1 часть)Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (1 часть)
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (1 часть)
 
Keynote on JavaDay Omsk 2014 about new features in Java 8
Keynote on JavaDay Omsk 2014 about new features in Java 8Keynote on JavaDay Omsk 2014 about new features in Java 8
Keynote on JavaDay Omsk 2014 about new features in Java 8
 
Java c человеческим (и даже богатым) лицом / Филипп Дельгядо
Java c человеческим (и даже богатым) лицом / Филипп ДельгядоJava c человеческим (и даже богатым) лицом / Филипп Дельгядо
Java c человеческим (и даже богатым) лицом / Филипп Дельгядо
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в Яндексе
 
Тестирование весна 2014 смешанное занятие 1
Тестирование весна 2014 смешанное занятие 1Тестирование весна 2014 смешанное занятие 1
Тестирование весна 2014 смешанное занятие 1
 
Дмитрий Исаев - Теория тестирования
Дмитрий Исаев - Теория тестированияДмитрий Исаев - Теория тестирования
Дмитрий Исаев - Теория тестирования
 
Лекция #7. Django ORM
Лекция #7. Django ORMЛекция #7. Django ORM
Лекция #7. Django ORM
 
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
 
ФСПОиДП 14 лет
ФСПОиДП 14 летФСПОиДП 14 лет
ФСПОиДП 14 лет
 
Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простому
 
Лекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide WebЛекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide Web
 
Алгоритмы и структуры данных осень 2013 лекция 5
Алгоритмы и структуры данных осень 2013 лекция 5Алгоритмы и структуры данных осень 2013 лекция 5
Алгоритмы и структуры данных осень 2013 лекция 5
 
Лекция #1. Основы Web-технологий
Лекция #1. Основы Web-технологийЛекция #1. Основы Web-технологий
Лекция #1. Основы Web-технологий
 

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

Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...jazzteam
 
Liferay Portal и приемы разработки
Liferay Portal и приемы разработкиLiferay Portal и приемы разработки
Liferay Portal и приемы разработкиdevclub
 
Разговор про Java 9. Extended version
Разговор про Java 9. Extended versionРазговор про Java 9. Extended version
Разговор про Java 9. Extended versionIvan Krylov
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Yandex
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктуройdddpaul
 
Методы защиты Java-приложений и их обход
Методы защиты Java-приложений и их обходМетоды защиты Java-приложений и их обход
Методы защиты Java-приложений и их обходPositive Hack Days
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
01 - Java. Введение в Java
01 - Java. Введение в Java01 - Java. Введение в Java
01 - Java. Введение в JavaRoman Brovko
 
1. java lecture intro
1. java lecture intro1. java lecture intro
1. java lecture introMERA_school
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularizationIvan Krylov
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Ontico
 
Gradle Introduction
Gradle IntroductionGradle Introduction
Gradle IntroductionKirill Rozov
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в ЯндексеAndrey Kazarinov
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandexaviatakz
 
Netbeans Desktop Applications
Netbeans Desktop ApplicationsNetbeans Desktop Applications
Netbeans Desktop Applicationsscassau
 
Как devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальшеКак devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальшеKirill Vechera
 
Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”GlobalLogic Ukraine
 

Similar to Java осень 2014 занятие 1 (20)

Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
 
Java 2 - Java Intro
Java 2 - Java IntroJava 2 - Java Intro
Java 2 - Java Intro
 
Liferay Portal и приемы разработки
Liferay Portal и приемы разработкиLiferay Portal и приемы разработки
Liferay Portal и приемы разработки
 
Java 9 - кратко о новом
Java 9 -  кратко о новомJava 9 -  кратко о новом
Java 9 - кратко о новом
 
SAI
SAISAI
SAI
 
Разговор про Java 9. Extended version
Разговор про Java 9. Extended versionРазговор про Java 9. Extended version
Разговор про Java 9. Extended version
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
Методы защиты Java-приложений и их обход
Методы защиты Java-приложений и их обходМетоды защиты Java-приложений и их обход
Методы защиты Java-приложений и их обход
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
01 - Java. Введение в Java
01 - Java. Введение в Java01 - Java. Введение в Java
01 - Java. Введение в Java
 
1. java lecture intro
1. java lecture intro1. java lecture intro
1. java lecture intro
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularization
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
 
Gradle Introduction
Gradle IntroductionGradle Introduction
Gradle Introduction
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в Яндексе
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
 
Netbeans Desktop Applications
Netbeans Desktop ApplicationsNetbeans Desktop Applications
Netbeans Desktop Applications
 
Как devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальшеКак devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальше
 
Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”
 

More from Technopark

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelTechnopark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuTechnopark
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARNTechnopark
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. SparkTechnopark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache MahoutTechnopark
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeperTechnopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveTechnopark
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Technopark
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Technopark
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSTechnopark
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы HadoopTechnopark
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceTechnopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"Technopark
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...Technopark
 

More from Technopark (20)

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 

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

  • 1. Углубленное программирование на Java Занятие 1.1 «Введение» Виталий Чибриков
  • 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.дек
  • 6. План лекции 6 1. Java 2. Углубленное 3. Программирование 4. Платформа Java 5. Настройка окружения 6. Jetty 7. Сервлеты 8. Шаблонизатор
  • 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
  • 13. План лекции 13 1. Java 2. Углубленное 3. Программирование 4. Платформа Java 5. Настройка окружения 6. Jetty 7. Сервлеты 8. Шаблонизатор
  • 14. «Углубленное» Углубленное значит «глубже чем» 14 Примитивные типы, переполнение примитивных типов Объекты, классы, наследование, полиморфизм, инкапсуляция Область видимости переменной, статические переменные Ветвления и циклы Преобразования примитивных типов Интерфейс, реализация интерфейса Операторы Стек, куча private, protected, public
  • 15. «Углубленное» Платформа 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. План лекции 16 1. Java 2. Углубленное 3. Программирование 4. Платформа Java 5. Настройка окружения 6. Jetty 7. Сервлеты 8. Шаблонизатор
  • 17. Модули учебного сервера utils gameMechanics base messageSystem frontend main resourceSystem 1. 1. 4. 2. 2. 2. 2. 3. dbService 17
  • 18. План лекции 18 1. Java 2. Углубленное 3. Программирование 4. Платформа Java 5. Настройка окружения 6. Jetty 7. Сервлеты 8. Шаблонизатор
  • 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
  • 25. План лекции 25 1. Java 2. Углубленное 3. Программирование 4. Платформа Java 5. Настройка окружения 6. Jetty 7. Сервлеты 8. Шаблонизатор
  • 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>
  • 31. Git 31 Git http://git-scm.com/downloads github https://help.github.com/
  • 32. План лекции 32 1. Java 2. Углубленное 3. Программирование 4. Платформа Java 5. Настройка окружения 6. Jetty 7. Сервлеты 8. Шаблонизатор
  • 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
  • 36. План лекции 36 1. Java 2. Углубленное 3. Программирование 4. Платформа Java 5. Настройка окружения 6. Jetty 7. Сервлеты 8. Шаблонизатор
  • 37. Java Servlet Servlet класс расширяющий возможности сервера как applet, только на web сервере java решение для создания динамических страниц объект, который обрабатывает http запрос (request) и возвращает ответ (response) – html станицу ServletContainer часть web сервера, содержащая сервлеты связывает URL с сервлетом 37
  • 38. Java Servlet <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-webapp</artifactId> <version>9.1.0.M0</version> </dependency> 38
  • 39. 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
  • 40. Java Servlet public class Frontend extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) { … } public void doPost(HttpServletRequest request, HttpServletResponse response) { … } } 40
  • 41. План лекции 41 1. Java 2. Углубленное 3. Программирование 4. Платформа Java 5. Настройка окружения 6. Jetty 7. Сервлеты 8. Шаблонизатор
  • 42. <freemarker> Шаблонизатор создает страницы для response 42
  • 43. <freemarker> <html> <head> <title>Пример шаблона</title> </head> <body> <p>Имя пользователя: ${userName}</p> <p>Id пользователя: ${userId}</p> </body> 43
  • 44. <freemarker> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.20</version> </dependency> 44
  • 45. Спасибо за внимание Виталий Чибриков chibrikov@corp.mail.ru