Spring is a nice library that can help up break up dependencies in your java system. It also provides AOP, and clean ways for transaction management, and simplified J2EE related APIs.
Represents EAI messaging patterns. Similar to a JMS systems. Contains a notion of a message with headers and payload.
Messages can be thought of a either document, event, or command.
Channels connect producers and consumers, like a topic or queue in JMS. These are in memory, but you can back these by JMS or another datastore. You can define a synchronous channel so transactions can encompass the sending and receiving of a message.
Maybe this is similar to Apache Camel and Mule.
Used for batch or long running jobs with large amounts of data.
Chunks the batch so smaller chunks can be completed. In case of error, a restart or last commit point can be remembered. Requires a datastore to remember state of the job.
You can define basic steps, as well as skip bad data or retry on error.