Complex Java programs usinfg