I can't speak for Java as I know next to nothing about it, but I'm pretty sure when I was looking around for this before I found a few in other languages (C++ and I think Python?). They were commercially licensed though I believe.
Don't feel bad about running into trouble with coding an isometric game though. I spent a while writing one and it turned out to have a astonishing number of deep complexities I didn't anticipate. I had no idea that I'd need to use matrix transformations to convert mouse clicks into worldspace coordinates for example. I got as far as pathfinding and dropped the project for now due to a lot of real life stuff taking up my time.
Grabbing something that will abstract away rendering sprites and handling input and sound will go a long way toward what you need to really get started though.
Completely unrelated to the above, but I'm increasingly of the opinion that it should be a criminal offense to write new code in Fortran. That language needs to go away, now. Can anyone guess what it takes to make the following code:
print *, omp_get_num_threads()
print out the number 0.92? As in, claiming that my program is running on 0.92 threads inside that block of code?
Oh, I just forgot this line:
use omp_lib
A warning that it didn't know what the interface for omp_get_num_threads was supposed to be would have been nice. Instead I spend 2 hours trying to figure that out and why it also claimed that the maximum number of threads was either 0 or 0.5.
I've never actually taken advantage of it, but I seem to recall that C assumes an integer return type if none is provided. I guess Fortran assumes a floating point of some type.
I'm seriously questioning the wisdom of allowing no specification of the return type. Especially without a warning.