Как стать автором
Обновить
85.14
Рейтинг

Java

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

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

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

Блог компании Хабр КарьераJavaКарьера в IT-индустрии

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

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

Хочу узнать подробнее!
Всего голосов 22: ↑19 и ↓3+16
Просмотры1.9K
Комментарии 0

Новости

Показать еще

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

JavaРазработка игрAPIДизайн игрСофт

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

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

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

Читать далее про создание сундуков
Всего голосов 2: ↑2 и ↓0+2
Просмотры1.3K
Комментарии 4

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

ПрограммированиеJava

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

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

private final IWrapperService wrapperService;

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

Читать далее
Рейтинг0
Просмотры1.6K
Комментарии 6

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

ПрограммированиеJavaУчебный процесс в ITКарьера в IT-индустрииИнтервью
Из песочницы

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

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

Читать далее
Всего голосов 20: ↑19 и ↓1+18
Просмотры8.7K
Комментарии 17

DI не из ада

ПрограммированиеJavaПроектирование и рефакторингООП

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

Читать далее
Всего голосов 3: ↑2 и ↓1+1
Просмотры4.4K
Комментарии 12

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

OracleJavaSQL
Из песочницы

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

Язык Java изучаю сам по книгам и видеокурсам уже четвёртый год, поэтому если будут какие-то дополнения или замечания, то можете предложить их здесь через pull request.

Сама выгрузка из PL/SQL делается при помощи пакета as_xlsx.

Читать далее
Всего голосов 5: ↑3 и ↓2+1
Просмотры1.1K
Комментарии 17

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

Блог компании Питерская ВышкаПрограммированиеJavaАлгоритмыУчебный процесс в IT

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

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

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

Читать далее
Всего голосов 13: ↑11 и ↓2+9
Просмотры2.5K
Комментарии 6

Spring Data: нюансы @Transactional

ПрограммированиеJavaООП
Перевод

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

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Просмотры4K
Комментарии 8

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

JavaAPIGoogle APIСофтМикросервисы
Tutorial

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

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

Читать далее gRPC client
Всего голосов 5: ↑2 и ↓3-1
Просмотры3.5K
Комментарии 0

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

ПрограммированиеJava
Из песочницы

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

Читать далее
Всего голосов 9: ↑8 и ↓1+7
Просмотры4K
Комментарии 6

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

Блог компании Huntmix appsИнформационная безопасностьJavaРазработка под AndroidGitHub

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

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Просмотры4.2K
Комментарии 5

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

Блог компании Huntmix appsИнформационная безопасностьJavaРазработка под AndroidХакатоны
В этой части я коротко расскажу о мотивах и с чего начиналась разработка. Меня зовут Алексей и я желаю вам приятного чтения!

Идея


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

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

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


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

Скриншоты
image
image

Несмотря на то что приложение писалось полностью под себя, некоторым моим знакомым оно понравилось, сработал эффект сарафанного радио, начали поступать запросы на новые функции и я решил выложить приложение в массы и на спец. форумы.
Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Просмотры9.2K
Комментарии 71

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

Блог компании JUG Ru GroupJavaScriptJava.NETC++


Пришло время анонсировать 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 ноября

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

Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Просмотры1.2K
Комментарии 6

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

Блог компании 1СJavaСофт
Всем привет! В этой статье мы расскажем о том, как технология GraalVM Native Image помогла нам решить ряд задач в одном из наших новых продуктов, написанном на Java, расскажем о проблемах, с которыми столкнулись в ходе применения этой технологии, и о том, как эти проблемы решали.
image
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Просмотры4.3K
Комментарии 6

DINS JAVA EVENING: подходы к разработке API и JavaFX-приложение на Kotlin

Блог компании DINSJava

Георгий Клюковкин из DINS сравнит стандарты разработки API и расскажет, как выбрать подходящий для вашего проекта. Иван Белозор из КРОК покажет несколько инструментов, которые стоит использовать при разработке JavaFX-приложений на Kotlin. Участие бесплатное, но нужно зарегистрироваться

Подробная программа и информация о спикерах — под катом.

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Просмотры1.4K
Комментарии 0

Незаслуженно забытый ZooKeeper

ПрограммированиеJavaРаспределённые системы

В наш век распределенных микросервисов постоянно возникают распределенные проблемы. Это самые обычные computer science проблемы, но они распределены по разным серверам или даже разным датацентрам. Для их решения часто выдумывают много разного. Не делайте так, просто возьмите ZooKeeper. Он, несмотря на то что придуман бумерами, просто работает. Он решит немалую часть ваших проблем с распределенными системами.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Просмотры5K
Комментарии 16

gRPC сервер с нуля

Разработка веб-сайтовJavaAPIGoogle APIСофт
Tutorial

  Всем приветы. В прошлом посте https://habr.com/en/post/565020/ мы сравнили gRPC и REST. И собственно, прежде чем писать новый сервер на gRPC, давайте попробуем понять нужен ли он нам действительно. Нашей команде была необходима кодогенерация на разные языки программирования. На эту роль не плохо подходил Swagger, Thrift и gRPC со встроенным кодогенератором. От Thrift, спустя какое-то время, пришлось отказаться, из-за его особенностей и сложностей поддержи на c# (по-моему это была основная причина отказа). Дальше был выбор между Swagger + REST и gRPC. В целом оба варианта хороши, но если мы думаем гонять много и часто данные между клиентом и сервером, то почему бы не протестировать gRPC?  

Структура проекта будет выглядеть следующим образом.

Read more about gRPC server creation.
Всего голосов 9: ↑6 и ↓3+3
Просмотры4.8K
Комментарии 12

Программа в 50 строк на Java/Scala, которая сэкономит вам 50 тыс. р. при подаче декларации 3-НДФЛ

ПрограммированиеJavaScalaООПФункциональное программирование
Recovery mode

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

Но если брокер такой как у меня - Interactive Brokers (организация, третьего дня запрещенная на территории РФ), декларацию вам придется делать и подавать самому. Делать это всем, конечно же лень, и неплохо бы отдать подготовку на аутсорс...

Читать далее
Всего голосов 28: ↑16 и ↓12+4
Просмотры7.1K
Комментарии 22

Вилкой в глаз, или ForkJoinPool в Java

ПрограммированиеJava
Tutorial

Всем привет. Сегодня я хотел бы поговорить о многопоточности. Вернее, не о многопоточности вообще, а о таком её механизме как ForkJoinPool. Нельзя сказать, что данная технология является новой (она появилась ещё в Java 7), или что в сети нельзя найти материалы по данной теме. Информации хватает. Например, для глубокого погружения могу порекомендовать лекцию блистательного Алексея Шипилёва, которую можно без труда найти на YouTube. Но лично мне большинство этих материалов показались либо слишком сложными, либо наоборот – поверхностными. Так же некоторые из них содержат явные ошибки, что вносит ещё большую неразбериху в данную тему. Судя по тому, что в комментариях под одной из этих статей я нашёл вот такую картинку, подобные проблемы были не только у меня.

Читать далее
Всего голосов 12: ↑10 и ↓2+8
Просмотры7K
Комментарии 12

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