DTN has a Java API, but I think it's just a wrapper around some Windows crap. IB has pure Java API but there are some limitations (100 concurrent symbols) and it is not a true tick feed (sampled 2 - 4 times per sec).
OpenTick has a pure Java API, but is probably still not of production quality. It is dirt cheap - exchange fees only.