Middleware is software that resides between applications, services, and their underlying distributed architecture and platforms. Middleware provides several types of capabilities to developers, including providing higher-level programming abstractions to support the development of applications and services; supporting end-to-end quality attributes, such as scalability, persistence, and security; and masking problems such as system failure and heterogeneity of languages, operating systems, and networks.Middleware has provided a key set of layers in distributed architectures since the early 90s, starting with the basic client/server model of distribution. Over the past several decades, there have been extensive innovations in middleware capabilities, with new paradigms and underlying systems technologies emerging. Significant developments during this time frame include the programming models associated with distributed objects, components, and, These innovations have provided developers with an abundance of tools to develop distributed systems and, until recently, middleware has largely delivered on its promise of enhancing portability, interoperability, and integrability. Over the last few years, however, there have been significant trends in distributed systems that motivate new advances in middleware to overcome limitations with conventional middleware technologies. These trends include the emergence of the Internet of Things (IoT) and cloud computing, which add new and unprecedented challenges for scale, dependability, and security to the underlying middleware technology. When taken together, the challenges are even greater when we move toward complex distributed systems that are very large (Internet scale), highly heterogeneous, and dynamic. There is also a corresponding change in the deployment of distributed systems, moving from individual systems to systems of systems.To address the challenges for middleware emanating from the advent of the Internet of Things and cloud computing, new research is required, particularly with respect to the types of middleware needed to support key domains, such as cyber-physical systems, smart cities, the smart grid, big data analytics, digital earth, and so on. This special issue addresses these challenges by (i) considering the state-