Diferencias: @SessionScoped vs @Stateful y @ApplicationScoped vs @Singleton [cerrado]

Me gustaría saber, cuáles son losdiferencias principales Entre :

javax.enterprise.context.SessionScoped yjavax.ejb.Statefuljavax.enterprise.context.ApplicationScoped y javax.ejb.Singleton

Yo se que@SessionScoped y un@Stateful permite crear una nueva instancia para cada cliente. También sé que para el@ApplicationScoped y@Singleton / @Stateless Se comparten entre los clientes.

=> Perocuando debería considerar Es mejor elegir un EJB, o el otro?

Respuestas a la pregunta(1)

Su respuesta a la pregunta