Примерно начиная с июня по декабрь 18-го года я был занят переводом книги Java concurrency in practice на русский язык. Я не являюсь профессиональным переводчиком, инструменты, используемые для выполнения перевода, мне известны небыли да и не сильно интересовался, проект не коммерческий, а для души. Думаю, мой опыт будет интересен.
Читать полностью »
Рубрика «java» - 91
Camunda BPM Meetup Raiffeisenbank
2018-12-06 в 18:40, admin, рубрики: BPM, camunda, java, kotlin, raiffeisenIT, Блог компании Райффайзенбанк, конференции18 декабря приглашаем на первый открытый митап Camunda BPM, который пройдет на площадке Райффайзенбанка в Нагатино.
Для нас очень важно формировать сообщества и делиться знаниями и опытом как внутри компании, так и во вне. Именно поэтому на регулярной основе мы проводим открытые митапы по разным направлениям. В этот раз мы открываем двери и приглашаем вас на первый митап Camunda BPM. В рамках митапа мы также хотим создать и чат Camunda BPM User Group, с чатом жить гораздо проще, ведь тогда появляется возможность что-то быстро спросить у коллег или просто скинуть интересную статью или мем. Хотите в чат? Тогда вам сюда
Читать полностью »
Как обрабатывать ошибки на JVM быстрее
2018-12-06 в 15:03, admin, рубрики: Either, exception, exception handling, functional programming, java, scala, throw, validation, Программирование, функциональное программированиеСуществуют различные способы обработки ошибок в языках программирования:
- стандартные для многих языков исключения (Java, Scala и прочий JVM, python и многие другие)
- коды статуса или флаги (Go, bash)
- различные алгебраические структуры данных, значениями которых могут быть как успешные результаты так и описания ошибок (Scala, haskell и другие функциональные языки)
Исключения используются очень широко, с другой стороны о них часто говорят, что они медленные. Но и противники функционального подхода часто апеллируют к производительности.
Последнее время я работаю со Scala, где в равной мере я могу использовать как исключения так и различные типы данных для обработки ошибок, поэтому интересно какой из подходов будет удобнее и быстрее.
Сразу отбросим использование кодов и флагов, так как этот подход не принят в JVM языках и по моему мнению слишком подвержен ошибкам (прошу прощения за каламбур). Поэтому будем сравнивать исключения и разные виды АТД. Кроме того АТД можно рассматривать как использование кодов ошибок в функциональном стиле.
UPDATE: к сравнению добавлены исключения без стек-трейсов
30 Android-библиотек и инструментов, которые не должны пройти мимо вас в 2018 году
2018-12-06 в 12:45, admin, рубрики: android, android development, devcolibri, java, kotlin, libraries, libs, библиотеки, джава, никто не читает теги, перевод с английского, Программирование, разработка, разработка мобильных приложений, Разработка под android
В течение лета 2018 года было разработано и обновлено множество отличных Android-библиотек и инструментов.
Я составил самый новый неупорядоченный список Android-библиотек, инструментов и проектов, которые могут оказаться интересными или полезными во время вашей повседневной работы. Они также отлично подойдут для вдохновения или экспериментов.
Надеюсь, вам понравится. Давайте начнём!
Spring + Firebird + REST. Часть 1 Конфигурирование проекта
2018-12-06 в 6:06, admin, рубрики: firebird, java, spring data, spring restВместо вступления
Если разбираешь что-то, попробуй это описать понятным языком и найти того, кто прочитает и выступит с замечаниями (перефразировал Р.Фейнмана, таки да я это сделал).
Все комментарии, даже злобные в стиле "Да, что этот ~белый~~чел. себе позволяет" приветствуются.
Цели
Приложения — отображение отчетов о ходе продукта (весы) по возможности с раздачей этих данных по сети в пределах предприятия (для функционала);
Личная — немного разобраться в технологии spring
Технологии
- Spring Web
- Spring JPA
- Lombock
- Thymeleaf
- SpringFox Swagger (буду тестить рест на нем)
- jaybird-jdk17, версия 3.0.5
- Maven
Мотивация запилить spring+firebird
Недавно было сделано первое клиентское место под ОС Linux Mint для оператора "Овсезавода" и не всегда адекватная работа отображения отчетов из под Wine. (все остальное работает норм — визуализация Qt — SCADA, архивы Java SE).
Некоторые грабли на которые пришлось наступить
- jackson зависимости разных версий (исправлено),
- firebird не установленный тип кодировки ведет к default (ной) NONE,
Ссылка на git в конце публикации .
Validators + Aspects: кастомизируем валидацию
2018-12-04 в 12:25, admin, рубрики: aop, architecture, aspect, aspect oriented programming, java, java8, spring, spring boot, spring framework, validation, validations, validator, validators, аспект, аспектно-ориентированное, аспекты, валидация, валидация данных, ПрограммированиеДоброго времени суток!
Спустя некоторое время решил вновь написать сюда и поделиться своим опытом. На этот раз статья будет о том, как кастомизировать стандартные валидаторы, и вызывать их там, где нам будет нужно, используя Spring — аспекты. Ну а сподвигло меня на написание — практически отсутствие подобной информации, особенно на русском.
Проблема
Итак, суть приложения примерно такова: есть gateway — api, который принимает запрос, а в дальнейшем модифицирует и перенаправляет его соответствующему банку. Вот только запрос для каждого из банков отличался — как и параметры валидации. Поэтому валидировать изначальный запрос не представлялось возможным. Тут было два пути — использовать аннотации из javax.validation, либо писать свой отдельный слой валидации. В первом случае была загвоздка — по умолчанию объекты можно валидировать только в контроллере. Во втором случае так-же были минусы — это лишний слой, большое количество кода, да и в случае изменения моделей, пришлось бы менять и валидаторы.
Поэтому было принято решение найти способ дергать стандартные валидаторы там где это было необходимо, а не только в контроллере.
Дергаем валидаторы
Спустя пару часов копания в гугле были найдены пару решений, самое адекватное из которых было заавтовайрить javax.validation.Validator и вызвать у него метод validate, которому в качестве параметра нужно передать валидируемый объект.
Казалось бы, решение найдено, но автовайрить везде валидатор не казалось хорошей идеей, хотелось более элегантного решения.
Добавляем АОП
Недолго думая я решил попробовать адаптировать под это решение мною всеми любимые аспекты.
Логика была примерно следующей: создаём аннотацию, и вешаем её над методом который преобразует один объект в другой. Дальше в аспекте перехватываем все методы помеченные этой аннотацией и вызываем метод validate для возвращаемого ими значения. Профит.
Читать полностью »
Gradle 5.0 — что нового
2018-12-04 в 11:42, admin, рубрики: gradle, java, kotlin, анонс, Блог компании HaulmontВ процессе разработки CUBA мы применяли все три основных инструмента сборки — начали с Ant, потом перешли на Maven на короткое время, а сейчас используем Gradle и, похоже, что в ближайшее время останемся с ним.
Не так давно вышел Gradle 5.0. В этой версии появилось большое количество новых возможностей, которые помогут разработчикам писать более сложные сценарии и собирать свои проекты ещё быстрее и безболезненнее.

Что такое Method Handles в Java
2018-12-03 в 14:31, admin, рубрики: java, method handle, reflection, Блог компании Haulmont1. Вступление
В этом туториале мы рассмотрим важный API, представленный в Java 7 и расширенный в новых версиях, java.lang.invoke.MethodHandles.

Мы узнаем, что такое method handles, как их создавать и использовать.
Идёт мобильный разработчик по лесу, видит — Котлин горит. Сел в Котлин и сгорел
2018-12-03 в 11:29, admin, рубрики: java, kotlin, mobius, mobius2018, mobius2018moscow, Блог компании JUG.ru Group, разработка мобильных приложений, Разработка под androidМир сходит с ума. Говорят, все новые мобильные проекты на Андроиде пишут исключительно на Котлине. В наше время очень опасно не учиться новым технологиям. Вначале твои знания устаревают, ты вылетаешь с работы, живешь у теплотрассы, дерёшься с бомжами за еду и умираешь в безвестности, так и не выучив функционального программирования. Поэтому я отправился на Курсеру изучать курс Kotlin for Java Developers и начал читать книжку (привет, abreslav, yole), поспрашивал друзей сами знаете откуда и вернулся назад с некой пустотой в душе. Помогите Олегу-путешественнику найти смысл в Котлине!
Если изобрести язык программирования 21 века
2018-12-03 в 11:12, admin, рубрики: c++, COBOL, fortran, haskell, java, javascript, kotlin, swift, Wirex, Блог компании Wirex, Программирование, языки программированияАвтор материала рассуждает о проблемах современных языков программирования и о том, какими путями можно исправить недостатки.

Только за последние 18 лет люди придумали множество языков, среди которых, вероятно, самыми популярными стали Swift, Kotlin и Go. При этом отличительная черта языка программирования 21 века — это отсутствие каких-либо отличительных черт. Самое приятное в работе с такими языками — за изучением одного из них можно провести выходные и под конец заявить, что вам удалось освоить популярную новинку, по факту же не узнав ничего нового. В них действительно нет ничего нового. Все современные языки созданы на основе какой-либо правильной и проверенной формулы, имя которой, вероятнее всего, Objective-C, Java или C.
«Отсутствие новизны» можно считать ценной чертой, но подобная ситуация вызывает один вопрос. Действительно ли перед нами языки нового, 21 века, или все это — просто отражение плохих привычек программирования 20 века?
Если бы я изобретал язык, я бы не старался исправить прошлое, а попытался бы создать нечто, что хорошо работало бы именно в условиях современности, но также было способно развиваться и выдерживать проверку временем. Если для этого требуются радикальные конструктивные решения, то так тому и быть.
Долой синтаксис!
Синтаксис современных языков отражает попытку втиснуть свободу мела и доски в оковы ASCII. Некоторые элементы записи, такие как арифметические знаки или скобки, воспринимаются более-менее естественно. Но ряд других обозначений оправдан разве что экономией усилий при нажатии кнопок телетайпа.Читать полностью »
