Java EE - quem implementa a especificação? [duplicado]

Esta pergunta já tem uma resposta aqui:

O que exatamente é o Java EE? 4 respostas

Tenho alguma experiência no núcleo de Java e Java EE. Eu li as várias perguntas sobre SO para entender o que exatamente é Java EE? E poucas respostas no SO são:what-exatamente-é-java-ee , o que é java-ee

Tenho algumas duvidas:

1) Se o Java EE é apenas uma especificação, quem os implementa? Os servidores de aplicativos (como JBOSS, GlassFish) implementam essas especificações?

2) Se eu estiver correto, a especificação EJB é implementada pelo contêiner EJB e acredito que o EJB Container faça parte do Application Server. Agora, quando nós, como desenvolvedores, escrevemos um código EJB, o que estamos realmente fazendo? A dúvida que tenho é que o contêiner EJB implementa a especificação EJB; portanto, estamos substituindo alguma "parte de especificação" do EJB? Como, parte do EJB é implementada pelo contêiner EJB e algo que os desenvolvedores estão escrevendo? OU é que alguma parte do EJB precisa ser fornecida pelo contêiner EJB e outra parte a ser desenvolvida pelos desenvolvedores? Estou tendo dificuldade em entender isso.

Por favor, alguém pode ajudar a entender isso?

questionAnswers(5)

yourAnswerToTheQuestion