How is ordinary compilation process different from java compilation process?