Чашечка Java
رفتن به کانال در Telegram
Лучшие материалы по Java на русском и английском Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels
نمایش بیشتر8 553
مشترکین
-224 ساعت
-227 روز
-2630 روز
آرشیو پست ها
8 553
Создаем байт-код для JVM без компилятора
Виртуальная машина Java использует концепцию промежуточного байт-кода для обеспечения переносимости между операционными системами и аппаратными платформами. Использование байт-кода позволяет отделить компилятор от среды выполнения и выполнять компиляцию с разных языков программирования для исполнения на JVM. В этой статье мы разберемся с внутренней организацией class-файлов и байт-кода в них и научимся работать с фреймворком ASM для исследования и программной генерации байт-кода для динамического определения новых классов или их компиляции из других языков программирования.
Читать: https://habr.com/ru/companies/otus/articles/726610/?utm_campaign=726610
8 553
Создание и тестирование процессоров аннотаций (с кодогенерацией) для Kotlin
В разработке с использованием Kotlin (или Java) для создания классов по верхнеуровневому описанию часто используется маркировка аннотациями (например, для моделей таблиц баз данных, сетевых запросов или инъекции зависимостей) и подключение процессоров аннотаций, которые также могут генерировать код, доступный из основного проекта. Запуск процессоров аннотаций выполняется внутри gradle (для Java-проектов через annotationProcessor, для Kotlin - kapt) и встраивается как зависимость для целей сборки проекта. И конечно же, как и для любого другого кода, для процессора аннотаций необходимо иметь возможность разрабатывать тесты. В этой статье мы рассмотрим основы использования кодогенерации (с использованием kapt) и разработки тестов для созданных генераторов кода. Во второй части статьи речь пойдет о разработке процессоров на основе Kotlin Symbol Processing (KSP) и созданию тестов для них.
Читать: https://habr.com/ru/companies/otus/articles/726458/?utm_campaign=726458
8 553
Как написать простое консольное приложение с аргументами на Java
Пост про то, как начинающий программист разбирается с консольными утилитами, Java и args4j
У меня появилось задание написать консольное приложение , которое должно разделять и соединять текстовые файлы...
Читать: https://habr.com/ru/articles/726496/?utm_campaign=726496
8 553
Разбираем float на части
Всем привет, многие, наверное, знают про структуру чисел с плавающей запятой, но мне захотелось вдохнуть немного жизни в эти формулы. В этой статье я разберу на части число, наглядно показав что и откуда берется. Код будет на Java.
Читать: https://habr.com/ru/articles/726312/?utm_campaign=726312
8 553
Создаем читабельный e2e тест для микросервисов на Spring Boot с помощью Cucumber 7 и Wiremock
Дорогой читатель, это мой первый туториал и если я что-то упустил или не объяснил, хотя стоило бы, напиши пожалуйста комментарий и я обновлю статью.
TL;DR
Весь код для микросервисов и e2e теста тут
Рекомендую быстро пробежаться по коду перед прочтением статьи т к в самой статье я объясню только неочевидные моменты реализации e2e тестирования.
Читать: https://habr.com/ru/articles/726332/?utm_campaign=726332
8 553
Замеряй и ускоряй: как мы сократили время вызова метода в Java-коде в 16 раз
Привет, Хабр! Замер производительности кода — не самое простое упражнение для разработчика. Приходится решать кучу сложностей: разбираться с методом, создавать правильные условия. И всё равно можно получить результат с погрешностью, потому что любой метод «не бесплатный» и требует ресурсов процессора.
Меня зовут Александр Певненко, я Java-разработчик в СберТехе. Вместе с командой мы развиваем Platform V DataSpace. Это облачный сервис, который упрощает и ускоряет разработку приложений, используя концепцию Backend-as-a-Service (BaaS) для хранения и управления данными. Я расскажу про наш способ замера производительности кода с помощью бенчмарков. Рассматривать метод будем на примере оптимизации кода в Platform V Dataspace, которая помогла сократить время вызова метода в 16 раз.
В статье я буду пользоваться языком Java, Python для построения графиков и набором библиотек JMH — они также адаптированы для Kotlin, Scala и т.д.
Читать: https://habr.com/ru/companies/sberbank/articles/726100/?utm_campaign=726100
8 553
Потоковый обмен в распределённых системах и использование реактивных потоков в нереактивных приложениях: опыт «Магнита»
Привет, Хабр! На связи Андрей Зяблин, Java разработчик компании «Магнит». В статье я расскажу про три решения, которые позволяют реализовать потоковый обмен данными из БД между распределёнными приложениями.
Читать: https://habr.com/ru/companies/magnit/articles/726090/?utm_campaign=726090
8 553
Что Java-разработчикам расскажут на JPoint 2023?
Недавно Java дошла до юбилейной 20-й версии, а у нашей Java-конференции JPoint своя круглая дата: впервые она прошла 10 лет назад. Каких именно докладов о языке-юбиляре ожидать на конференции-юбиляре в апреле?
Как водится, в программе есть разные тематические блоки:
— и об инструментах («Как познавать Spring Boot 3 с помощью TDD»),
— и о производительности (тут научат пользоваться профайлером perf для JVM-задач),
— а также об архитектуре, тестировании, «реактивщине», работе с данными.
А полный список докладов с описаниями — далее в посте.
Читать: https://habr.com/ru/companies/jugru/articles/725848/?utm_campaign=725848
8 553
Выражение Hibernate запросов в виде типо‑безопасных Java-потоков
В этой статье вы узнаете, как расширение JPAstreamer Quarkus упрощает выполнение типо‑безопасных запросов Hibernate без излишней многословности и сложности.
Читать: https://habr.com/ru/articles/721788/?utm_campaign=721788
8 553
Книга «Объекты. Стильное ООП»
Привет, Хаброжители!
Хороший объектно-ориентированный код удобно читать, изменять и исправлять. Универсальные практики проектирования объектов, собранные в этой книге, позволят улучшить ваш стиль кодирования. Эти правила подойдут к любому объектно-ориентированному языку, они делают код максимально понятным и надежным, а также повышают производительность как индивидуальных разработчиков, так и команд.
Книга «Объекты. Стильное ООП» познакомит вас с профессиональными техниками написания ОО-кода. Маттиас Нобак раскрывает правила создания объектов, определения методов, изменения и извлечения состояний и многое другое. Все примеры написаны на простом псевдокоде, который легко перевести в любой язык программирования. Кейс за кейсом вы изучите ключевые сценарии и задачи проектирования объектов, а затем шаг за шагом создадите простое веб-приложение, которое покажет, как должны взаимодействовать объекты разных типов.
Читать: https://habr.com/ru/companies/piter/articles/725338/?utm_campaign=725338
8 553
@Transactional в Spring и исключения
Привет! В этой статье я бы хотел рассказать, как Spring'овая аннотация
@Transactionalведет себя при возникновении исключений. Про это немало написано, в том числе на Хабре. Например, тут или тут. Поэтому, чтобы не повторяться, я не буду подробно расписывать как и почему исключения влияют на откат транзакций, а вместо этого просто покажу несколько примеров.
Читать: https://habr.com/ru/articles/725064/?utm_campaign=7250648 553
Java для начинающих: решаем задачу умножения матриц
Для тех, кто только начинает учиться программировать на языке Java, часто бывает непросто найти задачу по плечу — и чтобы научиться чему-то новому, и чтобы не застрять где-то посередине задачи, разбираясь с подводными камнями.
В этой статье я, Сергей Чеботарев, наставник на курсе «Java-разработчик», покажу пример задачи, которая более-менее подходит к этим требованиям. Мы немного потренируемся в реализации алгоритмов, использующих циклы, а также в использовании консольного ввода-вывода. Нам потребуются математические знания на уровне школьной математики, а для реализации я буду использовать JDK 11.
Читать: https://habr.com/ru/companies/yandex_praktikum/articles/723510/?utm_campaign=723510
8 553
Как запустить Java-приложение с помощью CRaC в контейнере Docker
CRaC (Coordinated Restore at Checkpoint) — это проект OpenJDK, разработанный Azul для решения проблемы «медленного» запуска виртуальной машины Java в микросервисной среде.
Когда JVM запускает код вашего приложения, она выполняет такие действия, как интерпретация, компиляция и оптимизация кода, чтобы ваше приложение работало как можно быстрее при заданной рабочей нагрузке. Это здорово, но может занять некоторое время, и особенно при запуске короткоживущих микросервисов, вы не хотите ждать, пока JVM создаст наиболее оптимизированный код.
В механизме восстановления контрольной точки (checkpoint-restore) нет ничего нового, и большинство из вас уже знают и используют его ежедневно.
Если вы работаете на ноутбуке и закрываете крышку, операционная система обнаруживает это и сохраняет текущее состояние на диск. Как только вы снова открываете крышку, операционная система восстанавливает сохраненное состояние с диска.
CRaC предоставляет тот же механизм, но для JVM и вашего запущенного приложения.
Вы запускаете свое приложение, применяете к нему некоторую рабочую нагрузку (чтобы убедиться, что важные части вашего кода будут затронуты и оптимизированы JVM), а затем создаете контрольную точку. Это приведет к закрытию всех открытых ресурсов, таких как открытые файлы и сокетные соединения, а затем сохранит состояние JVM, включая ваше приложение, на диск.
После этого вы сможете восстанавливать состояние JVM, включая состояние вашего приложения, из этой сохраненной контрольной точки так часто, как вам захочется.
Таким образом, CRaC не только решает проблему времени запуска, но и может решить проблему времени разогрева приложения, поскольку вы можете создавать контрольную точку в любое время.
Читать: https://habr.com/ru/articles/719522/?utm_campaign=719522
8 553
Сказка о типизации
В некотором царстве, в некотором государстве жил был царь. Как-то раз объявил царь всему народу - "Кто решит три моих задачки, тот сам сможет царём стать". И даже контракт метода опубликовал, всё честь по чести.
Это только присказка, сказка будет впереди
Читать: https://habr.com/ru/articles/724700/?utm_campaign=724700
8 553
Модульные тесты как оплот стабильности в Agile разработке
В этой статье мы рассмотрим ту часть тестирования, которой не касаются специалисты по тестированию — модульные тесты. Почему же при Agile так необходимо иметь качественное покрытие модульными тестами? Раскроем их положение в цикле разработки и цели их создания. Рассмотрим различные варианты оценки качества покрытия тестами при разработке backend приложения на языке Java с использованием Spring-boot. С помощью Jacoco построим отчет и увидим недостатки численных оценок покрытия тестами. Сформулируем субъективные оценки модульного тестирования и советы по их разработке.
Читать: https://habr.com/ru/companies/axenix/articles/724318/?utm_campaign=724318
8 553
Как я учился языку JAVA на Яндекс платформе
Вот наконец я созрел для написания отзыва о своей учебе в Яндекс практикуме на потоке Java программировании. Долго не мог и не хотел оставлять отклик по учебе, думаю он был бы не совсем корректным. Теперь, когда утихли первые и последние эмоции, думаю можно. Итак, прежде чем описать свое мнение, ведь все что будет написано является сугубо субъективным, пропущенным через мой опыт и чувства, поэтому маленькое предисловие: немного о себе, это важно с точки зрения дальнейшего описания событий. Образование высшее медицинское, стаж работы на врачебных должностях, в том числе и заведующим отделением обширный, к тому же имею педагогическое образование и стаж преподавания семь лет. Это все к тому, что я понимаю о чем говорю и пишу в своем отзыве. А также для тех, у кого образование гуманитарий. Одно дела переучиваться людям с техническим образованием на программиста, а другое без такового. И последняя ремарка, сравнивать не с чем, пока на других платформах не пытался учиться, обзор будет сугубо о платформе Яндекс практикум, и наверно будет отзыв не совсем честен, так как к началу обучения я самостоятельно в течение шести месяцев изучал данный вопрос, к моменту обучения представлял, что такое ООП (объектно-ориентированное программирование), в целом имел представление об языках программирования, а также изучил наизусть основы программирования java по книги «Java Полное руководство» Герберт Шилдт 10-е издательство и спокойно пользовался технической документацией по Java SE 11 на тот момент.
Читать: https://habr.com/ru/articles/724496/?utm_campaign=724496
8 553
Универсальный загрузчик XML на java. Или как загрузить файлы ГАР на 250 гб и остаться при памяти
С проблемой загрузки больших XML столкнулся при переходе с КЛАДР и ФИАС на справочники ГАР - Государственный адресный реестр (Федеральная информационная адресная система).
Справочник ГАР содержит более подробную информацию чем предыдущие классификаторы. В том числе информацию по муниципальным делениям. В связи с чем справочник после распаковки занимет около 250 ГБ, что примерно в 3 раза больше чем тот же ФИАС.
Предыдущая загрузка работала на DOM-модели, т.е. весь XML-файл считывался в память. Соответственно при попытке загрузить ГАР таким же способом стали стабильно получать OutOfMemory. А значит настало время менять подход к загрузке)
Немного теории:
DOM (Document Object Model) - это стандартный интерфейс для работы с документами в формате XML (Extensible Markup Language). DOM-модель представляет XML-документ в виде дерева объектов, где каждый элемент и атрибут документа является узлом дерева.
SAX (Simple API for XML) является событийно-ориентированным API для чтения XML-документа. Он предоставляет возможность читать XML-документ последовательно и обрабатывать события, такие как начало и конец элемента, содержимое элемента и т.д.
StAX (Streaming API for XML) также является API для последовательного чтения и записи XML-документов. Он предоставляет потоковый доступ к XML-документу, позволяя читать его и записывать по частям. StAX предоставляет возможность читать и записывать XML-документы в виде потока событий, аналогично SAX, но также предоставляет возможность читать и записывать XML-документы в виде итерируемых наборов событий. StAX позволяет эффективно обрабатывать большие XML-документы и не требует реализации обработчиков событий.
Читать: https://habr.com/ru/articles/724324/?utm_campaign=724324
8 553
Мой шаблон Android приложения для Pet-проектов
Приветствую всех любителей покодить)
В течение года разработки небольшого приложения я рефакторил код, что-то менял, удалял, добавлял и пришел к интересной комбинации различных практик и решений, которая впоследствии стала шаблоном для собственных Pet-проектов.
Читать: https://habr.com/ru/articles/723596/?utm_campaign=723596
8 553
10 Examples of Array Data Structure in Java
Without any doubt, the array is one of the most used data structures in all programming languages, including Java. Pick up any programming language be it functional, object-oriented, imperative, or even scripting languages like Python, Bash, and Perl, you will always find an array. That's why it's important for any programmer to have a good understanding of the array data structure. Like any other data structure, the array also provides a way to organize and store objects, but the way it does makes all the difference. An array is used to store elements in the contiguous memory location and many C, C++ programmers can take advantage of a pointer to work with an array.
Java Interview questions and tutorials
Read: http://www.java67.com/2014/08/what-is-array-data-structure-in-java.html
8 553
Java News Roundup: JDK 21 Release Schedule, Payara Platform, JBang, JHipster, WildFly
This week's Java roundup for March 27th, 2023 features news from OpenJDK, JDK 21, GlassFish 7.0.3, Spring point and milestone releases, Payara Platform, Quarkus 3.0.CR1, Micronaut 3.8.8, WildFly 28 Beta1, Hibernate ORM 6.2, Groovy 4.0.11, Camel 3.20.3, James 3.7.4, Eclipse Vert.x 4.4.1, JHipster Quarkus Blueprint 2.0, JHipster Lite 0.30, JBang 0.106, Gradle 8.1-CR2 and new Foojay.io calendar.
By Michael Redlich
Read: https://www.infoq.com/news/2023/04/java-news-roundup-mar27-2023/
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
