「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 無料の Java ユーティリティ パッケージの紹介

無料の Java ユーティリティ パッケージの紹介

2024 年 11 月 7 日に公開
ブラウズ:530

Introducing Free Java Utility Package

Java バックエンド開発者向けの高速で使いやすいプログラミング ツールキット

管理者および開発者としての職業生活の中で、私は数え切れないほどのフリーウェアやオープンソース製品から何度も恩恵を受けてきました。したがって、私もこのコミュニティに貢献するのは自然なことです。

この Java クラスのコレクションはさまざまなプロジェクトの過程で作成され、さらに開発される予定です。このツールもあなたのお役に立てれば幸いです。

https://java-util.k43.ch

デザイン目標

  • 使いやすさ: クラスとメソッドは柔軟で使いやすいものでなければなりません。
  • UI 呼び出しなし: ユーザー インターフェイスを使用せずにすべてを実行し、このツールキットをバックグラウンド タスクまたはサーバー プロセスに使用できるようにします。
  • 高速: 可能な限りパフォーマンスの高いコードを記述します。
  • I/O よりもメモリ使用量を優先する: 今日の世界では、メモリはもはや制限要因ではありません。したがって、多くの操作は、過去に(一時)ファイルが使用されていたメモリ内で実行できます(例:KDB は SQL SELECT からデータ構造を作成し、KFile 操作はほとんどメモリ内で行われます)。
  • 広範なログを使用する: KLog.debug() 関数は、コードのデバッグを支援するためにコード全体で頻繁に使用されます。各クラスにある toString() メソッドを使用して、開発中にオブジェクトの内部フィールド値を表示します。
  • プラットフォーム非依存: すべてをプラットフォーム非依存で記述します。
  • 前提条件を最小限に抑える: Java SE 標準ライブラリをそのまま使用します。絶対に必要な場合には外部 JAR ファイルのみを使用してください (KSMTPMailer、JDBC ドライバーなど)。

ロギング: シンプルだが強力

  • デバッグ、情報、エラー メッセージのロギングの複雑さを軽減します。
  • 追加のライブラリを必要とせずに、標準の Java SE ロギング クラスを使用します。
  • すべてのログ レコードには、正確なタイムスタンプとソース コードの場所が含まれています。
  • 標準の ConsoleHandler と FileHandler に加えて、出力を任意の JDBC データベースに送信したり、エラーを SMTP ホストに送信したりできます。
  • 5 つのログ フォーマッタが提供されています: 表形式、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: メッセージの作成と送信

  • テスト、HTML、添付ファイルを含む MIME マルチパート メッセージを作成します。
  • 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());
}

K:ユーティリティクラス

  • 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