All Articles ↓
47 месяцев назад
Вышла новая версия платформы CUBA 6.0 и Studio 2.0

Вышел новый мажорный релиз платформы CUBA, в котором реализован ряд крупных нововведений, а также некоторые исправления и багфиксы (cписок изменений).

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

Основные изменения перечислены ниже.

Функциональные особенности языка Java 8

В данном релизе платформа CUBA переехала на Java 8 и теперь Вы можете использовать все возможности последней версии языка JAVA в коде своего приложения: лямбды, потоки и т.д. Мы добавили новые интерфейсы для листнеров, чтобы реализовать лямбда-выражения в классах Datasource, CollectionDatasource и некоторых других. Старые интерфейсы все еще работают, но объявлены устаревшими.

text

EclipseLink ORM

В качестве движка ORM вместо OpenJPA теперь используется EclipseLink 2.6. Он поддерживает последнюю спецификацию JPA 2.1 и позволяет использовать функции базы данных и выражение "on" в JPQL. Кроме того, EclipseLink дает более эффективные возможности для загрузки коллекций связанных сущностей из базы данных (см. документацию по атрибуту fetch в представлениях).

Весь API для работы с данными на уровне EntityManager остался без изменений. Главное отличие заключается в том, что при доступе к незагруженному атрибуту теперь выдается исключение. Ранее незагруженные атрибуты можно было читать, и в ответ возвращалось null, что приводило к исключениям типа NullPointerException. Мы считаем, что новый подход с подробным описанием исключения позволит лучше выявлять и устранять неисправности, так как текст исключения будет подсказывать, какой атрибут нужно включить в представление.

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

Улучшения в плане безопасности

Мы усилили контроль над отправкой данных со среднего слоя на клиентский уровень. Во-первых, все права доступа к атрибутам теперь применяются на среднем слое и значения скрытых атрибутов просто не передаются на клиентский уровень. DataManager больше не сохраняет значения атрибутов, доступных только для чтения. Во-вторых, мы убрали возможность загрузки скалярных значений через DataManager, потому что их невозможно проверить относительно прав доступа к атрибутам сущностей. То есть, Вы больше не сможете выполнять запросы вида «select e.name, count(e) from ns$MyEntity e …» через DataManager. Если Вам требуются такие данные на клиентском уровне, то необходимо создать сервис с соответствующим методом в своем проекте и установить для него специфические права. Если же Вам нужно получить только количество записей, соответствующих определенному критерию, используйте новый метод DataManager.getCount(). Мы также убрали атрибут LoadContext.useSecurityConstraints. Это означает, что если Вам требуется обойти ограничения безопасности с клиентского уровня, то придется создать собственный метод сервиса, который будет загружать данные через EntityManager и возвращать их на клиентский уровень.

Развертывание в одном WAR-файле

Ранее любое CUBA-приложение состояло как минимум из двух WAR-файлов (или распакованных WAR-файлов в случае быстрого развертывания в Tomcat). Это создавало лишние трудности в развертывании приложений небольшого масштаба, особенно в облачных средах. Теперь Вы можете создать один WAR-файл, который будет содержать и клиентский уровень приложения, и его средний слой, что упрощает процесс развертывания.

Обновленные компоненты

Новый релиз платформы базируется на свежих версиях входящих в нее фреймворков и инструментов:

  • Spring Framework 4.2.0
  • Vaadin 7.5.6
  • AmCharts 3.17.1
  • Lucene 5.3.0
  • Gradle 2.6
  • Tomcat 8

Мы заменили API логгирования на SLF4J, а его реализацию - на Logback 1.1.3. Однако в своем приложении Вы по-прежнему можете использовать Commons Logging или Log4j API благодаря входящему в пакет зависимостей мосту log4j-over-slf4j bridge.

CUBA Studio 2.0

Мы разработали новую упрощенную визуальную тему для CUBA Studio. Обновленный пользовательский интерфейс Studio основан на Vaadin 7 и поддерживает более качественное масштабирование при использовании функции "zoom" в браузере.

text

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

text

Полный список изменений в текущем релизе Studio можно посмотреть здесь.

Развернутые примечания к релизу платформы CUBA 6.0 доступны по этой ссылке.

Андрей Леднев