The use of middleware has extended from simply facilitating applications' communication to a broad set of services supporting a huge spectrum of networked and distributed computing environments. At the same time mobile wireless ad hoc networks (MANET) have become a popular distributed environment and its application domain is expanding rapidly. However, like all distributed environments several issues must be considered and many problems have to be addressed to have efficient and useful applications. Current researchers moved towards using middleware to provide solutions to these issues and simplify application development for MANETs. In this paper we cover the latest trends and developments in middleware for MANETs and survey these approaches to identify their qualities and limitations. We then classify these approaches into six categories that group them based on the communication models and the programming paradigm used. The paper also evaluates these approaches in terms of the...