Jess Rule Engine та JSR 94

Jess Rule Engine та JSR 94

1. Огляд Використання механізму правил - це чудовий спосіб відокремити бізнес-логіку від нашого шаблонного коду та захистити наш код програми від бізнес-змін. У попередній статті про Java Rule Engines ми згадували специфікацію JSR 94. Jess Rule Engine надає особливого значення як реалізація еталонних правил для JSR 94 , тому давайте подивимось на нього. 2. Jess Rule Engine Jess - один із найперших механ

Детальніше

   Читання з файлу в Котліні

Читання з файлу в Котліні

1. Огляд У цьому короткому посібнику ми дізнаємося про різні способи читання файлу в Kotlin. Ми розглянемо обидва випадки використання читання всього файлу як рядка, а також читання його у списку окремих рядків. Також його отримання з повного абсолютного шляху або з ресурсу проекту. 2. Читання файлу Спершу створимо вхідний файл, який буде читати Котлін. Ми створюємо файл, як

Детальніше

   Написання плагінів IntelliJ IDEA

Написання плагінів IntelliJ IDEA

1. Вступ За останні кілька років IntelliJ від JetBrains швидко став найкращим середовищем IDE для розробників Java. У нашому останньому звіті про стан Java IntelliJ був обраним середовищем для вибору для 55% респондентів, порівняно з 48% роком раніше. Однією з особливостей, яка робить IntelliJ настільки привабливим для розробників Java, є можливість розширення та створення нових функціональних можливостей за допом

Детальніше

   Геолокація за IP на Java

Геолокація за IP на Java

1. Вступ У цій статті ми розглянемо, як отримати дані географічного розташування з IP-адреси, використовуючи MaxMind GeoIP2 Java API з безкоштовною базою даних GeoLite2. Ми також побачимо це в дії, використовуючи простий веб-демонстраційний додаток Spring MVC. 2. Початок роботи Для початку вам потрібно завантажити API GeoIP2 та базу даних GeoLite2 з MaxMind. 2.1. Залежність Мавена Щоб включити API MaxMind GeoIP2 у свій проект Mav

Детальніше

   Перевірте, чи каталог порожній на Java

Перевірте, чи каталог порожній на Java

1. Огляд У цьому короткому навчальному посібнику ми ознайомимося з декількома способами з’ясувати, чи каталог пустий чи ні. 2. Використання Files.newDirectoryStream З Java 7 метод Files.newDirectoryStream повертає DirectoryStream для ітерації над усіма записами в каталозі . Тож ми можемо використовувати це

Детальніше

   Додаткові доповнення API Java 9

Додаткові доповнення API Java 9

1. Огляд У цій статті ми розглянемо доповнення Java 9 до необов’язкового API. Крім модульності, Java 9 також додає три дуже корисні методи для класу Optional . 2. або () Метод Іноді, коли наш Необов’язковий порожній, ми хочемо виконати якусь іншу дію, яка також повертає Опціональний. До Java 9 необов’язковий клас мав лише методи orElse () та orElseGet (), але обидва повинні повертати нерозгорнуті значення. Java 9 представляє метод or (), який ліниво повертає інший необов’язковий, якщо

Детальніше

   Обмежені контексти DDD та модулі Java

Обмежені контексти DDD та модулі Java

1. Огляд Домен-керований дизайн (DDD) - це набір принципів та інструментів, які допомагають нам розробляти ефективні архітектури програмного забезпечення для забезпечення вищої ділової цінності . Обмежений контекст є однією з центральних і важливих закономірностей порятунку архітектури від Великого куля бруду шляхом виділення цілого домену програми на к

Детальніше

   Чи слід закривати потік Java?

Чи слід закривати потік Java?

1. Огляд Завдяки введенню лямбда-виразів у Java 8 можна писати код більш стислим та функціональним способом. Потоки та функціональні інтерфейси - це серце цієї революційної зміни на платформі Java. У цьому короткому посібнику ми дізнаємось, чи слід явно закривати потоки Java 8, розглядаючи їх з точки зору ресурсів. 2. Закриття потоків Потоки Java

Детальніше

   Створіть файл у певному каталозі на Java

Створіть файл у певному каталозі на Java

1. Огляд У цьому короткому посібнику ми розглянемо, як створити файл у певному каталозі. Ми побачимо різницю між абсолютним та відносним шляхами файлів, і ми будемо використовувати шляхи, які працюють у декількох основних операційних системах. 2. Абсолютні та відносні шляхи до файлів 2.1. Абсолютні Шляхи Почнемо зі створення файлу в каталозі, посилаючись на весь шлях , також відомий як абсолютний шлях. Для демонстрації ми використаємо абс

Детальніше

   Багаточасткове завантаження в Amazon S3 з Java

Багаточасткове завантаження в Amazon S3 з Java

1. Огляд У цьому посібнику ми побачимо, як обробляти багаточастинні завантаження в Amazon S3 за допомогою AWS Java SDK. Простіше кажучи, при багаточастинному завантаженні ми розділяємо вміст на менші частини та завантажуємо кожну частину окремо. Всі деталі збираються повторно при отриманні. Завантаження кількох частин пропонує такі переваги: Більша пропускна здатність - ми можемо завантажувати деталі паралельно Більш легке

Детальніше

   Весняна сторінка входу в систему безпеки з React

Весняна сторінка входу в систему безпеки з React

1. Огляд React - це бібліотека JavaScript на основі компонентів, створена Facebook. За допомогою React ми можемо легко створювати складні веб-програми. У цій статті ми змусимо Spring Security працювати разом зі сторінкою React Login. Ми скористаємося наявними конфігураціями Spring Security з попередніх прикладів. Тож ми будемо спиратися на попередню статтю про створення

Детальніше

   Kotlin const, var і val Ключові слова

Kotlin const, var і val Ключові слова

1. Вступ У цьому підручнику ми викладемо ключові відмінності між ключовими словами const , var і val у мові Kotlin . Щоб застосувати ці ключові слова до контексту, ми порівняємо їх із їхніми еквівалентами на Java. 2. Розуміння набору тексту Щоб зрозуміти ці ключові слова, ми повинні зрозуміти дві основні категорії систем типів, яким може слідувати мова - маніф

Детальніше

   Визначте, чи всі елементи однакові в списку Java

Визначте, чи всі елементи однакові в списку Java

1. Огляд У цьому короткому посібнику ми з’ясуємо, як визначити, чи всі елементи у списку однакові. Ми також розглянемо часову складність кожного рішення, використовуючи позначення Big O, даючи нам найгірший сценарій. 2. Приклад Припустимо, у нас є такі 3 списки: notAllEqualList = Arrays.asList("Jack", "James", "Sam", "James"); emptyList = Arrays.asList(); allEqualList = Arrays.asList("

Детальніше

   Співпраця з JSON у Groovy

Співпраця з JSON у Groovy

1. Вступ У цій статті ми збираємось описати та побачити приклади роботи з JSON у додатку Groovy. Перш за все, щоб отримати приклади цієї статті та запустити, нам потрібно встановити наш pom.xml : // ... org.codehaus.gmavenplus gmavenplus-plugin 1.6 // ... org.codehaus.groovy groovy-all 2.4.13 Найновіший плагін Maven можна зна

Детальніше

   Розбір параметрів командного рядка за допомогою JCommander

Розбір параметрів командного рядка за допомогою JCommander

1. Огляд У цьому підручнику ми дізнаємося, як використовувати JCommander для синтаксичного аналізу параметрів командного рядка. Ми вивчимо кілька його особливостей, будуючи просту програму командного рядка. 2. Чому JCommander? «Оскільки життя занадто коротке для аналізу параметрів командного рядка» - Седрік Беуст JCommander, створений Седриком Беустом, є бібліотекою

Детальніше

   Керівництво по Ebean ORM

Керівництво по Ebean ORM

1. Вступ Ebean - це об’єктно-реляційний інструмент відображення, написаний на Java. Він підтримує стандартні анотації JPA для оголошення об’єктів. Однак він надає набагато простіший API для збереження. Насправді, один із пунктів, який варто згадати про архітектуру Ебеї, полягає в тому, що вона безсесійна, тобто вона не повністю управляє сутностями. Крі

Детальніше

   Проксі, декоратор, адаптер та візерунки мостів

Проксі, декоратор, адаптер та візерунки мостів

1. Вступ У цій статті ми зосередимося на структурних зразках дизайну в Java - і обговоримо, що це таке, і деякі принципові відмінності між ними. 2. Структурні шаблони проектування Згідно з Gang Of Four (GoF), шаблони дизайну можна класифікувати на три типи: Творчі Структурні Поведінковий Простіше кажучи, Структурні шаблони мають справу зі складом класів та об’єктів. Вони забезпечують різні способи використання об'єктної композиції та успадкування для створення певної абстракції. 3. Шаблон проксі За цим шаблоном ми створюємо посередника, який діє як інтерфейс для іншого ресурсу , нап

Детальніше

   Перевірка, чи є графік Java циклом

Перевірка, чи є графік Java циклом

1. Огляд У цьому короткому посібнику ми дізнаємося, як ми можемо виявити цикл у заданому спрямованому графіку. 2. Графічне представлення У цьому підручнику ми дотримуватимемося представлення графіка списку суміжностей. По-перше, почнемо з визначення вершини в Java: public class Vertex { private String label; private boolean beingVisited; private boolean visited; private List adjacencyList; public

Детальніше

   Робота з XML-файлами в Java за допомогою синтаксичного аналізу DOM

Робота з XML-файлами в Java за допомогою синтаксичного аналізу DOM

1. Огляд У цьому підручнику ми обговоримо, як проаналізувати DOM за допомогою Apache Xerces - зрілої та створеної бібліотеки для синтаксичного аналізу / обробки XML. Існує кілька варіантів синтаксичного аналізу XML-документа; ми зупинимося на аналізі DOM у цій статті. Синтаксичний аналізатор DOM завантажує документ і створює ціле ієрархічне дерево в пам'яті. Огляд підтримки бібліотек XML на Java див. У нашій попередній статті. 2. Наш документ Почнемо з докум

Детальніше

   Принцип інверсії залежності в Java

Принцип інверсії залежності в Java

1. Огляд Принцип інверсії залежностей (DIP) є ​​частиною колекції об'єктно-орієнтованих принципів програмування, широко відомих як SOLID. DIP - це проста, але потужна парадигма програмування, яку ми можемо використовувати для реалізації добре структурованих, сильно розв’язаних та багаторазових програмних компонентів . У цьому посібнику ми розглянемо різні підходи до реалізації DIP - один у Java 8 та один у Java 11 із використанням JPMS (Java Platform Module System). 2. Ін’єкція залежності та інверсія контролю не є реалізацією DIP Перш за все, давайте зробимо фундаментал

Детальніше

   Mockito та JUnit 5 - Використання ExtendWith

Mockito та JUnit 5 - Використання ExtendWith

1. Вступ У цій короткій статті ми покажемо, як інтегрувати Mockito із моделлю розширення JUnit 5 . Щоб дізнатись більше про модель розширення JUnit 5, перегляньте цю статтю. Спочатку ми покажемо, як створити розширення, яке автоматично створює фіктивні об’єкти для будь-якого атрибута класу або параметра методу, анотовані @Mock . Потім ми будемо використовувати наше розширення Mockito у тестовому класі JUnit 5. 2. Залежності Мейвена 2.1. Необхідні залежності Давайте додамо залежності JUnit 5 (юпітер) та mockito до нашого pom.xml : org.junit.jupiter junit-jupiter-engin

Детальніше