Блог платформы

2 недели 5 дней назад

Не так давно мы объявили о мажорном релизе CUBA Platform - CUBA 7. Тем не менее, команда CUBA продолжает поддерживать предыдущие версии платформы и выпускать версии  с исправлениями безопасности и багфиксами для 6.2-6.10.

Читать далее »
1 месяц 1 неделя назад

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

Мартин Фаулер опубликовал интересную статью, одна из ключевых мыслей там: “ORM’ы помогают нам решать большое количество задач в энтерпрайз приложениях… Этот инструмент нельзя назвать симпатичным, но и проблемы, с которыми он имеет дело, тоже не милашки. Я думаю, что ORM заслуживают больше уважения и больше понимания”

Мы очень интенсивно используем ORM во фреймворке CUBA, так что не понаслышке знаем о проблемах и ограничениях этой технологии, поскольку CUBA используется в различных проектах по всему миру. Есть много тем, которые можно обсудить в связи с ORM, но мы сосредоточимся на одной из них: выбор между “ленивым” (lazy) и “жадным” (eager) способами выборки данных. Поговорим о разных подходах к решению этой проблемы с иллюстрациями из JPA API и Spring, а также расскажем, как (и почему именно так) ORM используется в CUBA и какие работы мы ведем, чтобы улучшить работу с данными в нашем фреймворке.

Читать далее »
2 месяца 1 день назад

Безусловно, в любом крупном проекте бывают баги. Именно поэтому мы с радостью согласились на предложение команды PVS-Studio проверить наш проект. В репозиторий CUBA включены форки некоторых сторонних OSS библиотек под лицензией Apache 2 и, кажется, нам нужно уделить этому коду больше внимания, анализатор нашёл довольно много проблем в этих исходниках. Сейчас мы используем SpotBugs в качестве основного анализатора, и он не находит некоторые существенные проблемы, найденные PVS-Studio. Самое время пойти и написать дополнительные проверки самим. Большое спасибо команде PVS-Studio за проделанную работу.

Читать далее »
2 месяца 2 недели назад

Три года назад мы объявили о выходе CUBA 6. Та версия стала революционной: вместо закрытой проприетарной лицензии мы стали распространять фреймворк свободно, по лицензии Apache 2.0. В то время мы не могли даже и близко представить, насколько это отразится на развитии фреймворка в долгосрочной перспективе. Сообщество CUBA стало расти в геометрической прогрессии, и мы столкнулись со всеми возможными (а иногда и невозможными) способами применения фреймворка. Сейчас мы представляем вашему вниманию CUBA 7. Надеемся, что эта версия сделает разработку ещё проще и приятнее для всех членов сообщества: от начинающих, которые только познакомились с CUBA и Java, до опытных разработчиков, за плечами которых не один завершенный проект уровня большой компании.

Читать далее »
2 месяца 2 недели назад

В процессе разработки очень часто возникает необходимость создать экземпляр класса, имя которого хранится где-нибудь в конфигурационном XML или вызвать метод, название которого написано в виде строки как значение атрибута какой-нибудь аннотации. В таких случаях ответ один: “Используй reflection!”.

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

Читать далее »
4 месяца 2 недели назад

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

Читать далее »
4 месяца 2 недели назад

Слово “мажорный” в последнем релизе платформы и студии более чем заслужено. Это самый важный релиз за последние 3 года, который стал результатом анализа запросов и пожеланий коммьюнити с нашего форума, множества посещенных конференций и JUG-ов. Эта статья кратко обозначает наиболее интересные и поворотные нововведения.

Читать далее »
6 месяцев 2 недели назад

На прошлой неделе команда из Google наконец-то выложила исходники фреймворка J2CL, о котором говорили с 2015 года. Идея трансляции Java в JavaScript далеко не нова и все уже давно набили шишек с Google Web Toolkit, однако этот продукт сообщество ждало как ни один другой - о нем говорили и делали выступления, но никто его не видел.

Прошло больше 3х лет с первого анонса и, кажется, что продукт потерял рынок даже не родившись. Сегодня у нас есть Scala.js, Kotlin.js и JSweet, не говоря уже о том, что веб-разработка захвачена TypeScript и для Java не осталось места. За такое время многие, даже самые преданные джависты, утратили веру в “Java для Front end” и обуздали тот или иной JavaScript фреймворк.

Поскольку релиз всё таки случился, давайте посмотрим, что получилось и кому это может пригодиться.

Читать далее »
7 месяцев 16 часов назад

Скрипты - один из самых распространенных способов сделать приложение более гибким, с возможностью поправить что-то прямо на ходу. Конечно же, у этого подхода есть и недостатки, нужно всегда помнить про баланс между гибкостью и управляемостью. Но в этой статье мы не будем рассуждать “в общем” по поводу плюсов и минусов использования скриптов, мы рассмотрим практические способы реализации этого подхода, а также представим библиотеку, которая предоставляет удобную инфраструктуру для добавления скриптов в приложения, написанные на Spring Framework.

Читать далее »
7 месяцев 5 дней назад

Не секрет, что часто разработчикам приходится переходить на новые фреймворки, при этом, зачастую, приходится менять свои привычки. Эта статья как раз об этом - о впечатлениях опытного RoR разработчика, переходящего на CUBA Platform. В чем сходства и различия, что более эффективно, а что - более доступно для понимания - читайте в этой статье.

Читать далее »