Enterprise Java Development@TOPIC@
Vendor-neutral API to access enterprise messaging systems.
Similar API role as JDBC
JDBC is an API for accessing RDBMS
JMS is an API for accessing enterprise messaging systems
API between the application (JMS client) and the messaging provider (JMS provider); not between providers
Similar non-role as JDBC
JDBC won't cause data inserted into an HSQL instance to magically show up in an Oracle instance
JMS won't cause a message sent to a JBossMQ destination to magically show up in a BEA instance's destination
Its a Java API; no other languages addressed
JMS providers accommodate other language clients using proprietary non-Java APIs
Security
How are destinations secured
Load Balancing/Fault Tolerance
How do Topics scale to many publishers/subscribers
How does a provider account for broker failure
Error Notifications
What happens when storage exhausted
FIFO?, LIFO? retention
Administration
How are destinations and connection factories added
Message Repository
How is storage allocated
Wire Protocol
RMI?
HTTP?
Other?
Interoperability with non-Java clients
1.0
~1998-2001
Initial API
Very destination-type specific, hard to generalize
publisher.publish() to Topic
sender.send() to Queue
1.1
2002
Generalized destination-type specific calls
producer.send() to Topic or Queue
consumer.receive() from Topic or Queue
2.0
2013
Ease of use
Combined Connection and Session into JMSContext
Fewer objects/calls to setup a flow
Java 7 AutoClosable eliminates boilerplate code in try/finally blocks
Read contents of Message without downcasting to Message type
New features
Shared subscriptions
Delivery delay