Как стать автором
Поиск
Написать публикацию
Обновить
174.49

Java *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

ServiceLoader: встроенный DI-фреймворк, о котором вы, возможно, никогда не слышали

Время на прочтение5 мин
Количество просмотров11K
Салют, друзья. Уже в эту пятницу пройдет первое занятие в новой группе курса «Разработчик Java». Именно этому курсу и будет посвящена текущая публикация.



Многие из java-разработчиков для внедрения зависимостей используют Spring. Некоторые, возможно, пробовали Google Guice или даже OSGi Services. Но многие не знают, что в Java уже есть встроенный DI. Думаете это появилось в Java 11 или 12? Нет, он доступен с Java 6.
Читать дальше →

Приглашаем на DINS Java EVENING 26 июня

Время на прочтение2 мин
Количество просмотров1.2K
Рады пригласить всех интересующихся java-разработкой на очередной открытый DINS Java EVENING, который пройдет в нашем офисе на Старо-Петергофском, 19.

На встрече мы познакомимся с опытом TextBack и узнаем, как проходит их миграция с Vert.x на Spring. Коллега из Genestack поделится своим опытом построения билд-системы на Gradle в большом проекте с нуля.

Под катом — подробнее о докладах и спикерах, ссылка на регистрацию для участия во встрече.

image

Читать дальше →

Стильная, модная, молодежная разработка BPM на Camunda

Время на прочтение7 мин
Количество просмотров154K
image

BPM-разработка — дело непростое. Это обусловлено тем, что процесс должен быть читаемым и понятным заказчику, а не только корректным с технической точки зрения.

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

2018 год принципиально изменил наш подход к разработке бизнес-процессов. Ниже — о том, как эволюционировал этот подход и как менялись мы.
Читать дальше →

Современный подход к конкурентности в Android: корутины в Kotlin

Время на прочтение10 мин
Количество просмотров26K
Привет, Хабр!

Напоминаем, что у нас уже открыт предзаказ на долгожданную книгу о языке Kotlin из знаменитой серии Big Nerd Ranch Guides. Сегодня мы решили предложить вашему вниманию перевод статьи, рассказывающей о корутинах Kotlin и о правильной работе с потоками в Android. Тема обсуждается очень активно, поэтому для полноты картины также рекомендуем посмотреть эту статью с Хабра и этот подробный пост из блога компании Axmor Software.
Читать дальше →

Выборочное логирование трафика для сервисов SOAP

Время на прочтение5 мин
Количество просмотров4.2K
Практически в любом нашем проекте, который интегрируется с сервисами заказчика, используются SOAP-сервисы. И в каждом таком проекте есть задача логирования информации. Мы особенно заинтересованы в логировании запросов, которые связаны с бизнес-операциями решения. Например, сотрудник ввел неправильные данные и сервис вернул ошибку. Мы хотим знать детали этой ошибки и как можно быстрее её поправить или вынести на обсуждение с заказчиком.

Мы хотели бы видеть запросы нашего клиента и ответы сервиса в неизменном виде, поскольку это помогает разбирать возникающие проблемы.

В этой статье расскажем, как мы настроили выборочное логирование трафика для сервисов SOAP.


Читать дальше →

#ITX5 соберет тусовку JAVA-разработчиков

Время на прочтение1 мин
Количество просмотров2.1K
X5 Retail Group – это не только 14 тысяч «Пятёрочек», тысяча «Перекрёстков» и «Каруселей», но еще и 1 300 айтишников, включая разработчиков на JAVA. В Х5 создано множество решений с помощью JAVA, мы готовы делиться своими кейсами и слушать партнеров.
9 июля соберёмся в офисе #itx5 именно для этого.

В программе:

18:30 – чай-кофе и печеньки
19:00 — Александр Краснощеков из X5 ответит на вопрос «Сколько нужно абстракций, чтобы запланировать машину в рейс?»
19:20 — Виталий Куценко из Otus раскроет тему «Optional. История развития и применение в разных версиях java»
19:40 — Дмитрий Латышев из Leroy Merlin поговорит про Stream Processing в общем и Kafka Stream в частности
20:00 – поболтаем за кофе и вкусностями
20:20 – Павел Филькенштейн из Lamoda расскажет, правда ли Kotlin настолько хорош, как говорят
20:50 –нетворкинг.
Читать дальше →

Не Spring Boot’ом единым: обзор альтернатив

Время на прочтение13 мин
Количество просмотров30K


В настоящее время нет недостатка во фреймворках для создания микросервисов на Java и Kotlin. В статье рассматриваются следующие:
Название Версия Год первого релиза Разработчик
Helidon SE 1.1.1 2019 Oracle
Ktor 1.2.1 2018 JetBrains
Micronaut 1.1.3 2018 Object Computing
Spring Boot 2.1.5 2014 Pivotal
Читать дальше →

Как Java 10 изменяет способ использования анонимных внутренних классов

Время на прочтение5 мин
Количество просмотров9.3K
Друзья, как вы уже заметили, в конце июня у нас стартует немало новых групп, среди них очередной поток полюбившегося всем курса «Разработчик Java». Прямо сейчас делимся с вами новым переводом подготовленным для студентов данного курса.



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

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

Java, Istio, Kubernetes, Docker — приглашаем на митапы IBM в Москве и Санкт-Петербурге

Время на прочтение6 мин
Количество просмотров2.1K


Привет, Хабр!

Напоследок перед летними каникулами решили порадовать уважаемых подписчиков серией митапов! На следующей неделе их будет целых три! И не только в Москве…

  • 19 июня в 18:00 (Москва) в офисе IBM митап по Java технологиям. У нас будет Java Champion, Себастиан Дашнер. Будем обсуждать использование Java в новых облачных реалиях.
  • 20 июня в 18:00 (Москва) в офисе IBM митап по Service Mesh — Istio. Давно хотели сделать и тут к нам приезжают основные контрибьюторы проекта. К примеру, Вадим Айзенберг входит в топ-5 людей — контрибьюторов Istio.
  • 20 июня в 18:00 (Санкт-Петербург) — Себастиан Дашнер выступит совместно с Денисом Цыплаковым на площадке DataArt по темам Java и микросервисных архитектур

Для детальной программы и регистрации (количество мест, к сожалению, ограничено!) — смотрите далее!
Читать дальше →

В Java может появиться новая сериализация

Время на прочтение4 мин
Количество просмотров11K
На сайте OpenJDK появился новый исследовательский документ, в котором описывается идея введения в язык новой улучшенной сериализации взамен старой.

Сериализация в Java существует с версии 1.1, то есть практически с момента её рождения. С одной стороны, сериализация является очень удобным механизмом, который позволяет быстро и просто сделать любой класс сериализуемым посредством наследования этого класса от интерфейса java.io.Serializable. Возможно даже, эта простота стала одной из ключевых причин, почему Java набрала такую огромную популярность в мире, ведь она позволила быстро и эффективно писать сетевые приложения.

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

Введение в Spring, или что делать, если по всему проекту @Autowired и @Component, а вы не понимаете, что это

Время на прочтение6 мин
Количество просмотров120K
Приветствую тебя, Хабр!

Эта статья будет полезна тем, кто уже начал изучать Java и даже успел добиться некоторых успехов в понимании Java Core, и вот услышал слово Spring. И, возможно, даже не один раз: знание Spring Framework, как минимум, фигурирует в описаниях множества вакансий для джавистов. Эта статья поможет вам взобраться на самую первую ступеньку: понять общую идею столь популярного фреймворка.

Начнем издалека. Существует такое понятие как Inversion of Control, по-русски – Инверсия управления, сокращенно – IoC. IoC — один из принципов, приближающий наш код к слабосвязанности. IoC — это делегирование части наших обязанностей внешнему компоненту.

Существуют разные реализации IoC подхода, нас интересует одна из них — Dependency Injection, внедрение зависимостей. Что это такое, название говорит само за себя, так что раскрыть ее я постараюсь на примере. Мы пишем приложение, автоматизирующее работу сети магазинов. Есть классы Shop (магазин) и Seller (продавец). У класса Seller имеется поле типа Shop — магазин, в котором работает продавец. Вот мы и столкнулись с зависимостью: Seller зависит от Shop. Теперь задумаемся, как в объект Seller попадет объект Shop? Есть варианты:

  • Внедрить его через конструктор и сразу, при создании продавца, указывать магазин, в котором он работает:

public class Seller {
    
    private Shop shop;

    public Seller(Shop shop) {
        this.shop = shop;
    }
}

  • Создать сеттер и с помощью его вызова устанавливать продавцу магазин:

public class Seller {

    private Shop shop;

    public void setShop(Shop shop) {
        this.shop = shop;
    }
}

Перечисленные два способа — это реализация Dependency Injection (но пока еще это не IoC). И, наконец, мы подобрались к спрингу: он предоставляет еще один способ внедрять зависимости (а тут уже IoC).
Читать дальше →

Объектно-ориентированное программирование в Java и Python: сходства и отличия

Время на прочтение21 мин
Количество просмотров56K

Привет, Хабр! Представляю вашему вниманию перевод статьи “Object-Oriented Programming in Python vs Java” автора Джона Финчера.


Реализация объектно-ориентированного программирования (ООП) в языках Java и Python отличается. Принцип работы с объектами, типами переменных и прочими языковыми возможностями может вызвать затруднение при переходе с одного языка на другой. В данной статье, которая может быть полезной как для Java-программистов, желающих освоить Python, так и для Python-программистов, имеющих цель лучше узнать Java, приводятся основные сходства и отличия этих языков, применительно к ООП.


Подробнее – под катом.

Читать дальше →

Интеграционные тесты баз данных с помощью Spring Boot и Testcontainers

Время на прочтение5 мин
Количество просмотров25K

1. Обзор


С помощью Spring Data JPA можно легко создавать запросы к БД и тестировать их с помощью встроенной базы данных H2.


Но иногда тестирование на реальной базе данных намного более полезно, особенно если мы используем запросы, привязанные к конкретной реализации БД.


В этом руководстве мы покажем, как использовать Testcontainers для интеграционного тестирования со Spring Data JPA и базой данных PostgreSQL.

Читать дальше →

Ближайшие события

JetBrains Night Moscow: как это было

Время на прочтение1 мин
Количество просмотров3.6K
В апреле мы провели JetBrains Night Moscow — получилась отличная встреча с друзьями: интересные темы, много живого общения и, конечно, выступления спикеров JetBrains. К нам пришло более 700 гостей. Спасибо каждому за то, что вы сделали вечер таким классным!

Читать дальше →

Более быстрая альтернатива Java Reflection

Время на прочтение7 мин
Количество просмотров8.7K
Всем привет. Сегодня хотим поделиться с вами переводом статьи, подготовленным специально для студентов курса «Разработчик Java».

В моей статье Specification Pattern (паттерн Спецификация) я специально не упомянул о лежащем в основе компоненте, который сильно помог в реализации. Здесь я подробнее расскажу о классе JavaBeanUtil, который я использовал, чтобы получить значение поля объекта. В том примере это был FxTransaction.



Конечно, вы скажете, что для получения того же результата можно использовать Apache Commons BeanUtils или одну из его альтернатив. Но мне было интересно покопаться в этом и то, что я изучил, работает намного быстрее любой библиотеки, построенной на основе широко известного Java Reflection.
Читать дальше →

Где летом поговорить про Apache Ignite и распределенные системы

Время на прочтение1 мин
Количество просмотров938
14 июня в Петербурге пройдет митап Apache Ignite Meetup: реальные кейсы. Послушаем парней, у которых получилось. Первый кейс — IMDG для расчета маржинальности торговых контрактов в Heineken. Второй — промышленная платформа Газпромнефти. Почему open source и Ignite? Куда прикрутили? Как и зачем работает? Спикеры ответят на эти и другие вопросы на митапе. Присоединяйтесь к нам вечером пятницы 14 июня. Чтобы было не душно, мы даже помещение нашли побольше — регистрация.

11 июля в Петербурге на конференции Гидра выступит Алексей Зиновьев с докладом “Не все ML-алгоритмы попадают в распределенный рай”. Он поделится своим опытом адаптации классических алгоритмов машинного обучения для выполнения в распределенном режиме, в том числе, расскажет про создание Apache Ignite ML, в котором принимал активное участие.

Читать дальше →

Java Native Image: проверка возможности использования

Время на прочтение14 мин
Количество просмотров13K


Не так давно Oracle выпустил первый релиз проекта GraalVM (https://www.graalvm.org/). Релизу был сразу присвоен номер 19.0.0, видимо, для того чтобы убедить, что проект зрелый и готов к использованию в серьезных приложениях. Одна из частей этого проекта: Substrate VM — фреймворк, который позволяет превращать Java-приложения в нативные исполняемые файлы (а также нативные библиотеки, которые можно подключать в приложениях, написанных, например, на С/С++). Эта возможность пока объявлена экспериментальной. Также стоит отметить, что у нативных приложений на Java есть некоторые ограничения: необходимо перечислять все используемые ресурсы, чтобы включить их в нативную программу; нужно перечислить все классы, которые будут использоваться с помощью reflection и другие ограничения. Полный список указан тут Native Image Java Limitations. Изучив этот список, в принципе понятно, что ограничения не такие значительные, чтобы нельзя было разработать более сложные приложения, чем хелловорлды. Мною была поставлена такая цель: разработка небольшой программы, которая имеет встроенный web-сервер, использует базу данных (через ORM библиотеку) и компилируется в нативный бинарник, который может запускаться на системах без установленной Java машины.
Читать дальше →

Обзор докладов Java-трека c конференции RigaDevDays

Время на прочтение4 мин
Количество просмотров2.9K

image Всем привет! С 29 по 31 мая состоялась конференция RigaDevDays в Риге. Это был 5-ый юбилейный год конференции. Более 600 участников собрались в кинотеатре Forum Cinemas, чтобы послушать доклады по технологиям — C#, Java, MachineLearning, Microservices, SQL.


Конференция проходила в кинотеатре. Это поначалу вызывало у меня скепсис, но как только я утонул в удобнейшем кинозальном кресле с видом на огромный экран кода, я понял что кинотеатр это идеальное место для конференций.

Читать дальше →

Сравнение алгоритмов сортировки обменами

Время на прочтение29 мин
Количество просмотров6.8K

В данной статье рассматриваются различные варианты сортировки обменами, а также даётся описание простого графического приложения processing.js с примерами сортировок.

Пузырьковая сортировка


Простейший вариант: перебирать массив от первого элемента к последнему, меняя местами (если потребуется) соседние элементы.

→ Проверить здесь

Читать дальше →

Иван Углянский и Владимир Ситников на jug.msk.ru

Время на прочтение3 мин
Количество просмотров3.2K
30 мая 2019 года Иван Углянский и Владимир Ситников представили свои доклады «Ходячие объекты-мертвецы, или GC всегда прав» и «Java тормозит: CodeCache edition» на встрече московского сообщества Java-разработчиков jug.msk.ru.


Читать дальше →

Вклад авторов