why is java considered dynamic?