Today I'm very happy to announce the first alpha version of JGroups 5.0!
JGroups 5.0 has major API changes and I'd like people to try it out and give feedback before we release final.
Note that there might still be more API changes before the first beta.
So what's new in 5?
The biggest change is that Message is now an interface [1] and we have a number of message classes implementing it, e.g.:
- BytesMessage: this is the replacement for the old 4.x Message class, having a byte array as payload.
- ObjectMessage: accepts an object as payload.
- NioMessage: has an NIO ByteBuffer as payload.
- EmptyMessage: this class has *no* payload at all! Useful when sending around messages that have only headers, e.g. heartbeats. Used mainly by JGroups internally. This class has a smaller memory footprint.
- CompositeMessage: message type which carries other messages
This late marshalling saves one memory allocation.
The other advantage is that applications can register their own messages types. This means that we can control how a message is created, e.g. using off-heap memory rather than heap memory.
Other changes include:
- I've removed a lot of deprecated cruft, e.g. several AuthToken implementations, SASL, S3_PING and GOOGLE_PING (they have better replacements).
- Java 11 is now the baseline. The current Alpha1 still runs under Java 8, but I expect this to change, perhaps only with 5.1. But at least, I reserve the right to use Java 11 specific language features, so be warned :-)
I still have a few JIRAs to resolve before releasing 5.0.0.Final, and then I'll add new functionality (without API changes) in a bunch of minor releases. I've planned 5.1 - 5.3 so far.
The documentation is here: [3].
For feedback please use the mailing list [4].
Enjoy!
[1] http://www.jgroups.org/manual5/index.html#Message
[2] https://issues.redhat.com/projects/JGRP/versions/12334686
[3] http://www.jgroups.org/manual5/index.html
[4] http://groups.google.com/forum/#!forum/jgroups-dev