Все статьи
Содержание

    Платформа CUBA: Java RAD фреймворк с открытым кодом

    Незаметно пролетели почти три года с момента публикации первой статьи о платформе на Хабре. За это время многое изменилось: мы вышли на международный рынок, перешли к open source лицензии, обновили стек технологий и внесли множество улучшений во фреймворк и средства разработки. Поэтому вместо длинного списка изменений мы решили опубликовать ещё одну обзорную статью о платформе CUBA, которая, я надеюсь, будет интересна разработчикам кровавого энтерпрайза корпоративных информационных систем - как ещё не знакомым с платформой, так и тем, кто уже что-то слышал о ней.

    Итак, под катом вы узнаете:

    • Что представляет из себя платформа CUBA и какова её архитектура
    • Какие решения эффективнее всего разрабатывать на CUBA
    • Как платформа помогает сэкономить время разработки корпоративных систем
    • Какое окружение необходимо для развертывания CUBA-приложений
    • Как мигрировать устаревшую систему на CUBA
    • Под какой лицензией распространяется платформа и инструменты разработки
    • Как организована поддержка разработчиков

    Какие задачи решает платформа?

    В первую очередь, платформа CUBA нацелена на разработку корпоративных информационных систем. Типичные характеристики таких приложений: развитая модель данных, десятки и даже сотни относительно типовых экранов, поддержка большого количества сложных бизнес-процессов, множество отчетов, требования по разграничению прав доступа, и так далее.

    Ключевые особенности платформы:

    • высокий уровень абстракции относительно технологий, лежащих в её основе – Vaadin, Spring, EclipseLink и т.д.
    • готовые, интегрированные компоненты, решающие многие типовые задачи корпоративных систем
    • визуальные средства разработки и развитая генерация шаблонного кода

    В совокупности, это позволяет минимизировать временные затраты на “системные” задачи – настройку инфраструктуры проекта, интеграцию технологий и компонентов, разработку базовой функциональности – и сконцентрироваться на реализации бизнес-требований. В то же время, CUBA не ограничивает доступ к низкоуровневому коду, гарантируя возможность адаптировать его под нужды проекта.

    Как это устроено?

    Приложения на базе CUBA имеют стандартную трёхслойную архитектуру. Связующим элементом системы являются метаданные – информация о модели данных приложения. Благодаря метаданным визуальные компоненты знают о том, с какими данными они работают. Так, например, таблица знает, что отображает атрибуты сущности “водитель” и автоматически заполняет имена и формат колонок. Таким же образом метаданные помогают визуальным компонентам работать с базой данных через ORM, задавая графы объектов, которые нужно загрузить или обновить. Тот же принцип применяется к подсистеме безопасности, генерации отчётов и прочим частям платформы.

    Платформу отличает богатый декларативный web интерфейс: создавать экраны можно в визуальном редакторе или в XML, выбирая из десятков визуальных компонентов от всевозможных кнопок до Google Maps и динамических графиков. Логика инициализации и обработки событий задаётся затем в Java (или Groovy)-контроллерах. Учитывая привязку компонентов к данным, можно очень быстро создать сложный UI, который при этом будет легко поддерживать благодаря чёткому отделению кода от разметки. Если выбора доступных компонентов недостаточно, в платформе реализован механизм интеграции внешних компонентов и всегда есть опция - написать свой собственный компонент.

    text

    Важной частью пользовательского интерфейса CUBA является универсальный фильтр данных – компонент, позволяющий пользователям создавать свои условия поиска. Разработчику достаточно перетащить компонент на экран браузера (так мы называем типовые экраны отображения списка сущностей), и можно о нём забыть. Пользователи и администраторы системы сами определят, что и как искать.

    Основанная на ролевой модели подсистема контроля прав доступа позволяет в рантайме управлять доступностью CRUD операций над сущностями или отдельными атрибутами, видимостью экранных компонентов, а также произвольными токенами, которые можно создавать и использовать программно. Контроль доступа на уровне строк позволяет разграничить доступ к определённым записям данных. К примеру, пользователи из регионального департамента смогут видеть только документы, созданные в этом департаменте. В довершение, все изменения в данных логируются, так что вы всегда увидите, кто, что и когда изменил – очень удобно при “разборе полётов”.

    text

    CUBA предоставляет большой набор возможностей для создания бизнес-приложений. Если встроенных средств платформы не хватает, то можно то можно дополнить приложение внешними компонентами, установив их из каталога дополнений. Помимо описанного выше, платформа включает следующий набр функций:

    • управление пользователями и средства администрирования
    • создание отчётов
    • управление бизнес-процессами во встроенном визуальном дизайнере
    • многоязыковой интерфейс и поддержка разных часовых поясов
    • полнотекстовый поиск
    • универсальный REST API
    • интеграция с LDAP
    • ...и многое другое

    Если потребуется разработать пользовательский интерфейс с использованием JavaScript библиотек, таких как ReactJS, Angular или Vue.js, в дополнение к "стандартному" набору экранов, то CUBA предоставляет модуль REST API и генератор TypeScript SDK. Полученный в результате SDK будет содержать все необходимые классы модели данных и вызовы сервисов, которые могут быть использованы при разработке клиентского приложения.

    На чём я могу развернуть своё приложение?

    Что касается стадии внедрения и вариантов окружения, здесь у вас достаточно свободы выбора. Приложения, созданные на платформе CUBA, можно развернуть в различных конфигурациях, начиная от запуска всех компонентов приложения на одном сервере и до кластерных конфигураций, обеспечивающих высокую отказоустойчивость. Платформа «из коробки» поддерживает PostgreSQL, Oracle Database, Microsoft SQL Server, MySQL и HSQL (последняя обычно используется для прототипирования), между которыми можно переключаться по мере роста проекта. Также важно заметить, что CUBA-приложения могут быть развёрнуты на любом сервере Java EE Web Profile, включая Jetty, Tomcat, Glassfish, Websphere и т.д. И конечно, вы можете деплоить ваше приложение в Docker и/или запускать его в любом популярном PaaS облаке: Amazon, CloudFoundry, OpenShift или Jelastic.

    Что нужно, чтобы начать писать приложения на CUBA?

    Всё, что нужно для разработки приложений на CUBA – это Java SE. Это делает код вашего приложения максимально однородным, а значит более лёгким в сопровождении. Это также позволяет команде разработки быть более гибкой – вам не требуется отдельная группа Web-разработчиков или гуру Java EE.

    text

    Для разработки используется CUBA Studio - IDE, основанная на IntelliJ IDEA Community, а также можно установить Studio как плагин для IDEA. CUBA Studio предоставляет следующую функциональность:

    • визуальное конструирование UI и модели данных
    • автогенерация CRUD экранов, с возможностью выбора из типовых вариантов разметки
    • поддержание актуальности БД с помощью автоматической генерации и запуска скриптов обновления
    • создание стабов для обработчиков событий, сервисов и т.п.

    Studio использует метамодель проекта, предоставляемую IDEA, таким образом, поддерживается вся функциональность этой среды разработки: автодополнение кода, иньекция компонентов и сервисов, навигация и т.д. Помимо этого, в режиме разработки Studio автоматически перегружает ваш код (кроме модели данных) без остановки приложения при внесении каких-либо изменений.

    Если вам необходимо мигрировать устаревшее приложение на современный стек, CUBA также может стать хорошим вариантом. В Studio встроены средства миграции, которые автоматически генерируют модель данных и CRUD экраны на основе существующей БД, причем не меняя схему последней. Конечно, в любом случае необходимо будет портировать бизнес логику и специфические экраны, но это существенно экономит общие трудозатраты.

    Насколько активно сообщество разработчиков? Что если платформа перестанет поддерживаться?

    Вопросы, связанные с разработкой, обсуждаются на бесплатных англо- и русскоязычных форумах, вероятнее всего вы получите ответ на свой вопрос в течение дня. И, конечно, доступны коммерческие варианты поддержки и консультаций.

    На картинке ниже отображены запуски уникальных проектов на Studio за август. Studio собирает анонимную статистику только с разрешения пользователя, так что список далеко не полный. При этом за 8 месяцев с начала года количество запусков Studio увеличилось примерно в 10 раз и продолжает быстро расти - во многом благодаря переходу к open source модели. Мы постоянно участвуем в Java конференциях, что также способствует росту сообщества: в этом году мы уже были на JavaZone в Осло, QCon в Нью-Йорке, AADI в Лондоне, в ближайшее время едем на JavaOne в Сан-Франциско и JokerConf в Питер. Технически платформа развивается не менее активно. Надо отметить, что на ней построены все решения нашей компании, что является дополнительным драйвером для поддержки и развития. Кстати, недавно платформа была включена в реестр отечественного ПО – для некоторых компаний это может быть актуально.

    Open source = бесплатно?

    Почти. Как обозначено в заголовке, сам фреймворк является опенсорсным и распространяется под Apache 2.0 лицензией, его исходный код доступен на GitHub. Это означает, что использование платформы не накладывает никаких лицензионных ограничений на разработанные на ней приложения. CUBA Studio, в свою очередь, доступна в бесплатной и коммерческой версии. Бесплатная версия CUBA Studio полностью функциональна, но ряд инструментов доступны только по подписке, это:

    • визуальный редактор модели данных
    • WYSIWG редактор экранов
    • визуальный редактор тем оформления приложения

    Кроме этого, никаких ограничений не накладывается. Вы можете вести проекты любого размера и любой сложности, используя бесплатную версию CUBA Studio. Стоимость персональной годовой подписки для одного разработчика – 189$, для юридических лиц – $389. Даже если ваша подписка закончилась, то вы можете продолжать работу над проектом в CUBA Studio.

    Надеюсь, после прочтения этого обзора у вас сложилось представление о платформе CUBA. Если у вас возникло желание попробовать её “в деле”, можно просто скачать бесплатную версию Studio без регистраций и смс, пройти Quick Start и уже через несколько минут запустить своё первое CUBA приложение. Следить за новостями платформы можно в Twitter, русском и английском блогах!

    Jmix - это open-source платфора быстрой разработки бизнес-приложений на Java