Software Structure for Java