• Тонкое искусство быть девелопер адвокатом

    • Перевод


    От переводчика: профессия девелопер адвоката появилась не так давно и почти у каждого крупного продукта или технологии есть свой адвокат, технологические компании понимают важность этого канала общения с миром. Есть такая должность и в Haulmont. Когда мы формулировали требования к вакансии, нам самим пришлось отвечать на вопрос "А что же должен делать девелопер адвокат?" И эта статья простым языком и очень исчерпывающе на этот вопрос отвечает.


    Несколько лет назад я написал статью “Кто такой вообще этот девелопер адвокат?”, в которой постарался помочь людям в технической индустрии понять, что входит в эту роль. И до сих пор я получаю тонны вопросов про это в Твиттере.


    В этой статье я собираюсь пролить свет на роль Developer Advocate и в этот раз приведу конкретные примеры задач и обязанностей, которые я выполняю в своей ежедневной работе в качестве Senior Developer Advocate в Microsoft, а также в качестве человека, который занимается этим с 2015 года.

    Читать дальше →
  • Что нового в JPA Buddy 3.0

      Мы выпустили JPA Buddy 3.0! В этом релизе наконец-то появилась генерация скриптов для Flyway, поддержка Kotlin, а также другие улучшения и исправления. Посмотрим на эти нововведения подробнее.

      Для тех, кто не слышал о JPA Buddy: это плагин, который упрощает работу с JPA, Hibernate, Spring Data JPA, Liquibase и подобными технологиями. Подробнее о нем можно почитать в этой статье.

      Читать далее
    • Hibernate и Spring Boot: кто отвечает за имена таблиц?

        Когда мы добавляем зависимость в проект, мы подписываем контракт. Зачастую, многие условия в нем «написаны мелким шрифтом». В этой статье мы рассмотрим кое-что, что легко  пропустить при подписании трехстороннего контракта между вами, Hibernate и Spring Boot. Речь пойдет о стратегиях именования.

        Читать далее
        • +15
        • 2,9k
        • 2
      • Нельзя просто взять и сделать продукт из внутреннего фреймворка или как прошел День открытых дверей Jmix

          В начале апреля мы анонсировали наше первое крупное онлайн-мероприятие для Java и Rect разработчиков — День открытых дверей open source платформы Jmix. 

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

          Читать далее
        • Вы уверены, что вам нужен API?

          • Перевод


          От переводчика: При разработке бэкэнда наличие API для фронт-энда стало практически повсеместным стандартом. Однако можем ли мы называть это "настоящим" API? Предлагаем вашему вниманию интересное пятничное чтение, которое, возможно, повлияет на API, которые мы все разрабатываем.


          “Слабая связанность, сильное сцепление”, “сокрытие информации”. Известные принципы дизайна. Тем не менее, к ним очень часто не относятся серьезно при разработке архитектуры ПО, особенно когда это касается взаимодействия между клиентской и серверной частью (фронтом и бэком на жаргоне разработчиков).


          Ценность API — в сокрытии информации


          Предоставляя API, системы решают, какая информация должна быть доступна из внешнего мира, а какая будет держаться в секрете (“сокрытие информации”).


          Почему это важно? Потому что чем объемнее API, тем дороже его поддерживать. Представьте себе крайний случай — открытие каждой детали реализации. Каждое изменение в системе может сломать код, который используют ваши клиенты. Именно по этой причине мы стремимся разрабатывать компактные API. Я писал статью (перевод на хабре) по этой теме в контексте описания шаблона “Регистрация событий”.


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

          Читать дальше →
        • Анонс Jmix 0.9 — предварительный релиз фреймворка


            Мы в компании Haulmont разрабатываем Jmix. Это фреймворк с открытым кодом для разработки backend для data-centric приложений, основанный на Spring Boot, наследник CUBA Platform.


            Мы предоставляем готовую архитектуру, сервисы и API, которые строятся поверх модели данных, а разработчики уже строят эту модель данных (JPA) и пишут бизнес-логику (Spring Boot). Всё остальное предоставляется из коробки или может быть легко подключено: подсистемы безопасности и аудита, автоматическое создание REST API, multi-tenancy и прочие системные сервисы. В дополнение разработан инструментарий для более эффективной работы с фреймворком.


            Jmix 0.9 — это последняя предрелизная, “практически стабильная” ветка фреймворка. Вместе с этим релизом мы также обновляем инструмент для Jmix разработчиков — Jmix Studio: 0.9.1-202.


            В этом релизе мы “заморозили” все основные API: определение модели данных, слой доступа к БД, а также систему безопасности. С большой долей вероятности все это будет перенесено без изменений в версию 1.0. Это означает, что можно рассматривать Jmix 0.9 как отличный вариант для разработки MVP. Ожидается, что миграция на 1.0 будет практически незаметной.


            Давайте взглянем на самые заметные изменения в разных частях фреймворка.

            Читать дальше →
          • Анонс онлайн-дня открытых дверей для Java и React разработчиков: особенности работы в команде open source фреймворка


              Опыт крупных конференций для разработчиков показал: жизнь онлайн — действительно хороший повод пообщаться с единомышленниками со всей страны. Поэтому мы приглашаем всех причастных к Java или React разработке на онлайн-день открытых дверей Jmix.

              В течение часа мы расскажем:

              • как устроена разработка open source фреймворка;
              • чем создание технологий и инструментов для девелоперов отличается от продуктовой разработки;
              • почему разработчику платформы нужно гораздо глубже погружаться в используемые технологии;
              • чем занимаются люди с экзотической профессией Developer Advocate и, конечно, ответим на все вопросы.

              Когда: 7 апреля в 18:00 (МСК)

              Чтобы присоединиться, зарегистрируйтесь на Timepad: haulmont.timepad.ru/event/1587632

              Все еще думаете «быть или не быть»? Тогда посмотрите под кат — там подробности о докладах и наших спикерахах — вы уже знакомы с ними по многим нашим материалам на Хабре.
              Читать дальше →
            • Haulmont и тайные комнаты или почему мы не закрыли офисы разработки за год пандемии

                Многие компании полностью отказались от работы в офисах — хорошо, что это были не мы. За год удаленки все офисы Haulmont были открыты для сотрудников, хоть и стояли почти пустые. Делимся впечатлениями от такого эксперимента и показываем, как выглядят рабочие места, кухни, спортзалы и зоны отдыха наших коллег.

                Так повелось, что на Хабре мы чаще пишем экспертные материалы про технологии или наши продукты, но почти (а если быть откровенными, то и совсем) не говорим о жизни Haulmont. Хотя тут нам тоже есть чем поделиться. Исправляемся.

                Читать далее
              • JPA Buddy: Умный помощник — половина работы

                  Ну что ж, Hello World... После почти года разработки наконец-то вышла первая версия JPA Buddy! Это инструмент, который должен стать вашим верным помощником по написанию кода для проектов с JPA и всем, что с этим связано: Hibernate, Spring Data, Liquibase и другим ПО из типичного стека разработки.

                  Чем он вам поможет? Если кратко, JPA Buddy упростит работу с JPA и тем самым сэкономит ваше время. В этой статье мы взглянем на основные фичи JPA Buddy, немного обсудим его историю и поговорим о его преимуществах. Надеюсь, он займет достойное место среди любимых инструментов Java-разработчиков, которые пользуются JPA, Spring, Liquibase и, конечно же, самой продвинутой Java IDE — IntelliJ IDEA.

                  Читать далее
                • Jmix / CUBA Platform: итоги 2020 и планы на 2021 год

                    В этой статье я подведу итоги 2020 года и расскажу о планах команды CUBA на 2021. Несмотря на внешние потрясения, прошедший год был очень продуктивным для нашей команды, а новый обещает быть еще интереснее. 

                    TL;DR

                    Для тех, кто не знаком с Jmix: это новое поколение CUBA Platform, open source платформы для разработки широкого спектра корпоративных приложений. Jmix включает в себя фреймворк на основе Spring Boot, специализированные инструменты разработки, встроенные в IntelliJ IDEA и набор высокоуровневых компонентов. Такая комбинация значительно ускоряет и упрощает разработку приложений.

                    С выпуском Jmix в конце года мы фактически переписали бэкенд CUBA Platform, перенеся архитектуру на Spring Boot и сделав его модульным. На этом фундаменте в текущем году мы планируем:

                    - создать полнофункциональный UI клиент на React, с поддержкой визуальных конструкторов

                    - интегрировать GraphQL для взаимодействия между клиентом и сервером

                    - максимально упростить и автоматизировать DevOps

                    - поддержать возможность создания cloud native приложений

                    - предоставить больше визуальных инструментов разработчика в Studio, смещая фокус из runtime в design time. 

                    Чтобы реализовать задуманное, мы хотим удвоить команду разработки и активно ищем единомышленников. Подробности - под катом. 

                    Читать далее
                  • Jmix — будущее CUBA Platform


                      TL;DR


                      Jmix — новое название и новый большой релиз CUBA Platform. На текущий момент Jmix находится в стадии предварительного релиза, мы планируем выпустить стабильную версию во втором квартале 2021 года. Основные изменения:


                      • В ядре платформы теперь будет Spring Boot
                      • Фреймворк будет разделен на модули (data, security, audit, и т.д.)
                      • Новый подход к определению модели данных
                      • Обновление базы данных теперь производится при помощи Liquibase
                      • Процесс развертывания будет основан на стандартных средствах Spring Boot. Это обеспечит лучшую интеграцию с облачными средами выполнения

                      Мы будем активно развивать разработку пользовательского интерфейса на ReactJS, в то же время продолжим поддержку текущего фреймворка, основанного на Vaadin.


                      CUBA Platform будет поддерживаться долгое время, мы также предоставим возможность миграции на Jmix через совместимый API.


                      Официальный сайт Jmix: jmix.io.
                      Обсуждение на форуме: по-английски.

                      Читать дальше →
                      • +12
                      • 2,1k
                      • 8
                    • Организация разработки в изолированной сети — как управлять зависимостями?

                        Как можно собрать актуальный стек используемых библиотек и фреймворков чтобы комфортно заниматься разработкой если вы самоизолировались в глухой деревне, летите 8 часов в самолете или в вашей компании лимитирован доступ к всемирной паутине настолько, что вы не можете пользоваться публичными репозиториями артефактов, например таким, как maven central? Как же нам предоставить все необходимые артефакты, от которых мы зависим, включая транзитивные зависимости? Как потом их обновлять вместе с новыми версиями фреймворка?


                        image


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

                        Читать дальше →
                      • Что такое хорошо и что такое плохо. Карьера разработчика глазами его руководителя

                          В чем отличается взгляд на карьеру у разработчика и его руководителя


                          Жизнь полна противоречий. Даже свет не может определиться, кто он – частица или волна.
                          В мире разработки софта противоречий между действующими лицами вагон и маленькая тележка. Давайте рассмотрим пару – разработчик и руководитель разработки (это может быть руководитель проекта, технический менеджер, тимлид). Как выяснится, эти двое зачастую по-разному смотрят на вещи и вообще стремятся в разные стороны.



                          Чего хочет разработчик


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

                          Как он хочет развиваться? А вот так:

                          • Изучать новые технологии
                          • Решать более интересные задачи
                          • Участвовать в новых проектах
                          • Поменьше заниматься деятельностью, не связанной с разработкой
                          • Принимать решения самостоятельно

                          В то же время его руководитель хочет:


                          • Чтобы разработчик хорошо знал используемые технологии
                          • Чтобы разработчик хорошо справлялся с поставленными задачами: с должным качеством и в установленный срок
                          • Чтобы разработчик был ответственным и всегда завершал то, за что взялся
                          • Чтобы разработчик давал адекватные оценки задачам
                          • Чтобы разработчик имел понимание потребностей бизнеса и продукта в целом
                          • Чтобы разработчик своевременно сообщал о проблемах

                          Хотите знать, как добиться компромисса? Добро пожаловать под кат.
                          Читать дальше →
                        • PostgreSQL. Добавляем not null constraints в большие таблицы



                            Проекты развиваются, клиентская база увеличивается, базы данных разрастаются, и наступает момент, когда мы начинаем замечать, что некогда простые манипуляции над базами данных требуют более сложных действий, а цена ошибки сильно повышается. Уже нельзя за раз промигрировать данные с одного столбца в другой, индексы лучше накатывать асинхронно, добавлять столбцы с default значениями теперь нельзя.


                            Одной из команд, с которой надо быть осторожным на таблицах с большим количеством записей, является добавление not null constraint на столбец. При добавлении данного constraint PostgreSQL приобретает access exclusive lock на таблицу, в результате чего другие сессии не могут временно даже читать таблицу; затем БД проверяет, что в столбце действительно ни одного null нет, и только после этого вносятся изменения. Под катом я рассмотрю различные варианты, как можно добавить not null constraint, лоча таблицу на минимально возможное время или даже не лоча ее совсем.


                            TL;DR:


                            1. В PostgreSQL 12+ можно добавить check constraint на таблицу, а затем "преобразовать" его в not null constraint для конкретного столбца.
                            2. Чтобы полностью избежать блокировки таблицы, можно напрямую внести изменения в системную таблицу pg_attribute (этот пункт подробно разбирается в статье).
                            Читать дальше →
                            • +19
                            • 7,3k
                            • 6
                          • Текущее положение дел в мире Java: тренды и факты для одного из самых популярных языков программирования

                            • Перевод

                            От переводчика: несмотря на несколько рекламный характер этой статьи, автор приводит довольно-таки интересную статистику по текущему состоянию экосистемы Java. Надеемся, что эта статистика окажется полезной читателям


                            Версия этой статьи также ранее была опубликована в The New Stack.


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


                            Но это не значит, что нельзя попробовать примерно оценить состояние этой сферы.

                            Читать дальше →
                            • +28
                            • 13,4k
                            • 3
                          • Quarkus: Сверхзвуковая субатомная ветклиника


                              Это вольный пересказ моего Lightning Talk с конференции Joker 2019. С тех пор вышло несколько новых версий Quarkus, доклад приведен в соответствие с текущим положением вещей.


                              В рамках разработки нашего фреймворка CUBA Platform, мы уделяем много внимания тому, что происходит в индустрии. Хотя фреймворк CUBA выстроен вокруг Spring, нельзя игнорировать то, что происходит вокруг. И, наверняка, все заметили, что в последнее время очень много шума вокруг cloud-native фреймворков. Два новичка — Micronaut и Quarkus достаточно уверенно начинают вступать на территорию Spring Boot. В один прекрасный день было решено сделать небольшое RnD, по результатам которого я расскажу об опыте работы с фреймворком Quarkus на примере хорошо известного приложения – Petclinic.

                              Читать дальше →
                              • +14
                              • 4,1k
                              • 7
                            • Кто такой хороший QA?


                                Начнем с того, что в народе всех quality assurance инженеров (“по-нашенски”, инженеров отдела качества) обзывают тестировщиками. Это не совсем правильно, в реальности тестирование — это только часть задач QA, но кого бы это волновало. Поэтому пойдем в общем тренде и будем использовать привычное всем погоняло.

                                Итак, что же определяет хорошего тестировщика? Не будем опускаться до банальностей и говорить: внимательность, усидчивость, терпение, любопытство, талант все ломать и другую чепуху. Это все, конечно, важно, но не главное. В первую очередь у человека должно присутствовать чувство здравого смысла и ответственности.
                                Читать дальше →
                              • DIY Корутины. Часть 1. Ленивые генераторы

                                  В мире JVM про корутины знают в большей степени благодаря языку Kotlin и Project Loom. Хорошего описания принципа работы котлиновских корутин я не видел, а код библиотеки kotlin-coroutines совершенно не понятен неподготовленному человеку. По моему опыту, большинство людей знает о корутинах только то, что это "облегченные потоки", и что в котлине они работают через умную генерацию байткода. Таким был и я до недавнего времени. И мне пришла в голову идея, что раз корутины могут быть реализованы в байткоде, то почему бы не реализовать их в java. Из этой идеи, впоследствии, появилась небольшая и достаточно простая библиотека, в устройстве которой, я надеюсь, может разобраться практически любой разработчик. Подробности под катом.


                                  Читать дальше →
                                • Low-code платформы: панацея или рискованная ставка?

                                  Low-code платформы (Low code application platforms, LCAP) возникли как реакция на сложность и многообразие современных средств разработки ПО.


                                  Согласно Gartner, одним из самых известных игроков в этой области является Mendix. Продажа Siemens за космические $700 млн. это подтверждает. Так что я буду использовать эту платформу как пример, хотя аналогичные выводы будут верны и для Outsystems, Appian, Kony, Betty Blocks и других.


                                  image


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


                                  То есть разработчики больше не нужны?!

                                  Читать дальше →
                                • Новые карты CUBA

                                    maps


                                    Работа с геопространственными данными и отображение карт являются неотъемлемыми составляющими множества бизнес-приложений. Это могут быть городские и региональные информационные системы, приложения для нефтегазовой отрасли, системы управления транспортной инфраструктурой, а также службы доставки и многие другие. У нас в CUBA Platform для построения подобных приложений помимо базовых возможностей, предоставляемых из коробки, существует довольно обширный набор дополнений и компонентов. Одним из них является Charts and Maps, которое помимо отображения графиков позволяет интегрировать в визуальную часть приложения Google-карты. В прошлом году Google обновил условия использования своих картографических сервисов, что повлекло за собой рост стоимости, а также ввел условие обязательного наличия платежного профиля для использования API. Эти обстоятельства заставили большинство наших клиентов задуматься об альтернативных поставщиках карт, а нас подтолкнули к разработке нового компонента карт.

                                    Читать дальше →
                                    • +12
                                    • 2,8k
                                    • 4

                                  Самое читаемое