Characterizing and optimizing Java-based HPC applications on Intel many-core architecture