Skip to content

Commit bc6ee63

Browse files
Flossyclaude
andcommitted
docs: update README with multi-format serialization examples
- Added Serialization Formats section with examples for JSON, XML, YAML, MessagePack - Updated Features list to include Multi-Format Serialization - Updated Dependencies section to list all serialization libraries - Updated test count from 60 to 91 tests - Added format selection trade-offs and recommendations Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent c048cf3 commit bc6ee63

1 file changed

Lines changed: 39 additions & 4 deletions

File tree

README.md

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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);
171172
JRemoteClient 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

176209
Each `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
326359
mvn 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

Comments
 (0)