Обновить
146.26

Java *

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

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

Java/Scala программа, имитирующая анимацию капель дождя

Время на прочтение2 мин
Охват и читатели3.4K

Пригодна ли Java (Scala) и ее библиотеки для задач вывода 3D и анимации? Я попробовал это выяснить на примере библиотеки org.fxyz3d и хотел бы поделиться самой программой и выводам по итогам ее запуска.

Читать далее

Как сделать ссылки на методы дружелюбными для отладки

Время на прочтение5 мин
Охват и читатели7.8K

В Java 8 появилось два вида функциональных выражений — лямбда-выражения вида s -> System.out.println(s) и ссылки на методы вида System.out::println. Поначалу ссылки на методы вызывали больше энтузиазма: они часто компактнее, вам не требуется придумывать имя для переменной, а ещё старожилы говорят, что они несколько оптимальнее, чем лямбда-выражения. Однако со временем энтузиазм ослаб. Одна из проблем со ссылками на методы — затруднённая отладка ошибок.

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

Можно ли подружить Stream API и JPA?

Время на прочтение5 мин
Охват и читатели8.5K

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

Если интересно посмотреть, что может библиотека, то прошу под кат.

Читать далее

Реактивный SQL с jOOQ 3.15 и R2DBC

Время на прочтение4 мин
Охват и читатели6.6K

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

Читать далее

Как преобразовать любой тип Java Bean с помощью BULL

Время на прочтение14 мин
Охват и читатели2.3K

BULL расшифровывается как Bean Utils Light Library, преобразователь, рекурсивно копирующий данные из одного объекта в другой. Он универсальный, гибкий, многоразовый, настраиваемый и невероятно быстрый.

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

В этой статье объясняется, как его использовать, с конкретным примером для каждой функции.

Читать далее

Из Oracle в Java. Личный опыт

Время на прочтение9 мин
Охват и читатели9.2K

К написанию статьи меня побудил интерес разработчиков Oracle к изучению Java. Статья не носит обучающий характер и не является инструкцией для перехода с одной технологии на другую. Цель — рассказать, как я переходил на Java и с какими трудностями столкнулся.

Читать далее

Неделя Java-разработчиков на Хабр Карьере

Время на прочтение2 мин
Охват и читатели8.2K

Мы с командой Хабр Карьеры продолжаем помогать классным айти-специалистам находить работу! Для этого в апреле мы запустили спецпроект — День открытых дверей (aka Фронтенд-неделя), в котором поучаствовали четыре компании и полторы тысячи фронтендеров.

На этот раз мы решили устроить праздник на улице Java-разработчиков и пригласили «Билайн», UseTech и «МегаФон» побороться за лучших спецов. Каждая компания готовит короткий видеоролик с питчем себя как самого крутого работодателя для джавистов и свои горящие джава-вакансии.

Хочу узнать подробнее!

Награды в играх. Open-Close принцип. Как реализовать?

Время на прочтение4 мин
Охват и читатели3.8K

Всем приветы. Я работаю над игровым проектом. В нем потребовалось реализовать сундуки. Все кто играл в игры, сталкивались так или иначе с сундуками. Открывали их. Забирали выпавшие награды. А как это реализовано? Так как мне нужно было реализовать уже, в целом, не новую механику, я начал много спрашивать и искать подходящие варианты. Меня интересовало , буквально все. От возможности создания сервера, до того, как пользователь будет забирать награду. Возможно, я очень плохо искал и/или до сих пор плохо гуглю, но я не нашёл достаточно описания и разъяснения механик сундуков. Вы сталкивались с такими механиками? Как они реализованы у вас?

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

Окей, сундуки ушли на второй план. И нужно было определиться с тем как создавать награды, как хранить их в БД. Очень хотелось бы сделать достаточно гибкую систему, чтобы со временем была возможность добавить новые награды или выключить определенный тип наград. Первое что пришло в голову - сделать отдельную таблицу под каждую награду. Классная идея, под каждую таблицу есть свой репозиторий, достающий данные из БД, есть сервис обрабатывающий параметры награды и сервис по применению награды на игрока, когда он взял ее. И все работает отлично, пока не появляется необходимость собрать сундук из наград. Получается, что сущность Сундук, должна знать о всех наградах в системе. Добавление новой награды, вызывает изменение сущности сундук и сервисов, которые этот сундук открывают. Вообще это рабочий вариант, но принцип open-close говорит нам, что система должна быть открыта для расширения, но закрыта для изменения. 

Читать далее про создание сундуков

Spring Boot + BeanPostProcessor или как обернуть ответ контроллеров часть 2

Время на прочтение17 мин
Охват и читатели25K

Всем привет, друзья! Это вторая статья про обертку ответов контроллеров. Сегодня хочу рассказать про то, как использовать BeanPostProcessor и для чего это может быть нужно - это основной посыл статьи. Сделаем мы это немного доработав проект из предыдущей статьи

Под прошлой статьей пользователь с ником @maxzh83 указал на логическую недоработку проекта - невозможность реализовать несколько раз сервис IWrapperService, что происходит из-за того, что идет инжект только одной реализации сервиса.

private final IWrapperService wrapperService;

Сегодня посмотрим на то, как можно решить данную недоработку используя уже готовый функционал спринга - внедрение коллекций. И как можно немного доработать функционал спринга с помощью BeanPostProcessor для более удобного внедрения зависимостей для нашей конкретной ситуации.

Читать далее

Как стать Java разработчиком в 35+

Время на прочтение6 мин
Охват и читатели26K

Всем привет!  Хочу написать свою первую статью о моём пути из менеджера по продажам / руководителя департамента одного из крупных банков / индивидуального предпринимателя в разработчики, который длился без немногого 2 года. Я постараюсь предоставить некоторые советы и рекомендации тем, кто в начале или середине пути в освоении разработки. Искренне надеюсь, что эта статья будет полезна тем, кто сейчас изучает Java или только планирует заняться ее изучением.

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

Читать далее

DI не из ада

Время на прочтение4 мин
Охват и читатели20K

Год назад я написал статью про DI в Spring/Java EE. Мой тезис звучал довольно категорично: "DI через конструкторы является единственно правильным. Все остальное – от лукавого". Прошло время, я пообщался с разными разработчиками на эту тему, сменил проект, компанию, провел множество собеседований, отсмотрел большое количество строк на code-review и сейчас могу сказать, что не все так однозначно. Давайте наконец разберемся, как же все-таки инжектить правильно.

Читать далее

Формирование объектов PL/SQL для выгрузки отчётов в формате XLSX с помощью Java и пакета AS_XLSX

Время на прочтение3 мин
Охват и читатели6.6K

Часто приходится делать различные выгрузки отчётов в формате XLSX из Oracle, используя PL/SQL developer (Oracle 11g2). Так часто, что решил автоматизировать этот процесс на Java. Язык Java изучаю сам по книгам и видеокурсам уже четвёртый год, поэтому если будут какие-то дополнения или замечания по коду, то опишите их здесь.

Выгрузка из PL/SQL делается при помощи библиотеки AS_XLSX.

Gui создан для удобства. Скачал jar, открыл его (должна быть установлена Java на компьютере), указал параметры и столбцы, нажал кнопку, получил готовый код для вставки в пакет PL/SQL (сэкономил нервы и время).

Читать далее

Плагин для ранжирования кода по важности или как я пыталась облегчить жизнь программистам

Время на прочтение10 мин
Охват и читатели4.4K

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

Сейчас готовых средств для ранжирования кода по важности нет. Поэтому студентка второго курса программы «Прикладная математика и информатика» Олеся Субботина решила написать такой плагин в рамках проектной работы по Java.

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

Читать далее

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

Spring Data: нюансы @Transactional

Время на прочтение7 мин
Охват и читатели57K

Любите Spring? А Spring Data? Я тоже люблю. Если хотите разобраться, почему же возникает этот unexpected transaction rollback, а также быть уверенным, что транзакция отменится, а не закоммитится, добро пожаловать под кат.

Читать далее

gRPC клиент. Попробуй на вкус клиент/сервер на gRPC

Время на прочтение4 мин
Охват и читатели17K

   В прошлой статье мы разобрали, как писать сервер на gRPC. И протестировали его с помощью BloomRPC. Теперь, давайте разберем как пишется клиент. И попробуем отправлять запросы с клиента на сервер. Это будет наш первый шаг к созданию микросервисов на грпц. 

   В моем случае я использую многомодульный проект, но можно создать отдельный проект. Структура проекта будет примерно следующей: 

Читать далее gRPC client

Spring Boot + ControllerAdvice + ResponseBodyAdvice или как обернуть ответ контроллеров

Время на прочтение10 мин
Охват и читатели36K

Всем привет, друзья! Сегодня хочу рассказать про способ использование Controller Advice для оборачивания объекта, возвращаемого контроллерами, в новый класс на уровне DispatcherServlet.

Читать далее

Пишем паническую кнопку под андроид (Часть 2)

Время на прочтение4 мин
Охват и читатели5.7K

Заглядываем под капот, решаем проблемы и баги. Как все устроено и что используется - ответы тут! С вами Алексей и сегодня речь пойдет именно от этом.

Читать далее

Пишем паническую кнопку под Android (Часть 1)

Время на прочтение2 мин
Охват и читатели12K
В этой части я коротко расскажу о мотивах и с чего начиналась разработка. Меня зовут Алексей и я желаю вам приятного чтения!

Идея


Тут все произошло более чем спонтанно зимнем вечером — я на тот момент ещё junior java developer с опытом не более двух месяцев листал новости. И без упоминания ужасных событий того времени — меня просто взбудоражила новость говорящая подобное: «У молодого человека задержали телефон и посадили за подписку на канал». Это дало мне пинок для размышлений, а как вообще защищены данные на android. И тут скорее вопрос не к шифрованию хранилища, не в бэкдорах от «компании добра», а просто в экстренных ситуациях. Ведь любой пароль в принципе можно достать из владельца, и причем многими способами. И сделать так может любой человек просто даже подсмотрев его или подобрав. В поисках решение подобной проблемы я нашел только одно приложение (Ripple) — но его функционал оставлял желать лучшего учитывая что проект официально не обновлялся 2 года.

Поняв что подобного нет, я загорелся идеей создать такое приложение хотя бы для себя

Первые версии


Спустя всего-то 2-3 дня — я получил самую сырую версию которая могла только удалять приложения имена пакетов которых я вводил в ручную — быстро и тихо. А запускалось все отдельной иконкой или внутри приложения.

Скриншоты
image
image

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

Да, опять онлайн: анонс восьми осенних конференций от JUG Ru Group

Время на прочтение4 мин
Охват и читатели1.7K


Пришло время анонсировать 8 наших конференций, уже хорошо знакомых хабравчанам. Мы распределили даты так, чтобы каждую неделю проходило по одной — получился двухмесячный «осенний марафон»:


  • Heisenbug (тестирование): 5-7 октября
  • SmartData (data engineering): 11-14 октября
  • DotNext (.NET): 18-21 октября
  • Joker (Java): 25-28 октября
  • HolyJS (JavaScript): 2-5 ноября
  • DevOops (девопс): 8-11 ноября
  • C++ Russia (C++): 15-18 ноября
  • Mobius (мобильная разработка): 22-25 ноября

Под катом — ответы на главные вопросы. Почему снова онлайн? Что там будет? Есть ли абонемент на весь сезон? Можно ли выступить с докладом? Что известно о программе и как меняется цена билетов?

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

Как мы запустили программу на Java без JavaVM

Время на прочтение19 мин
Охват и читатели12K
Всем привет! В этой статье мы расскажем о том, как технология GraalVM Native Image помогла нам решить ряд задач в одном из наших новых продуктов, написанном на Java, расскажем о проблемах, с которыми столкнулись в ходе применения этой технологии, и о том, как эти проблемы решали.
image
Читать дальше →

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