I would also add "speed" to the evaluation criteria. Here are the main considerations I would make:
Pros: Good execution speed. Good choice of MOM middleware products (IBM MQ, TIBCO, MSMQ, Vitria, ...).
Cons: Coding distributed applications in C++ is much more prone to runtime errors (memory leaks, etc.), than with Java or VB. Applications are platform dependent and need to be recompiled (or ported) for every operating system environment.
Pros: More convenient coding. Rapid development. Reusable components. A large class of potential bugs that lurk in C++ applications does not exist in VB (free memory access, array out of boundary access, ...).
Cons: Slower execution speed. Less choice of middleware products (mainly MSMQ). Applications are typically tied to one platform (Windows).
Pros: More convenient coding. Rapid development. Choice of application servers and other server side components (transaction brokers etc). Applications are platform-independent and run on Windows, Solaris, Linux, etc., with little or no modification at all. Good choice of MOM middleware products (JMS, IBM MQ, TIBCO, etc.).
Cons: Microsoft is trying to get Java developers to abandon the platform. Hence Java applications will probably be more difficult to integrate with .NET applications, than applications written in C#, VB.
In summary, I believe Java is a good choice for MOM programming since it combines the main advantages of C++ (speed) with the main advantages of VB (easier coding), and gives you a good choice of MOM products. Also, your applications become pretty independent of the underlying operating system. Especially in the JMS market there are some very good MOM product offerings, with good performance and scalability, at an affordable price.
This was first published in September 2002