Для кого ця стаття: дещо буде цікаво новачкам, які вивчають квест Java Syntax, але переважно викладений матеріал краще зайде тим, хто вже перевалив за екватор курсу (розбирається з квестами Java Collections і Java Multithreading) і починає цікавитися технологіями, що виходять за рамки Java Core. За час свого існування Java неабияк обросла бібліотеками. Але як зрозуміти, які з них варто використати, а які ні? Відокремити зерна від полови вічно зайнятому розробнику вкрай непросто. У цій
статті Мартін Пацов (Martin Patsov), Full Stack Developer компанії Dreamix, розповість про свою любов до бібліотек з відкритим вихідним кодом (open source), і запропонує вам ті з них, які вважає особливо корисними.
Бути чи не бути, ось у чому питання: Порятунком обернеться чи провалом Та сама бібліотека Java… Сміливіше! «СіньйОри» вже були там І досвід їх тобі я передам. Нехай вас не вводить в оману мій поетичний відступ. Бібліотек Java дійсно дуже багато, і розбиратися з ними ох як непросто. Проте я їх дуже люблю. Мене навіть можна назвати «бібліотечним євангелістом» (
під «євангелістом» у сфері ІТ розуміють зовсім не укладача канонічний євангелій, а того, хто професійно пропагує ту чи іншу технологію. Не плутайте зі звичайними піарниками: найчастіше ІТ-євангеліст досконало розбирається в технології — прим.ред.). Бібліотеки є дуже важливою частиною екосистеми open source. Навколо них виростають великі спільноти, які їх розвивають та підтримують. І це чудово. Головна перевага бібліотек у тому, що вони дозволяють нам не винаходити велосипед щоразу, коли ми пишемо код. Використовуйте бібліотеки – вже написаний для певних завдань код – якнайчастіше! Ви заощадите час. Серйозно, краще витратити його на спілкування із сім'єю та друзями.
Топ-10
У цій нотатці я згадав ті Java-бібліотеки, які волію використовувати у своїй роботі. Всі вони відносяться до програмного забезпечення з відкритим вихідним кодом. Вибирав я за принципом корисності, наявності хорошої документації та підтримки, а також регулярної оновлюваності. Хочу ще раз поставити акцент на тому, що це мій особистий вибір, і він може істотно відрізнятися від вашого. |
1. Стандартні бібліотеки Java
Так-так, вам не здалося! Дуже багато людей недооцінюють, більше того - не знають маси можливостей - стандартних бібліотек Java (Java Standard Libraries), і не в курсі, як розкрити їх потенціал у програмуванні ... а то й зовсім не використовують їх. Ось короткий опис деяких із них:
- java.lang . Ця бібліотека завжди імпортується в будь-який Java-додаток, оскільки містить все те, без чого ви в принципі не зможете програмувати ( String , Double , Enum , Math і так далі).
- У java.util можна знайти всі колекції та структури даних, доступні в Java.
- Далі, ми маємо java.io для читання файлів, що працюють потоками, об'єктами класу Pipe і так далі.
- Про перші три ви, швидше за все, вже чули. А ось з java.nio , альтернативою java.io , знають вже не всі. Ця бібліотека відповідає за неблокуючий введення-виведення, дозволяючи, як ви могли здогадатися, інтенсивно використовувати операції введення-виведення.
- java.net використовується для роботи із сокетами, створення підключень або коротких мережних програм.
- У Java у нас також є бібліотеки для роботи з GUI: javax.swing (досить застаріле розширення ще більш старого java.awt ).
- Ми навіть можемо відтворювати музику та створювати MIDI-файли за допомогою java.sound .
2. JHipster
JHipster - це платформа для швидкого розгортання, розробки та створення масштабованих веб-серверів з високим навантаженням та використанням найсучасніших і модних технологій таких як Spring, Spring-MicroServices, Netflix, Docker, Kubernetes, AngularJs, Liquibase, MongoDB, Cassandra, ElasticSearch.
Слово честі, цей «Java-хіпстер» безперечно врятував мені місяці життя. Я можу точно сказати, що саме JHipster - мій особистий фаворит у списку і він займає особливе місце у моєму серці. Цей інструмент практично незамінний для генерування ескізу проекту розподіленого веб-сервера. Він вміє генерувати pom-файл із залежностями, налаштовувати Elastic Search та Connection, вам залишається лише додати бізнес-логіку архітектури. Основними та найважливішими бібліотеками, включеними до згенерованого проекту, є:
- Spring Boot - допомагає прискорити та полегшити розробку додатків
- Angular / AngularJS - інфраструктура JavaScript
Тут ви можете знайти більше інформації про
JHipster .
3. Maven
Maven - один із трьох найпопулярніших інструментів для складання проектів на Java. Він відповідає за компіляцію, створення jar-файлів (Java-архівів), створення дистрибутива програми, створення документації.
Кожен сучасний проект складається із різних файлів, модулів, технологій. Говорячи дуже просто, складання проекту — підготовка його робочої версії, тобто тієї програми, яку можна запустити на виконання. Це можна робити «ручками» у командному рядку, а можна написати спеціальні скрипти. Однак набагато легше це робити за допомогою спеціальних додатків. Називаються вони "системи автоматичного складання". Maven – одна з трьох таких програм, дві інші – Gradle та Ant. На вхід такі системи одержують вихідники проекту, а на вихід видають програму, яку можна запустити. |
Структура проекту (залежності, конфігурації, документація) описується у файлі pom.xml (POM – Project Object Model), який має знаходитись у кореневій папці проекту. Чесно, Maven - просто чудова штука, хоч спочатку і не дуже зрозуміла. Якщо ви ніколи не використовували Maven раніше, ви багато що втратабо. Відверто кажучи, я взагалі не розумію, як створювалися Enterprise-додатки до появи Maven. Почитати про Maven російською можна
тут .
4. Apache Commons
Apache Commons — практично цілий проект, спрямований створення бібліотек Java. Або «великий набір маленьких Java-утиліт» різного призначення. До речі, утиліти Apache Commons лежать в основі кількох дуже відомих проектів, наприклад Tomcat, Hibernate та інших. Ось короткий список деяких бібліотек, що найчастіше використовуються Apache Commons:
- Common Math . Математична бібліотека Apache Commons, ім'я говорить саме за себе: вона містить компоненти для складних математичних та статистичних операцій та обчислень.
- CLI . Надає API для аналізу аргументів командного рядка. Навряд чи варто навіть у думках допускати створення програми без можливості передавати параметри та контролювати його поведінку!
- CSV . Незалежно від того, що ви розробляєте, в якийсь момент вам доведеться зіткнутися з необхідністю використання файлів csv. Тобто їх доведеться відкривати, читати, редагувати, зберігати та створювати. Я пропоную використовувати формат RFC 4180 із класу CSVFormat та кодування UTF-8 при збереженні/створенні файлів.
- IO . Використовується для спрощення виконання операцій введення-виведення. Придивіться, принаймні, до ReversedLinesFileReader, він того вартий!
Почитати про Apache Commons (англійською) можна
тут .
5. Guava
Guava – набір основних бібліотек Google для Java. Вони містять нові типи колекцій (наприклад, multimap та multiset), незмінні колекції, бібліотеку графів, функціональні типи? утиліти для паралелізму, введення/виводу, хешування, обробки рядків та багато іншого. Всі ці інструменти використовують спеціалісти Google у своїй роботі, а це вже гарна рекомендація.
Якоюсь мірою Guava є альтернативою Apache Commons. Насправді про Guava можна говорити довго (обов'язково зверніть на неї увагу!), але тут я згадаю лише одну корисну штуку з цієї бібліотеки. Можливо, ви вже стикалися із завданнями упорядкування своїх колекцій чи порівняння вмісту в них? А що щодо розширеного сортування та порівняння за кількома стовпцями з кількома умовами? Компонент
ComparisonChain використовується для реалізації розширеного та складного сортування для колекцій. Почитати про Guava (англійською) можна
тут .
6. google-gson
Бібліотека
google-gson корисна для перетворення об'єктів Java на JSON і навпаки. Вона особливо стане в нагоді при розробці мобільних додатків і створенні/використанні REST API, а також у будь-якому випадку, коли вам потрібно перетворити об'єкт Java на його подання JSON і навпаки.
Про JSON (JavaScript Object Notation), Guava, Apache Commons та інші цікаві речі ви дізнаєтеся з квесту Java Collections . |
Почитати про google-gson (англійською) можна
тут .
7. Hibernate-ORM
Hibernate - бібліотека, призначена для вирішення задач об'єктно-реляційного відображення (ORM). Hibernate ORM використовується для зберігання даних у реляційних базах даних. Вона забезпечує більш простий та абстрактний спосіб зробити це для розробників. Він використовує JDBC у своїй реалізації. Hibernate також є реалізацією специфікації JPA.
Почитати про Hibernate ORM (англійською) можна
тут .
8. Mockito
Нехай назва Mockito не вводить вас в оману. Мова не про коктейль, а про бібліотеку для mock-об'єктів. Mock-об'єкти - це об'єкти, які імітують поведінку реального об'єкта за якоюсь заданою схемою. Наприклад, для модульного тестування такі «підроблені» об'єкти можуть симулювати поведінку бізнес-об'єктів. Ну а mock-бібліотека Mockito підвищує зручність створення та використання mock-об'єктів.
Ви можете знайти інформацію про Mockito
тут .
9. JUnit
JUnit – вільний Java-фреймворк для створення модульних тестів (вони ж – юніт-тести). Ця бібліотека - одна з найпопулярніших, її використовують майже всі. Рекомендуємо вам розібратися з нею якнайшвидше, оскільки дуже часто початківців Java-розробників і Java Trainee змушують «покривати код тестами». І, треба сказати, це далеко не найгірший початок кар'єри.
Більше інформації про Junit
тут .
10.Log4j та Slf4j
Ці два фреймворки створені для приховання реалізації рутинних операцій з журналу певних подій, які відбуваються під час роботи Java-додатків. Slf4j є абстракцією для інших фреймворків журналування (того ж Log4j).
Більше інформації про
Log4j та
Slf4j .