JGroups is a toolkit for reliable group communication. Processes can join a group, send messages to all members or single members, and receive messages from members in the group. The system keeps track of the members in every group, and notifies group members when a new member joins, or an existing member leaves or crashes. A group is identified by its name. Groups do not have to be created explicitly; when a process joins a non-existing group, that group will be created automatically. Member processes of a group can be located on the same host, within the same LAN, or across a WAN. A member can be part of multiple groups.
Packages 
Package Description
org.jgroups
Provides top-level public JGroups classes such as Channel, Message, etc.
org.jgroups.annotations  
org.jgroups.auth  
org.jgroups.blocks
Provides building blocks that are layered on top of channels.
org.jgroups.conf
Provides ways to configure a protocol stack.
org.jgroups.debug
Provides debug support, including testing, profiling, and a graphical view of a protocol stack.
org.jgroups.demos
Provides demonstrations of JGroups functionality.
org.jgroups.demos.applets
Provides an applet that demonstrates JGroups functionality.
org.jgroups.demos.wb
A distributed whiteboard applet implemented using JGroups.
org.jgroups.jmx
org.jgroups.jmx.protocols
org.jgroups.jmx.protocols.pbcast
org.jgroups.mux  
org.jgroups.persistence
Provides features for storing information to a database or file.
org.jgroups.protocols
Provides implementations of transport protocols which are responsible for sending and receiving messages to/from the network.
org.jgroups.protocols.pbcast
Supports probabilistic broadcasts.
org.jgroups.stack
Support for managing protocol stacks.
org.jgroups.util
Provides useful functionality which cannot be assigned to any particular other package.