Application Development for Distributed Environments