All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.1 - 2026-05-24
- BREAKING: Extracted protocol implementations into standalone FlossWare libraries
- File transfer protocols (SFTP, WebDAV, SMB/CIFS, FTP/FTPS) → jfiletransfer 1.0
- Messaging systems (Kafka, RabbitMQ, Redis) → jmessaging 1.0
- Container systems (Kubernetes, Docker, Hazelcast) → jcontainer 1.0
- Version control (Git) → jvcs 1.0
- Replaced direct protocol implementations with adapter classes:
FileTransferClassSource- wraps jfiletransfer clientsMessageClientClassSource- wraps jmessaging clientsContainerClientClassSource- wraps jcontainer clientsVcsClientClassSource- wraps jvcs clients
- Added packagecloud.io repository configuration for FlossWare dependencies
- Refactored code duplication: Extracted
className.replace('.', '/') + ".class"pattern intoClassNameUtil.toClassFilePath()method (#37)- Affects: FileTransferClassSource, MavenNexusClassSource, MessageClientClassSource, VcsClientClassSource, HdfsClassSource, MinioClassSource, NexusClassSource, MavenRepositoryClassSource, and others
- Benefits: Single source of truth, easier maintenance, more self-documenting code
- Replaced System.err with SLF4J logging in RemoteJarClassSource for temp file deletion errors (#35)
- Added AutoCloseable interface to MinioClassSource for API consistency (#36)
- Fixed locale-sensitive toLowerCase() in ProtocolHandlerRegistry - now uses Locale.ROOT for consistent case conversion across all locales (#38)
- Documented design decision to use String instead of char[] for credentials in AuthConfig with comprehensive security best practices guidance (#39)
SftpClassSource,WebDavClassSource,FtpClassSource- useFileTransferClassSource+ jfiletransferKafkaClassSource,RedisClassSource- useMessageClientClassSource+ jmessagingKubernetesConfigMapClassSource- useContainerClientClassSource+ jcontainerGitClassSource- useVcsClientClassSource+ jvcs- Removed
addSftpSource()andaddWebDavSource()convenience methods from Builder - Removed outdated example files (Example.java, ProtocolExamples.java, NexusExample.java)
ClassLoaderStatisticsutility class inorg.flossware.jclassloader.utilpackage- Track classes loaded count
- Monitor total bytes loaded
- Count cache hits
- Calculate cache hit rate
- Application ID tracking
ClassLoaderCleanupUtilutility class inorg.flossware.jclassloader.utilpackage- Comprehensive ClassLoader cleanup to prevent memory leaks
- ThreadLocal cleanup for application threads
- JDBC driver deregistration
- JMX MBean cleanup
- Shutdown hook removal
- ResourceBundle cache clearing
- Leak detection with WeakReference
- Diagnostic logging for troubleshooting
- Test coverage for new utility classes (12 tests)
- Cleaner separation of concerns - transport protocols in dedicated libraries
- Users only include dependencies they need via optional transitive dependencies
- Easier to maintain and test individual protocol implementations
- Consistent API across all FlossWare libraries
- Now supports 34+ transport protocols via modular architecture
1.0 - 2026-05-23
- Initial release of JClassLoader
- Core dynamic class loading from multiple sources
- Extensive source implementations:
- Local filesystem (
LocalClassSource) - Remote HTTP/HTTPS (
RemoteClassSource) - FTP servers (
FtpClassSource) - SFTP servers (
SftpClassSource) - Maven repositories (
MavenRepositoryClassSource) - Nexus repositories (
NexusClassSource,MavenNexusClassSource) - REST APIs (
RestApiClassSource) - Cloud storage (
CloudStorageClassSource) - JAR files (
RemoteJarClassSource) - Database storage (
DatabaseClassSource) - WebDAV (
WebDavClassSource) - Custom protocols (
CustomProtocolClassSource)
- Local filesystem (
- Caching layer (
ClassCache) - Delegation strategies (parent-first, child-first, sibling)
- Security features:
- Bytecode verification
- Checksum validation (MD5, SHA-256)
- Authentication support
- Retry policies with exponential backoff
- Lifecycle management (hooks for load/unload)
- Example implementations for common patterns
- Comprehensive test coverage (392 tests in v1.0)
- Pluggable class source architecture
- Multiple delegation strategies
- Built-in caching with statistics
- Security and validation
- Flexible retry mechanisms
- Container and native support