Java initial support

not ready for merge