Перейти до вмісту

Java

Матеріал з K2 ERP Wiki

Головна ідея Java — написати програму один раз і запускати її на різних платформах, де доступна JVM.; * JDBC;

  • JPA;
  • Hibernate;
  • Spring Data;
  • MyBatis;
  • jOOQ;
  • прямі SQL-запити;
  • міграції через Flyway або Liquibase.; }

СОТА

Для K2 ERP: Java можна використовувати як технологію для окремих інтеграційних сервісів або backend-модулів, особливо якщо потрібна стабільна робота, багатопотоковість, обробка великих обсягів даних і супровід промислових бібліотек.;

Інтеграційний акцент: Java добре підходить для сервісів, які обмінюються даними з ERP, банками, РРО/ПРРО, ЕДО, маркетплейсами, службами доставки та податковими сервісами.;== Обмеження Java ==

  • інтеграцій з банками;
  • інтеграцій з ЕДО;
  • інтеграцій з ДПС;
  • інтеграцій з маркетплейсами;
  • інтеграцій з OpenCart;
  • інтеграцій з Tilda Commerce;
  • роботи з РРО або ПРРО;
  • обробки XML;
  • формування SAF-T UA;
  • роботи з електронними підписами;
  • обміну з логістичними сервісами;
  • обробки черг і подій;
  • реалізації REST API.; * REST API;
  • gRPC;
  • черги повідомлень;
  • Kafka;
  • RabbitMQ;
  • HTTP;
  • події;
  • бази даних;
  • API Gateway.; # Результат повертається в ERP.; Backend відповідає за серверну логіку, роботу з базою даних, API, авторизацію, обробку бізнес-процесів і інтеграції з іншими системами.; # Статус, помилки та технічні логи зберігаються в системі.;

Джерела

Java має багато інструментів для роботи з базами даних.; У backend-проєктах Java має змогу використовуватися для: Rider Java в Android має змогу використовуватися для: SaaS

Станом на актуальні офіційні сторінки Oracle, JDK 25 є собою останнім LTS-релізом Java SE Platform, а JDK 21 — попереднім LTS-релізом.; # Java-сервіс отримує запит через API або чергу.; Java має і певні обмеження:

  • залежності;
  • версію JDK;
  • вразливості бібліотек;
  • права доступу;
  • валідацію вхідних даних;
  • SQL-ін’єкції;
  • XSS у вебзастосунках;
  • автентифікацію;
  • авторизацію;
  • шифрування;
  • зберігання секретів;
  • журналювання;
  • обробку помилок;
  • актуалізація контейнерів і серверів.; * інкапсуляція;
  • наслідування;
  • поліморфізм;
  • абстракція.; це об’єктно-орієнтована мова програмування та програмна платформа, яка застосовується; додатково реалізовано вебсервісів, корпоративних систем, мобільних застосунків, desktop-програм, інтеграційних сервісів, мікросервісів і великих бізнес-рішень виступає ключовою рисою створення серверних застосунків забезпечується через Java.; У Java-проєкті не варто зберігати безпосередньо в коді:

IntelliJ IDEA часто застосовується для Java-розробки завдяки наявності зручній навігації, автодоповненню, рефакторингу, підтримці Spring, Maven, Gradle, Git, Docker і баз даних.; # Сервіс надсилає інформаційні дані до зовнішнього API.;

  • backend-розробка;
  • корпоративні системи;
  • ERP;
  • CRM;
  • банківські системи;
  • фінансові сервіси;
  • e-commerce;
  • логістичні платформи;
  • державні системи;
  • Android-розробка;
  • мікросервіси;
  • API;
  • інтеграційні сервіси;
  • desktop-застосунки;
  • системи обробки даних;
  • хмарні сервіси;
  • SaaS-платформи.;== Java і Android ==

У бізнес-системах Java часто функціонує з такими базами даних: У Java-екосистемі є собою багато фреймворків.;OpenCart Java — це зріла, стабільна і поширена мова програмування для створення корпоративних, серверних, мобільних і інтеграційних рішень.; OpenJDK додатково публікує відкриті JDK-бінарні збірки та інформацію про релізи.;== JVM ==

Далі JVM виконує цей байткод на конкретній платформі.;

JDK або Java Development Kit — це комплект для розробки Java-застосунків.; private double price;

  • збереження об’єктів у базу;
  • читання даних;
  • побудови запитів;
  • керування транзакціями;
  • зв’язків між сутностями;
  • роботи з JPA.; Цей підхід часто описують принципом Write once, run anywhere.; # Сервіс перетворює інформаційні дані у формат зовнішньої системи.; Java дуже часто застосовують, коли потрібно для backend-розробки.;=== Hibernate ===

Для розробки Java-застосунків можуть використовуватися різні IDE:

Приклад простої структури класу:
Типовий Java-сервіс для ERP-інтеграції має змогу працювати так:
'''Рекомендація:''' у Java-проєктах для ERP або інтеграційних сервісів варто писати тести для критичної бізнес-логіки: розрахунків, документів, податків, обміну з API, імпорту, експорту та обробки помилок.; завдяки наявності JVM програма, написана мовою Java, має змогу запускатися на різних операційних системах за умови наявності відповідного середовища виконання.;</div>

Для Java-проєктів часто використовуються системи збірки.; # Виконується підписання, валідація або інша технічна обробка.;</div>
<div style="background:#ffebee; border-left:5px solid #e53935; padding:12px; margin:12px 0;">
[[Технічне завдання: Редактор BP-моделей K2 ERP]]

== Основні функціональні можливості мови ==
Java має сувору типізацію, автоматичне керування памяттю, розвинену стандартну бібліотеку, підтримку багатопотоковості, велику кількість фреймворків і зрілу екосистему для промислової розробки.; До основних переваг Java можна віднести:
Найпоширеніші:

== Java і мікросервіси ==

* JUnit;
* TestNG;
* Mockito;
* AssertJ;
* Spring Test;
* WireMock;
* Testcontainers.; Окремо варто відзначити а ціла програмний пакет: JDK, JVM, стандартна бібліотека, фреймворки, інструменти збірки, сервери застосунків, бібліотеки, IDE і велика спільнота розробників.; Тестування є собою важливою частиною Java-розробки.; * Spring Framework;
* Spring Boot;
* Jakarta EE;
* Hibernate;
* Quarkus;
* Micronaut;
* Vaadin;
* Maven;
* Gradle;
* JUnit;
* TestNG.; У контексті K2 ERP Java має змогу використовуватися для backend-сервісів, інтеграційних модулів, API, обробки документів, роботи з XML, SAF-T UA, ЕДО, ДПС, РРО/ПРРО, банками, логістикою та зовнішніми платформами.; платформа збірки відповідає за:

[[Medoc REST API]]

* [https://www.oracle.com/java/technologies/downloads/ Oracle Java Downloads]
* [https://openjdk.org/ OpenJDK]
* [https://docs.oracle.com/javase/specs/ Java SE Specifications]
* [https://dev.java/learn/ Learn Java]
* [https://openjdk.org/projects/jdk/25/ OpenJDK JDK 25]
* [https://www.oracle.com/java/technologies/java-se-glance.html Oracle Java SE]

== Див.; додатково ==
Для безпечної Java-розробки потрібно контролювати:

== Java у K2 ERP ==

'''JRE''' або '''Java Runtime Environment'''  це середовище виконання Java-застосунків.;== JDK і JRE ==

== Робота з базами даних ==

* Maven;
* Gradle;
* Ant.; {| class="wikitable"
'''Для бізнес-систем:''' Java добре підходить для backend-частини ERP, CRM, SaaS і інтеграційних платформ, де потрібні надійність, транзакційність, безпека та супровід великої кількості користувачів.; Java застосовується у багатьох напрямах:
</div>

* IntelliJ IDEA;
* Eclipse;
* NetBeans;
* Visual Studio Code;
* інші редактори з Java-плагінами.; # Отримується відповідь.;== Висновок ==

* підключення залежностей;
* компіляцію;
* запуск тестів;
* пакування застосунку;
* створення JAR або WAR;
* профілі середовищ;
* публікацію артефактів;
* інтеграцію з CI/CD.; !Компонент
== Об’єктно-орієнтоване програмування ==

'''істотно:''' Java — це не лише мова програмування.;== Тестування в Java ==
Java функціонує на основі віртуальної машини Java — '''JVM'''.; Java часто застосовується для мікросервісної архітектури.; Java часто застосовується для backend і корпоративних систем, а JavaScript переважно застосовується у веброзробці для frontend і Node.js-серверів.; public Product(String name, double price) {

* PostgreSQL;
* MySQL;
* Oracle Database;
* Microsoft SQL Server;
* MariaDB;
* MongoDB;
* Redis;
* Elasticsearch.; public class Product {
[[Інтеграція РРО в Python]]
 this.price = price;

'''Spring Boot''' — один із найпопулярніших фреймворків для створення Java-застосунків.; '''Рекомендація:''' для корпоративних систем зазвичай варто використовувати LTS-версії Java, оскільки вони краще підходять для довготривалої підтримки, оновлень безпеки та стабільної експлуатації.;== IDE для Java ==
Spring Boot часто застосовується для:

* більша кількість шаблонного коду порівняно з деякими мовами;
* потреба в JVM;
* потреба в правильному налаштуванні пам’яті;
* складність великих корпоративних фреймворків;
* потреба в контролі залежностей;
* можливі проблеми з продуктивністю при неправильній архітектурі;
* довший старт застосунку в деяких сценаріях;
* потреба в якісному моніторингу production-середовища.;[[FREDO]]
== Основні складові Java ==

Тести можуть бути:

* REST API;
* мікросервісів;
* інтеграційних сервісів;
* вебзастосунків;
* внутрішніх корпоративних систем;
* SaaS-платформ;
* систем обробки подій.; Java має змогу бути корисною для:

Найпоширеніші:

* мобільних застосунків;
* бізнес-додатків;
* клієнтських кабінетів;
* мобільних кас;
* складських застосунків;
* застосунків для кур’єрів;
* сервісних застосунків.; Hibernate має змогу використовуватися для:
 this.name = name;
<div style="background:#e0f2f1; border-left:5px solid #00897b; padding:12px; margin:12px 0;">

[[M.E.Doc.ЕДО]]
<div style="background:#fff3e0; border-left:5px solid #fb8c00; padding:12px; margin:12px 0;">

Мікросервіси на Java можуть взаємодіяти через:
[[ДПС]]
== Java для backend-розробки ==
[[SAF-T UA]]
|-
|JDK
|розробка програмного забезпечення, компіляція, запуск і тестування Java-застосунків
|-
|JRE
|Запуск готових Java-застосунків
|-
|JVM
|Виконання байткоду Java
|}

== переважні аспекти Java ==
</div>

== Загальний характеристика ==
== інформаційні дані, які не варто зберігати в коді ==
'''Практичне сфера застосування:''' JVM надає можливість запускати Java-застосунки на Windows, Linux і macOS без переписування коду під кожну операційну систему.; Коли розробник компілює Java-код, він перетворюється не напряму в машинний код конкретної операційної системи, а в байткод.; '''JVM''' або '''Java Virtual Machine''' — це віртуальна машина, яка виконує байткод Java.; Основні принципи ООП у Java:
До екосистеми Java належать:
 public double getPrice() {

 return price;
</div>

* мова програмування Java;
* JVM;
* JDK;
* JRE;
* стандартна бібліотека Java;
* компілятор javac;
* інструменти збірки;
* фреймворки;
* сервери застосунків;
* бібліотеки;
* IDE;
* системи тестування;
* інструменти моніторингу;
* профайлери;
* менеджери залежностей.; }

Java була розроблена як мова для розробки надійних, переносимих і масштабованих застосунків.; Java тривалий час була однією з основних мов для Android-розробки.; '''Зверніть увагу:''' Java часто використовують для довготривалих корпоративних проєктів, де важливі стабільність, супровід, масштабованість, тестування, безпека та сумісність між версіями.;== Типові сфери сфера застосування ==
== Популярні фреймворки Java ==

=== Spring Boot ===

* REST API;
* GraphQL API;
* мікросервісів;
* монолітних застосунків;
* сервісів авторизації;
* інтеграційних модулів;
* обробки черг;
* планових задач;
* роботи з базами даних;
* обробки файлів;
* взаємодії з зовнішніми API.; Він містить компілятор, JVM, стандартні бібліотеки та інструменти для розробника.;[[Tilda Commerce]]

* unit-тести;
* інтеграційні тести;
* API-тести;
* тести бази даних;
* тести сервісів;
* end-to-end тести.; Java розвивається через регулярні релізи JDK.; # Сервіс перевіряє інформаційні дані.;[[Технічне завдання: Редактор ER-моделей K2 ERP]]
== Версії Java ==
Такі інформаційні дані краще зберігати у змінних середовища, секрет-сховищах або захищених конфігураціях.; private String name;
'''Не плутати:''' Java і JavaScript — це різні мови програмування.; Він спрощує запуск backend-сервісів, REST API, мікросервісів і корпоративних застосунків.; Java є собою об’єктно-орієнтованою мовою.; Java підтримує роботу такі функціональні можливості:

* паролі;
* токени API;
* приватні ключі;
* production-рядки підключення до бази;
* сертифікати;
* секрети електронного підпису;
* персональні інформаційні дані клієнтів;
* доступи до зовнішніх сервісів.; Основна логіка програми організовується у вигляді класів, об’єктів, методів і полів.; Воно потрібне для запуску вже готових програм, але не містить повного набору інструментів для розробки.;<div style="background:#fff3e0; border-left:5px solid #fb8c00; padding:12px; margin:12px 0;">
[[Edin]]
Основні задачі JVM:
У контексті K2 ERP Java має змогу використовуватися для розробки окремих backend-сервісів, інтеграційних модулів, API, конекторів до зовнішніх систем, сервісів обробки документів або допоміжних утиліт.; Її часто використовують у корпоративній розробці, банківських системах, ERP, CRM, e-commerce, державних сервісах, телекомунікаціях, логістиці, фінансових системах і backend-розробці.; У такій архітектурі велика платформа розбивається на окремі сервіси, кожен з яких відповідає за свою частину бізнес-логіки.;[[Е-ТТН]]

* кросплатформеність;
* стабільність;
* велику екосистему;
* сильну типізацію;
* автоматичне керування пам’яттю;
* підтримку багатопотоковості;
* зрілі фреймворки;
* велику спільноту;
* придатність для корпоративної розробки;
* хорошу підтримку інструментами;
* зручність для backend і API;
* багато бібліотек для інтеграцій;
* довготривалу підтримку LTS-версій.; Сьогодні для Android додатково широко застосовується Kotlin, але Java все ще зустрічається у багатьох Android-проєктах, бібліотеках і старих застосунках.; Він надає можливість працювати з таблицями бази даних через Java-класи та об’єкти.; # ERP формує документ або подію.; Частина версій має статус LTS — Long-Term Support, тобто довгострокову підтримку.;</div>

* класи та об’єкти;
* інтерфейси;
* наслідування;
* інкапсуляцію;
* поліморфізм;
* винятки;
* generic-типи;
* колекції;
* лямбда-вирази;
* Stream API;
* багатопотоковість;
* анотації;
* reflection;
* модулі;
* records;
* sealed classes;
* pattern matching у сучасних версіях;
* роботу з файлами;
* мережеву взаємодію;
* роботу з базами даних.; завдяки наявності JVM, великій екосистемі, LTS-версіям, фреймворкам і підтримці промислової розробки Java залишається популярною технологією для великих бізнес-систем.;</div>
Типові підходи:
<div style="background:#e8f5e9; border-left:5px solid #43a047; padding:12px; margin:12px 0;">

'''Hibernate''' — це ORM-фреймворк для роботи з базами даних.; }

* виконання байткоду;
* керування пам’яттю;
* автоматичне збирання сміття;
* оптимізація виконання;
* робота з потоками;
* контроль безпеки виконання;
* взаємодія з операційною системою.; !Призначення

== Інструменти збірки ==

== Безпека Java-застосунків ==

Типові інструменти:

</div>
== Типовий сценарій Java-сервісу ==