@@ -12,10 +12,11 @@ A production-ready Java 21 Remote Procedure Call framework with factory-based in
1212- ✅ ** Type-Safe** : Full compile-time type safety with generics
1313- ✅ ** Keep-Alive** : Persistent connections for reduced latency
1414- ✅ ** Constructor Arguments** : Support for parameterized constructors
15+ - ✅ ** Multi-Format Serialization** : Choose between JSON, XML, YAML, or MessagePack
1516
1617### Security & Reliability
1718- ✅ ** Interface Validation** : Only methods declared in service interfaces can be invoked
18- - ✅ ** JSON Serialization** : Secure Jackson-based serialization (no Java serialization vulnerabilities)
19+ - ✅ ** Secure Serialization** : Jackson-based serialization (no Java serialization vulnerabilities)
1920- ✅ ** Error Handling** : Comprehensive exception propagation with stack traces
2021- ✅ ** Logging** : SLF4J + Logback for production observability
2122- ✅ ** Thread-Safe** : Concurrent access supported via ConcurrentHashMap and BlockingQueue
@@ -24,7 +25,7 @@ A production-ready Java 21 Remote Procedure Call framework with factory-based in
2425### Development Experience
2526- ✅ ** Intuitive API** : Works like ` new Foo() ` instead of string-based lookup
2627- ✅ ** Auto-Closeable** : try-with-resources support with automatic cleanup
27- - ✅ ** Comprehensive Tests** : 75 tests with 100% pass rate
28+ - ✅ ** Comprehensive Tests** : 91 tests covering all features
2829- ✅ ** CI/CD Ready** : Automated versioning and deployment
2930
3031## Quick Start
@@ -171,6 +172,38 @@ JRemoteClient client = new JRemoteClient("localhost", 8080);
171172JRemoteClient client = new JRemoteClient (" localhost" , 8080 , 5 , 20 );
172173```
173174
175+ ### Serialization Formats
176+
177+ jremote supports multiple serialization formats. Clients can choose the format that best fits their needs:
178+
179+ ``` java
180+ import org.flossware.jremote.SerializationFormat ;
181+
182+ // JSON (default - human-readable, widely supported)
183+ JRemoteClient jsonClient = new JRemoteClient (" localhost" , 8080 );
184+ // or explicitly
185+ JRemoteClient jsonClient = new JRemoteClient (" localhost" , 8080 , SerializationFormat . JSON );
186+
187+ // XML (enterprise integration standard)
188+ JRemoteClient xmlClient = new JRemoteClient (" localhost" , 8080 , SerializationFormat . XML );
189+
190+ // YAML (human-readable, configuration-friendly)
191+ JRemoteClient yamlClient = new JRemoteClient (" localhost" , 8080 , SerializationFormat . YAML );
192+
193+ // MessagePack (compact binary format for performance)
194+ JRemoteClient msgpackClient = new JRemoteClient (" localhost" , 8080 , SerializationFormat . MESSAGEPACK );
195+ ```
196+
197+ ** Format Selection:**
198+ - Server auto-detects format from each client message
199+ - Multiple clients with different formats can connect simultaneously
200+ - JSON is the default for backward compatibility
201+ - Each format has trade-offs:
202+ - ** JSON** : Best compatibility, human-readable, moderate performance
203+ - ** XML** : Enterprise standard, verbose but widely supported
204+ - ** YAML** : Most human-readable, good for debugging
205+ - ** MessagePack** : Most compact, best performance, not human-readable
206+
174207### Multiple Instances
175208
176209Each ` create() ` call creates a new remote instance:
@@ -320,7 +353,7 @@ mvn validate
320353
321354## Testing
322355
323- Comprehensive test suite with 60 tests:
356+ Comprehensive test suite with 91 tests:
324357
325358``` bash
326359mvn test
@@ -329,6 +362,7 @@ mvn test
329362** Test coverage includes:**
330363- ✅ Factory-based instance creation
331364- ✅ Constructor arguments support
365+ - ✅ Multi-format serialization (JSON, XML, YAML, MessagePack)
332366- ✅ Multiple instances of same interface
333367- ✅ Instance lifecycle (create/destroy/auto-cleanup)
334368- ✅ Connection pool validation
@@ -346,7 +380,8 @@ mvn test
346380
347381## Dependencies
348382
349- - Jackson 2.17.0 (JSON serialization)
383+ - Jackson 2.17.0 (JSON, XML, YAML serialization)
384+ - MessagePack 0.9.8 (Binary serialization)
350385- SLF4J 2.0.12 (Logging API)
351386- Logback 1.5.3 (Logging implementation)
352387- JUnit 5.10.2 (Testing)
0 commit comments