Introduction to Java and software design