Is it possible to develop distributed applications with JMS alone? Is it necessary to have a Java application server, EJB server, and so on?
Yes. No. Minimally, a computing task can be distributed among two or more Java applications that interoperate by sending and receiving data via JMS. Thus, the minimal JMS-ready environment includes a Java development and/or runtime environment plus JMS middleware.
And, of course, distributed applications can use JMS message passing directly, or develop a higher-level, enterprise-specific framework on top of JMS.