SpotBugs — это бесплатный инструмент статического анализа кода Java, являющийся преемником FindBugs. Он помогает обнаруживать широкий спектр ошибок и потенциальных проблем в коде, таких как нулевые указатели, утечки ресурсов, небезопасное использование API, логические ошибки и неэффективный код.
Checkstyle — это статический анализатор кода Java, который помогает разработчикам писать код в соответствии с заданными стандартами кодирования. Он может проверять код на различные проблемы, такие как несоответствие стандартам кодирования, дублирование кода, неиспользуемые переменные и методы, неправильные комментарии.
Singularity — это платформа с открытым исходным кодом для контейнеризации, основанная на Mesos. Она позволяет разработчикам и инженерам DevOps упаковывать приложения и их зависимости в изолированные среды, называемые контейнерами.
Caffeine — это высокопроизводительная библиотека кэширования для Java, вдохновленная Guava Cache. Она обеспечивает простой API, схожий с ConcurrentHashMap, но с более продвинутыми функциями кэширования.
cache2k — это высокопроизводительная библиотека кэширования в памяти для Java-приложений. Она фокусируется на предоставлении хорошо спроектированной реализации кэширования объектов в памяти.
Byteman — это инструмент для трассировки, мониторинга и тестирования поведения приложений Java и кода среды выполнения JDK. Он позволяет вставлять Java-код в методы приложения или методы среды выполнения Java без необходимости повторной компиляции, повторной упаковки или даже повторного развертывания приложения.
Byte Buddy — это библиотека Java для генерации байт-кода во время выполнения. Она позволяет создавать новые классы, модифицировать существующие и перехватывать вызовы методов.
CGLIB (Code Generation Library) — это библиотека Java, предназначенная для динамической генерации байт-кода. Она позволяет создавать новые классы и модифицировать существующие во время выполнения программы. CGLIB используется в различных фреймворках, таких как Spring, Hibernate и Mockito.
Jackson-dataformat-csv — это библиотека Java, являющаяся модулем расширения популярной библиотеки Jackson для обработки JSON. Она позволяет читать и записывать данные в формате CSV (Comma Separated Values), который широко используется для хранения и обмена табличными данными.
P3C (Programming Practice and Competition) — это набор правил кодирования Java, разработанный компанией Alibaba. Эти правила направлены на повышение качества и читаемости кода Java, а также на снижение вероятности ошибок.
SBE (Simple Binary Encoding) — это бинарный формат данных, предназначенный для высокопроизводительного обмена сообщениями между приложениями. Он отличается простотой, компактностью и скоростью, что делает его идеальным для использования в финансовых системах, системах с высокой пропускной способностью и других приложениях, где требуется низкая задержка и высокое использование пропускной способности сети.
Timefold — это высокопроизводительный планировщик на основе искусственного интеллекта, написанный на Java. Он является ответвлением популярного проекта OptaPlanner и позволяет решать сложные задачи оптимизации расписаний и операций.
FlexyPool — это библиотека Java, которая добавляет метрики и гибкие стратегии к пулу соединений, позволяя ему динамически менять размер. Это очень удобно, поскольку большинство пулов соединений предлагают ограниченный набор стратегий динамической конфигурации.
Clover — это инструмент покрытия кода для Java и Groovy, который помогает разработчикам измерить насколько тестами покрыт ваш код, определить какие части кода не тестируются, улучшить качество вашего кода за счет написания тестов для непокрытых частей.
Clover работает путем отслеживания выполнения вашего кода и записи информации о том, какие строки кода были выполнены. Эта информация используется для создания отчетов, которые показывают вам, насколько хорошо ваш код покрыт тестами.
#вопросы_с_собеседований Расскажите про приведение типов. Что такое понижение и повышение типа?
Приведение типов — это преобразование переменной одного типа в другой.
Существует два вида приведения типов: — Повышение типа (widening): автоматическое преобразование типа в другой, более широкий тип. Например, int в long. При этом не теряется точность, так как широкий тип может представить все значения узкого типа. — Понижение типа (narrowing): явное приведение к более узкому типу, например double в int. Здесь возможна потеря точности, поэтому требуется явное приведение в коде.
Повышение типа безопасно, компилятор делает его автоматически. Понижение опасно потерей данных, поэтому разработчик должен явно указать такое приведение в коде, чтобы показать, что он контролирует возможную потерю точности.
JaCoCo (Java Code Coverage) — это инструмент с открытым исходным кодом, который используется для измерения покрытия кода Java-тестами. Он помогает разработчикам определить, какие части кода были выполнены тестами, а какие нет.
SonarJava — это плагин для статического анализа кода, который используется для проверки качества кода Java. Он может обнаруживать различные проблемы, такие как ошибки кода, дублирование кода, потенциальные уязвимости безопасности и т. д.
RefactorFirst — это инструмент для Java-кода, помогающий определить и расставить по приоритетам классы, которые следует рефакторить в первую очередь. Он работает, сканируя код на наличие «божественных классов» (God Classes) и классов с высокой степенью связности.
«Божественных классов» — это классы, которые делают слишком много и, следовательно, являются плохо спроектированными. Они могут быть трудными для понимания, тестирования и сопровождения.
Lanterna — это библиотека Java, которая позволяет создавать простые текстовые пользовательские интерфейсы (TUI). Она может быть использована для создания различных приложений, включая игры, утилиты и даже простые текстовые редакторы.