Обновить
150.29

Java *

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

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

Продажная многопоточность

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

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

Повествование будет разбито на две части, от простого к сложному. 

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

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

Читать первую часть

Joker 2021: прошедшая Java-конференция и общая статистика

Время на прочтение9 мин
Охват и читатели6.9K
Закончилась конференция для Java-разработчиков Joker 2021, проходившая с 25 по 28 октября 2021 года. Мероприятие стало четвёртым из девяти конференций, проводимых в этом году компанией JUG Ru Group в рамках осенне-зимнего сезона.



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

Распознаем числа в тексте

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

Кому может быть полезна эта статья?

Извращенцам делающим ML на Java? Или может быть для обучения?

Хотя зачем эти оправдания? Весь код был написан because we can.Под катом мы рассмотрим как превращать числа вида "Двенадцать тысяч шестьсот пятьдесят девять целых четыре миллионных" в форму вроде 12 659, 000 004.

Погрузиться в Kotlin

Python как инструмент сборки

Время на прочтение7 мин
Охват и читатели11K
Предлагаем вашему вниманию перевод поста Никиты Прокопова, разрабочика с 15-летним стажем.

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

Тем не менее, и Skija, и JWM сделаны с помощью скриптов Python вместо более традиционных Ant/Maven/Gradle/SBT. Почему? Давайте узнаем!

Maven


Когда мы только начинали Skija, я использовал Maven, потому что хорошо его знал. Очень скоро мы столкнулись с ограничениями Maven: это очень жесткая система. Он хорошо работает на стандартных проектах, но когда вам нужно что-то дополнительное, он становится препятствием.

А у нас был очень нестандартный проект. Skija — это проект 50/50 из Java и C++. Мы создаем нативные артефакты и упаковываем их в JAR-файлы. У нас есть несколько разных JAR, собранных из одного источника (по одному на платформу). Мы также предварительно обрабатываем исходники Java с помощью Lombok перед их компиляцией.

Забавный факт: единственной IDE, которая поддерживает одновременную разработку на Java и C++, является Android Studio. Нет, мы не были готовы пойти на эту жертву.


С каждым усложнением я упорно боролся за то, чтобы все работало с Maven. Но его негибкость делала простые вещи чрезвычайно сложными. Например, я не мог контролировать, какие файлы из каталога должны попасть в JAR, а какие нет. Я не мог указать в каком каталоге их искать.
Читать дальше →

Методы .equals и .hashcode в Java. Отличия реализации по умолчанию от реализации на практике

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

Что такое .equals() и .hashcode() в java? Зачем их переопределяют? Как это принято делать?

Читать далее

Публикация Spring Boot приложения в GitHub Packages с помощью GitHub Actions для самых маленьких

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

Сегодня я расскажу вам как можно опубликовать своё Spring Boot приложение в GitHub Packages с помощью GitHub Actions. Вот так. В общем-то всё. Вот. Спасибо за внимание.

Читать далее

Компьютерное зрение на Java? Элементарно вместе с OpenCV

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

Ас-саляму алейкум, братья!

Думаю многие в своей жизни хотели разобраться с тем как при помощи программного кода обрабатывать изображения и видео. Применений у этого навыка бессчётное количество, у кого на что фантазии хватит. Можно начать с автоматической коррекции огромного числа фотографий, а закончить deep fake видео с участием " Олега Тинькова ".

Какой же инструмент для этого применить, да если ещё учесть что вы закоренелый джавист? Думаю лучшим инструментом в этом случае будет библиотека OpenCV. Исходя из всего вышеперечисленного представляю вам серию видеороликов в которых Я подробно расскажу вам о том как установить библиотеку OpenCV, её функционале и работе с изображением и видео на языке Java.

Ознакомиться

Освежите ваш COBOL: почему на язык 60-летней выдержки вдруг резко возник спрос?

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

Давным-давно, когда мир был юн, и компьютеры в нем были в новинку, я учился по программе на младшего сотрудника (Associate Degree) по обработке данных – программ по «компьютерным наукам» тогда не было – и в рамках этой программы преподавались бухгалтерское дело, математика, статистика, а также три языка программирования: ассемблер IBM/360, FORTRAN и COBOL. К 80-м студентам уже рассказывали, что COBOL мертвый язык, и никто его больше не изучают.

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

Читать далее

Из Java в Kotlin: туда и обратно

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

В статье рассмотрены проблемы и решения, которые возникли при добавлении Kotlin в небольшой существующий микросервис на Spring Boot, написанный на Java. В рамках статьи не будут рассматриваться плюсы и минусы того или иного языка - здесь и так сломано много копий. В рамках проекта мы хотели протестировать, как будет работать Kotlin в нашем обычном стеке. Рассматривается стандартный стек Spring WebMVC (не реактивный)

Читать далее

Почему технические собеседования не нужны

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

Ремарка - речь пойдет о 98% собеседований в постсоветском пространстве на позицию Java Developer. 

Начну вот с чего: знание Collections Framework, его иерархии наследования, внутренней работы HashMap и количества примитивов в языке - никак, совсем никак, не может дать представления о работоспособности человека. 

 - Фу, какая банальщина, все и так всё понимают. Такие вопросы на собеседованиях дают представление о базовых знаниях человека, а на остальную работу смотрят в период испытательного срока.

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

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

1) Работа разработчика состоит из 40% кодинга и 60% рассуждений, размышлений и попыток понять и вместить задачу, выбрать оптимальный алгоритм ее решения. И я не говорю о созвонах, декомпозиции и обсуждении предстоящего спринта и т.д. и т.п. В таком случае кодинга остается процентов 20.

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

3) Языки, фреймворки, библиотеки, базы данных и прочее - это всего лишь инструмент для решения проблемы, и он должен быть подобран под задачу, а не наоборот.

Читать далее

Советы по работе с Quarkus

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

В этой статье вы узнаете несколько полезных советов и приемов, связанных с фреймворком Quarkus. Мы сосредоточимся на функциях, которые выделяют Quarkus среди других Java фреймворков.

Читать далее

Как мы Neo4j к Helidon прикручивали

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

Идея поэкспериментировать с интеграцией Neo4j с Helidon возникла вполне естественно.

Neo4j — графовая система управления базами данных с открытым исходным кодом, реализованная на Java. По состоянию на 2015 год считается самой распространённой графовой СУБД. (Википедия, 21.10.2021)

Neo4j написана на Java и доступна из ПО, написанного на других языках с использованием языка запросов Cypher, через транзакционную конечную точку HTTP или через двоичный протокол «bolt». Neo4j в настоящее время является стандартом де-факто для графовых баз данных, используемых во многих отраслях.

Вообще, в се началось с небольшого разговора с Michael Simonis, одним из авторов Spring Data Neo4j 6 и сопровождающим Neo4j-OGM. Мы спросили Михаеля, что он думает о том, как Helidon и Neo4J могут работать вместе. Менее чем через час Михаель прислал мне ссылку на этот репозиторий с полнофункциональным примером для Helidon MP и Neo4j SDN.

Читать далее

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

Ускоряем pow

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

В этой статье я хочу поделиться несколькими нестандартными алгоритмами для быстрого возведения числа в степень, а также продемонстрировать их реализацию и сравнить их быстродействие в C++, C# и Java.

Сравнить точность алгоритмов можно прямо сейчас на этой странице.

В конце будет краткая памятка по тому, где и когда лучше применять какой из методов. При правильном выборе можно добиться увеличения скорости вычислений в 5 раз при погрешности ~1%, а иногда и вовсе без неё.

Ускорь мои степени!

Ускорение Maven сборки в Docker

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

Ранее я описал различные методы ускорения ваших Maven сборок. 

Сегодня я хотел бы расширить их область применения и сделать то же самое для сборок Maven внутри Docker.

Читать далее

Neoflex проводит Hiring Week для Java-разработчиков и системных аналитиков

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


С 18 по 24 октября Neoflex приглашает Senior Java-разработчиков и системных аналитиков принять участие в Neoflex Hiring Week. Присоединяйся к нашей команде и получай welcome-бонус в размере одного оклада.

Как принять участие в Neoflex Hiring Week?

  • Заполни заявку на сайте;
  • Получи подтверждение от рекрутера;
  • Пройди техническое собеседование;
  • Прими оффер в течение 48 часов и получи welcome-бонус!
Читать дальше →

100% загрузка CPU: моя вина?

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

История бага JDK и связанной с ним ошибки разработки, приведшей к нештатной 100%-загрузке CPU. Что пошло не так, что можно было сделать лучше, и кто, в конце концов, оказался виноват?
Читать дальше →

Неистовые потуги или как поиграть на midi-клавиатуре в стиле linux-way

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

Относительно короткая история о том как я хотел поиграть на midi-клавиатуре, но не совладал с аудиоподсистемами линуха...

Читать далее

Миграция со Spring Boot на Quarkus. Магия или безумие?

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

Quarkus – это стек Java, приспособленный для работы с OpenJDK HotSpot (или OpenJ9 на zSeries) и GraalVM, собранный из оптимизированных библиотек и стандартов Java. Он хорошо подходит для создания сильно масштабируемых приложений, при этом значительно скромнее использует ресурсы CPU и памяти, нежели другие фреймворки Java. Quarkus может работать с традиционными веб-приложениями, бессерверными приложениями и даже с функциями, предоставляемыми как услуга.

Существует много документированных случаев, в которых организации переносили свои приложения на Quarkus. В этой статье рассмотрим один из таких миграционных путей: со Spring Boot на Quarkus. Есть в этом своя магия и свое безумие. Магия – это когда миграция осуществляется как по мановению руки, и ни одной строки кода при этом менять не приходится. Безумие – в том, чтобы попытаться осознать, как все это делается.

Читать далее

Вячеслав Смирнов. Профилирование JVM в Kubernetes

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

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


Вячеславу повезло использовать разные инструменты. И повезло найти разные дефекты микросервисов на основе JVM. Спикер проанализировал, разделил инструменты и дефекты микросервисов на группы, и хочет рассказать о:


  • подборе профайлеров и их настройках под задачу;
  • собранных рецептах профилирования JVM в Kubernetes;
  • моментах, когда профилирование вредит, а когда помогает.
Читать дальше →

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