Как стать автором
Обновить
5
0
Vyacheslav @xvk

Пользователь

Как загружать классы в Java 8 и Java 9+?

Уровень сложности Сложный
Время на прочтение 24 мин
Количество просмотров 5.5K

Привет, Хабр! Я разработчик в Институте Системного Программирования РАН, занимаюсь разработкой статического анализатора Svace. Недавно я столкнулся с задачей самостоятельной загрузки классов в JVM, что оказалось непросто, потому что в проекте мы используем модули Java.

Модули появились в Java, начиная с версии 9. Прошло уже несколько лет, но если попытаться найти актуальную информацию о связи модулей и загрузчиков классов, её придётся собирать по крупицам. В статье я поделюсь своим опытом изучения вопроса самостоятельной (и автоматической) загрузки классов с помощью кастомного загрузчика, а также разберу примеры, описывающие большинство случаев загрузки, постараюсь их объяснить.

Читать далее
Всего голосов 23: ↑23 и ↓0 +23
Комментарии 0

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

Уровень сложности Средний
Время на прочтение 26 мин
Количество просмотров 7.1K

Хей, Хабр!

Твоя рефлексия всё ещё слишком медленная? Тогда мы идём к тебе!

Ищем способы ускорить рефлективные вызовы методов, сравниваем их, разбираемся, как создать свой быстрый field accessor...

Интересно? Добро пожаловать под кат!

Стать быстрее
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 11

Все что вам нужно знать о таймаутах

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 16K

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

Под катом вы узнаете как установить оптимальные значение connection и request timeout, стоит ли повторять запрос при ошибке или лучше избегать этого.

В конце статьи есть небольшая шпаргалка и куча полезных ссылок. Приятного чтения.

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 2

Пишем простой docker-compose.yml для контейнеризации приложения (React, Spring Boot, PostgreSQL, pgAdmin)

Уровень сложности Простой
Время на прочтение 21 мин
Количество просмотров 28K

В данной статье описан простой пример написания docker-compose.yml файла на примере контейнеризации приложения с использованием Spring Boot на бэкенде, React на фронте, PostgreSQL в качестве базы данных и pgAdmin - для просмотра данных в базе.

Читать далее
Всего голосов 17: ↑14 и ↓3 +11
Комментарии 16

Java для сисадминов

Время на прочтение 17 мин
Количество просмотров 13K

Эта статья написана в основном для системных администраторов Java-приложений (DevOps-инженеров, SRE и других производных специализаций). Вероятнее всего, Java-разработчики уже все это прекрасно знают. Хотя Junior Java-разработчикам эта информация может помочь систематизировать знания.

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

Читать далее
Всего голосов 122: ↑121 и ↓1 +120
Комментарии 10

Необычная Java: StackTrace Extends Throwable

Время на прочтение 10 мин
Количество просмотров 6.9K

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

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

Chronicle Software обычно использует ряд различных шаблонов в своих низкоуровневых библиотеках, с которыми большинство разработчиков вообще не сталкивается.

Один из них — это класс, который расширяет Throwable, но не является ошибкой или исключением.

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 1

Выбираем канал для точки доступа Wi-Fi. Исчерпывающее руководство

Время на прочтение 9 мин
Количество просмотров 283K
2,4 ГГц — это плохо. 5 ГГц — это хорошо. 6 ГГц — это ещё лучше, но послезавтра. Все это знают, кого я тут учу, в самом деле. Всё это хорошо, только делать-то что, когда ты такой, как умный, открываешь какой-нибудь Wi-Fi Explorer, а там сатанизм и этажерки, как на скриншоте?



Шаг первый — поплакать. Шаг второй — нырнуть под кат. Вопрос простой, а ответ — нет.
Когда это нас останавливало?
Всего голосов 111: ↑110 и ↓1 +109
Комментарии 234

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

Время на прочтение 8 мин
Количество просмотров 17K

История бага JDK и связанной с ним ошибки разработки, приведшей к нештатной 100%-загрузке CPU. Что пошло не так, что можно было сделать лучше, и кто, в конце концов, оказался виноват?
Читать дальше →
Всего голосов 48: ↑43 и ↓5 +38
Комментарии 8

Оптимизация запросов. Основы EXPLAIN в PostgreSQL (часть 3)

Время на прочтение 6 мин
Количество просмотров 83K

Подолжаю публиковать авторскую переработку Understanding EXPLAIN от Guillaume Lelarge.
Ещё раз обращу внимание, что часть информации для краткости опущено, так что настоятельно рекомендую ознакомиться с оригиналом.
Предыдущие части:

Часть 1
Часть 2
Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 2

Основы Java Bytecode

Время на прочтение 29 мин
Количество просмотров 28K

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

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

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

Вглубь
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 5

Управление Java Flight Recorder

Время на прочтение 15 мин
Количество просмотров 30K


Не так давно в мире Java случилось грандиозное событие. Во всех актуальных версиях OpenJDK стал доступен Java Flight Recorder (или просто JFR).


Что такое Java Flight Recorder?

JFR – это механизм легковесного профилирования Java-приложения. Он позволяет записывать и в последствии анализировать огромное количество метрик и событий, происходящих внутри JVM, что значительно облегчает анализ проблем. Более того, при определённых настройках его накладные расходы настолько малы, что многие (включая Oracle) рекомендуют держать его постоянно включённым везде, в том числе прод, чтобы в случае возникновения проблем сразу иметь полную картину происходившего с приложением. Просто мечта любого SRE!


Раньше этот механизм был доступен только в коммерческих версиях Java от корпорации Oracle версии 8 и более ранних. В какой-то момент его реимплементировали с нуля в OpenJDK 12, затем бекпортировали в OpenJDK 11, которая является LTS-версией. Однако вот OpenJDK 8 оставалась за бортом этого праздника жизни. Вплоть до выхода апдейта 8u272, в который наконец-то тоже бекпортировали JFR. Теперь все (за редким исключением) пользователи OpenJDK могут начинать использовать эту функциональность.


Но вот незадача: большая часть документации в интернете относится к старой, коммерческой, версии JFR и во многом не соответствует версии, которая присутствует в OpenJDK. Да и та, что есть, весьма скудная и не способствует пониманию того, как это всё использовать.


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

Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Комментарии 2

Сравнительный анализ некоторых Java-декомпиляторов

Время на прочтение 17 мин
Количество просмотров 15K


В этой статье будут рассмотрены четыре декомпилятора — Fernflower, CFR, Procyon и jadx — и произведено их сравнение по нескольким параметрам.


Дисклеймер: сравнение неформальное и не претендует на научность. Скорее, это просто обзор всех актуальных (на осень 2019) декомпиляторов Java-байткода.


Автор — Анна Явейн (brontozyablik), разработчица Solar appScreener

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

Чему меня, как разработчика, научили аварии в космосе

Время на прочтение 8 мин
Количество просмотров 32K

Оригинал: статья «What I learned as a developer from accidents in space», Андрея Ситника, из блога Evil Martians «Martian Chronicles»

Андрей Ситник, автор PostCSS и Автопрефиксера, сделал подборку историй, связанных с освоением космоса Советским Союзом. Вы узнаете, какие уроки из них извлёк Андрей, чтобы вырасти как разработчик и участник опенсорс-движения. Неудачная стыковка, драматический вход в атмосферу и уникальный переход вдоль поручня между космическими кораблями — какое отношение всё это имеет к современной веб-разработке? Обо все этом читайте в посте!

Исследования космоса интересовали меня, сколько я себя помню. Люди, знавшие меня лично, слышали рассказов о космосе больше, чем им хотелось бы. До того, как присоединиться к Evil Martians, я администрировал русскоязычную версию Википедии, и одним из моих любимых увлечений была редактура связанных с космосом статей. Я ездил наблюдать за запусками на Байконуре и мысе Канаверал, и чем больше я узнавал об усилиях по покорению космоса, тем сильнее эти знания влияли на меня как на разработчика. 

Хотя писать программы не так сложно, как строить ракеты (по большей части), но всё же мы, программные инженеры, часто работаем в больших командах, создающих сложные системы. И как исследователи космоса, иногда мы проигрываем борьбу со сложностью.
Читать дальше →
Всего голосов 127: ↑126 и ↓1 +125
Комментарии 29

Страх и ненависть в IT

Время на прочтение 7 мин
Количество просмотров 126K
Всем привет. Я — обычный программист, носящий лычку сеньора в одной обычной продуктовой компании. Я занимаюсь коммерческой разработкой около 10 лет, начинал с разработки прошивок для небольших железок, а сейчас изготавливаю бекенды различной степени сложности преимущественно на модных нынче Java/Kotlin. Эту профессию я выбрал по призванию — будучи ещё школьником все время что-то паял, программировал на бумажке (компьютера не было) и всё такое. Дальше шли профильное образование, работа в различных компаниях — именитых и обычных, зарубежных и отечественных. Поэтому я могу сказать, что являюсь идейным программистом. И никогда не понимал людей, которые ждут пятницу — всегда с удовольствием ходил на работу, какой бы ад там не творился. Так было по-крайней мере до недавнего времени. С какого-то момента я “сломался” и с трудом мог заставить пойти себя на некогда любимую работу. Меня и раньше что-то смущало, но теперь, когда мысли до конца оформились в голове — я могу сказать, что же не так с моим некогда уютным IT-мирком.
Читать дальше →
Всего голосов 373: ↑339 и ↓34 +305
Комментарии 791

По пути Сергея Павловича Королева. Современный российский пилотируемый проект. Часть 1. «Федерация»

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


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

Да, речь пойдет про наш проект пилотируемого полета к Луне. То есть про проект, в который многие не верят, который часто высмеивают; тем не менее, он все эти годы развивался и достаточно серьезно. Любые изменения видны только во времени. Я даже не стану утверждать, что проект точно будет реализован – это зависит от слишком многих факторов. Тем не менее, развитие есть, и мы должны будем многое увидеть в железе в ближайшие годы. И я даже не могу винить скептиков, поскольку каких-либо толковых описаний пока не было. Вся информация хоть и открыта, но распылена среди весьма большого количества презентаций и интервью.

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

Итак, история началась приблизительно десять лет назад. Руководитель Центра пилотируемых программ ЦНИИ машиностроения, доктор технических наук Георгий Карабаджак, вспоминает про этот ключевой момент:

Читать дальше →
Всего голосов 54: ↑49 и ↓5 +44
Комментарии 156

Более быстрая альтернатива Java Reflection

Время на прочтение 7 мин
Количество просмотров 8.3K
Всем привет. Сегодня хотим поделиться с вами переводом статьи, подготовленным специально для студентов курса «Разработчик Java».

В моей статье Specification Pattern (паттерн Спецификация) я специально не упомянул о лежащем в основе компоненте, который сильно помог в реализации. Здесь я подробнее расскажу о классе JavaBeanUtil, который я использовал, чтобы получить значение поля объекта. В том примере это был FxTransaction.



Конечно, вы скажете, что для получения того же результата можно использовать Apache Commons BeanUtils или одну из его альтернатив. Но мне было интересно покопаться в этом и то, что я изучил, работает намного быстрее любой библиотеки, построенной на основе широко известного Java Reflection.
Читать дальше →
Всего голосов 18: ↑15 и ↓3 +12
Комментарии 0

Как и зачем работать медленнее? Метод Сергея Королёва

Время на прочтение 15 мин
Количество просмотров 94K


Будущий «отец» советской космонавтики Сергей Королёв — по центру. Страсть к авиации у него зародилась в юности, когда он записался в планерный кружок. На его долю ещё выпадут тяжёлые испытания, но юношеский запал у него останется на всю жизнь.

«Можно сделать быстро, но плохо, а можно — медленно, но хорошо. Через некоторое время все забудут, что было быстро, но будут помнить, что было плохо. И наоборот.»
Сергей Королёв, конструктор

К этим словам можно было бы больше ничего не добавлять. Но после прочтения этой цитаты могут остаться вопросы, и у нас тут, в конце концов, не сборник «цитат успешных людей», поэтому я всё же осмелюсь продолжить. Ведь кто из нас не стоял когда-то перед дилеммой между принесением немедленных результатов и обеспечением высокого качества работы? Что ж, Сергей Королёв, одна из ключевых фигур в истории освоения человеком космоса, мог бы многое вам поведать.

Читать дальше →
Всего голосов 151: ↑145 и ↓6 +139
Комментарии 133

Наша космическая промышленность. Взгляд на проблемы отрасли с позиции рядового разработчика

Время на прочтение 14 мин
Количество просмотров 93K
Я работал в нашей космической промышленности достаточно долго (1983-1995, 2008-2012 годы). Когда читаешь статьи о наших неудачах, в них часто не видны основные действующие механизмы создания проблем.

Итак, я хотел бы начать это рассмотрение с принципа «фактической негативной селекции». Кому интересно – прошу под кат (много букв и никаких картинок).
Читать дальше →
Всего голосов 264: ↑245 и ↓19 +226
Комментарии 337

Откуда растут ноги у Java Memory Model

Время на прочтение 19 мин
Количество просмотров 74K
Современное железо и компиляторы готовы перевернуть с ног на голову наш код, лишь бы он работал быстрее. А их производители тщательно скрывают свою внутреннюю кухню. И все прекрасно, пока код выполняется в одном потоке.

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

Но все уже осознали, ведь жить с этим как-то надо. А Java программисты даже неплохо живут. Потому что в Java есть модель памяти — Java Memory Model (JMM), которая предоставляет достаточно простые правила для написания корректного многопоточного кода.

И правил этих достаточно для большинства программ. Если вы их не знаете, но пишите или хотите писать многопоточные программы на Java, то лучше как можно скорее ознакомиться с ними. А если знаете, но вам не хватает контекста или интересно узнать откуда растут ноги у JMM, тогда статья может вам помочь.
Читать дальше →
Всего голосов 55: ↑53 и ↓2 +51
Комментарии 10

Температура и давление фантастики, 3/3

Время на прочтение 9 мин
Количество просмотров 24K

Часть 3. Попытка подведения итогов


[Предыдущий раздел]

Я люблю сравнивать эти две картинки:



Слева — «Пейзаж Марса в районе полярной шапки» кисти советского художника-фантаста Георгия Курнина. Предположительно 1960-х годов, достоверно не позже 1974-го. Справа — работа то ли Xinhua/Reuters Photo, то ли NASA, выполненная в 2008-м году, незадолго до посадки станции Феникс на Марс. Изображающая, как ни странно, тоже полярные районы Марса.
Читать дальше →
Всего голосов 44: ↑44 и ↓0 +44
Комментарии 72

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность