WebDriver is a way to automate browsers, it doesnt really matter which language binding you use to implement WebDriver testcases, it is possible with all languages (e.g. C#, Python, Ruby, Java, JavaScript, etc..). All web applications use HTML, CSS and JavaScript. So it is all the same.
Protractor makes it easier to automate an application developed in Angular, not JavaScript per se.
I would write the WebDriver tests in a programming language nearby developers program, so that they can help building and also maintain the tests as they are adding features to the application. If you use a language they do not know they will probably never assist the automators.
- JavaScript main issue is that its nature is asynchronous, which makes it a bit more complex in some situations.
- Java's main issue is that it is Java ;-)