First, JMS is a wrapper layer on top of the messaging environment, so, to answer your question... it depends on implementation that you are using.
Anyway, for a few of the messaging environments (and configurations) that I used, the answer would be "no". It is possible for a consumer to skip messages, as those messages were delivered to other consumers. And it is possible for a consumer to get an earlier message, than the previous, as it is possible for a consumer to fail, timeout, and the messages that it took with it, has to be redelivered to other consumers.
ActiveMQ will preserve the order of messages sent by a single producer to all consumers on a topic. If there is a single consumer on a queue then the order of messages sent by a single producer will be preserved as well.
If you have multiple consumers on a single queue the consumers will compete for messages and ActiveMQ will load balance across them, so order will be lost. For background on the issue and how it can be solved see
Exclusive Consumer which allows only a single consumer to consume from the queue at once to preseve order
Message Groups which splits the messages on a queue into parallel virtual exclusive queues to ensure that messages to a single message group (defined by the JMSXGroupID header) will have their order preserved but that different groups will be load balanced to different consumers.
Don't listen to Steve. Just read this tiny ad:
Programmatically Create PDF Using Free Spire.PDF with Java