"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Présentation du package d'utilitaires Java gratuit

Présentation du package d'utilitaires Java gratuit

Publié le 2024-11-07
Parcourir:376

Introducing Free Java Utility Package

Une boîte à outils de programmation rapide et facile à utiliser pour le développeur backend Java

Au cours de ma vie professionnelle en tant qu'administrateur et développeur, j'ai bénéficié à de nombreuses reprises d'innombrables produits gratuits et open source. Il est donc naturel pour moi de contribuer également à cette communauté.

Cette collection de classes Java a été créée au cours de divers projets et sera développée davantage. J'espère que cet outil vous sera également utile.

https://java-util.k43.ch

Objectifs de conception

  • Facilité d'utilisation : Les classes et méthodes doivent être flexibles et simples à utiliser.
  • Aucun appel d'interface utilisateur : faites tout sans interface utilisateur pour permettre à cette boîte à outils d'être utilisée pour des tâches en arrière-plan ou des processus serveur.
  • Rapide : écrivez le code aussi performant que possible.
  • Favorisez l'utilisation de la mémoire plutôt que les E/S : Dans le monde d'aujourd'hui, la mémoire n'est plus un facteur limitant. Par conséquent, de nombreuses opérations peuvent être effectuées en mémoire là où des fichiers (temporaires) ont été utilisés dans le passé (par exemple, KDB crée une structure de données à partir de SQL SELECT, les opérations KFile sont principalement en mémoire).
  • Utiliser une journalisation étendue : la fonction KLog.debug() est largement utilisée dans tout le code pour faciliter le débogage de votre code. Utilisez les méthodes toString() trouvées dans chaque classe pour afficher les valeurs de champ internes des objets pendant le développement.
  • Indépendance de la plate-forme : écrivez tout indépendamment de la plate-forme.
  • Réduire les prérequis : restez avec les bibliothèques standard Java SE. Utilisez uniquement des fichiers JAR externes lorsque cela est absolument nécessaire (par exemple, KSMTPMailer, pilotes JDBC).

Journalisation : simple mais puissante

  • Réduit la complexité de la journalisation pour les messages de débogage, d'informations et d'erreur.
  • Utilise la classe de journalisation Java SE standard sans avoir besoin d'une bibliothèque supplémentaire.
  • Chaque enregistrement de journal comprend un horodatage exact et l'emplacement du code source.
  • Outre les standards ConsoleHandler et FileHandler, la sortie peut être envoyée à n'importe quelle base de données JDBC ou les erreurs peuvent être envoyées à un hôte SMTP.
  • Cinq formateurs de journalisation sont fournis : ligne tabulaire, CSV, JSON, YAML et 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 données : accédez à n'importe quelle base de données JDBC

  • Charge le pilote JDBC requis et exécute n'importe quelle instruction SQL.
  • Toute base de données compatible JDBC peut être utilisée.
  • Récupérez les données au format Java brut (lignes sous forme d'ArraryList, colonnes sous forme d'objets Java).
  • Formater l'ensemble de résultats sous forme de chaîne JSON, YAML, XML, CSV ou tabulaire.
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 : créer et envoyer un message

  • Créez un message MIME en plusieurs parties avec des pièces jointes de test, HTML et de fichiers.
  • Prise en charge des connexions STARTTLS/TLS ou non-TLS.
  • Prise en charge d'OAuth 2.0 et de l'authentification de base.
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();

Client HTTP : appels standards ou REST simples

  • Prend en charge HTTP et HTTPS.
  • Prise en charge de toutes les méthodes HTTP standard (GET, POST, PUT, POST, etc.).
  • La date de l'en-tête de la demande, l'agent utilisateur, l'hôte et la longueur du contenu sont automatiquement ajoutés.
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 utilitaire

  • Encoder/décoder pour URL, Base64, CSV, JSON, XML et YAML.
  • Cryptage/déchiffrement AES256 (AES/CBC/PKCS5Padding).
  • ZLIB compresse/décompresse.
  • Générer un hachage (MD5, SHA-2 ou SHA-3).
  • Interrogez n'importe quel enregistrement 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);

Amusez-vous et dites-moi ce que vous aimez et ce qui doit être amélioré. Vous pouvez me joindre par email [[email protected]] ou chez Mastodon.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/andybrunner/introducing-free-java-utility-package-1fph?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3