Developing and Composing Applications with Java