«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Представляем бесплатный пакет утилит Java

Представляем бесплатный пакет утилит Java

Опубликовано 7 ноября 2024 г.
Просматривать:421

Introducing Free Java Utility Package

Быстрый и простой в использовании набор инструментов программирования для разработчиков серверной части Java

За свою профессиональную жизнь администратора и разработчика я много раз пользовался преимуществами бесчисленного количества бесплатных программ и продуктов с открытым исходным кодом. Поэтому для меня вполне естественно внести свой вклад в это сообщество.

Данная коллекция Java-классов была создана в ходе различных проектов и будет развиваться дальше. Я надеюсь, что этот инструмент также сослужит вам добрую службу.

https://java-util.k43.ch

Цели дизайна

  • Простота использования: классы и методы должны быть гибкими и простыми в использовании.
  • Нет вызовов пользовательского интерфейса: делайте все без пользовательского интерфейса, чтобы этот набор инструментов можно было использовать для фоновых задач или серверных процессов.
  • Быстро: напишите код максимально производительным.
  • Предпочитайте использование памяти, а не ввод-вывод: в современном мире память больше не является ограничивающим фактором. Таким образом, многие операции могут выполняться в памяти, где раньше использовались (временные) файлы (например, KDB создает структуру данных из SQL SELECT, операции KFile в основном выполняются в памяти).
  • Используйте расширенное журналирование: функция KLog.debug() широко используется во всем коде, помогая отлаживать код. Используйте методы toString(), имеющиеся в каждом классе, чтобы показать значения внутренних полей объектов во время разработки.
  • Независимость от платформы: Пишите все независимо от платформы.
  • Сведите к минимуму необходимые требования: оставайтесь со стандартными библиотеками Java SE. Используйте только внешние файлы JAR, когда это абсолютно необходимо (например, KSMTPMailer, драйверы JDBC).

Ведение журнала: просто, но мощно

  • Уменьшает сложность ведения журнала для отладки, информации и сообщений об ошибках.
  • Использует стандартный класс ведения журнала Java SE без необходимости использования какой-либо дополнительной библиотеки.
  • Каждая запись журнала содержит точную отметку времени и местоположение исходного кода.
  • Помимо стандартных ConsoleHandler и FileHandler, выходные данные могут быть отправлены в любую базу данных JDBC, а ошибки могут быть отправлены на SMTP-хост.
  • Предоставлено пять средств форматирования журналов: табличная строка, CSV, JSON, YAML и XML.
public static void main(String[] args) {

  KLog.info("Start");

  int result = 0;

  try {
    result = 10 / 0;
  } catch (Exception e) {
    KLog.error(e);
  }

  KLog.debug("Result is "   result);
}
2024-09-16T07:17:11.095 D main[1]:ch.k43.util.KLog:open:459                            ===== Application started 2024-09-16T07:17:11.048 =====
2024-09-16T07:17:11.111 D main[1]:ch.k43.util.KLog:open:460                            Java Utility Package (Freeware) ch.k43.util Version 2024.09.15
2024-09-16T07:17:11.112 D main[1]:ch.k43.util.KLog:open:463                            Homepage java-util.k43.ch - Please send any feedback to [email protected]
2024-09-16T07:17:11.122 D main[1]:ch.k43.util.KLog:open:466                            Host ab-macbook-pro (10.0.0.105)
2024-09-16T07:17:11.122 D main[1]:ch.k43.util.KLog:open:467                            OS platform Mac OS X (Version 14.6.1/aarch64)
2024-09-16T07:17:11.123 D main[1]:ch.k43.util.KLog:open:471                            OS disk space total 3.63 TB, free 2.37 TB, usable 2.37 TB
2024-09-16T07:17:11.123 D main[1]:ch.k43.util.KLog:open:474                            Java version 21 (OpenJDK 64-Bit Server VM - Eclipse Adoptium)
2024-09-16T07:17:11.123 D main[1]:ch.k43.util.KLog:open:477                            Java CPUs 10
2024-09-16T07:17:11.124 D main[1]:ch.k43.util.KLog:open:481                            Java heap maximum 16.00 GB, current 1.00 GB, used 7.68 MB, free 1016.32 MB
2024-09-16T07:17:11.124 D main[1]:ch.k43.util.KLog:open:485                            Java locale de/CH, time UTC  02:00
2024-09-16T07:17:11.125 D main[1]:ch.k43.util.KLog:open:488                            Java classpath ../bin/:../lib/angus-mail-2.0.3.jar:../lib/jakarta.mail-api-2.1.3.jar:../lib/org.json.20230618.jar:../lib/h2-2.2.224.jar:../lib/jakarta.activation-api-2.1.3.jar:../lib/angus-activation-2.0.2.jar
2024-09-16T07:17:11.125 I main[1]:Test:main:9                                          Start
2024-09-16T07:17:11.125 E main[1]:Test:main:16                                         ===> java.lang.ArithmeticException: / by zero
2024-09-16T07:17:11.126 E main[1]:Test:main:16                                         ===> Stack[1]: Test.main(Test.java:14)
2024-09-16T07:17:11.126 D main[1]:Test:main:19                                         Result is 0

База данных: доступ к любой базе данных JDBC.

  • Загружает необходимый драйвер JDBC и выполняет любой оператор SQL.
  • Можно использовать любую базу данных, совместимую с JDBC.
  • Извлечение данных в необработанном формате Java (строки как ArraryList, столбцы как объекты Java).
  • Отформатируйте набор результатов в формате JSON, YAML, XML, CSV или табличной строке.
try (KDB db = new KDB(KDB.JDBC_H2, "jdbc:h2:mem:mydb", "", "")) {

  KLog.abort(!db.isConnected(), "Error: "   db.getErrorMessage());

  db.exec("CREATE TABLE ADDRESSES (SEQUENCE INT AUTO_INCREMENT, LASTNAME VARCHAR(20), FIRSTNAME VARCHAR(20))");
  db.exec("INSERT INTO ADDRESSES (LASTNAME, FIRSTNAME) VALUES ('Smith', 'John')");
  db.exec("INSERT INTO ADDRESSES (LASTNAME, FIRSTNAME) VALUES ('Miller', 'Bob')");
  db.exec("INSERT INTO ADDRESSES (LASTNAME, FIRSTNAME) VALUES ('Johnson', 'Eve')");
   db.exec("SELECT * FROM ADDRESSES", 10);

  System.out.println(db.getDataAsTable());
  System.out.println(db.getDataAsJSON());
}
SEQUENCE    LASTNAME             FIRSTNAME            
1           Smith                John                 
2           Miller               Bob                  
3           Johnson              Eve                  
{
  "ADDRESSES": [
    {
      "SEQUENCE": 1,
      "LASTNAME": "Smith",
      "FIRSTNAME": "John"
    },
    {
      "SEQUENCE": 2,
      "LASTNAME": "Miller",
      "FIRSTNAME": "Bob"
    },
    {
      "SEQUENCE": 3,
      "LASTNAME": "Johnson",
      "FIRSTNAME": "Eve"
    }
  ]
}

SMTP: создать и отправить сообщение

  • Создать составное сообщение MIME с тестовыми, HTML-файлами и вложенными файлами.
  • Поддержка соединений STARTTLS/TLS и без TLS.
  • Поддержка OAuth 2.0 и базовой аутентификации.
KSMTPMailer mailer = new KSMTPMailer();

mailer.setFrom("[email protected]");
mailer.setTo("[email protected]");
mailer.setSubject("Subject");
mailer.addHTML("

Your requested files

"); mailer.addText("Body Text"); mailer.addFile("test1.txt"); mailer.addFile("test2.txt"); mailer.addText("Regards, John"); mailer.send();

HTTP-клиент: простые стандартные вызовы или вызовы REST.

  • Поддерживает HTTP и HTTPS.
  • Поддержка всех стандартных методов HTTP (GET, POST, PUT, POST и т. д.).
  • Дата заголовка запроса, User-Agent, Host и Content-Length добавляются автоматически.
Properties props = new Properties();
props.put("Authorization", "Basic "   K.encodeBase64(userName   ':'   password);

KHTTPClient http = new KHTTPClient();

if (!http.post("https://example.com:4443", props, "HTTP body data")) {
   KLog.abort("HTTP POST failed - "   http.getLastError());
}

К: Класс полезности

  • Кодирование/декодирование URL-адресов, Base64, CSV, JSON, XML и YAML.
  • Шифрование/дешифрование AES256 (AES/CBC/PKCS5Padding).
  • Сжатие/распаковка ZLIB.
  • Сгенерировать хэш (MD5, SHA-2 или SHA-3).
  • Запросить любую запись DNS (MX, A и т. д.).
// Wait 1/4 second
K.waitMilliseconds(250);

// Get DNS MX record(s)
String[] mxRRs = K.queryDNS("MX", "yahoo.com");

//
// AES-256 Encryption/Decryption
//
String secretKey = "This is the secret key";

// Create a simple text file
KFile.writeFile("This is a simple text file", "AES-Text.txt");

// Generate and save random AES-256 initialization vector
KFile.writeFile(K.getRandomBytes(16), "AES.iv");

// Encrypt
byte[] clearText    = KFile.readByteFile("AES-Text.txt");
byte[] initVector   = KFile.readByteFile("AES.iv");
byte[] cipherText   = K.encryptAES256(clearText, secretKey.getBytes(), initVector);
KFile.writeFile(cipherText, "AES-Text.encrypted");

// Decrypt
cipherText  = KFile.readByteFile("AES-Text.encrypted");
initVector  = KFile.readByteFile("AES.iv");
clearText   = K.decryptAES256(cipherText, secretKey.getBytes(), initVector);

Удачи и дайте мне знать, что вам нравится, а что нуждается в улучшении. Вы можете связаться со мной по электронной почте [[email protected]] или на Mastodon.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/andybrunner/introducing-free-java-utility-package-1fph?1. Если обнаружено какое-либо нарушение прав, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3