Abaixo um HandsOn comentado de algumas coisas que podemos fazer utilizando as estruturas de dados nativas do Java. Como criar um cookie e armazena-lo no cliente utilizando Servlets? Este e um exemplo simples porem funcional.Suponha o seguinte cenario:"Retornar o nome do usuario em todas as paginas do sistema esta consumindo muito recurso, toda vez que alguma pagina necessita ser carregada realizamos uma consulta no banco de dados para retornar o nome completo do usuario. Isto precisa ser resolvido. E JA!"Agora que nosso cookie ja esta no cliente (browser) podemos obte-lo em qualquer requisicao ao container da seguinte maneira: IntroducaoServlets Container, Application Server, Java EE...?Muita gente confunde, principalmente no inicio da carreira ou na faculdade, um servlet container com servidores de aplicacao, por exemplo, qual a real diferenca entre o Tomcat (Servlet Container) e o Glasfish (Application Server) ?A plataforma Java EE e fortemente baseada em componentes, o objetivo desta abordagem, e criar funcionalidades especificas que podem ser reutilizaveis e devem fazer parte de algo muito maior, como uma peca de um quebra cabeca que tem uma funcao especifica de se encaixar com as outras pecas (componentes) para formar o todo.Basicamente o Tomcat por ser um Servlet Container, nao suporta varias tecnologias que compoem o Java EE (verifique aqui os componentes suportados pelo Java EE 7) dentre eles EJB's. Ja os Servidores de Aplicacao, para serem definidos como tal, devem suportar os componentes/tecnologias da especificacao Java EE (x), a exemplo do JBoss application Server 8 que implementa a JSR 342, para suportar o Java EE 7.Veja a diferenca nesta imagem do Web Container x EJB Container: (Fonte: http://docs.oracle.com/cd/E19575-01/819-3669/6n5sg7arb/index.html)Tudo ok ate agora? Voce ja sabe o que e um componente e a diferenca entre um Java EE Container e um Servlet Container, agora vamos entender um pouco sobre os temidos EJB's.Enterprise Java Beans(EJB 2.1), JSR 220 (EJB 3.0), JSR 318 (EJB 3.1) and JSR 345 (EJB 3.2).Vamos falar das 4 ultimas Geracoes de EJB's, onde, as ultimas 3 versoes se propoem a reestabelecer a honra da familia e devem ser analisadas sem rancor ou maguas, possivelmente causadas em uma epoca nao tao distante.A proposta do EJB desde sua concepcao e sensacional, sao componentes que podem ser disponibilizados em ambientes distribuidos, voce cria modulos para executar regras de negocios especificas, que se tornam acessiveis para outros sistemas sem a necessidade de conhecer sua implemetacao. Seria possivel ter um componente EJB FolhaDePagamento, sendo utilizado por varios sistemas, sem a necessidade de conhecer como varias regras e legislacoes foram implementadas. Basicamente voce consegue particionar o seu problema e disponibilizar a solucao como um componente.O problema comeca quando a complexidade para trabalhar a tecnologia X Y ou Z e muito grande, mesmo com recursos poderosos, as implementacoes anteriores a versao 3.0deram muita dor de cabeca para os programadores daquela epoca (Nao, eu ainda nao era programador! Provavelmente estava jogando bola na rua ou Tibia nesta epoca \o/ ). Os principais problemas eram: Para um simples EJB era necessario no minimo implementar um interface e criar um DDs (veja aqui) Uso de JNDI Lookups (Nao sabe o que e