Java Application Modernization and Migration [A Guide]