Hi,
> tern.java has which integrates on IDE
features level such as providing code completion implementations that directly query tern and bypassJSDT AST.
Indeed, I tell me if it could be possible to disable the parse of JS by JSDT? If we wish to share the same AST between JSDT and tern.js, we need to execute ternjs with a _javascript_ engine different from node.js (J2V8 which has better performance than Nashorn for executing ternjs). The only problem is that some tern plugins are linked to node.js (fs module generally) for some features like completion for required modules. But I think we could emulate fs inside J2V8.
> Another alternate is typescript language tools but technically it is similar to tern.js with limitations.
Which limitations? IMHO I think TypeScript is very very interesting and not only for TypeScript, but for _javascript_ engine and JSX. Visual Studio uses now TypeScript Service Language API to provide support for _javascript_ (called Salsa).
TypeScript supports too JSX syntax. VSCode integrates TypeScript, _javascript_ and JSX with tsserver which looks like tern server.
The only problem is that TypeScript with tsserver is not extensible (you cannot support custom behaviour of _javascript_ like angular injection like it is done with tern angular1 plugin). But TypeScript guys are working on this issue. See https://github.com/Microsoft/TypeScript/issues/6508 you will see an awesome demo with Angular2. Once this plugin will be available, typescript.java will benefit it. It's a good sample that community is very important.
Tern.js has a big community, but TypeScript has a bigger community than Tern.js. I'm not sure that developping your own inference engine is a good idea.VJET had done that, it worked very good, but community was just limitated for Eclipse.
Regard's Angelo