Architecting Modern Java EE Applications