"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تقديم حزمة Java المساعدة المجانية

تقديم حزمة Java المساعدة المجانية

تم النشر بتاريخ 2024-11-07
تصفح:913

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، إلخ).
  • تتم إضافة تاريخ رأس الطلب ووكيل المستخدم والمضيف وطول المحتوى تلقائيًا.
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