I'm choosing java because I'm most familiar with it, and using an applet to display graphics in java is fairly simple.
I'd say Java gives you enourmous boost for creating complex product, like physics engine. Grasping hard tasks with Java is a lot easier than with C++. This is something that really matters for large projects, less bug hunting, less cryptic code, less pointers..pointers..pointers and so on
) : Should I be programming "math simulations" in java? Will this slow the program down too much?
As someone already answered here, Java trigonometry is very slow (also i/o) compared to other languages, but this is somewhat isolated issue and perhaps it can be tangled a bit by using JDK 1.5 or even 3rd party trig. packages. I'd say in all the other areas Java does not need to be ashamed even if we compare it to C++.
Is it the math calculations, or the animation / display methods which causes java programs to be slower?
E.g. jogl (Sun's reference implementation for OpenGL Java apllications) is very fast (again, compared to native code).
I guess I don't understand how my java classes are displaying things at a lower level than "when I type g.drawLine(x1,x2,y1,y2); a line appears in my applet".
I'd suggest that you check Java3D and Xith3D projects for example. They give you even higher level API to work out with 3D objects (and world itself), Xith3D works very fast.
Check Xith3D, it's relates to Java3D with it's API, it has some documentation and good people to back it up.
I've read people talking about using Physics engines, which were programmed in C++, in java.
Why is this a better approach?
I'm the author of Odejava project which wraps ODE (C project) for Java API. The only reason why I wanted to start such an project is this: There does not exist full fledged Java physics engine. But there exists need for proper physics engine to be used in Java applications. And on the other hand, I do not own enough knowledge or time on how to code proper collision libraries or physic libraries in any language. You can get some grasp of the physics engine's complexity by looking at the source code of ODE and OPCODE (= big task).
But, I see no reason why e.g. ODE wouldn't be very fast if it would have been implemented purely with Java.
Hope this answers your question.
How can you include C++ libraries into a java program?
Basically you get amazingly easy Java bindings to most native projects by using a project called Swig. It really is very simple I can tell. But for e.g. Odejava, we had to do some optimizations for the API, e.g. use Java's NIO with DirectBuffers.
If I'm not really interested in building a game, but more interested in working towards a physics engine, should I bother writing any of it in java?
I'd definately say, go for it (with Java!) Writing is one task, desinging other. I'd say if for some reason you wan't to change language from Java to e.g. C++, you can do it later also, but I'd be amazed if you need to. It's the architechture and algorithms behind it, not the language that makes things go fast (or slow).
Last comment, if you are really up to benchmark and numbers, you might check this out:http://www.osnews.com/story.php?news_id=5602
It compares nine programming languages on different areas. JDK 1.5 performs somewhat better on most areas, especially on the trigonometry.