I use System.nanoTime() to compute the exact duration of the most recent frame. I then compute a time factor from frame duration, which is applied in all computations. This way, you get approximately performance-independent game behavior. Pseudocode example:
while game running
Note: You have to be a bit careful when dealing with derivates (e.g. accelleration), know your calculus
"I'm a ****ing starship, I'm allowed to cheat!"
GCU Arbitrary, Culture Craft