10 December 2012

Кофе, табак и bootstrap за 5 секунд

Java
Опуская лукавство в заголовке, речь пойдет о моем свеженьком опен-сорс начинании, которое показано к употреблению вовнутрь и наружно всем Java программистам.

Встречайте Tobacco Bootstrap или просто в дальнейшем Табак, который cобрал все лучшее, что я видел в мире веб-проектов в один архетип для Maven.

UPD: Табак обновлен до 1.0.2 с Twitter Bootstrap 2.2.2 внутри, и кроме того этот релиз уже уйдет в центральный репозиторий, то есть инсталляция больше не нужна

Зачем и почему


Думаю всем знакомо чувство уныния при начинании нового проекта на Java. Ты загораешся интересной идеей, открываешь любимую Идею (простите уж за каламбур) и осознаешь, что придется настроить проект как следует, прежде чем все хотя бы заведется, а потом выкачать полдесятка JS-библиотек и накрапать какой никакой CSS, прежде чем он будет выглядеть лучше чем Yahoo в 98-ом году. Хорошо, если все это успеется сделать сегодня к вечеру. Может я ошибаюсь насчет вас, но меня это чувство уныния преследует регулярно

Для начала демо проекта из Табака. Надеюсь выдержит

Это не один-в-один стартовый проект — кое где добавил визуальные комментарии, а также есть демо страница. Так понятней и не надо каждый раз удалять из свежего проекта мусор.

Конечно свистульки вроде Spring Roo или гламурный Play давно решают эту проблему. Но как то у меня с ними не сложилась любовь. Иногда я говорил себе — все, надо приучаться к магии — выкачивал Roo, ставил, запускал и внезапно натыкался на баги в самом Roo еще до введения команд вообще. Ну я в тот раз так просто не сдался, но дальше ситуация была не лучше. Шаг влево, шаг вправо от туториала — все разваливается на кусочки и я обнаруживаю себя на багтрекере Roo, ища решения проблем, которые не позволяют мне сделать то, что сам бы сделал бы за 5-10 минут (зачем ты мне тогда, Roo?). Ах да, еще и отказ разработчиков генерить JSP вместо JSPX меня просто сразил. Roo не для меня :(

Что до Play, то меня просто не устраивает его производительность, возможно сейчас там дела с этим и получше стали, но даже если так, не им живет весь Java-мир. Да и как то не для меня — менять ключевые библиотеки и совместимость с J2EE просто чтобы сэкономить на старте. По ходу написания этих строк подумалось, что надо бы опробовать его опять!

Есть же мавен! В нем есть архетипы! А дотнетчики не дремлют! И, в очередной раз облизнувшись на Twitter Bootstrap, я накопил ярость, смахнул пыль со своих знаний о Maven и взялся за дело. Что же в итоге получилось? В итоге джависты и джавистки получили шаблон веб-пирожков на Twitter Bootstrap, которые готовятся за 5 секунд

Таких валом, скажете вы, и будете правы. Но только наполовину — существует множество архетипов веб-приложений, заточенных на конкретный фреймворк. Табак тоже заточен на Spring, но только потому что это мейнстрим для веб-приложений (да и вообще он мне вдобавок нравится больше всех — для кого же делать, если не для себя). Основной упор в архетипе сделан не на сервер-сайд, а на клиентскую часть приложения — сделать проект приятным на вид и современным.

Серверная часть


Внутри из сервер-сайда вы не найдете трех уровней, настроенной базы данных или правил безопасности, только настроенный контекст и пару контроллеров. Возможно в будущих версиях, я сделаю какие то закомментированные части на эту тему, но не более. Идея архетипа — быть ненавязчивым, и не требовать от вас трех уровней, если вы делаете приложение на две страницы, не требует от вас MySQL, если вы хотите опробовать MongoDB, не заставляет вас натужно жевать глазами JSPX (есть только необходимый минимум чистого JSP)

Проект сгенерированный из Табака — сразу многомодульный. Никаких особых недостатков, кроме большего количества папок, я в этом не увидел, зато область возможных проектов больше не ограничивается одним лишь Web.

Зато на клиент-сайд вы получите все что нужно, и даже чуть больше!

Клиентская часть


Внутри — последние версии Twitter Bootstrap, jQuery, Underscore.js и Bootstrap.js, а также Modernizr и Normalize.css. Сам код темплейтов и необычные файлики в корне проекта — из проекта H5BP, где ребята потрудилсь сделать качественный темплейт для HTML5.

Кроме TB, внутри оставлены закомментированные CSS из проекта H5BP на случай если вы не переносите попсу, а любите хардрокхардкор

Также не обойдена стороной популярность javascript-темплейтов. Внутри — лучший из лучших — dust.js, который ребята из LinkedIn признали лучшим из более чем 20 других. Более того, dust.js темплейты в Табаке можно писать как обычные JSP страницы — они автоматически скомпилируются и клиент получит уже готовые к употреблению скомпилированные шаблоны. Это можно сказать не изюминка, а целая изюмина Табака.

Также я постарался собрать то, что как говорится, в хозяйстве всегда пригодится — функции для работы с URL, UUID, Base64, генерации маленьких случайных строк, pub/sub для событий и тд.

Все скрипты автоматически сжимаются и аггрегируются в продакшен-режиме. Я еще не говорил про режимы? В проекте сразу настроены три профиля — production, development и debug!

К сожалению без ложки дегтя не обошлось — yui-compressor-plugin потребует Maven последней версии (хотя бы 3.0.4), а buildernumber-maven-plugin — настроенную систему контроля версий.

После генерации проекта и перед первым запуском, необходимо ваш проект положить в какой нибуть репозиторий. Это необходимо для плагина buildnumber-maven-plugin. Решение включить этот плагин, похоже, единственное о чем я жалею. Не всем он нужен, а систему контроля версий настроить придется всем.В следующей версии стоит от этого избавиться.

Да, до сих пор ни одного блока кода в статье :) Даже не сказал, как установить, подлец. Это потому что я всех отправлю читать README, который в корне проекта, где детально описаны инструкции по установке.

В общем и целом, надеюсь Табак спасет не один час жизни каждому из нас. На очереди — прорыв в Maven Central и апдейт Twitter Bootstrap до версии 2.2.2
Tags:javajavascripthtml5twitter bootstrapmaventobacco
Hubs: Java
+16
29.6k 108
Comments 18
Popular right now
Профессия Java-разработчик
December 1, 202082,500 ₽SkillFactory
Комплексное обучение JavaScript
December 14, 202027,000 ₽Loftschool
Java QA Engineer
December 21, 202060,000 ₽OTUS
Java Developer. Professional
December 22, 202060,000 ₽OTUS
JavaScript Developer. Professional
December 24, 202070,000 ₽OTUS
Top of the last 24 hours