Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Java School #18 Opening

Содержание

ПравилаВсе официальные публикации происходят в группе VK:https://vk.com/t_school Изменения в расписании публикуются там жеНоутбук нужен на всех лекциях *И он открывается только на время практикиСами лекции тут: https://bitbucket.org/tschool/javaschoolЕсли что-то непонятно, то лучше спроситьВ любых непонятных случаях можно
Saint Petersburg, 2016Java School #18  Opening ПравилаВсе официальные публикации происходят в группе VK:https://vk.com/t_school Изменения в расписании публикуются там Расписание Кураторы Правила работы с кураторомКуратор будет уделять вам от двух часов в неделюЕсли Сквозное заданиеОбязательные критерии успешности:Работающее приложение в котором реализован весь функционалКод документирован (javadoc)Написаны Вопросы? Saint Petersburg, 2016Java Lecture #1  Developer tools AgendaIDEАвтоматизация build-процессаСистемы контроля версийContinuous IntegrationКонтроль качества исходного кодаДебаг, мониторинг и профилировка IDEIntegrated Development EnvironmentПопытка совместить весь необходимый инструментарий в одном приложенииРасширяема за счет NetBeansIDE с открытым исходным кодом, первоначально разрабатывалась в SunДостоинстваОтличный встроенный профайлерМодульная структураПодробная EclipseБесплатная IDE с открытым исходным кодомДостоинстваВозможность хранения Workspace – независимой от проекта Intellij IdeaCommunity - версия бесплатна, нет поддержки EE/Web-разработкиUltimate - платнаяДостоинстваОтличные инструменты для Популярность IDE2011http://zeroturnaround.com/rebellabs/java-ee-productivity-report-2011/#ides Practice #1 – создание проектаСкачать и установить JDK 8 (если еще нет)Скачать AgendaIDEАвтоматизация build-процессаСистемы контроля версийContinuous IntegrationКонтроль качества исходного кодаДебаг, мониторинг и профилировка Build automationПроцесс сборки и развертывания сложных Java-приложений может быть весьма нетривиаленЧто включает Управление зависимостямиОсновные проблемы:Управление транзитивными зависимостямиПрисутствие всех необходимых зависимостей на разных фазах жизненного Apache AntИнструмент автоматизации билд-процессаПозволяет релизовать практически любую схему сборки приложенияНе содержит собственных Apache AntПример билд-скрипта для ant: Apache MavenНаиболее популярная на сегодняшний день build-система, стандарт de-factoИспользует декларативную конфигурациюПредоставляет стандартную Maven: фазы жизненного циклаValidate 	Проверка POM-файлов на предмет валидности и непротиворечивости моделиCompile Maven: управление зависимостямиЗависимости проекта необходимо декларировать явным образомЗависеть можно как от сторонних Maven: плагиныВсе, что делает Maven, выполняется тем или иным плагиномСтандартная модель уже Maven: архетипыАрхетип – шаблон maven-проекта под определенные технологииОни хранятся в репозиториях maven, GradleРелиз 1.0 вышел 12 июня 2012Позиционируется как замена Maven и AntПредоставляет стандартную Gradle: Примерhttp://www.gradle.org/docs/current/userguide/userguide_single.html#tutorial_java_projects Популярность build-систем2013http://java.dzone.com/articles/java-build-tools-survey-0 Practice #2 – создание проектаСкачать и установить Maven*Создать Maven web проект из AgendaIDEАвтоматизация build-процессаСистемы контроля версийContinuous IntegrationКонтроль качества исходного кодаДебаг, мониторинг и профилировка Системы контроля версий (VCS/SCM)Предназначены для командной работы над одним набором файлов исходного Системы контроля версий (VCS/SCM)Могут делать слияние конкурирующих измененийБольшинство алгоритмов слияния плохо обрабатывает Системы контроля версий: глоссарий (1/2)Branch. Направление разработки, независимое от других. Ветвь представляет Системы контроля версий: глоссарий (2/2)Head. Основная версия — самая свежая версия для Системы контроля версий: рабочий циклСоздание рабочей копии. Операция выполняется однократно.Обновление рабочей копии. Системы контроля версий: рабочий циклПроцесс работы в команде двух разработчиков: Централизованные системы контроля версийВесь обмен изменениями происходит через центральный репозиторий (сервер)Позволяют вести Распределенные системы контроля версийПозволяют делать частичную интеграцию изменений непосредственно от автора или Subversion (SVN)Централизованная система контроля версий,  свободная даже для коммерческого использованияСоздавалась для GitРаспределенная система контроля версий с открытым исходным кодомПервоначально создавалась для ядра LinuxПреимущества:Легкость Practice #3 – создание своего репозиторияЗарегистрироваться на https://github.com/ Создать новый репозиторий.Загрузить проект AgendaIDEАвтоматизация build-процессаСистемы контроля версийContinuous IntegrationКонтроль качества исходного кодаДебаг, мониторинг и профилировка Continuous Integration (CI)Для автоматизации интеграционных процессов применяются системы непрерывной интеграции (Continious Integration Continuous Integration (CI) CI: полный цикл разработки AgendaIDEАвтоматизация build-процессаСистемы контроля версийContinuous IntegrationКонтроль качества исходного кодаДебаг, мониторинг и профилировка Why so serious?Пишите свои программы так, как будто человек, который их будет PMDPMD – статический анализатор кода для языка JavaПозволяет автоматически контролировать единообразие	 стиля CheckstyleЕще один статический анализатор исходного кодаДелает упор на соблюдение стандартов кодирования, например SonarМодульная open-source платформа для контроля качества исходного кодаУмеет снимать огромное количество метрикВизуализирует Sonar: Рабочий цикл Code ReviewWiki: систематическая проверка исходного кода программы с целью обнаружения и исправления ошибок, которые остались незамеченными Review Board Code Review JavadocJavadoc — стандарт для документирования классов Java. Большинство сред разработки программного обеспечения автоматически JavadocКогда я возвращаюсь к разработке своего кода, который я не комментировал.*http://developerslife.ru/12 Practice #4 – checkstyleТребуется: cкачать и установить плагин CheckstyleHelp->Eclipse Marketplace->Checkstyle Plug-inВнимательно читаем AgendaIDEАвтоматизация build-процессаСистемы контроля версийContinuous IntegrationКонтроль качества исходного кодаДебаг, мониторинг и профилировка DebugОтладка — этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. Debug – чтобы не было потом вот так ProfilingПод профилировкой понимают сбор характеристик работающего приложенияВ них входит использование памяти, динамика VisualVMИнструментирующий профайлер из состава JDK, 	начиная с JDK 6u7Умеет инструментировать приложение на JProfilerБолее серьезный инструмент, лучше показывает тонкие местаПоддерживает удаленную профилировкуОчень платный, но есть evaluation на 10 дней What else?Task tracking system (+ Wiki)Примеры:Atlassian Jira (+ Confluence)RedmineBugzillaMantisYouTrack Default Workflow ? HomeworkСделать maven проект из архетипа (например maven-archetype-webapp).Импортировать его в Eclipse.Запустить проект на Tomcat.Результаты отписать в группу.
Слайды презентации

Слайд 2 Правила
Все официальные публикации происходят в группе VK:
https://vk.com/t_school
Изменения

ПравилаВсе официальные публикации происходят в группе VK:https://vk.com/t_school Изменения в расписании публикуются

в расписании публикуются там же
Ноутбук нужен на всех лекциях

*
И он открывается только на время практики
Сами лекции тут: https://bitbucket.org/tschool/javaschool
Если что-то непонятно, то лучше спросить

В любых непонятных случаях можно писать :
Daniil.Shulgin@t-systems.ru или Andrey.Bulov@t-systems.ru

Слайд 3 Расписание

Расписание

Слайд 4 Кураторы

Кураторы

Слайд 5 Правила работы с куратором
Куратор будет уделять вам от

Правила работы с кураторомКуратор будет уделять вам от двух часов в

двух часов в неделю
Если вы зависли на 4 часа

и не знаете как решить проблему, это хороший повод написать куратору
Куратор будет проверять ваш прогресс на еженедельной основе
Вы должны получить допуск к показу у куратора

Слайд 6 Сквозное задание
Обязательные критерии успешности:
Работающее приложение в котором реализован

Сквозное заданиеОбязательные критерии успешности:Работающее приложение в котором реализован весь функционалКод документирован

весь функционал
Код документирован (javadoc)
Написаны unit-тесты
Technical solution description
Нет major’ов в

checkstyle

Плюсом будет:
Красивый UI
Selenium Auto Tests
Killer features




Слайд 7 Вопросы?



Вопросы?

Слайд 8 Saint Petersburg, 2016
Java Lecture #1 Developer tools

Saint Petersburg, 2016Java Lecture #1 Developer tools

Слайд 9 Agenda
IDE
Автоматизация build-процесса
Системы контроля версий
Continuous Integration
Контроль качества исходного кода
Дебаг,

AgendaIDEАвтоматизация build-процессаСистемы контроля версийContinuous IntegrationКонтроль качества исходного кодаДебаг, мониторинг и профилировка

мониторинг и профилировка


Слайд 10 IDE
Integrated Development Environment

Попытка совместить весь необходимый инструментарий в

IDEIntegrated Development EnvironmentПопытка совместить весь необходимый инструментарий в одном приложенииРасширяема за

одном приложении
Расширяема за счет плагинов
Потребляет очень много ресурсов

Популярные

IDE для Java-разработки
NetBeans
Eclipse
Intellij Idea


Слайд 11 NetBeans
IDE с открытым исходным кодом, первоначально разрабатывалась в

NetBeansIDE с открытым исходным кодом, первоначально разрабатывалась в SunДостоинстваОтличный встроенный профайлерМодульная

Sun

Достоинства
Отличный встроенный профайлер
Модульная структура
Подробная wiki: http://wiki.netbeans.org

Недостатки
Огромное количество мастеров

и помощников, скрывающих реально происходящие вещи
Медленная работа с remote-проектами
GUI-дизайнер Matisse
Open source – багфиксы происходят «по желанию»

Слайд 12 Eclipse
Бесплатная IDE с открытым исходным кодом
Достоинства
Возможность хранения Workspace

EclipseБесплатная IDE с открытым исходным кодомДостоинстваВозможность хранения Workspace – независимой от

– независимой от проекта конфигурации IDE
Огромная коллекция плагинов для

самых разных технологий
Специализированные сборки IDE: STS, JBoss Tools

Недостатки
На каждый “чих” нужен плагин
Средства рефакторинга
Часто не видит изменений, сделанных не в IDE
Документация оставляет желать лучшего


Слайд 13 Intellij Idea
Community - версия бесплатна, нет поддержки EE/Web-разработки
Ultimate

Intellij IdeaCommunity - версия бесплатна, нет поддержки EE/Web-разработкиUltimate - платнаяДостоинстваОтличные инструменты

- платная

Достоинства
Отличные инструменты для рефакторинга из коробки
Cборки для других

языков на том же ядре (PyCharm, RubyMine)
Хорошо умеет менять структуру проекта без нарушения его целостности
«The most intelligent Java IDE»
Недостатки
Введение модульной архитектуры не пошло на пользу стабильности
Многие «неофициальные» плагины просто неработоспособны
Документации по плагинам практически нет

Слайд 14 Популярность IDE
2011
http://zeroturnaround.com/rebellabs/java-ee-productivity-report-2011/#ides

Популярность IDE2011http://zeroturnaround.com/rebellabs/java-ee-productivity-report-2011/#ides

Слайд 15 Practice #1 – создание проекта
Скачать и установить JDK

Practice #1 – создание проектаСкачать и установить JDK 8 (если еще

8 (если еще нет)
Скачать и установить Eclipse IDE for

Java EE Developers



Скачать Tomcat 8 и распаковать его

Слайд 16 Agenda
IDE
Автоматизация build-процесса
Системы контроля версий
Continuous Integration
Контроль качества исходного кода
Дебаг,

AgendaIDEАвтоматизация build-процессаСистемы контроля версийContinuous IntegrationКонтроль качества исходного кодаДебаг, мониторинг и профилировка

мониторинг и профилировка


Слайд 17 Build automation
Процесс сборки и развертывания сложных Java-приложений может

Build automationПроцесс сборки и развертывания сложных Java-приложений может быть весьма нетривиаленЧто

быть весьма нетривиален

Что включает в себя build automation:
Управление зависимостями
Версионирование
Компиляция

и сборка
Выполнение тестов и сбор метрик
Генерация кода и конфигурации
Деплоймент
Публикация

Слайд 18 Управление зависимостями
Основные проблемы:
Управление транзитивными зависимостями
Присутствие всех необходимых зависимостей

Управление зависимостямиОсновные проблемы:Управление транзитивными зависимостямиПрисутствие всех необходимых зависимостей на разных фазах

на разных фазах жизненного цикла
SNAPSHOT-зависимости
JAR Hell

Под зависимостями здесь понимаются

сторонние библиотеки, используемые кодом

Слайд 19 Apache Ant
Инструмент автоматизации билд-процесса
Позволяет релизовать практически любую схему

Apache AntИнструмент автоматизации билд-процессаПозволяет релизовать практически любую схему сборки приложенияНе содержит

сборки приложения
Не содержит собственных моделей жизненного цикла
Позволяет писать сборочные

скрипты в своей xml-конфигурации
Как следствие, build.xml часто распухает до огромных размеров
Один из самых быстрых сборочных инструментов
Поддерживается всеми популярными IDE
Используется в NetBeans в качестве внутренней билд-системы

Слайд 20 Apache Ant
Пример билд-скрипта для ant:

Apache AntПример билд-скрипта для ant:

Слайд 21 Apache Maven
Наиболее популярная на сегодняшний день build-система, стандарт

Apache MavenНаиболее популярная на сегодняшний день build-система, стандарт de-factoИспользует декларативную конфигурациюПредоставляет

de-facto
Использует декларативную конфигурацию
Предоставляет стандартную модель жизненного цикла
Великолепно управляет зависимостями
Отлично

интегрирован со всем, с чем можно. И с чем нельзя тоже.
IDE
Системы контроля версий
CI-tools, Sonar
Часто критикуется за недостаточную гибкость
https://community.jboss.org/wiki/MavenProblems

Слайд 22 Maven: фазы жизненного цикла
Validate
Проверка POM-файлов на предмет

Maven: фазы жизненного циклаValidate 	Проверка POM-файлов на предмет валидности и непротиворечивости

валидности и непротиворечивости модели
Compile
Компиляция исходного кода
Test
Выполнение unit-тестов
Package
Сборка

и упаковка в архивы, jar, war, ear, etc
Integration-test
Выполнение интеграционных тестов
Verify
Проверка собранных архивов
Install
Загрузка артефактов в локальный репозиторий
Deploy
Публикация артефактов в удаленный репозиторий и деплоймент


Слайд 23 Maven: управление зависимостями
Зависимости проекта необходимо декларировать явным образом
Зависеть

Maven: управление зависимостямиЗависимости проекта необходимо декларировать явным образомЗависеть можно как от

можно как от сторонних библиотек, так и от других

модулей текущего проекта
Для каждой зависимости указывается как минимум groupId, artifactId и version
Транзитивные зависимости подключаются по умолчанию
Чтобы запретить подключенние транзитивных зависимостей используется тэг

Scope показывает, на каких фазах жизненного цикла maven будет добавлять зависимость в classpath


Слайд 24 Maven: плагины
Все, что делает Maven, выполняется тем или

Maven: плагиныВсе, что делает Maven, выполняется тем или иным плагиномСтандартная модель

иным плагином
Стандартная модель уже включает в себя несколько плагинов
Их

можно конфигурировать и добавлять свои

Плагины выкачиваются из репозиториев, как и зависимости
Существует maven-antrun-plugin, который позволяет выполнять Ant-таски из Maven-билда
Можно подключать дополнительные репозитории для плагинов
Или даже писать свои плагины, если не хватает существующих


Слайд 25 Maven: архетипы
Архетип – шаблон maven-проекта под определенные технологии
Они

Maven: архетипыАрхетип – шаблон maven-проекта под определенные технологииОни хранятся в репозиториях

хранятся в репозиториях maven, как и все остальное
Позволяет сгенерировать

проект на пустом месте командой
mvn archetype:generate
Будет создана необходимая структура директорий, сгенерирован pom.xml
Авторы фреймворков и библиотек часто публикуют архетипы к собственным технологиям в репозитории maven
В центральном репозитории их более 500
Создать проект из архетипа может и IDE


Слайд 26 Gradle
Релиз 1.0 вышел 12 июня 2012
Позиционируется как замена

GradleРелиз 1.0 вышел 12 июня 2012Позиционируется как замена Maven и AntПредоставляет

Maven и Ant
Предоставляет стандартную модель жизненного цикла
Дает возможность её

кастомизировать

Пишется на Groovy DSL, что дает гораздо более компактную и читаемую конфигурацию по сравнению с XML
Последние версии IDE уже поддерживают Gradle
С недавнего времени есть плагины для интеграции с Sonar, Jenkins, etc.
GitHub также поддерживает Gradle
Spring и Hibernate собираются при помощи Gradle

Слайд 27 Gradle: Пример
http://www.gradle.org/docs/current/userguide/userguide_single.html#tutorial_java_projects

Gradle: Примерhttp://www.gradle.org/docs/current/userguide/userguide_single.html#tutorial_java_projects

Слайд 28 Популярность build-систем
2013
http://java.dzone.com/articles/java-build-tools-survey-0

Популярность build-систем2013http://java.dzone.com/articles/java-build-tools-survey-0

Слайд 29 Practice #2 – создание проекта
Скачать и установить Maven*
Создать

Practice #2 – создание проектаСкачать и установить Maven*Создать Maven web проект

Maven web проект из архетипа используя командную строку*
Собрать проект

из командной строки
mvn clean install
Импортировать проект в Eclipse




* Хороший мануал - http://habrahabr.ru/post/77382/

Слайд 30 Agenda
IDE
Автоматизация build-процесса
Системы контроля версий
Continuous Integration
Контроль качества исходного кода
Дебаг,

AgendaIDEАвтоматизация build-процессаСистемы контроля версийContinuous IntegrationКонтроль качества исходного кодаДебаг, мониторинг и профилировка

мониторинг и профилировка


Слайд 31 Системы контроля версий (VCS/SCM)
Предназначены для командной работы над

Системы контроля версий (VCS/SCM)Предназначены для командной работы над одним набором файлов

одним набором файлов исходного кода
Нумеруют изменения кода, выстраивая последовательную

цепочку состояний (ревизий)
Хранят историю изменений по файлам и папкам
Позволяют разработчикам эффективно обмениваться изменениями исходного кода



Слайд 32 Системы контроля версий (VCS/SCM)
Могут делать слияние конкурирующих изменений
Большинство

Системы контроля версий (VCS/SCM)Могут делать слияние конкурирующих измененийБольшинство алгоритмов слияния плохо

алгоритмов слияния плохо обрабатывает бинарные файлы
Могут выполнять откат изменений

до указанной ревизии
Как правило позволяют работать с несколькими ветвями разработки и переключаться между ними


Слайд 33 Системы контроля версий: глоссарий (1/2)
Branch. Направление разработки, независимое

Системы контроля версий: глоссарий (1/2)Branch. Направление разработки, независимое от других. Ветвь

от других. Ветвь представляет собой копию части хранилища, в

которую можно вносить свои изменения, не влияющие на другие ветви. Документы в разных ветвях имеют одинаковую историю до ветвления и разные — после.
Сheck-in, commit. Создание новой версии, фиксация изменений. Распространение изменений, сделанных в рабочей копии, на хранилище документов.
Сheck-out, clone. Извлечение документа из хранилища и создание рабочей копии.
Conflict. Конфликт — ситуация, когда несколько пользователей сделали изменения одного и того же участка документа.

Слайд 34 Системы контроля версий: глоссарий (2/2)
Head. Основная версия —

Системы контроля версий: глоссарий (2/2)Head. Основная версия — самая свежая версия

самая свежая версия для ветви/ствола, находящаяся в хранилище. Сколько

ветвей, столько основных версий.
Merge, integration. Слияние — объединение независимых изменений в единую версию документа. Осуществляется, когда два человека изменили один и тот же файл или при переносе изменений из одной ветки в другую.
Repository. Хранилище документов — место, где система управления версиями хранит все документы вместе с историей их изменения и другой служебной информацией.
Revision. Версия документа. Системы управления версиями различают версии по номерам или хэшам, которые назначаются автоматически.

Слайд 35 Системы контроля версий: рабочий цикл
Создание рабочей копии. Операция

Системы контроля версий: рабочий циклСоздание рабочей копии. Операция выполняется однократно.Обновление рабочей

выполняется однократно.

Обновление рабочей копии. Операцию обновления (update) рабочей копии

необходимо выполнять регулярно.

Модификация проекта. Работа производится локально и не требует обращений к серверу VCS.

Фиксация изменений. По завершению очередного этапа работ, разработчик фиксирует (commit) свои изменения, передавая их на сервер.

Слайд 36 Системы контроля версий: рабочий цикл
Процесс работы в команде

Системы контроля версий: рабочий циклПроцесс работы в команде двух разработчиков:

двух разработчиков:


Слайд 37 Централизованные системы контроля версий
Весь обмен изменениями происходит через

Централизованные системы контроля версийВесь обмен изменениями происходит через центральный репозиторий (сервер)Позволяют

центральный репозиторий (сервер)
Позволяют вести сквозную последовательную нумерацию ревизий
Хорошо работают

для проектов с жесткой вертикалью управления

Примеры
CVS
SVN
ClearCase
Perforce


Слайд 38 Распределенные системы контроля версий
Позволяют делать частичную интеграцию изменений

Распределенные системы контроля версийПозволяют делать частичную интеграцию изменений непосредственно от автора

непосредственно от автора или коллег без участия центрального репозитория

(которого вообще может не быть)

Хорошо работают для децентрализованных по управлению либо сильно разветвленных (fork) проектов
Примеры
Git
Mercurial
Bazaar


Слайд 39 Subversion (SVN)
Централизованная система контроля версий,
свободная

Subversion (SVN)Централизованная система контроля версий,  свободная даже для коммерческого использованияСоздавалась

даже для коммерческого использования
Создавалась для преодоления недостатков CVS
Много лет

была(и есть) de-facto стандартом для разработчиков
Преимущества:
Легко и быстро осваивается
Хорошая интеграция с самым разным софтом
Недостатки:
Слияние веток может быть очень трудоемким
Однажды добавленную в репозиторий информацию удалить оттуда уже нельзя
Нет возможности ассоциировать одну рабочую копию с несколькими репозиториями



Слайд 40 Git
Распределенная система контроля версий с открытым исходным кодом
Первоначально

GitРаспределенная система контроля версий с открытым исходным кодомПервоначально создавалась для ядра

создавалась для ядра Linux
Преимущества:
Легкость работаты с ветками
Поддержка любого количества

удаленных репозиториев
Впечатляющая производительность
Github
Недостатки:
Высокий порог вхождения
Слабая поддержка многомодульных проектов

Слайд 41 Practice #3 – создание своего репозитория
Зарегистрироваться на https://github.com/

Practice #3 – создание своего репозиторияЗарегистрироваться на https://github.com/ Создать новый репозиторий.Загрузить


Создать новый репозиторий.
Загрузить проект в репозиторий на Github используя

Eclipse.
Отправить своему куратору письмо со ссылкой на репозиторий.

Слайд 42 Agenda
IDE
Автоматизация build-процесса
Системы контроля версий
Continuous Integration
Контроль качества исходного кода
Дебаг,

AgendaIDEАвтоматизация build-процессаСистемы контроля версийContinuous IntegrationКонтроль качества исходного кодаДебаг, мониторинг и профилировка

мониторинг и профилировка


Слайд 43 Continuous Integration (CI)
Для автоматизации интеграционных процессов применяются системы

Continuous Integration (CI)Для автоматизации интеграционных процессов применяются системы непрерывной интеграции (Continious

непрерывной интеграции (Continious Integration System, CIS)
Принцип действия таких систем

состоит в следующем:
CIS производит мониторинг системы контроля версий
При изменении исходных кодов в репозитории производится обновление локального хранилища
Выполняются необходимые проверки и модульные тесты
Исходные коды компилируются в готовые выполняемые модули
Выполняются тесты интеграционного уровня
Генерируется отчет о тестировании
В случае ошибок на предыдущих фазах билд считается неуспешным и всем заинтересованным лицам рассылаются уведомления на почту
Популярные CIS: Jenkins (Hudson), Atlassian Bamboo, Cruise Control


Слайд 44 Continuous Integration (CI)

Continuous Integration (CI)

Слайд 45 CI: полный цикл разработки

CI: полный цикл разработки

Слайд 46 Agenda
IDE
Автоматизация build-процесса
Системы контроля версий
Continuous Integration
Контроль качества исходного кода
Дебаг,

AgendaIDEАвтоматизация build-процессаСистемы контроля версийContinuous IntegrationКонтроль качества исходного кодаДебаг, мониторинг и профилировка

мониторинг и профилировка


Слайд 47 Why so serious?
Пишите свои программы так, как будто

Why so serious?Пишите свои программы так, как будто человек, который их

человек, который их будет поддерживать, является серийным маньяком-убийцей и

знает ваш домашний адрес.
(Стив Макконнелл, «Совершенный код»)

Слайд 48 PMD
PMD – статический анализатор кода для языка Java
Позволяет

PMDPMD – статический анализатор кода для языка JavaПозволяет автоматически контролировать единообразие

автоматически контролировать единообразие
стиля кодирования
Автоматически распознает
Дублирование кода
Неэффективные низкоуровневые

реализации
Неиспользуемый код
Низкоуровневые антипатерны
Конфигурируется перечнем правил в XML
Есть плагин для maven’а и таск для ant’a
Интегрирован с многими IDE






Слайд 49 Checkstyle
Еще один статический анализатор исходного кода
Делает упор на

CheckstyleЕще один статический анализатор исходного кодаДелает упор на соблюдение стандартов кодирования,

соблюдение стандартов кодирования, например Java Code Conventions
Позволяет конфигурировать набор

применяемых правил
Отлично интегрирован с популярными IDE и build-системами
При работе в IDE может подсвечивать ошибки прямо в процессе написания кода

Слайд 50 Sonar
Модульная open-source платформа для контроля качества исходного кода
Умеет

SonarМодульная open-source платформа для контроля качества исходного кодаУмеет снимать огромное количество

снимать огромное количество метрик
Визуализирует их, генерирует отчеты и представляет

динамику во времени

Использует PMD, Checkstyle и собственные метрики качества
Анализирует покрытие модульными тестами несколькими методами
Ищет дубликаты
Считает совокупный «технический долг»


Слайд 51 Sonar: Рабочий цикл

Sonar: Рабочий цикл

Слайд 52 Code Review
Wiki: систематическая проверка исходного кода программы с целью обнаружения и

Code ReviewWiki: систематическая проверка исходного кода программы с целью обнаружения и исправления ошибок, которые остались

исправления ошибок, которые остались незамеченными в начальной фазе разработки

Tools:
Review Board
Barkeep
Code

Striker, etc.

Слайд 53 Review Board

Review Board

Слайд 54 Code Review

Code Review

Слайд 55 Javadoc
Javadoc — стандарт для документирования классов Java. Большинство сред

JavadocJavadoc — стандарт для документирования классов Java. Большинство сред разработки программного обеспечения

разработки программного обеспечения автоматически генерируют HTML-документацию, используя Javadoc.

Джавадокированию в

вашей работе подлежат:
Все методы (кроме геттеров/сеттеров POJO конвенции)
Все классы
Все сложные алгоритмы

Слайд 56 Javadoc
Когда я возвращаюсь к разработке своего кода, который

JavadocКогда я возвращаюсь к разработке своего кода, который я не комментировал.*http://developerslife.ru/12

я не комментировал.
*http://developerslife.ru/12


Слайд 57 Practice #4 – checkstyle
Требуется: cкачать и установить плагин

Practice #4 – checkstyleТребуется: cкачать и установить плагин CheckstyleHelp->Eclipse Marketplace->Checkstyle Plug-inВнимательно

Checkstyle
Help->Eclipse Marketplace->Checkstyle Plug-in
Внимательно читаем лицензионное соглашение и соглашаемся с

ним
Устанавливаем плагин



Слайд 58 Agenda
IDE
Автоматизация build-процесса
Системы контроля версий
Continuous Integration
Контроль качества исходного кода
Дебаг,

AgendaIDEАвтоматизация build-процессаСистемы контроля версийContinuous IntegrationКонтроль качества исходного кодаДебаг, мониторинг и профилировка

мониторинг и профилировка


Слайд 59 Debug
Отладка — этап разработки компьютерной программы, на котором обнаруживают,

DebugОтладка — этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют

локализуют и устраняют ошибки. Дебагер есть во всех Java

IDE. Наиболее удобный – в IDEA.

Дебагер помогает:
Узнать значения переменной в моменте
Построчно отлаживать программу
Переходить вверх и вниз по стеку


Слайд 60 Debug – чтобы не было потом вот так

Debug – чтобы не было потом вот так

Слайд 61 Profiling
Под профилировкой понимают сбор характеристик работающего приложения
В них

ProfilingПод профилировкой понимают сбор характеристик работающего приложенияВ них входит использование памяти,

входит использование памяти, динамика процессоров, трассировка вызовов методов
Профайлер помогает

обнаружить
Горячие места в коде, которые стоит оптимизировать
Чем занята память и течет ли она
Bottleneck’и производительности
Deadlock’и, состояние starvation
Что и когда делает GC в приложении
Профайлеры подразделяются на
Инструментирующие
Сэмплирующие


Слайд 62 VisualVM
Инструментирующий профайлер из состава JDK,
начиная с JDK

VisualVMИнструментирующий профайлер из состава JDK, 	начиная с JDK 6u7Умеет инструментировать приложение

6u7
Умеет инструментировать приложение на лету,
не требуя перезапуска
На самом

деле представляет собой кусок NetBeans’a
Является инструментирующим профайлером, то есть влияет на работу самого профилируемого приложения
Очень простой в освоении
Полностью покрывает потребности среднего разработчика в мониторинге и профилировке приложения


Слайд 63 JProfiler
Более серьезный инструмент, лучше показывает тонкие места
Поддерживает удаленную

JProfilerБолее серьезный инструмент, лучше показывает тонкие местаПоддерживает удаленную профилировкуОчень платный, но есть evaluation на 10 дней

профилировку
Очень платный, но есть evaluation на 10 дней


Слайд 64 What else?
Task tracking system (+ Wiki)

Примеры:
Atlassian Jira (+

What else?Task tracking system (+ Wiki)Примеры:Atlassian Jira (+ Confluence)RedmineBugzillaMantisYouTrack

Confluence)
Redmine
Bugzilla
Mantis
YouTrack


Слайд 65 Default Workflow

Default Workflow

  • Имя файла: java-school-18-opening.pptx
  • Количество просмотров: 120
  • Количество скачиваний: 0