IBM MQ (formerly known as MQSeries) is middleware that implements message queuing using queues to allow programs to communicate asynchronously. It runs on many platforms and supports transactional message passing between programs. Key objects in MQ include queue managers, queues, channels, and messages. Messages are placed on queues and can be retrieved later, even if the sending program has ended. MQ uses logging and recovery to ensure reliable message delivery even if failures occur. It provides benefits like loose coupling between applications, assured delivery through persistence, and ability to integrate with transactional systems.