A note on constant speed (regardless of framerate). I usually define a "distancePerMilli" float and a "lastTick" long:
private float distPerMilli = 0.018f;
private long lastTick;
When initializing, I give "lastTick" its initial value:
lastTick = System.currentTimeMillis();
Then when moving the object, I determine how long it's been since the last move, and calculate how far to move the object:
long currentTime = System.currentTimeMillis();
long millisPast = currentTime - lastTick;
lastTick = currentTime;
float distance = millisPast * distPerMilli;
Then given a direction, I normalize, scalarMul by the distance, and apply the translation:
SimpleVector trans = new SimpleVector( direction ).normalize();
trans.scalarMul( distance );
myObject.translate( trans );
I also use this type of setup for rotations, special effects, and so on. Higher framerates, of course, have smoother movement, but things will move the same speed for both high and low framerates.