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

Java *

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

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

Ускоряем java-рефлексию в 2022

Java *
Из песочницы

После прочтения заголовка у среднестатистического читателя наверняка возникнет весьма логичный вопрос: «Кто такая эта ваша рефлексия и зачем её ускорять?»

И если первая часть будет волновать только совсем уж откровенных неофитов (ответ тут), то вторая точно нуждается в пояснении.

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

Однако в java рефлексия реализована не самым быстрым (зато надёжным) методом, а именно, через использование JNI-вызовов. JNI (Java Native Interface) – очень полезная штука, позволяющая машине вызывать код из «внешнего мира», библиотек, написанных на C/C++ или ассемблере.

К сожалению, нельзя просто так взять и вызвать потенциально опасный бинарь, во-первых, потенциально несовместимый с внутренним миром машины, а во-вторых, способный без угрызений совести положить всё намертво лёгким взмахом segfault’а. Поэтому непосредственно моменту прямого вызова предшествует тонна инструкций, подготовляющих обе стороны к взаимодействию. Очевидно, не самый быстрый процесс.

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

А теперь представьте примерное быстродействие какого-нибудь фреймворка, который в процессе работы постоянно осуществляет рефлективные вызовы…

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

Новости

Представьте, что вы оказались в шахте: перед вами каменный монолит, в котором что-то поблёскивает — куски золота, не иначе. Блеск заманчивый, но вокруг грубый камень. В разработке часто возникает похожая ситуация: полезный юзерам код со всех сторон окружён камнем в виде инфраструктуры, конвертеров данных и легаси. На помощь приходит микросервисная архитектура: огромную глыбу можно раздробить на кусочки, в каждом из которых камня поменьше, а полезного кода — побольше. ПСБ предлагает разработчикам .NET и Java поддаться золотой лихорадке: посмотрим, кто лучше добывает полезный код из монолита. Присоединяйтесь к своей команде и работайте на общую победу: в зачёт идёт каждый правильный ответ.
Нужно больше золота
Всего голосов 25: ↑20 и ↓5 +15
Просмотры 6.7K
Комментарии 9

Жил на свете добрый Jooq – как подружиться с хранимками в Oracle

Блог компании Sportmaster Lab Oracle *Программирование *Java *Администрирование баз данных *
Tutorial

Приветствую!

Меня зовут Артём, я back-end разработчик на продукте WFM (Workforce Management). В компании наш продукт помогает в развитии процессов розничной сети, одна из основных наших задач — это построение рабочего графика для персонала розничного магазина.

В данной статье я хотел бы познакомить вас (в очередной раз, так как на хабре уже есть несколько статей, посвященных этой библиотеке) с Jooq и показать, как можно легко работать с хранимыми процедурами Oracle. Будет немного вводной части, а затем посмотрим примеры.

Почти в каждом продукте, скорее всего, есть база данных. В нашем случае это РСУБД Oracle, большая часть логики содержится внутри в виде хранимых процедур. Удобство взаимодействия с базой всегда было достаточно важной и щепетильной задачей для любого бэкендера, особенно, если речь идет о взаимодействии с хранимками, которые выдают и принимают "сложные" plsql-типы. Конвертация plsql-типа в java-тип — задачка не самая приятная, мягко говоря, и удобных инструментов в этом деле не так уж много.

Давайте кратко вспомним некоторые популярные подходы к взаимодействию с РСУБД, какими достоинствами и недостатками они обладают.

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

Посчитать запросы spring data jpa + hibernate на 1 rest запрос

Java *SQL *Kotlin *
Tutorial

Началось все с желания посчитать, сколько запросов в БД улетает на каждый rest запрос при использовании spring data jpa + hibernate.

Гугл выдал интересное видео про xrebel, но так же сообщил, что xrebel платный.
Дальнейший поиск привел к статье Counting Queries per Request with Hibernate and Spring.

Её и взял за основу для своего счетчика. Какого-то ещё примера не нашел, поэтому решил оставить эту заметку

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

Механизмы сериализации в Java и Kotlin

Блог компании Usetech Программирование *Java *Kotlin *

В этой статье Илья Гершман, ведущий разработчик Юзтех, рассматривает понятия сериализации и десериализации в сравнении между двумя языками программирования — Java и Kotlin.

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

Знакомимся с Javassist

Java *
Из песочницы

Всем большой привет! Перед началом стоит сказать, что библиотека Javassist довольно мощный инструмент, так как стирает почти все границы у того безграничного языка JAVA, позволяя разработчику осуществлять манипуляции связанные с байткодом.

Конечно, получив доступ к байткоду, а ровно и к возможности воздействовать на этот самый байткод вам совсем не обязательно вклиниваться в него. Javassist можно использовать и в “мирных” целях!

При многообразии возможностей не стоит забывать о том, что использовать библиотеку нужно только тогда, когда это действительно необходимо. Использование данного инструмента делает основной код менее понятным, так как после применения Javassist у вас появится второе полноценное приложение, в котором будет жить Java со своей логикой.

Итак, если после всех предостережений вы все же решили использовать эту библиотеку, то давайте начинать!

В этой статье мы рассмотрим Javassist, как инструмент, с помощью которого мы будем вклиниваться в существующий байткод и трансформировать его.

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

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

Ответ очевиден – приложение не может само себя изменять. Т.е. приложение не может само изменять свой же байткод. Это должен делать кто-то другой. Этот кто-то другой – такое же Java приложение, но заточенное на работу с байткодом.

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

Думаете о большой пропускной способности? Встречайте виртуальные потоки

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

Цель этой статьи — изучить известные факты о грядущем расширении модели многопоточности Java.

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

Да, мы говорим о JEP-425: Virtual Threads.

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

Как стать Java разработчиком — путь специалиста Leantech с нуля до уровня Middle

Java *Карьера в IT-индустрии Интервью
Из песочницы

Привет! Меня зовут Дима, я Java-разработчик. Хочу рассказать как я пришел в профессию, вырос до мидла и перешел из госучреждений в аутсорс компанию по разработке приложений. Рассказ будет полезен джунам и тем, кто хочет изучать Java, но боится потратить время впустую.

Я стараюсь следить за трендами в разработке, чтобы знать какие технологии набирают популярность и не отставать от коллег. Так вот, судя по статистике от Github, Java до сих пор находится в топ-3 самых востребованных языков разработки, хоть и немного сдала позиции за последние пару лет. На первом месте JavaScript, а на втором Python.

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

Читать далее
Всего голосов 13: ↑0 и ↓13 -13
Просмотры 10K
Комментарии 6

Квантовый хэдж фонд: что интересного для IT специалиста?

Python *Java *C++ *Big Data *Data Engineering *

Всем привет! Это моя первая статья на Хабр. Меня зовут Артем Сосульников и я директор по разработке ПО в Luxoft. В IT больше 15 лет: начинал как Java разработчик, прошел долгий путь от тим лида и руководителя проектов до директора по разработке ПО с сотней людей в подчинении. В связи с последними событиями в ближайшее время собираюсь с семьей переезжать на остров Пенанг в Малайзию и присоединиться к Люксофт.Малайзия. Там продолжу развитие своих проектов в квантовых хэдж фондах, куда мы теперь нанимаем людей в Сербии, Мексике и Малайзии. Буду писать статьи про жизнь в Малайзии и про работу в Люксофт.

Читать далее
Всего голосов 13: ↑3 и ↓10 -7
Просмотры 2.4K
Комментарии 13

Java 17 для тех, кто не следил. Часть 2: API

Блог компании JUG Ru Group Java *Конференции

image


Если обновляешься со старой Java на LTS-версию Java 17, как разобраться сразу во всех фичах за несколько лет? Чтобы помочь с этим, мы уже публиковали расшифровку доклада tagir_valeev с нашего IT-фестиваля TechTrain. Но доклад такой подробный, что разделили его на два текста: в предыдущем была основная часть про языковые изменения, а теперь представляем вам завершающую часть про API.


И напоминаем, что следующий TechTrain состоится уже 14 мая (онлайн, бесплатно), а в июне будет много Java-докладов на JPoint (онлайн + офлайн).


Далее повествование идёт от лица спикера.

Читать дальше →
Всего голосов 27: ↑26 и ↓1 +25
Просмотры 4.9K
Комментарии 4

О чём расскажут на TechTrain 2022 Spring

Блог компании JUG Ru Group Java *C++ *Разработка мобильных приложений *Конференции

14 мая мы проведём онлайн-фестиваль TechTrain, участие бесплатно (надо только зарегистрироваться).

Там будет восемь докладов, и их набор очень эклектичный. Потому что ещё мы проводим самые разные IT-конференции (от Java до дата-инжиниринга), и TechTrain связан со всеми их направлениями сразу: от каждого будет по одному докладу.

Вряд ли вы станете смотреть всю эту пёструю подборку целиком (кому важны одновременно Node.js, Spring Data, WebRTC и Selenide?) Но вот шансы на то, что среди такого разнообразия есть что-то для вас, высоки.

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

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

Асинхронное взаимодействие Spring-микросервисов с помощью Kafka

Блог компании OTUS Программирование *Java *
Перевод

В этой статье разберемся, как реализовать обмен сообщениями между Java-микросервисами на Spring с помощью Kafka.

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

GraphQL-gRPC API Gateway на Java

Java *API *Микросервисы *
Из песочницы

В данной статье я хочу рассказать про процесс создания концепта API Gateway для обеспечения взаимодействия фронтенда, использующего GraphQL, и бэкенда, использующего gRPC, на Java с использованием фреймворка Quarkus.

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

Ограничиваем Prometheus метрики в Webflux

Java *Разработка под e-commerce *
Из песочницы

Всем привет! В текущей статье, хотелось бы поделиться опытом решения задачи ограничения вывода метрик в Prometheus для сервиса, написанного в функциональном стиле на Spring Webflux.

Казалось бы – подключил Actuator, Micrometer, Prometheus зависимости, прописал в management пропертях включение метрик и радуешься выводу всего нужного для мониторинга по соответсвующему ресту. Однако, после наката метрик на окружение, внезапно приложение начинает стремительно деградировать, графану начинает спамить огромным количеством избыточной информации, коллеги из QA наблюдают существенное замедление скорости отклика запросов к бэкенду, соотвественно принимается решение по откату фичи.

Неприятно, но бывает, давайте исправлять ситуацию.

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

Java 17 для тех, кто не следил. Часть 1

Блог компании JUG Ru Group Java *Конференции


Уже вышла Java 18, но для всех, кто сидит на LTS, по-прежнему остаётся актуальной версия 17. Такие люди могут не отслеживать постоянно фичи каждой новой версии, а спокойно заниматься своими делами и иногда навёрстывать сразу всё.


И как раз на такое «навёрстывание» рассчитан доклад Тагира Валеева (tagir_valeev), с которым он осенью выступил на нашем мероприятии TechTrain. Люди, которые в последние годы тщательно отслеживали все новинки в Java, тут особо много нового не узнают. Зато для остальных это удобный единый ликбез по главным вещам сразу нескольких версий: от запечатанных классов до того, почему молодёжь может зарофлить над вами из-за префиксов get и is.


Поэтому в преддверии нового TechTrain и Java-конференции JPoint мы решили сделать для Хабра текстовую версию доклада. В этом посте речь идёт о языковых фичах, а отдельно опубликуем часть про изменения в API. Далее повествование идёт от лица спикера.

Читать дальше →
Всего голосов 28: ↑27 и ↓1 +26
Просмотры 11K
Комментарии 5

Аннотации в JAVA

Java *
Из песочницы
Перевод

Аннотации - это форма метаданных. Они предоставляют информацию о программе, при том сами частью программы не являются.

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

Apache Camel: direct для новичков

Блог компании Nexign Java *Apache *

Многие из вас давно работают с различными Java-фреймворками, их в опенсорсе целое множество, и у каждого есть свои преимущества и недостатки. Сегодня хотим обсудить Apache Camel, а именно, компонент direct. Эта статья от инженера-программиста Nexign Андрея Малыгина будет полезна тем, кто уже работает на этом фреймворке и хочет сделать свою работу чуточку легче.

Узнать больше о компоненте direct
Всего голосов 4: ↑2 и ↓2 0
Просмотры 1K
Комментарии 1

Конвертируем Spring XML в Java-based Configurations без слёз

Java *

Как-то я засиделся на работе добавляя новую функциональность в один "небольшой" и довольно старенький сервис написанный на Spring.

Редактируя очередной XML файл Spring конфигурации я подумал: а чего это в 21 веке мы всё еще не перевели наш проект на Java-based конфигурации и наши разработчики постоянно правят XML?

С этими мыслями и была закрыта крышка ноутбука в этот день...

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

KeyCloak и Spring Boot

Java *
Из песочницы

Хочу описать логику как с использованием сервиса авторизации Keycloak настроить авторизацию при этом получая token и refreshToken , а так-же обменивать refreshToken на новый token.

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

Путь к автотестированию Android нативными инструментами: испробовали всё, что есть на рынке и сделали свои выводы

Блог компании БКС Мир Инвестиций Java *Тестирование мобильных приложений *Kotlin *

Давайте сначала представимся. Мы - команда управления тестирования и контроля качества в БКС Мир Инвестиций. Наш продукт - это приложения и сайты, созданные для удобства всех желающих окунуться в мир ценных бумаг и инвестиций. Конкретно в нашем “ведомстве” приложения на IOS  и Android, сайт личного кабинета, инвест стратегии Fintarget, новостной портал BCS-Express, сайт ФГ БКС и прочее.

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

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

Мы решили сделать серию статей на тему того, что у нас получилось, что не получилось и как мы этого добивались. Часть статей будет чисто лирической, на размышления о подходах и способах работы. Другая часть будет сугубо технической, с рассказами, примерами и всем-всем, что нам интересно рассказать, и что интересно обсудить.

Начать эти рассказы мы решили с повести о становлении мобильного автотестирования. Первым “попался под руку” Android, про него и начнем.

Самое интересное далее
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 2.8K
Комментарии 15

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

Работа

Java разработчик
483 вакансии