terça-feira, 30 de setembro de 2014

Java - Contexto

Contexto


O que exatamente é contexto em um ambiente de desenvolvimento Java?
Contexto é a relação entre o texto e a situação em que ele ocorre dentro do texto. É o conjunto de circunstâncias em que se produz a mensagem que se deseja emitir- lugar e tempo, cultura do emissor e do receptor, etc. - e que permitem sua correta compreensão. Também corresponde onde é escrita a palavra, isto é, a oração onde ela se encontra.


Essa é a definição de contexto no dicionario e podemos analisar como uma ótima fonte para entender o que é um contexto dentro do Java.
Contexto é todo o ambiente que está em volta do seu componente.

Essa seria a definição de contexto em um ambiente Java, mas isso acaba sendo um conceito abstrato para os desenvolvedores.
Vamos a um exemplo mais pratico e de fácil entendimento para o leitor:

Irei partilhar um exemplo com Servlet, tecnologia que precisa de contexto pra efetuar suas operações. Vamos focar na Servlet que eu acredito que será mais fácil de entender por ser uma especificação JavaEE, quando temos uma Servlet, temos os métodos que implementam o padrão web de protocolo, o HTTP, com isso quando acessamos uma Servlet é por algum desses métodos, GET, PUT, DELETE, POST, etc. Quando recebemos uma request do browser, a Servlet é acessada imediatamente pela requisição e dentro dessas chamadas a Servlet teremos uma propriedade chamada ServletConfig que pertence a ServletContext, o ServletContext serve exatamente para passar o contexto para a servlet em uso sendo assim ela irá dizer a Servlet sobre o ambiente(comportamento, lifecycle, estado, etc) do containner que é o ambiente que está em volta da Servlet. Ou seja, de uma forma geral a Servlet está inserida dentro de um componente maior, e com isso tem que estar dentro do mesmo contexto que esse componente em que ele está encapsulado, fazendo assim o mesmo agir de acordo com todos os outros pequenos componentes dentro do componente principal. 


Concluímos que basicamente esse é o conceito de Contexto, acredito que seja uma breve explicação que seja suficiente para começarmos alguns artigos pra falarmos de tecnologias que cuida desse conceito, como CDI, JBoss Seam, Spring Framework, etc. Tecnologias que utilizam injeção de contexto e dependência.