3.9: Hutool

The 3.9.x patch cycle squashed a notorious bug in BeanUtil.fillBean where nested properties were skipped. Additionally, the Convert class became smarter about converting String[] to primitive arrays without throwing ClassCastException.

| Area | Limitation | |------|-------------| | JDK support | JDK 11+ works but not optimized for modules. | | Performance | JSON parser slower than Jackson. | | Async HTTP | No built-in async client (added in 5.x). | | Tree structure | TreeUtil exists but less powerful than 5.x. | Hutool 3.9

Security is always a headache. Hutool 3.9 introduced simplified methods for symmetric encryption (AES, DES) allowing you to generate keys directly from password strings without manual KeySpec boilerplate. The new HmacUtil added support for SM3 (Chinese cryptographic hash standard), making Hutool 3.9 a viable choice for state-backed systems in China. Hutool 3

import cn.hutool.crypto.SymmetricCrypto;
import cn.hutool.crypto.symmetric.AES;
public class EncryptionExample 
    public static void main(String[] args) 
        String text = "Hello, World!";
        String key = "my_secret_key";
SymmetricCrypto aes = new AES(key.getBytes());
        String encryptedText = aes.encrypt(text);
        System.out.println("Encrypted text: " + encryptedText);
String decryptedText = aes.decrypt(encryptedText);
        System.out.println("Decrypted text: " + decryptedText);

Hutool 3.9 represents a mature, utility-centric approach to Java development. By encapsulating standard JDK complexities into intuitive APIs, it allows developers to focus on business value rather than boilerplate infrastructure. The version 3.9 release solidified Hutool's position as an essential toolkit in the Chinese Java ecosystem, providing a stable, dependency-light foundation for enterprise applications. For teams seeking to reduce code volume and maintenance costs without introducing heavy frameworks, Hutool 3.9 provides a compelling solution. Hutool 3.9 represents a mature