java implementation
update Makefile