JavaRush /Java блог /Random UA /Кава-брейк #61. Інструменти, які підвищують якість Java к...

Кава-брейк #61. Інструменти, які підвищують якість Java коду. Мова Java та проекти з відкритим вихідним кодом

Стаття з групи Random UA

Інструменти, які підвищують якість коду Java

Джерело: Dev.to Найкращий спосіб захистити ваш код від помилок, яких можна уникнути, - використовувати інструменти статичного аналізу коду. Вони можуть допомогти вам знайти і виправити проблемний код до того, як він вийде у прод. Погляньмо на деякі популярні інструменти статичного аналізу, які можна використовувати для тестування коду в різних ситуаціях.Кава-брейк #61.  Інструменти, які підвищують якість Java коду.  Мова Java та проекти з відкритим вихідним кодом - 1

DeepSource

DeepSource - це, ймовірно, найкращий статичний аналізатор коду для Java, з усіх. DeepSource виявляє понад 170 проблем, пов'язаних з якістю коду Java, у тому числі помилки продуктивності, проблеми безпеки та антипатернів. В даний час він підтримує проекти Java на Gradle, у майбутньому DeepSource також додасть підтримку Maven та Android. Крім того, творці DeepSource працюють над додаванням підтримки Autofix: це дозволить Java розробникам виправляти проблеми без написання коду. особливості:
  • Виявляє понад 170 проблем із якістю коду.
  • Підтримуються версії OpenJDK з 8 до 14.
  • Інтеграція: Gradle.
Ліцензування: безкоштовне використання для проектів з відкритим вихідним кодом, студентів та некомерційних організацій. Платні тарифи розпочинаються від 12 доларів для одного користувача на місяць.

SonarQube

SonarQube - це набір інструментів статичного аналізу коду Java з відкритим вихідним кодом, який поєднує функціональні можливості таких інструментів як FindBugs і PMD. Інтуїтивно зрозумілі панелі моніторингу SonarQube зберігають історію, що покращує відстеження якості коду. SonarQube використовує передові методи аналізу, такі як зіставлення зі зразком. Також він проводить аналіз потоку даних, знаходить явні проблеми у структурі коду, помилки та вразливості безпеки. особливості:
  • Містить 597 правил виявлення різних проблем з якістю коду.
  • Підтримує всі мовні версії Java 14.
  • Інтеграція: Maven, Gradle, Ant.
Ліцензування: версія Community Edition безкоштовна та має відкритий вихідний код. Вартість ліцензії на комерційні версії – від 120 євро.

SpotBugs

SpotBugs - це наступник FindBugs: інструмент статичного аналізу коду Java, який досліджує байт-код JVM, знаходить ознаки потенційних помилок та вразливостей безпеки, виявляючи дефекти кодингу. Про ці дефекти повідомляють у попередженнях (warnings), але не всі попередження обов'язково є дефектами: вони можуть сповіщати про можливі проблеми з продуктивністю. В останній версії міститься понад 400 попереджень, розділених на чотири категорії: (1) найбільш небезпечні, (2) небезпечні, (3) серйозні, (4) потребують уваги. особливості:
  • Виявляє у коді понад 400 типів помилок.
  • Для роботи SpotBugs потрібен JRE (або JDK) 1.8.0 або новіший. Однак він може аналізувати програми, скомпіловані для будь-якої версії Java, починаючи з 1.0 до 1.9.
  • Інтеграція: Ant, Maven, Gradle.
Ліцензування: безкоштовно та з відкритим вихідним кодом.

PMD

PMD аналізує вихідний код Java, звіряє його зі своїм списком правил та повідомляє користувача про проблемні рядки. PMD вміє визначати загальні проблеми, такі як хардкодинг паролів та IP-адреса, використання циклу forEach замість традиційного for, а також код, який порушує закон Деметри або реалізує антипаттерн God Class. особливості:
  • Більше 250 правил виявлення проблем у Java.
  • Мовна підтримка Java 13
  • Інтеграція: Maven, Gradle.
Ліцензування: безкоштовно та з відкритим вихідним кодом.

EclEmma

EclEmma (на основі бібліотеки JaCoCo) – це безкоштовний набір інструментів покриття коду Java для Eclipse. Він вимірює покриття коду та видає дані про нього за допомогою візуальних звітів. EclEmma виділяє рядки коду та загальний відсоток виконаного коду, а також відстежує покриття рядків та гілок. Інструмент допомагає розробникам оцінювати код, який не протестували як слід, та фокусується на областях із низьким охопленням. Він підтримує 3 типи форматів звітів: HTML, XML та CSV. особливості:
  • Підтримує файли Java класів від версії 1.0 до 14.
  • Інтеграція: Ant, Maven.
Ліцензування: безкоштовно та з відкритим вихідним кодом.

Checkstyle

Checkstyle — інструмент статичного аналізу коду Java, який допомагає розробникам встановити стандарти написання коду і підтримувати їх дотримання. Checkstyle виявляє порушення правил, допомагає їх виправити та переформатувати код за допомогою таких IDE, як Eclipse, IntelliJ IDEA або NetBeans. особливості:
  • Понад 180 перевірок на дотримання стилю Java-коду.
  • Підтримка мов Java 14.
  • Інтеграція: Ant, Maven.
Ліцензування: безкоштовно та з відкритим вихідним кодом.

JArchitect

JArchitect – це інструмент статичного аналізу Java, який оцінює такі метрики коду, як кількість параметрів методу, змінних та рядків, складність організації циклів у програмі, аферентне та еферентне зв'язування тощо. Він вимірює, запитує та візуалізує ваш код, дозволяє уникнути непередбачених проблем та накопичення технічного боргу. особливості:
  • Мовна підтримка Java 8 до 13.
  • Понад 450 правил.
  • Інтеграція: Maven, Gradle, Ant.
Ліцензування: безкоштовна пробна версія на 14 днів, безкоштовна ліцензія з відкритим вихідним кодом для некомерційних проектів програмного забезпечення з відкритим вихідним кодом, персональна ліцензія – 149 доларів США, версія для розробників – 299 доларів США, Build Machine – 549 доларів США.

JUnit

JUnit — популярне середовище модульного тестування для проектів, що розробляються на Java, що дозволяє розробникам писати та запускати модульні тести для Java 8 та вище. JUnit перевіряє стан та поведінку коду за допомогою простих, але потужних операторів контролю. Почати роботу з JUnit легко: у ньому безліч додаткових можливостей використання анотацій для складніших сценаріїв. особливості:
  • JUnit 5 (останній випуск) вимагає Java 8 (або вище) під час виконання.
  • Інтеграція: Maven, Gradle, Ant.
Ліцензування: безкоштовно та з відкритим вихідним кодом.

Мова Java та проекти з відкритим вихідним кодом

Джерело: Opensource Якщо ви використовуєте Java для написання бізнес-додатків, ви повинні знати, що Java Standard Edition (SE) - це не програмне забезпечення з відкритим вихідним кодом. Більше того, у січні 2019 року корпорація Oracle змінила свою політику — тепер вона потребує комерційної ліцензії для будь-якого використання SE, від локального середовища розробника до виробничого середовища. Ця зміна викликала багато питань серед розробників щодо дотримання ліцензійних вимог під час використання Java. Якщо у вас ще є сумніви щодо застосування Java у проектах з відкритим вихідним кодом, у цій статті ви дізнаєтеся всю необхідну вам інформацію.Кава-брейк #61.  Інструменти, які підвищують якість Java коду.  Мова Java та проекти з відкритим вихідним кодом - 2

Розвиваючі платформи в спільноті Java

OpenJDK (Open Java Development Kit) – це безкоштовна реалізація Java SE з відкритим вихідним кодом. Це альтернатива, яка дозволяє більше 70% Java-розробників продовжувати використовувати свої середовища додатків Java, залишаючись при цьому в екосистемі з відкритим вихідним кодом. OpenJDK поширюється під ліцензією GNU GPLv2. Оскільки вона гарантує свободу розповсюдження, це робить OpenJDK вибором за замовчуванням для розробників Java при створенні настільних додатків, сумісних з Java SE. Oracle продовжує розробку та підтримку Enterprise Java (Java EE), побудованої на платформі Java SE. Java EE включає додаткові функції, що виходять за рамки SE, для підтримки великомасштабних, масштабованих, багаторівневих та захищених програм для різних корпоративних середовищ. У вересні 2017 року платформу Java EE передали Eclipse Foundation , що призвело до впровадження більш гнучких процесів, зміни процесу управління та впровадження більш гнучкого ліцензування. Через рік, в 2018 році, Eclipse Foundation оголосив про випуск нового бренду Jakarta EE. Він покликаний підтримати розробників, які переходять із Java EE на нову платформу. Еволюція від Java EE до Jakarta EE також вплинула багатьох корпоративних Java-розробників при реалізації нової бізнес-логіки.

Розвиток фреймворків у міру розвитку Java

Тим часом нові технології, такі як RESTful API (2000), HTTP 2 (2015) і JSON (2017), розроблялися разом з веб-архітектурами, що швидко змінюються. Інтерес до мікросервісних архітектур зростав, але оскільки Java EE знаходилася в перехідному періоді, вона не вловила ці нові парадигми. У відповідь на запити спільноти Java, кілька компаній (IBM, Red Hat та Tomitribe) створабо у 2016 році MicroProfile – специфікацію, яка оптимізує платформу Enterprise Java для мікросервісних архітектур. Пізніше MicroProfile приєднався до Eclipse Foundation, надавши корпоративним Java-розробникам два варіанти реалізації мікросервісних архітектур: SpringBoot або MicroProfile. MicroProfile дозволяє розробникам створювати переносні мікросервіси на основі Java для різних рішень постачальників, забезпечуючи при цьому сумісність між відповідними API Java/Jakarta EE та MicroProfile в одному додатку. Якщо вас цікавить Enterprise-розробка на Java, MicroProfile Starterстане чудовим вибором для вивчення мікросервісів на практиці. Графічний інтерфейс користувача MicroProfile Starter помітно спрощує генерацію коду при створенні монолітного сервера додатків Java. Середовище виконання MicroProfile підтримує розгортання артефакту програми (наприклад, файлу JAR або WAR) та його виконання як сервер програм Java зі специфікацією MicroProfile. Ви можете вибрати потрібне хмарне середовище виконання (наприклад, Quarkus ) зі списку середовища виконання MicroProfle Starter, а потім вибрати специфікації для отримання додаткових корпоративних фіч, таких як стійкість до відмов, OpenAPI, OpenTracing та інші. Виконавши ці кроки, натисніть кнопку «Завантажити», щоб розпочати розробку програми.Кава-брейк #61.  Інструменти, які підвищують якість Java коду.  Мова Java та проекти з відкритим вихідним кодом - 3

Висновок

Навігація по Java з погляду відкритого вихідного коду може бути трохи заплутаною, враховуючи довгу історію мови та її зміни. Використання OpenJDK та Jakarta EE дозволяє розробникам Java підтримувати стандартні корпоративні програми без шкоди для свободи відкритого вихідного коду. Якщо ви хочете детальніше дізнатися про це, радимо ознайомитися з MicroProfile або Quarkus.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ