ViewParam vs @ManagedProperty (valor = “# {param.id}”)

¿Cuál es la diferencia entre definir View Params así: <f:metadata> <f:viewParam name="id" value="#{someBean.id}"/> </f:metadata> Y definir la propiedad en ManagedBean así: @ManagedProperty(value = "#{param.id}") private Integer