We've used Java for several years. It works.
The JavaDocs are not always very helpful.
The language is legible...unless your students are tired then you have to figure out why you have a variable called broccoli

.
The only thing that has bothered me for some time with Labview in this context is that sometimes what it produces is more bloated than you may suspect. I also am unclear on what it does when certain things go wrong in subtle ways.
We've used C in the past and I'm sure we can do C++.
It's been my understanding over the years that the languages tend to fall like this:
Labview, nice elegant and visually accessible.
Java, harder to crash but sometimes a bit of a black box.
C++, not hard to cause yourself headaches with at all but very powerful.
I've left out Python because as others have said it's sort of not official. We did use Python for some LEGO NXT tinkering and for some robot mounted laptop video tinkering (didn't make it to the field, used Java for that too).