"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Presentamos el paquete de utilidades Java gratuito

Presentamos el paquete de utilidades Java gratuito

Publicado el 2024-11-07
Navegar:290

Introducing Free Java Utility Package

Un conjunto de herramientas de programación rápido y fácil de usar para el desarrollador backend de Java

En mi vida profesional como administrador y desarrollador, me he beneficiado muchas veces de innumerables productos gratuitos y de código abierto. Por lo tanto, es natural para mí contribuir también a esta comunidad.

Esta colección de clases de Java se creó en el transcurso de varios proyectos y se seguirá desarrollando. Espero que esta herramienta también te resulte útil.

https://java-util.k43.ch

Objetivos de diseño

  • Facilidad de uso: Las clases y métodos deben ser flexibles y sencillos de usar.
  • Sin llamadas de interfaz de usuario: haga todo sin interfaz de usuario para permitir que este kit de herramientas se utilice para tareas en segundo plano o procesos de servidor.
  • Rápido: escribe el código con el mayor rendimiento posible.
  • Favorezca el uso de memoria sobre E/S: En el mundo actual, la memoria ya no es un factor limitante. Por lo tanto, muchas operaciones se pueden realizar en la memoria donde se usaban archivos (temporales) en el pasado (por ejemplo, KDB crea una estructura de datos a partir de SQL SELECT, las operaciones de KFile se realizan principalmente en la memoria).
  • Utilice registros exhaustivos: La función KLog.debug() se utiliza mucho en todo el código para ayudar a depurarlo. Utilice los métodos toString() que se encuentran en cada clase para mostrar los valores de los campos internos de los objetos durante el desarrollo.
  • Independencia de plataforma: escribe todo independiente de la plataforma.
  • Minimizar los requisitos previos: Quédese con las bibliotecas estándar de Java SE. Utilice únicamente archivos JAR externos cuando sea absolutamente necesario (por ejemplo, KSMTPMailer, controladores JDBC).

Registro: simple pero poderoso

  • Reduce la complejidad del registro para depurar, información y mensajes de error.
  • Utiliza la clase de registro estándar de Java SE sin necesidad de ninguna biblioteca adicional.
  • Cada registro incluye una marca de tiempo exacta y la ubicación del código fuente.
  • Además del ConsoleHandler y FileHandler estándar, el resultado se puede enviar a cualquier base de datos JDBC o los errores se pueden enviar a un host SMTP.
  • Se proporcionan cinco formateadores de registro: línea tabular, CSV, JSON, YAML y 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

Base de datos: acceda a cualquier base de datos JDBC

  • Carga el controlador JDBC requerido y ejecuta cualquier declaración SQL.
  • Se puede utilizar cualquier base de datos compatible con JDBC.
  • Recuperar datos en formato Java sin formato (filas como ArraryList, columnas como objetos Java).
  • Dar formato al conjunto de resultados como JSON, YAML, XML, CSV o cadena tabular.
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: crear y enviar mensajes

  • Crear mensaje MIME de varias partes con prueba, HTML y archivos adjuntos.
  • Soporte para conexiones STARTTLS/TLS o no TLS.
  • Soporte para OAuth 2.0 y autenticación básica.
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();

Cliente HTTP: llamadas estándar simples o REST

  • Admite HTTP y HTTPS.
  • Soporte para todos los métodos HTTP estándar (GET, POST, PUT, POST, etc.).
  • La fecha del encabezado de solicitud, el agente de usuario, el host y la longitud del contenido se agregan automáticamente.
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());
}

K: clase de utilidad

  • Codificar/decodificar para URL, Base64, CSV, JSON, XML y YAML.
  • Cifrado/descifrado AES256 (AES/CBC/PKCS5Padding).
  • ZLIB comprimir/descomprimir.
  • Generar hash (MD5, SHA-2 o SHA-3).
  • Consulta cualquier registro DNS (MX, A, etc.).
// 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);

Diviértete y cuéntame qué te gusta y qué necesitas mejorar. Puede comunicarse conmigo por correo electrónico [[email protected]] o en Mastodon.

Declaración de liberación Este artículo se reproduce en: https://dev.to/andybrunner/introtaining-free-java-utility-package-1fph?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3