Page cover image

⬇️Package ch.k43.util

Planned for next version

  • Some minor code and documentation changes

Current Version 2025.06.05

  • K: Added concat(), clear(), hexToBytes()

  • KTimer: Added getElapsedNanoseconds()

  • Some minor code and documentation changes

Version 2025.05.17

  • KPasswordVault: New class to securely hash, store and verify passwords

  • KSMTPMailer: Added setLocalFQDNHostName()

  • Updated Sample Code

  • Some minor code and documentation changes

Version 2025.04.26

  • K: Added repeat(), truncateMiddle(), compressGZIP(), decompressGZIP()

  • Some minor code and documentation changes

Version 2025.04.13

  • KHTTPServerThread: new Class to support HTTP server applications (for web or REST services)

  • K: Added getHTTPStatusText() to return text for a given HTTP status code

  • Updated Sample Code

  • Some minor code and documentation changes


Version 2025.03.30

  • K: Enhance toPEM() to format certificate chain of public keys and add option to describe objects in comments

  • Added sample GraalVM macOS native image executable "GetCurrentVersion" in Tips / FAQ

  • Some minor code and documentation changes


Version 2025.03.20

  • K: Added loadKeyStore(), toPEM(), generateRSAKeyPair(), encodeHTML() and decodeHTML()

  • Updated sample code

  • Some minor code and documentation changes

Version 2025.03.02

  • K: Added INSTANCE_UUID to identify running application instance

  • KLog: Added options in KLog.properties and application startup parameters (KLogInclude and KLogExclude) to include or exclude data from logging

  • Some minor code and documentation changes

Version 2025.02.26

  • Publish Java code on GitHub as open source

  • K: Added getCurrentVersionNumber()

  • Some minor code and documentation changes

Version 2025.02.19

  • K: Added getPasswordHash()

  • Added HelloWorld example to test installation with java -jar ch.k43.util.jar

  • Some minor code and documentation changes

Version 2025.02.13

  • KTimer: Added reset()

  • K: Added saveError()

  • K: Added multiple static fields that describe the environment

  • Updated sample code

  • Some minor code and documentation changes

Version 2025.01.27

  • KHTTPClient: Added setTimeOutSec()

  • KLog: Added command line parameter KLogPropertyFile to override name and location of KLog.properties file

  • KLog: Added command line parameter KLogLevel to override logging level (INFO, ERROR, DEBUG or OFF)

  • Changed locale of generated JavaDoc output to en_US

  • Some minor code and documentation changes

Version 2025.01.22

  • K: Added replaceParams()

  • KHTTPClient: Treat HTTP return code 200-299 as successful

  • KLog: Added parameterized logging to all methods, e.g. KLog.error("API call failed - Return code {}", returnCode)

  • Internal code optimization and documentation changes

Version 2025.01.19

  • Support for GraalVM native-image compilation (see Tips / FAQ)

  • Check if JVM is Java 8 (version 1.8) or higher

  • K: Added isNewVersionAvailable()

  • Some minor code changes

  • Major rewrite of the website content

Version 2024.12.08

  • KLog: Save the last 10 errors even if logging is not active (retrievable with K.getLastError() and K.getLastErrors()

  • K: Changed formatBytes() to show e.g. MiB instead of MB (IEC standard)

  • K: Added getPrivateKey(), getPublicKey() and getCertificate()

  • Sample code updated

  • Some minor code and documentation changes

Version 2024.10.26

  • KDB: Added option argTimeOutSec to exec()

  • KDB: Added prepare() and execPrepare() to support SQL precompilation and prevent SQL injection attacks

  • Some minor code and documentation changes

Version 2024.09.15

  • KLog: Fix small bug when debug log is active in YAML code

Version 2024.09.14

  • KLog: Added formatter class to write logging as YAML output

  • KDB: Added getDataAsYAML() to output result set as YAML string

  • K: Added encodeYAML() and decodeYAML()

  • Some minor code and documentation changes

Version 2024.09.12

  • K: Added option to isNumber() to check for allowed numeric range

  • KLog: Show CPU count and OS disk size in debug log

  • Some minor code and documentation changes

Version 2024.09.06

  • KThread: New class for easy Java thread creation and termination

  • K: Removed argForce argument from stopThread() as newer Java versions removed the depreciated Thread.stop() method

Version 2024.09.02

Upgrade Notice: Make sure you are using the new Jakarta/Angus mail jar files for the KSMTPMailer and KLogSMTPHandler classes

  • KSMTPMailer: Migrated from JavaMail (javax.mail) to Eclipse Jakarta/Angus mail.

  • KDB: Added option in getDataAsTable() to optionally print column headers

  • Some minor code and documentation changes

Version 2024.08.29

  • K: Added isInteger() and stopThread()

  • KLogSMTPHandler: Added logging handler to send error log entries (FATAL log level) to any SMTP server

  • Some minor code and documentation changes

Version 2024.08.24

  • K: Remove SHA-1 algorithm from generateHash()

  • K: Added serialize() and deserialize()

  • KDB: Added maxRows argument to exec() call

  • Added toString() to all classes to write out object data

  • Updated sample code

  • Some minor code and documentation changes

Version 2024.08.12

Version 2024.07.07

  • Implemented Java AutoCloseable in KDB, KSocketClient, KSocketServer, KSocketServerListener and KSocketServerThread

  • K: Added isNumber()

  • K: Added option to encodeJSON() to return null, boolean and number values without quotes

  • Some minor code and documentation changes

Version 2024.06.27

Upgrade Notice: The K.getJVMMemStats() now returns number of bytes (not KB).

  • K: Added formatBytes(), updated getJVMMemStats() to return number of bytes

  • KDB: Added setAutoCommit() and getElapsedTime()

  • Some minor code and documentation changes

Version 2024.06.22

  • KLog: New formatter classes to write logging as CSV or XML output

  • KLog: Adds UUID field to JSON, CSV, XML and JDBC output

  • New KLog.properties sample file uploaded

  • Some minor code and documentation changes

Version 2024.06.20

  • K: Added encode and decode methods for XML

  • KLogJDBCHandler: Added logging handler to output data to any JDBC compliant database

  • KLog: Added getLevel() and setLevel()

  • KDB: Added getDataAsXML(), commit() and rollback()

  • KSMTPMailer: Added setUnsubscribe()

  • New KLog.properties sample file uploaded

  • Some minor code and documentation changes

Version 2024.06.15

  • KDB: New class to support JDBC compliant databases with various output formats (JSON, CSV, table or Java objects)

  • KSMTPMailer: Added setSubject(string, charset) for non-UTF-8 subjects

  • KSMTPMailer: Added setOAuth2Authentication() to support OAuth 2.0 authentication

  • K: Added encode and decode methods for JSON and CSV

  • Some minor code and documentation changes

Version 2024.06.10

Upgrade Notice: Don't forget to rename Log.properties to KLog.properties if you are using the KLog framework.

  • KLog: Log.properties file renamed to KLog.properties for consistency with the KLog class

  • K: Added runGC() and getJVMMemStats()

  • KSMTPMailer: Added addText(string, charset) for non-UTF-8 text parts

  • Include downloads of Jakarta Mail and Jakarta Activation on this website

  • Some minor code and document changes

Version 2024.06.06

  • KLog: Added setLevelXxx(), isLevelXxx() and resetLevel() to set or query the configured logging level during runtime

  • KSMTPMailer: Added getMessageSize() to get size of MIME message after delivery

  • KSMTPMailer: Include Jakarta Mail debug log in KLog logging output

  • KSMTPMailer: Removed X-TLS-Connection header as there is no guarantee that it is enforced by the SMTP server

  • KTimer: Added getStartTime() and toString() to return start time as Calendar object or in ISO-8601 format

  • KSocketServerThread: Added writeLine()

  • K: Added getRandomInt(), getUTCOffsetMin() and getUTCOffsetAsString()

Version 2024.05.24

  • K: Added toHex() to format byte array or string to a hexadecimal string

  • K: Added getUniqueID() to return unique id (UUID)

  • K: Added getCurrentDir() to return current directory

  • K: Changed generateHash() to support SHA3-256, SHA3-384 ad SHA3-512

  • K: Added getStartTime() to return date and time of application startup

  • KHTTPClient: Added put(), patch(), options() and delete() methods

  • KSMTPMailer: Added check for hostname (TLS only)

  • Added some sample code to this website

  • Some minor code and document changes

Version 2024.05.20

  • K: Added isEmpty() to test string or array for emptiness

  • KSMTPMailer: Include platform in X-Mailer header

  • KSMTPMailer: Added header X-TLS-Connnection: true/false

  • Some code cleanup and documentation changes

Version 2024.05.17

  • KSMTPMailer: New class to compose and send multipart SMTP email with text, HTML and file attachments

  • KSocketServerThread: Added getAuthenthicatedClientCN() to return common name of the full distinguished name

  • KSocketClient: Added getAuthenticatedClient() and getAuthenticatedClientCN()

  • KFile: Added readPropertiesFile() and writePropertiesFile()

  • KLog: Added argException() to throw IllegalArgumentException if expression evaluates true

  • K: Added dnsQuery() to return records for all query types (MX, A, etc)

  • Some minor code and documentation changes

Version 2024.05.06

  • First public version

Last updated