Pull to refresh

Open Source RIA на Spring Framework'e

Reading time3 min
Views3.2K

RIA — Rich Internet Application.
Spring Framework — каркас приложения.
Open Source — открытый исходный код. Бери и пользуйся.
О том какое RIA приложение разработано, где можно его посмотреть и взять исходники под хабракатом.



Введение

Я считаю, учиться стоит на практике. Практика должна быть осмыслена и вызывать интерес. Т.е. придумываем идею и пытаемся её всеми силами реализовать, используя изучаемые технологии, инструменты, подходы и т. д.
На момент начала изучения Spring Framework мне пришла в голову идея о списках, которые упрощают процесс повторения выученных слов. Т.е. читая литературу на изучаемом языке мы сталкиваемся со словом, перевод которого не знаем. Добавляем его в свой электронный словарик, а вечером повторяем новые слова, причем хотелось, чтобы этот список можно было бы трансформировать для более эффективного повторения — перемешивать слова, и инвертировать направленность перевода. Для проекта придуманы специальные сущности:
  • Мемы – единица информации. Например, слово с переводом.
  • Карты – список мем.
  • Пространство – коллекция карт.
Далее появилась идея сделать разные типы карт — не только словарик для изучения языка, но и карты для конспектов. Хотелось иметь возможность в будущем расширять это разнообразие. Предполагалось, что будет общая часть для всех карт, а конкретные разновидности должны быть унаследованы от неё.
Спустя пару месяцев неторопливой работы проект появился на свет. За это время успел измениться дизайн, OpenJPA смениться на Hibernate, js-объектная модель полностью переписана с использованием jQuery UI, а вот верстка как разрабатывалась под Chrome, так и осталась только под Chrome, хотя в Firefox'e тоже смотриться сносно.

Немного о технологиях

Spring Framework 3 — в основном использовался нативный DI, Spring MVC и Spring Security. Spring Security настроен только лишь на стандартных шестеренках, используя разграничение прав пользователей с помощью групп и ролей. Прямой доступ к базе по JDBC, пресловутый remember me и md5-хеширование — all inclusive.
Hibernate — настроен с помощью нотаций. Для поиска использованы hibernate-критерии и немного HSQL.
Tiles — шаблонизатор на стороне сервера.
View Resolver возвращает Tiles View (странички) или JSON, если шаблон не может быть применен. Объекты преобразуются в json формат автоматически с помощью JacksonJson.
Всё это безобразие собирается Maven'ом.
На стороне клиента очень обширно используется ajax. Местами слишко обширно. Хотелось бы вставить какую-нибудь кеширующую прослойку. Создана объектная модель, повторяющая сущности серверной стороны, но с динамическим разбором структуры объектов. Объекты карт выполнены на основе jQuery UI. С его же помощью легко реализуется наследование объектов.
EJS — шаблонизатор на стороне клиента. Он самостоятельно подцепляет файлы шаблонов, что очень удобно. Реализован модуль переводчика на основе Microsoft Translator API, но пока не внедрен в систему. Шрифты рисуются с помощью библиотеки Cufon.

Дела серверные

С момента начала разработки репозиторий проекта валялся в самых разных местах. Т.к. исходники проекта нужны были с разных компьютеров, то сначала использовал Dropbox. Я синхронизировал папку проекта. После недели мучений завел локальный SVN-репозиторий и синхронизировал уже его. Далее перевел проект на online репозиторий. Хотел перевести в будущем проект на Git, но для начала всё ещё хотел использовать SVN. При этом репозиторий должен быть приватным. На скорую руку поиска обнаружил unfuddle. Теперь, когда я решил, показаться, перевел проект на github.
Сервис хостится на jelastic. Проект разрабатывался под серверную архитектуру reverse proxy и под jelastic пришлось его немного переделать. Из-за этого на jelastic'е есть странный баг — при первом заходе на сервис, статичные ресурсы не отдаются сервером. Нужно обновить страничку и далее всё ок.

Забирайте!

В интернете полно примеров разработки под Spring Framework, так что ещё от одного хуже не будет. Приветствуется любая активность, связанная с этим проектом.

Ссылки

Проект: http://memorized.jelastic.com
Исходники: https://github.com/evgenij-kozhevnikov/memorized
Продвинутый аналог: trello.com (UPD. by devIceMan)
Tags:
Hubs:
+9
Comments8

Articles

Change theme settings