"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Apresentando o pacote gratuito de utilitários Java

Apresentando o pacote gratuito de utilitários Java

Publicado em 2024-11-07
Navegar:712

Introducing Free Java Utility Package

Um kit de ferramentas de programação rápido e fácil de usar para o desenvolvedor back-end Java

Em minha vida profissional como administrador e desenvolvedor, me beneficiei muitas vezes de inúmeros produtos freeware e de código aberto. Portanto, é natural que eu também contribua para esta comunidade.

Esta coleção de classes Java foi criada no decorrer de vários projetos e será desenvolvida posteriormente. Espero que esta ferramenta também lhe sirva bem.

https://java-util.k43.ch

Metas de design

  • Facilidade de uso: As classes e métodos devem ser flexíveis e simples de usar.
  • Sem chamadas de UI: Faça tudo sem interface de usuário para permitir que este kit de ferramentas seja usado para tarefas em segundo plano ou processos de servidor.
  • Rápido: escreva o código com o melhor desempenho possível.
  • Favorecer o uso de memória em vez de E/S: No mundo de hoje, a memória não é mais um fator limitante. Portanto, muitas operações podem ser feitas na memória onde arquivos (temporários) foram usados ​​no passado (por exemplo, o KDB cria uma estrutura de dados a partir do SQL SELECT, as operações do KFile estão principalmente na memória).
  • Use registro extensivo: A função KLog.debug() é muito usada em todo o código para ajudar na depuração do seu código. Use os métodos toString() encontrados em cada classe para mostrar os valores dos campos internos dos objetos durante o desenvolvimento.
  • Independência de plataforma: escreva tudo independente de plataforma.
  • Minimize os pré-requisitos: Fique com as bibliotecas padrão do Java SE. Use apenas arquivos JAR externos quando for absolutamente necessário (por exemplo, KSMTPMailer, drivers JDBC).

Registro: simples, mas poderoso

  • Reduz a complexidade do registro para mensagens de depuração, informações e erros.
  • Usa a classe de registro Java SE padrão sem a necessidade de qualquer biblioteca adicional.
  • Cada registro de log inclui um carimbo de data/hora exato e a localização do código-fonte.
  • Além do ConsoleHandler e FileHandler padrão, a saída pode ser enviada para qualquer banco de dados JDBC ou os erros podem ser enviados para um host SMTP.
  • Cinco formatadores de registro são fornecidos: linha tabular, CSV, JSON, YAML e 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

Banco de dados: acesse qualquer banco de dados JDBC

  • Carrega o driver JDBC necessário e executa qualquer instrução SQL.
  • Qualquer banco de dados compatível com JDBC pode ser usado.
  • Recupere dados em formato Java bruto (linhas como ArraryList, colunas como objetos Java).
  • Formate o resultado definido como JSON, YAML, XML, CSV ou string 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: Criar e enviar mensagem

  • Crie uma mensagem MIME multipart com teste, HTML e anexos de arquivo.
  • Suporte para conexões STARTTLS/TLS ou não TLS.
  • Suporte para OAuth 2.0 e autenticação 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: padrão simples ou chamadas REST

  • Suporta HTTP e HTTPS.
  • Suporte para todos os métodos HTTP padrão (GET, POST, PUT, POST, etc).
  • Data do cabeçalho da solicitação, User-Agent, Host e Content-Length são adicionados automaticamente.
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: Classe Utilitária

  • Codificar/decodificar para URL, Base64, CSV, JSON, XML e YAML.
  • Criptografar/descriptografar AES256 (AES/CBC/PKCS5Padding).
  • Compressão/descompactação ZLIB.
  • Gerar hash (MD5, SHA-2 ou SHA-3).
  • Consulte qualquer 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);

Divirta-se e diga-me o que você gosta e o que precisa ser melhorado. Você pode entrar em contato comigo por e-mail [[email protected]] ou pelo Mastodon.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/andybrunner/introduzindo-free-java-utility-package-1fph?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3