Скорость не в ущерб качеству, web-разработка на java, java day,...
TRANSCRIPT
![Page 1: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/1.jpg)
Скорость не в ущерб качеству, web-разработка
на Java
Анна Тарасенко, 7bitsJavaDay-2014
![Page 2: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/2.jpg)
О себе• МФ ОмГУ (ИМИТ) (1993 – 2003, 2009 –
2013)
• В промышленной разработке с 2003 года
• Java – 10+ лет; PL/SQL – 5 лет, JS – 5+ лет
• PHP – 2 года, Python – 2 месяца, Ruby – 2 недели, С# – 2 часа чтения книжки
![Page 3: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/3.jpg)
Особенности web• HTTP - протокол без состояния
• Параллельный доступ к данным
• Разнообразие представлений данных и протоколов сериализации
• Поиск и фильтрация, пейджинг
• Разнообразные механизмы валидации форм
![Page 4: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/4.jpg)
Особенности web• Высокая вероятность атак – взлом,
DDoS, воровство данных
• Много аналитики по действиям пользователей
• Многообразие языков и часовых поясов
• Многообразие клиентов (браузеров, ОС, устройств)
![Page 5: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/5.jpg)
Немного истории
• 90-e: CGI, Perl, C++ и вот это все
• Середина 90-х: PHP, Java, JS
• 2000-е: Spring, .NET, Django, Rails, AJAX, Zend, symfony, Grails и т.д.
• 2010 – 2014: Scala (2003), Clojure (2007), Erlang (1986)… PRELANG!
![Page 6: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/6.jpg)
Требования к web• Быстрый time-to-market
• Continuous: integration, deployment, delivery
• Автоматизация миграций данных
• Логи, журналы, мониторинг всего и вся
• Отзывчивый и быстрый UI с проверками и подсказками, читаемые URI
![Page 7: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/7.jpg)
Требования к web• Внятный API, чаще REST
• Адаптивный дизайн под разные устройства
• Устойчивость к взломам, шифрование данных (часто)
• Высокие нагрузки (часто)
• Географическая распределенность (иногда)
![Page 8: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/8.jpg)
Статика или динамика?
Недостатки статической типизации:
• Много кода
• Долгая сборка
![Page 9: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/9.jpg)
Статика или динамика?
Недостатки статической типизации:
• Много кода – код генерится, много подсказок от IDE
• Долгая сборка – часть фреймворков позволяет менять view без пересборки
![Page 10: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/10.jpg)
Статика или динамика?
Преимущества статической типизации:
• Контроль типов, интерфейсы
• Читаемость кода другими людьми
• Можно пускать в код новичков
• IDE с хорошими подсказками
![Page 11: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/11.jpg)
А ведь есть еще GWT
![Page 12: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/12.jpg)
JVM – наше все?
![Page 13: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/13.jpg)
Чего хочется
• Быстрая разработка надежного кода
• Расширяемая архитектура
• Быстрый вход для новичков
• Думать о бизнес-логике, а не об инфраструктуре
![Page 14: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/14.jpg)
Почему Java?
• Статическая типизация
• Много инструментов, надо только собрать
• Быстрый вход для новичков
• Слоистая архитектура позволяет сосредоточиться на задаче
![Page 15: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/15.jpg)
Java для web
• Template engines (view) – Jade, Freemaker, Tiles, Sass, CoffeeScript
• Application layer – Spring, JavaEE, Struts, Stripes
• Работа с БД – Hibernate, JDBC Template, iBatis
• Миграции – LiquiBase, FlyWay
![Page 16: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/16.jpg)
Java для web
• Сборка и деплой – Maven, Jenkins, TeamCity, Ant
• Управление версиями конфигами – Maven, Ivy, Gradle
• Логи – Log4j и все вокруг него
• Автоматизированное тестирование – JUnit, Mockito, Spock framework
![Page 17: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/17.jpg)
Java для web
• Кэширование – Ehcache, Memcached
• Поисковые движки – Lucene, Solr, Elastic search
• Отложенные задачи – JMS, ActiveMQ, Spring Scheduling
• i18n – встроенные средства Spring
![Page 18: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/18.jpg)
Web-framework?
• Spring – содержит почти все, что требуется, но сложен в настройке
• Spark – очень простой, но все на статических классах
• NinjaFramework – заявлено много плюшек для web
• Restlet – утверждается, что прост для REST
![Page 19: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/19.jpg)
Что мы делаем• Готовим сборку Spring для быстрой
web-разработки, вместо ORM – MyBatis
• Используем DDD-подход в архитектуре, а так же CQRS и другие паттерны Fowler & Co
• Вместо MVC-фреймворков на клиенте – своя наработка на Flight, AJAX-JSON, Bootstrap
• Продаем расширяемую архитектуру по цене прототипа
![Page 20: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/20.jpg)
Все пока в процессе!
![Page 21: Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014](https://reader035.vdocuments.pub/reader035/viewer/2022081515/557fa53ed8b42ad60b8b4c68/html5/thumbnails/21.jpg)
Что почитать/послушать
• Мартин Фаулер. «Архитектура корпоративных программных приложений»
• Эрик Эванс. «Предметно-ориентированное проектирование»
• Блог Мартина Фаулера
• DDD for Rails developers
• Distributed podcast