Testes Java de processo seletivo

Olá pessoal,
hj fiz um teste em java em um processo seletivo e cairam algumas perguntas que fiquei na dúvida, não lembrava, não sabia ou não sei se o que coloquei estava certo. Se puderem responder eu agradeço, seguem algumas das questões.

-Definir o conceito de encapsulamento

  • Quais os benefícios do uso de servlets ao invés de JSP´s?

  • Quando usar reflection e apresentar um cenário recomendado para seu uso. (não sei o que é reflection)

  • Fazer uma linha de comando para executar:
    application.jar utilizando a classe main: br.com.xyz.Principal incluindo no classpath de execução o seguinte jar: c:\lib\aut.jar (não soube fazer)

  • Em que cenário usar o design pattern singleton? (não conheço singleton)

  • Explicar o conceito de STATEFULL e STATELESS e dar exemplos. (conheço, acho que acertei mas gostaria que comentassem e exemplificassem)

Falta de prática com a linha de comando, não?

Então… seria:

java -classpath c:\lib\aut.jar br.com.xyz.Principal

É o ato de esconder o acesso direto a variáveis através de métodos de acesso (em Java, estes são os famosos getters e setters).

Você pode colocar lógicas mais complexas em servlets, de maneira mais amigável, do que em JSP´s. JSP´s são aconselháveis para gerar a visualização, e nada mais. Vale lembrar, no entanto, que JSP´s se tornam servlets quando compiladas.

Ao pé da letra, Reflections é uma API usada para realizar introspecção sobre classes. Isto quer dizer que ela fornece acesso a atributos, métodos, annotations, etc., sem necessariamente conhecer seu nome. O cenário mais conhecido de uso é na API do spring, onde nomes de classes e atributos são especificados via Strings (a API fornece meios de obter o acesso aos campos através dessas Strings).

Onde quer que seja necessário utilizar apenas uma única instância de um bean. Isso quer dizer, por exemplo, um bean com escopo de aplicação.

Stateful - um objeto que mantém estado através de sucessivas invocações. Ex.: carrinho de compras (pode adicionar vários itens a um mesmo carrinho, ele deve manter a lista dos itens adicionados). Stateless é o oposto, o objeto não mantém informações. Ex.: listar dados a partir do banco de dados (não há motivo para que uma consulta seja alterada por outras, então, ele não precisa manter essas informações).

[]´s

sim

Poderia dar um exemplo simples para melhor entendimento?

Obrigado pelas respostas.

Toda página JSP é compilada para uma servlet, na verdade. Então na verdade essa pergunta não é tão clara assim.

Escrever diretamente uma servlet, em vez de usar uma JSP (ou outra tecnologia de visualização Java), é desejável quando você precisa fazer algo que não seja diretamente suportada por uma página JSP (por exemplo, gerar arquivos binários como imagens) ou precise de algo que não seja fácil de fazer como uma JSP, ou precise de algum desempenho que possa ser alcançado codificando-se diretamente a servlet em vez de usar a JSP (pode ocorrer isso, afinal de contas - o compilador JSP -> Servlet é bem simples e pode não oferecer o desempenho ótimo :frowning: )

sim

Poderia dar um exemplo simples para melhor entendimento?

Obrigado pelas respostas.[/quote]

[code]import java.lang.reflect.Field;

public class Teste {

private String atributo = "";


public static void main(String[] args) throws Exception{
	//Note que Teste é uma String, ou seja, pode ser passado 
	//como parâmetro pelo usuário, ou pelo banco de dados, ou...
	Class classeTeste = Class.forName("Teste");
	
	
	//Crio uma instância de Teste a partir do Class
	Teste instanciaTeste = (Teste)classeTeste.newInstance();
	
	
	//Recupero o atributo "atributo" de Teste (a partir de uma 
	//String) e ajusto o valor para "Olá, mundo"
	Field atributoField = classeTeste.getDeclaredField("atributo");
                            atributoField.setAccessible(true);
	atributoField.set("Olá, mundo!", instanciaTeste);
			
	
	//Imprime o valor que eu setei dinamicamente
	System.out.println(instanciaTeste.atributo);

}

}
[/code]

[]´s