Java supports heterogeneous applications by transforming a heterogeneous network of machines into a homogeneous network of Java virtual machines. This abstracts over many of the complications that arise from heterogeneity, providing a uniform API to all components of an application. However, for many applications heterogeneity is an intentional feature where components and resources are co-located for optimal performance. We argue that Java's API does not provide an e ective means for building applications in such an environment. Speci cally, we suggest improvements to Java's existing mechanisms for maintaining consistency e.g. synchronized, and controlling resources e.g. thread scheduling. We also consider the recent addition of a CORBA API in JDK
Gul Agha, Mark Astley, Jamil A. Sheikh, Carlos A.