SlideShare une entreprise Scribd logo
1  sur  85
Magno A. Cavalcante
1
www.riojug.org
Desde 2001 difundindo a
tecnologia
Java no Rio de Janeiro
Hoje, mais de 1200 membros
ativos
Magno A. Cavalcante
2
Desmistificando aDesmistificando a
SCPJ 5.0 (Tiger)SCPJ 5.0 (Tiger)
Sun Certified Programmer for the Java 2 Platform,
Standard Edition 5.0
Magno A. Cavalcante
(RioJUG Leader)
Janeiro/2006
Magno A. Cavalcante
3
O Que é Tecnologia Java?
 Java é uma linguagem de programação de computadores de alto
nível, com sintaxe extremamente similar à do C++, e com
diversas características herdadas de outras linguagens, como
Smalltalk e Modula-3, criada pela Sun Microsystems.
 É antes de tudo uma linguagem simples, fortemente tipada,
portável e independente de arquitetura de hardware, robusta,
segura, extensível, bem estruturada, distribuída, com suporte
nativo a processamento paralelo e desalocação automática de
memória por processo de coletor de lixo.
 Inicialmente elaborada para ser a linguagem-base de projetos de
software para produtos eletrônicos, hoje a tecnologia se estende
aos mais diversos equipamentos e componentes eletrônicos que
tenham processador e área de memória, mesmo que bem
pequenos.
Magno A. Cavalcante
4
O Que é Tecnologia Java?
 Atualmente chamamos Java de tecnologia ou plataforma, e não
simplesmente de linguagem por causa de seu amplo suporte aos
mais diversos tipos de sistemas de processamento.
 A tecnologia Java divide-se em blocos de APIs (Application
Program Interfaces) para diferentes níveis de capacidade de
processamento.
 Como requisito básico temos a JSE – Java Standard Edition,
destinada a computadores pessoais e pequenos servidores.
 Em função das necessidades do usuário, existem:
 JEE – Java Enterprise Edition, para sistemas de grande porte e
servidores;
 JME – Java Micro Edition, para sistemas de pequeno porte e
embarcados;
 JavaCard, para operação de SIM Cards ou chips passivos.
Magno A. Cavalcante
5
James Gosling, um dos criadores da tecnologia Java.
Magno A. Cavalcante
6
APIs Java
Magno A. Cavalcante
7
Tecnologia Java –
Histórico de Versões
 1.0 – 1995: versão inicial;
 1.1 – 1997: AWT, Inner Classes, JavaBeans, JDBC, RMI;
 1.2 (Playground) – 1998: Reflection, Swing, compilador JIT,
Java Plug-in, Java IDL for CORBA, Collections;
 1.3 (Kestrel) – 2000: HotSpot JVM, RMI for CORBA,
JavaSound, JNDI, Platform Debugger;
 1.4 (Merlin) – 2002: expressões regulares, Exception Chaining,
New I/O, Logger, XML parser, XSLT processor, extensões de
criptografia e segurança (JCE, JSSE, JAAS);
 5.0 (Tiger) – 2004: generics, autoboxing/unboxing,
metadados, enumerações, loop for estendido;
 6.0 (Mustang) – 2006 ou 2007: projeto GlassFish, Java
Compiler API, Pluggable Annotation Processing API, XML Digital
Signatures, melhorias no diagnóstico de OutOfMemoryError,
melhorias na JVM e no Debugger.
 7.0 (Dolphin) – 2008 ou 2009
Magno A. Cavalcante
8
Contexto Atual Sobre
Tecnologia Java
 Desde seu lançamento, em maio de 1995, a plataforma Java foi
adotada mais rapidamente do que qualquer outra linguagem de
programação na história da computação.
 Em 2003 Java atingiu a marca de 4 milhões de desenvolvedores
em todo mundo. Java continuou e continua crescendo, e hoje é
com certeza um padrão para o mercado oferecendo qualidade,
performance e segurança ainda sem nenhum competidor a
altura.
 Java tornou-se popular pelo seu uso na Internet e hoje possui
seu ambiente de execução presente em web browsers,
mainframes, diversos Sistemas Operacionais, celulares,
PalmTops, PDAs, automóveis, aviões, robôs e cartões
inteligentes.
Magno A. Cavalcante
9
Contexto Atual Sobre
Tecnologia Java
 Em 2005 comemorou-se 10 anos do surgimento oficial da
tecnologia Java.
 Java está presente em mais da metade do mercado mundial de
desenvolvimento de software.
 Hoje é a principal linguagem utilizada em pesquisas relacionadas
a software ou que utilizem software, em todo o mundo.
 É a linguagem preferida da NASA para controle dos novos robôs
de exploração espacial.
 Está sendo utilizada pela Boeing para os novos sistemas de
controle de vôo autônomo.
Magno A. Cavalcante
10
Contexto Atual Sobre
Tecnologia Java
 Apesar de Índia e China serem pólos de desenvolvimento de
software mundial, muitas empresas estrangeiras estão montando
fábricas de software no Brasil por causa da estabilidade
econômica e política de uma região sem conflitos e da baixa
ocorrência de desastres naturais.
 Isso também estimula a concorrência entre as empresas
nacionais, gerando mais oportunidades para os profissionais
qualificados.
 O profissional Java é mais valorizado porque para dominar a
tecnologia ele precisa conhecer conceitos acadêmicos do ciclo de
vida de software.
 Ainda hoje existe muita carência de profissionais qualificados,
dados os amplos conhecimentos exigidos dos candidatos.
Magno A. Cavalcante
11
Contexto Atual Sobre
Tecnologia Java
 “As empresas estão procurando profissionais que saibam muito,
sejam bem capacitados, experientes e com conhecimento sólido
da plataforma. A razão é simples: os investimentos em TI estão
cada vez mais curtos e sendo medidos milimetricamente. Sabe-
se exatamente o que se quer e com que tipo de retorno.
Desperdícios não são mais tolerados.” *
 “Para se capacitar, o profissional tem várias alternativas: cursos,
livros, revistas, sites, e, sem dúvida alguma, o auto-aprendizado
(toda a especificação do Java é pública e está disponível a
qualquer pessoa). Além disso, há também uma outra maneira
interessante de penetrar nesse mercado de trabalho:
participando, como voluntário, em grupos de usuários e em
projetos de desenvolvimento de software livre em Java, o
profissional pode iniciar sua rede de contatos e, ao mesmo
tempo, ganhar experiência real de trabalho.” *
* por Eduardo Ramos, colunista do TI Master, outubro/2003.
Magno A. Cavalcante
12
Certificações Java
 Dos vários caminhos existentes para melhorar o seu fator de
empregabilidade, o mais objetivo de todos é a busca por possuir
o maior número de certificações internacionais que for possível.
 Porém, é muito importante ressaltar que o profissional também
deverá ter cursado um curso de graduação de tecnologia em uma
universidade que seja reconhecida pelo mercado.
 Em Java, as duas certificações “de entrada” para o profissional
são a Sun Certified Associate for the Java 2 PlatformSun Certified Associate for the Java 2 Platform
e a Sun Certified Programmer for the Java 2Sun Certified Programmer for the Java 2
Platform, Standard EditionPlatform, Standard Edition, já que as mesmas não têm
outras certificações como pré-requisito.
 Mas antes de estudar para uma certificação em Java você deve
fortalecer seus conhecimentos de programação estruturada,
construção de compiladores e construção de sistemas
operacionais. Invista tempo com isso, e sua capacidade de
entendimento da tecnologia vai aumentar muito.
Magno A. Cavalcante
13
Certificações Java
Magno A. Cavalcante
14
Um grupo de cientistas colocou cinco macacos em uma jaula. No meio, uma
escada e, sobre ela, um cacho de bananas.
Quando um macaco subia na escada para pegar as bananas, os cientistas
jogavam um jato de água fria com uma mangueira de incêndio nos que estavam
no chão. Depois de certo tempo, quando algum macaco ia subir a escada, os
outros o pegavam e o enchiam de pancada. Com mais algum tempo, nenhum
macaco subia mais a escada, apesar da tentação de comer as bananas.
Então, os cientistas substituíram um dos macacos por um outro novo. A
primeira coisa que ele fez foi subir a escada, dela sendo retirado pelos outros, que
o surraram. Depois de algumas surras, o novo integrante do grupo não subia mais
a escada.
Um segundo foi substituído e o mesmo ocorreu, tendo o primeiro substituto
participado com entusiasmo na surra ao novato.
Um terceiro foi trocado e o mesmo ocorreu. Um quarto, e afinal, o último dos
veteranos foi substituído.
Os cientistas então ficaram com um grupo de cinco macacos que, mesmo nunca
tendo tomado um banho frio, continuavam batendo naquele que tentasse pegar
as bananas.
Se possível fosse perguntar a algum deles porque eles batiam em quem
tentasse subir a escada, com certeza a resposta seria: "Não sei, mas as coisas
sempre foram assim por aqui". (autor desconhecido)
Mudanças no Cotidiano, Os Macacos
Magno A. Cavalcante
15
Sun Certified Associate
for the Java 2 Platform
Magno A. Cavalcante
16
Sun Certified Associate
for the Java 2 Platform
 Destina-se a programadores de nível médio ou a profissionais da indústria
de software que trabalhem em projetos utilizando a plataforma Java.
 O candidato deverá ter experiência com HTML, JavaScript, XML, SQL,
TCP-IP.
 O candidato deverá ter experiência com UML e conceitos e modelagem
com orientação a objetos.
 O candidato deverá ter experiência com programação em Java, APIs Java
SE, Java EE, Java ME e Web Services.
A Quem Se Destina
Magno A. Cavalcante
17
Sun Certified Associate
for the Java 2 Platform
 Programadores de nível médio;
 Programadores oriundos de outras tecnologias;
 Estudantes que queiram tornar-se programadores Java;
 Gerentes de projetos que trabalham com a tecnologia Java;
 Gerentes de TI.
Perfil dos Candidatos
Magno A. Cavalcante
18
Sun Certified Associate
for the Java 2 Platform
 Descrever e comparar tipos primitivos (inteiros, ponto flutuante, booleanos
e caracteres), tipos enumerados e objetos;
 Descrever e comparar classes concretas, classes abstratas, interfaces e
como se aplica a herança a estes elementos;
 Descrever e comparar composições de classes, associações (incluindo
multiplicidades um-para-um, um-para-muitos e muitos-para-muitos) e
navegação pelas associações;
 Descrever o ocultamento de informações (usando atributos privados e
métodos), encapsulamento e exposição da funcionalidade dos objetos
utilizando métodos públicos;
Objetivos – Conceitos Fundamentais de Orientação
a Objetos
Magno A. Cavalcante
19
Sun Certified Associate
for the Java 2 Platform
 Descrever as convenções para JavaBeans, como os métodos pré-fixados
“setter”, “getter” e “is”;
 Descrever como se aplica o polimorfismo a classes e interfaces;
 Descrever e aplicar o princípio da “programação para interfaces”.
Objetivos – Conceitos Fundamentais de Orientação
a Objetos
Magno A. Cavalcante
20
Sun Certified Associate
for the Java 2 Platform
 Reconhecer a representação UML para classes, incluindo atributos e
operações, classes abstratas e interfaces;
 Reconhecer a representação UML para herança (implementação concreta,
abstrata e interfaces);
 Reconhecer a representação UML para modificadores de visibilidades dos
atributos da classes (private, default, protected e public);
 Reconhecer a representação UML para associações de classes,
composições, indicadores de multiplicidade da associação e navegação
pelos indicadores das associações.
Objetivos – Representação UML para Conceitos de
Orientação a Objetos
Magno A. Cavalcante
21
Sun Certified Associate
for the Java 2 Platform
 Verificar exemplos de código utilizando o operador “new”;
 Desenvolver código que utilize tipos primitivos; tipos enumerados,
referências a objetos e reconhecer literais para estes tipos;
 Desenvolver código que declare classes concretas, classes abstratas,
interfaces; código que suporte implementação e herança de interfaces;
que declare atributos de instância e métodos; que utilize modificadores de
acesso;
 Desenvolver código que implemente associações simples de classes; que
implemente multiplicidade usando arrays e coleções;
Objetivos – Implementação Java para os Conceitos
de Orientação a Objetos
Magno A. Cavalcante
22
Sun Certified Associate
for the Java 2 Platform
 Reconhecer código que implemente composições em contraste com
associações simples; que implemente corretamente navegação pelas
associações.
 Desenvolver código que utilize polimorfismo para classes e interfaces; e
reconhecer código que utilize o princípio da “programação para
interfaces”.
Objetivos – Implementação Java para os Conceitos
de Orientação a Objetos
Magno A. Cavalcante
23
Sun Certified Associate
for the Java 2 Platform
 Descrever e comparar 3 tipos de instruções básicas: atribuição, condições
booleanas e iterações. E dada a descrição de um algoritmo, selecionar o
tipo apropriado de instrução para o projeto do algoritmo;
 Dado um algoritmo como pseudo-código, determinar o escopo correto
para uma variável utilizada. Desenvolver código que declare variáveis em
um dos seguintes escopos: variáveis de instância, parâmetros de métodos
e variáveis locais
 Dado um algoritmo como pseudo-código, desenvolver código de método
que implemente instruções de acesso condicional (if, switch), de iterações
(for, for-each, while, do-while), de atribuição, instruções break e continue
para controle de fluxo dentro de blocos swith e blocos de iterações;
Objetivos – Projeto e Implementação de
Algoritmos
Magno A. Cavalcante
24
Sun Certified Associate
for the Java 2 Platform
 Dado um algoritmo com múltiplas entradas e uma saída, desenvolver
código de método que implemente usando parâmetros de método, um tipo
de retorno e uma instrução de retorno. Reconhecer os efeitos quando
referências a objetos ou primitivos são passados como parâmetros para
métodos que os modificam.
 Dado um algoritmo como pseudo-código, desenvolver código que aplique
os operadores apropriados, incluindo operações de atribuição (limitado a:
=, +=, -=), operadores aritméticos (limitado a: +, -, *, /, %, ++, --),
operadores relacionais (limitado a: <, <=, >, >=, ==, !=), operadores lógicos
(limitado a:!, &&, ||) para produzir o resultado esperado. Escrever código
que determine a igualdade entre 2 objetos e entre 2 primitivos;
 Desenvolver código que utilize o operador de concatenação (+), e os
seguintes métodos da classe String: charAt, indexOf, trim, substring,
replace, length, startsWith, endsWith.
Objetivos – Projeto e Implementação de
Algoritmos
Magno A. Cavalcante
25
Sun Certified Associate
for the Java 2 Platform
 Descrever o propósito dos pacotes na linguagem Java, e reconhecer o uso
apropriado das instruções import e package;
 Demonstrar o uso apropriado do comando “javac” (incluindo as opções de
linha de comando –d e –classpath);
 Demonstrar o uso apropriado do comando “java” (incluindo as opções de
linha de comando –classpath, -D e –version);
 Descrever o propósito e tipos de classes para os seguintes pacotes Java:
java.awt, javax.swing, java.io, java.net, java.util.
Objetivos – Fundamentos de Desenvolvimento em
Java
Magno A. Cavalcante
26
Sun Certified Associate
for the Java 2 Platform
 Distinguir as características básicas das 3 plataformas Java: JSE, JME,
JEE. E dada a finalidade de uma arquitetura de alto nível, selecionar a
apropriada plataforma ou plataformas Java que se aplicam;
 Descrever os benefícios e características básicas de RMI e
processamento paralelo com multithreading;
 Descrever os benefícios e características básicas de JDBC, SQL e
tecnologias de SGBD e persistência de dados;
 Descrever os benefícios e características básicas de JNDI, sistemas de
mensagens assíncronas e tecnologias JMS.
Objetivos – Plataformas Java e Integração de
Tecnologias
Magno A. Cavalcante
27
Sun Certified Associate
for the Java 2 Platform
 Descrever as características básicas, benefícios e desvantagens da
criação de clientes leves usando HTML e JavaScript, e soluções para
configuração e publicação dos recursos relacionados;
 Descrever as características básicas, benefícios, desvantagens e soluções
para configuração e publicação dos recursos relacionados a criação de
clientes com JME midlets;
 Descrever as características básicas, benefícios, desvantagens e soluções
para configuração e publicação dos recursos relacionados a criação de
clientes pesados usando Applets;
 Descrever as características básicas, benefícios, desvantagens e soluções
para configuração e publicação dos recursos relacionados a criação de
clientes pesados usando Swing.
Objetivos –Tecnologias para o Lado Cliente
Magno A. Cavalcante
28
Sun Certified Associate
for the Java 2 Platform
 Descrever as características de uso, benefícios e desvantagens de: EJB,
servlets, JSP, JMS, JNDI, SMTP, JAX-RPC, Web Services (incluindo
SOAP, UDDI, WSDL, e XML), e JavaMail;
 Descrever as características de uso, benefícios e desvantagens de
Servlets e JSP no suporte a clientes leves com HTML;
 Descrever as características de uso, benefícios e desvantagens de EJBs:
session, entity e message-driven beans;
 Descrever as características básicas de uso, benefícios e desvantagens
ao utilizar tecnologias JEE no lado servidor, descrevendo e comparando a
camada web (web-tier), a camada de negócios (business-tier) e a camada
de integração de sistemas (EIS tier).
Objetivos –Tecnologias para o Lado Servidor
Magno A. Cavalcante
29
Sun Certified Associate
for the Java 2 Platform
 Código: 310-019
 Preço: US$ 100.00
 Pré-requisitos: Não Tem
 Tipo de Exame: Questões de Múltipla Escolha e de Arrastar e Soltar
 Número de Questões: 51
 Pontuação Mínima: 68% (35 questões)
 Duração: 115 minutos (média de 2 minutos por questão)
O Exame
Magno A. Cavalcante
30
Sun Certified Associate
for the Java 2 Platform
 Sedimente os seus conhecimentos de HTML, JavaScript, XML, SQL e
TCP-IP estudando através de livros e apostilas;
 Adquira um bom livro sobre tecnologia Java para ser o seu livro de
“cabeceira”, e estude-o do início ao fim, implementando em código-fonte
todos os exercícios;
 Estude conceitos de análise e modelagem orientada a objetos utilizando
UML, seja através de um livro ou de apostilas capturadas na Internet;
 Estude o tutorial do Java Standard versão 5.0, que pode ser capturado
direto do website da Sun Microsystems;
 Não esqueça que RMI e JNDI são recursos nativos do Java Standard;
Como se Preparar
Magno A. Cavalcante
31
Sun Certified Associate
for the Java 2 Platform
 Estude o tutorial do J2EE, disponível para download no website da Sun.
 Procure na Internet tutoriais sobre Web Services em Java;
 Leia mensalmente as revistas Java Magazine e Mundo Java;
 Se puder pagar, faça uma formação completa de desenvolvedor Java em
algum dos centros de treinamento existentes;
 Troque idéias com seus colegas de trabalho sobre tópicos da certificação;
 Estude sobre a evolução dos sistemas de 1, 2, 3 e n camadas, e sobre
quais são as tecnologias presentes atualmente em cada camada;
 Estude sobre padrões de projeto (design patterns);
 Participe de um fórum de discussões sobre Java;
 Faça muitos simulados e exercícios práticos do tipo “E se eu fizer isso...”
Como se Preparar
Magno A. Cavalcante
32
Java SE 5.0 (Tiger)
Magno A. Cavalcante
33
Java SE 5.0 – Novos
Recursos
 Autoboxing/Unboxing
 Type-safe enumerations
 Varargs
 Static import
 Loop “for” estendido (“foreach”)
 Generics
Magno A. Cavalcante
34
Java SE 5.0 - Autoboxing
public class AutoboxingUnboxing {
public static void main(String[] args) {
semAutoboxingUnboxing();
comAutoboxingUnboxing();
}
private static void semAutoboxingUnboxing() {
Integer fator1 = new Integer(15);
int fator2 = 10;
int produto = fator1.intValue() * fator2;
System.out.println("Sem autoboxing/unboxing:");
System.out.printf("%d x %d = %dnn", fator1, fator2,
produto);
}
Magno A. Cavalcante
35
Java SE 5.0 - Autoboxing
private static void comAutoboxingUnboxing() {
Integer fator1 = 15; // Autoboxing
int fator2 = 10;
int produto = fator1 * fator2; // Unboxing
System.out.println("Com autoboxing/unboxing:");
System.out.printf("%d x %d = %dnn", fator1, fator2,
produto);
}
}
Magno A. Cavalcante
36
Java SE 5.0 - Autoboxing
public class BoxingCompare {
public static void main(String... args) {
int x = 3, y=3;
Integer z = new Integer(3);
Integer k = new Integer(3);
testWrapperFirst(x, y); // true
testWrapperSecond(z, y); // true
testWrapperFirst(z, k); // false
}
static void testWrapperFirst(Integer a, Integer b){
System.out.print("Integer a = " + a);
System.out.println("tInteger b = " + b);
System.out.println((a == b) ? true : false);
}
Magno A. Cavalcante
37
Java SE 5.0 - Autoboxing
static void testWrapperSecond(int a, Integer b){
System.out.print("int a = " + a);
System.out.println("tInteger b = " + b);
System.out.println((a == b) ? true : false);
}
}
Magno A. Cavalcante
38
Java SE 5.0 - Enums
import java.text.NumberFormat;
import static java.lang.System.out;
public class Premiacao {
private enum Medalha {
OURO ("Ouro"),
PRATA ("Prata"),
BRONZE ("Bronze");
final String s;
Medalha(String s) {
this.s = s;
}
public String toString() {
return this.s;
}
}
Magno A. Cavalcante
39
Java SE 5.0 - Enums
private static void imprimirResultado(Medalha medalha) {
String colocacao = "";
double premio = 0.0;
switch (medalha) {
case OURO:
colocacao = "Primeiro";
premio = 5000.0;
break;
case PRATA:
colocacao = "Segundo";
premio = 2000.0;
break;
case BRONZE:
colocacao = "Terceiro";
premio = 1000.0;
}
Magno A. Cavalcante
40
Java SE 5.0 - Enums
out.printf("%s colocadonMedalha de %snPremio de %snn",
colocacao, medalha,
NumberFormat.getCurrencyInstance().format(premio));
}
public static void main(String[] args) {
imprimirResultado(Medalha.OURO);
imprimirResultado(Medalha.PRATA);
imprimirResultado(Medalha.BRONZE);
}
}
Magno A. Cavalcante
41
Java SE 5.0 - Varargs
public class SemVarargs {
static String calcula(String s, int a) {
return s + " = " + (a);
}
static String calcula(String s, int a, int b) {
return s + " = " + (a + b);
}
static String calcula(String s, int a, int b, int c) {
return s + " = " + (a + b + c);
}
public static void main(String[] riojug) {
System.out.print(" Valor -> " +
calcula("var", 2, 5));
}
}
Magno A. Cavalcante
42
Java SE 5.0 - Varargs
public class ComVarargs {
static String calcula(String s, int... a) {
int total = 0;
for (int i : a) {
total += i;
}
return s + " = " + total;
}
public static void main(String... riojug) {
System.out.print(" Valor -> " +
calcula("var", 2, 5));
}
}
Magno A. Cavalcante
43
Java SE 5.0 – Static
import
import static java.lang.Math.*;
public class StaticMath {
private double getCosseno(){
double r = cos(PI / 2.5);
return r;
}
public static void main(String... args){
StaticMath sm = new StaticMath();
System.out.println(sm.getCosseno());
}
}
Magno A. Cavalcante
44
Java SE 5.0 – Static
import
import static java.lang.Math.*;
public class StaticImportTest {
public static void main(String args[]) {
System.out.printf("sqrt(900.0) = %.1fn", sqrt(900.0));
System.out.printf("ceil(-9.8) = %.1fn", ceil(-9.84));
System.out.printf("floor(-9.84) = %.1fn", floor(-9.84));
System.out.printf("round(-9.84) = %dn", round(-9.84));
System.out.printf("rint(-9.85) = %.2fn", rint(-9.85));
System.out.printf("abs(-9.8) = %.1fn", abs(-9.8));
System.out.printf("log(E) = %.1fn", log(E));
System.out.printf("cos(0.0) = %.1fn", cos(0.0));
System.out.printf("ulp(9.85) = %.2fn", ulp(9.85));
}
}
Magno A. Cavalcante
45
Java SE 5.0 – Generics
public class SimpleGeneric {
public <E> void metodoSimples(E value) {
System.out.println(" Elemento Generico: " +
value.getClass().getName() + " => " + value);
}
public static void main(String... riojug) {
SimpleGeneric t = new SimpleGeneric();
t.metodoSimples(" riojug e scpj 5.0 ");
t.metodoSimples(new Integer(7));
t.metodoSimples((new float[] {1.2F, 2.3F, 3.4F}));
t.metodoSimples(3.1415);
}
}
Magno A. Cavalcante
46
Java SE 5.0 – Generics
public class ArrayTestGenerics {
public static <E> void printArray(E... inputArray) {
for (E element : inputArray) {
System.out.printf("%s ", element);
}
System.out.println();
}
public static void main(String... args) {
Integer[] integerArray = {1, 2, 3, 4, 5, 6};
Double[] doubleArray = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6};
Character[] characterArray = {'H', 'E', 'L', 'L', 'O'};
printArray(integerArray);
printArray(doubleArray);
printArray(characterArray);
}
}
Magno A. Cavalcante
47
Java SE 5.0 – Generics
public class ColecoesSemGenerics {
public static void main(String[] args) {
colecoesSemGenerics();
}
private static void colecoesSemGenerics() {
List nomes = new ArrayList();
// Runtime Fail by ClassCastException
// nomes.add(new StringBuffer("Joaquim"));
nomes.add("Joaquim");
nomes.add("Joao");
nomes.add("Maria");
String primeiroNome = null;
primeiroNome = ((String) nomes.get(0)).toUpperCase();
System.out.println(primeiroNome);
}
}
Magno A. Cavalcante
48
Java SE 5.0 – Generics
public class ColecoesComGenerics {
public static void main(String[] args) {
colecoesComGenerics();
}
private static void colecoesComGenerics() {
List<String> nomes = new ArrayList<String>();
/* Compilation Fail: The method add(String) in the
* type List<String> is not applicable
* for the arguments (StringBuffer)
*/
// nomes.add(new StringBuffer("Joaquim"));
nomes.add("Joaquim"); nomes.add("Joao");
nomes.add("Maria");
String primeiroNome = nomes.get(0).toUpperCase();
System.out.println(primeiroNome);
}
}
Magno A. Cavalcante
49
Java SE 5.0 – Generics
class SequenciaStrings {
public void semGenerics(List seq, char primChar) {
for (Iterator i = seq.iterator(); i.hasNext();) {
if (((String) i.next()).charAt(0) != primChar) {
i.remove();
}
}
}
public void comGenerics(List<String> seq, char primChar) {
for (Iterator<String> i = seq.iterator(); i.hasNext();) {
if (i.next().charAt(0) != primChar) {
i.remove();
}
}
}
Magno A. Cavalcante
50
Java SE 5.0 – Generics
public void comForeach(List<String> seq, char primChar) {
for (String i : seq) {
if (i.charAt(0) != primChar) {
seq.remove(i);
}
}
}
}
Magno A. Cavalcante
51
Java SE 5.0 – Generics
public class ColecaoNumber<T extends Number> {
List<T> cj;
public ColecaoNumber() {
cj = new ArrayList<T>();
}
public void loadNumber(T number) {
cj.add(number);
}
Magno A. Cavalcante
52
Java SE 5.0 – Generics
public void extractNumbers() {
for (Number n : cj) {
System.out.printf("%ft", n.doubleValue());
}
}
public static void main(String... var) {
ColecaoNumber cn = new ColecaoNumber();
cn.loadNumber(new Integer(2));
cn.loadNumber(4.1357);
cn.loadNumber(7L);
cn.extractNumbers();
}
}
Magno A. Cavalcante
53
Java SE 5.0 – Generics
public class StackGeneric<T> implements Cloneable {
private ArrayList<T> items;
private int top = 0;
public StackGeneric() {
items = new ArrayList<T>();
}
public StackGeneric(T... ts ) {
items = new ArrayList<T>();
for (T a : ts) {
items.add(a);
}
}
public void push(T item) {
items.add(item);
top++;
}
Magno A. Cavalcante
54
Java SE 5.0 – Generics
public T pop() {
if (items.size() == 0) {
throw new EmptyStackException();
}
T obj = items.get(--top);
return obj;
}
public boolean isEmpty() {
if (items.size() == 0)
return true;
else
return false;
}
Magno A. Cavalcante
55
Java SE 5.0 – Generics
protected StackGeneric<T> clone() {
try {
StackGeneric<T> s = (StackGeneric<T>) super.clone();
s.items = (ArrayList<T>) items.clone();
return s;
} catch (CloneNotSupportedException e) {
throw new InternalError();
}
}
Magno A. Cavalcante
56
Java SE 5.0 – Generics
public static void main(String[] args) {
StackGeneric<String> s = new StackGeneric<String>();
s.push("1o.");
s.push("2o.");
s.push("3o.");
StackGeneric<String> s2 = s.clone();
System.out.printf("%s t %s t %s t %s",
s.pop(), s.pop(), s.pop(), s2.pop());
//3o. 2o. 1o. 3o.
}
}
Magno A. Cavalcante
57
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
Magno A. Cavalcante
58
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Programadores experientes que utilizam a linguagem Java.
 Esta certificação fornece claras evidências que o programador entende a
sintaxe básica e a estrutura da linguagem Java e que pode criar
aplicações Java que serão executadas tanto em sistemas servidores
quanto em sistemas desktops, utilizando o JSE 5.0.
A Quem Se Destina
Magno A. Cavalcante
59
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Desenvolver código que declare classes (incluindo classes abstratas e
todas as formas de classes aninhadas/nested), interfaces, enums,
incluindo o uso apropriado das instruções package e import (incluindo
static imports);
 Desenvolver código que declare uma interface. Desenvolver código que
implemente ou estenda uma ou mais interfaces. Desenvolver código que
declare uma classe abstrata. Desenvolver código que declare estenda
uma classe abstrata;
 Desenvolver código que declare, inicialize e utilize tipos primitivos, arrays,
enums e objetos, suportando variáveis estáticas, de instância e locais,
utilizando identificadores corretos para os nomes das variáveis;
Objetivos – Declaração, Inicialização e Escopo
Magno A. Cavalcante
60
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Desenvolver código que declare métodos estáticos e não-estáticos
simultaneamente, e – se for o caso – que utilizem nomes de métodos
aderentes ao padrão JavaBeans. Desenvolver código que declare e utilize
uma lista de argumentos de tamanho variável;
 Dado um código de exemplo, determine se um método está
sobrescrevendo ou sobrecarregando outro método, além de identificar
valores de retorno corretos (incluindo valores covariantes) para o método;
 Dado um conjunto de classes e superclasses, desenvolver construtores
para uma ou mais classes. Dada uma declaração de classe, determinar se
um construtor default vai ser criado, e se for, determinar o comportamento
daquele construtor. Dada uma lista de classes aninhadas e não-
aninhadas, escrever código que instancie estas classes.
Objetivos – Declarações, Inicialização e Escopo
Magno A. Cavalcante
61
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Desenvolver código que implemente uma instrução if ou switch; e
identificar tipos de argumentos corretos para estas instruções;
 Desenvolver código que implemente todas as formas de loops e iterações,
incluindo o uso de for, o loop for estendido (for-each), do, while, labels,
break, continue; e interpretar os valores tratados pelo contador do loop
durante e depois da execução do loop;
 Desenvolver código que faça uso de assertions, e distinguir
apropriadamente o uso incorreto de assertions;
 Desenvolver código que faça uso de exceptions e clausulas que tratam
exceptions (try, catch, finally). Declarar métodos e sobrescrita de métodos
que lançam exceptions;
Objetivos – Controle de Fluxo
Magno A. Cavalcante
62
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Reconhecer o efeito que uma exception produz em um ponto específico
dentro de um pedaço de código-fonte;
 Reconhecer as diferenças entre Runtime Exception, Checked Exception,
ou Error;
 Reconhecer situações que poderão acabar em um dos seguintes casos de
lançamento de exceptions ou errors: ArrayIndexOutOfBoundsException,
ClassCastException, IllegalArgumentException, IllegalStateException,
NullPointerException, NumberFormatException, AssertionError,
ExceptionInInitializerError, StackOverflowError, NoClassDefFoundError.
Entender quais destes são lançados pela JVM e reconhecer situações em
que outros devem ser lançados programaticamente.
Objetivos – Controle de Fluxo
Magno A. Cavalcante
63
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Desenvolver código que utilize classes wrapper (como Boolean,
Character, Double, Integer, etc.) e condições de ocorrência de autoboxing
e unboxing.
 Discutir as diferenças entre as classes String, StringBuilder e StringBuffer.
 Dado um cenário envolvendo navegação pelo sistema de arquivos, leitura
ou escrita de arquivos, desenvolver a solução adequada usando as
seguintes classes (algumas vezes em combinação) do pacote java.io:
BufferedReader,BufferedWriter, File, FileReader, FileWriter, PrintWriter;
 Desenvolver código que serialize e/ou de-serialize objetos usando as
seguintes classes (algumas vezes em combinação) do pacote java.io:
DataInputStream, DataOutputStream,FileInputStream, FileOutputStream,
ObjectInputStream, ObjectOutputStream, Serializable;
Objetivos – Conteúdo da API
Magno A. Cavalcante
64
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Desenvolver código que utilize as APIs do pacote java.text corretamente
para formatar e transformar datas, números e valores monetários para
uma localidade específica. Dado um cenário, determinar os métodos
apropriados para utilizar se você quer exibir dados com a localidade
padrão ou para uma específica localidade. Descrever o propósito e o uso
da classe java.util.Locale;
 Escrever código que utilize APIs dos pacotes java.util e java.util.regex para
formatar e transformar strings ou streams de dados. Para strings, escrever
código que utilize as classes Pattern e Matcher e o método String.split;
Objetivos – Conteúdo da API
Magno A. Cavalcante
65
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Reconhecer e utilizar padrões de expressões regulares para combinações
de strings (limitado a: . (dot), * (star), + (plus), ?, d, s, w, [], ()). O uso de
*, +, e ? estará limitado a quantificadores e o operador () somente vai ser
usado como um mecanismo de agrupamento, enão para captura de
conteúdo nas combinações. Para streams, escrever código que use as
classes Formatter e Scanner e os métodos PrintWriter.format/printf.
Reconhecer e utilizar parâmetros de formatação (limitado a: %b, %c, %d,
%f, %s) para formatar strings.
Objetivos – Conteúdo da API
Magno A. Cavalcante
66
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Escrever código que define, instancia e inicia novas threads usando
java.lang.Thread e/ou java.lang.Runnable;
 Reconhecer os estados em que uma thread pode existir, e identificar
caminhos em que uma thread pode transitar entre um estado e outro;
 Dado um cenário, escrever código que faça uso correto de “object locking”
para proteger variáveis estáticas ou de instância contra problemas de
acesso concorrente;
 Dado um cenário, escrever código que faça uso correto de wait, notify,
notifyAll.
Objetivos – Concorrência
Magno A. Cavalcante
67
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Desenvolver código que implemente encapsulamento compacto, baixo
acoplamento e alta coesão em classes, descrevendo os respectivos
benefícios;
 Dado um cenário, desenvolver código que demonstre o uso de
polimorfismo. Determinar quando a conversão (casting) de tipos será
necessária e reconhecer erros do compilador versus erros de tempo de
execução relacionados ao casting da referência de objetos;
 Expor o efeito dos modificadores de acesso, na herança de objetos, com
respeito a construtores, variáveis estáticas ou de instância e métodos
estáticos ou de instância;
 Dado um cenário, desenvolver código que declare e/ou invoque
sobrescrita ou sobrecarga de métodos; e código que declare e/ou invoque
superclasse, sobrescrita ou sobrecarga de construtores;
 Desenvolver código que implemente relacionamentos entre classes do tipo
“is-a” e/ou “has-a”.
Objetivos – Conceitos de Orientação a Objetos
Magno A. Cavalcante
68
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Dado um cenário de projeto, determinar quais classes de coleções e/ou
interfaces devem ser usadas para implementar corretamente aquele
projeto, incluindo o uso da interface Comparable;
 Distinguir entre a forma correta e a incorreta de sobrescrever os métodos
correspondentes hashCode e equals, e explicar a diferença entre o
operador == e o método equals;
 Escrever código que utilize as versões genéricas da API de Collections,
em particular as interfaces Set, List, Queue, Map e as classes que as
implementam;
 Reconhecer as limitações dos elementos não-genéricos da API de
Collections e como fazer para modificar o código para utilizar as versões
genéricas;
Objetivos – Coleções e Generics
Magno A. Cavalcante
69
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Desenvolver código que faça uso apropriado de parâmetros de tipo
genéricos na declaração de classes ou interfaces, variáveis de instância,
argumentos de métodos e tipos de retorno. Escrever métodos genéricos
ou métodos que façam uso de marcadores de tipos e entender as
similaridades e diferenças entre estas duas abordagens;
 Utilizar as capacidades do pacote java.util para escrever código que
manipule uma lista para ordenação, execução de busca binária, ou
conversão de um array para uma lista;
 Utilizar as interfaces java.util.Comparator e java.lang.Comparable para
modificar a forma de ordenação de listas e de arrays. Além disso,
reconhecer o efeito da “ordenação natural” de classes wrapper para
primitivos e da classe java.lang.String na ordenação.
Objetivos – Coleções e Generics
Magno A. Cavalcante
70
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Dado um exemplo de código e um cenário, escrever código que utilize os
modificadores de acesso apropriados, declarações de pacotes e
instruções de importação para interagir (acesso direto ou por herança)
com o código no exemplo;
 Dado um exemplo de classe e uma linha de comando, determinar o
comportamento esperado em tempo de execução;
 Determinar o efeito a respeito de referências de objetos e valores
primitivos quando eles são passados como parâmetros para métodos que
realizam atribuições e outras operações de modificação sobre os
parâmetros;
 Dado um exemplo de código, reconhecer o ponto no qual um objeto torna-
se elegível para a coleta automática de lixo (garbage collection), e
determinar o que é e o que não é garantido pelo sistema de coleta
automática de lixo;
Objetivos – Fundamentos
Magno A. Cavalcante
71
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Reconhecer os comportamentos de System.gc e finalization;
 Dado um nome completo de uma classe que é publicada dentro e/ou fora
de um arquivo JAR, construir a estrutura de diretórios apropriada para
aquela classe;
 Dado um exemplo de código e um CLASSPATH, determinar se o
CLASSPATH vai ser compatível para a compilação completa e correta do
código;
 Escrever código que aplique corretamente os operadores apropriados,
incluindo operadores de atribuição (limitado a: =, +=, -=), operadores
aritméticos (limitado a: +, -, *, /, %, ++, --), operadores relacionais (limitado
a: <, <=, >, >=, ==, !=), o operador instanceof, operadores lógicos(limitado
a: &, |, ^, !, &&,||), ) e o operador condicional ( ? : ), para produzir o
resultado desejado;
 Escrever código que determine a igualdade entre dois objetos e dois
primitivos.
Objetivos – Fundamentos
Magno A. Cavalcante
72
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Código: 310-055
 Preço: US$ 150.00
 Pré-requisitos: Não Tem
 Tipo de Exame: Questões de Múltipla Escolha e de Arrastar e Soltar
 Número de Questões: 73
 Pontuação Mínima: 59% (44 questões)
 Duração: 175 minutos (média de 2 minutos por questão)
O Exame
Magno A. Cavalcante
73
Sun Certified Programmer for the
Java 2 Platform, Standard
Edition 5.0 Upgrade Exam
 Código: 310-056
 Preço: US$ 100.00
 Pré-requisitos: versão anterior (1.4) do exame Sun Certified Programmer
for Java 2 Platform
 Tipo de Exame: Questões de Múltipla Escolha e de Arrastar e Soltar
 Número de Questões: 46
 Pontuação Mínima: 59% (28 questões)
 Duração: 105 minutos (média de 2 minutos por questão)
O Exame de Upgrade
Magno A. Cavalcante
74
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Estude os fundamentos da linguagem por um livro em português, fazendo
todos os exercícios recomendados;
 Peça emprestado outros livros diferentes para seus colegas e estude-os;
 Faça o download do Java Standard Tutorial e estude os tópicos que estão
relacionados diretamente com o exame, implementando todos os
exemplos. Faça variações sobre os exemplos;
 Estude os artigos técnicos escritos por Rogério Moraes de Carvalho sobre
os novos recursos do Java 5.0 (Tiger) nos boletins do DFJUG do primeiro
semestre de 2005;
 Procure por artigos sobre o Java 5.0 nas revistas Java Magazine e Mundo
Java de 2005 e de 2006;
Como se Preparar
Magno A. Cavalcante
75
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Leia especialmente os artigos escritos pelo colunista Osvaldo Pinali
Doederlein, na revista Java Magazine. Ele é membro individual do Java
Community Proccess e participa ativamente das definições do JSE;
 Estude o artigo de Gilad Bracha, com o nome “Generics in the Java
Programming Language”, de 5 de julho de 2004;
 Estude e implemente os exemplos do artigo “J2SE 5.0 in a Nutshell”;
 Estude o “White Paper Java Platform Migration Guide, Version 1.3 to 5.0”,
disponível no website da Sun Microsystems;
 Estude o artigo “The All-New Java 2 Platform, Standard Edition (J2SE) 5.0
Platform: Programming with the New Language Features in J2SE 5.0”;
 Importante: utilize fortemente em sua preparação todo material que você
conseguir sobre a certificação anterior (J2SE 1.4);
Como se Preparar
Magno A. Cavalcante
76
Sun Certified Programmer
for the Java 2 Platform,
Standard Edition 5.0
 Faça o download dos códigos-fontes do livro “Java Como Programar – 6a.
Edição”, a partir do website do Deitel, e estude os capítulos que se
enquadram nos objetivos da certificação.
 Sempre procure exercitar a prática dos exemplos, variando as opções com
curiosidade, aplicando a técnica do “E se eu fizer esta alteração...”;
 Procure por simulados do exame na Internet, tanto do 1.4 quanto do 5.0.
Repita os testes até o ponto em que você estiver obtendo uma média de
acertos superior a 90% na maioria deles;
 Não se esqueça: as certificações se baseiam no fato de que o
profissional tem disponível apenas um editor de texto tipo MS Notepad ou
VI, e nada além disso.
Como se Preparar
Magno A. Cavalcante
77
Adquirindo um Voucher
 No Brasil, telefone para 0800-557863 durante o horário comercial;
 Ao ser atendido, informe que deseja adquirir um voucher para realizar
prova de certificação;
 Informe os três primeiros números do código da certificação (em geral é
310);
 O valor atual do voucher é R$ 330,00
 Após pagar o boleto bancário que você vai receber por e-mail, você
receberá em sua casa um envelope com a documentação sobre aquele
voucher;
 Você terá um ano, a partir da data de emissão do voucher, para usá-lo
antes que ele perca a validade.
Contactando os Serviços Educacionais da Sun
Microsystems do Brasil
Magno A. Cavalcante
78
Fazendo o Exame
 Cadastre-se no website de certificações da Prometric.com;
 Procure por centros de exame autorizados na sua cidade;
 Visite pessoalmente os centros autorizados para selecionar o que melhor
se enquadra nas suas expectativas;
 No website, selecione um local de realização, o código e nome do exame,
escolha uma data e informe o código do voucher;
 No dia do exame, procure chegar com 30 minutos de antecedência ao
local de realização;
 Dê preferência em resolver primeiro às questões mais simples. Procure
deixar questões tipo Drag & Drop e sobre threads para o final;
 Após o exame, verifique seus pontos obtidos.
Registrando-se na Prometric.com
Magno A. Cavalcante
79
Score
Magno A. Cavalcante
80
Cartão de Certificação
Nominal
Magno A. Cavalcante
81
Referências
 Java Como Programar; 6a. Edição; Deitel; Editora Pearson Education.
 UML – Guia do Usuário; Booch, Rumbauch, Jacobson; Editora Campus.
 Tutorial do J2EE (tradução); Bodoff; Editora Ciência Moderna.
 Core J2EE Patterns; Dan Malks, Deepak Alur, John Crupi; Editora
Campus.
 Head First Java, 2nd Edition; Kathy Sierra, Bert Bates; Editora O'Reilly &
Associates.
Livros
Magno A. Cavalcante
82
Referências
 Sun Java Technology Certification Paths (www.sun.com/training/
certification/java/index.html)
 Java Ranch's (www.javaranch.com/certfaq.jsp)
 UML for the Java Associate (www.hfoobook.com/pdf/hfoo-associateuml.pdf
)
 Marcus Green's Certification (www.jchq.net)
 Java Enterprise Edition Specification (jcp.org/aboutJava/
communityprocess/pr/jsr244/index.html)
 Java Micro Edition Documentation (java.sun.com/j2me/docs/)
 DEITEL Online (www.deitel.com)
Internet
Magno A. Cavalcante
83
Referências
 J2SE 5.0 in a Nutshell (java.sun.com/developer/technicalArticles/releases
/j2se15/)
 The All-New Java 2 Platform, Standard Edition (J2SE) 5.0 Platform:
Programming with the New Language Features in J2SE 5.0 (java.sun.com/
developer/technicalArticles/releases/j2se15langfeat/)
 Using and Programming Generics in J2SE 5.0 (java.sun.com/developer/
technicalArticles/J2SE/generics/index.html)
 Java Community Process (www.jcp.org)
 RioJUG (www.riojug.org)
 DFJUG (www.dfjug.org)
 SouJava (www.soujava.org.br)
Internet
Magno A. Cavalcante
84
Referências
 JavaFree (www.javafree.com.br)
 GUJ (www.guj.com.br)
 Serviços Educacionais da Sun Microsystems do Brasil (www.sun.com.br/
service/educacao/certificacoes)
 Thomson Prometric (www.prometric.com)
 TI Master (www.timaster.com.br)
Internet
Magno A. Cavalcante
85
Desmistificando aDesmistificando a
SCPJ 5.0 (Tiger)SCPJ 5.0 (Tiger)
O RioJUG agradece a sua participação.
Obrigado!
Magno A. Cavalcante
magno@riojug.org
RioJUG Leader
riojug-owner@yahoogroups.com
RioJUG Leaders
Janeiro/2006

Contenu connexe

Tendances

Java 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoJava 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoRegis Magalhães
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01Daniel Alves
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 
Aula 02 Primeiro Cod Java
Aula 02   Primeiro Cod JavaAula 02   Primeiro Cod Java
Aula 02 Primeiro Cod JavaSergio Silva
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO IOs Fantasmas !
 
Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Luis Borges Gouveia
 
Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Manoel Campos da Silva Filho
 
Aula 01 O que é java
Aula 01   O que é javaAula 01   O que é java
Aula 01 O que é javaSergio Silva
 

Tendances (13)

Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
Java 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoJava 01 Java Visao Geral Resumo
Java 01 Java Visao Geral Resumo
 
Apostila java completo
Apostila java completoApostila java completo
Apostila java completo
 
Java e Software Livre
Java e Software LivreJava e Software Livre
Java e Software Livre
 
Java com Excelência
Java com ExcelênciaJava com Excelência
Java com Excelência
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Aula 02 Primeiro Cod Java
Aula 02   Primeiro Cod JavaAula 02   Primeiro Cod Java
Aula 02 Primeiro Cod Java
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
 
Introdução ao Java
Introdução ao JavaIntrodução ao Java
Introdução ao Java
 
Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)
 
Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)
 
Aula 01 O que é java
Aula 01   O que é javaAula 01   O que é java
Aula 01 O que é java
 

Similaire à Desmistificando a Certificação Sun Java Programmer

Apostila Java
Apostila JavaApostila Java
Apostila Javadeilton
 
Apostila Java
Apostila JavaApostila Java
Apostila Javadeilton
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo JavaTI Infnet
 
Visão Geral do Java para Iniciantes - FLISOL 2011
Visão Geral do Java para Iniciantes - FLISOL 2011Visão Geral do Java para Iniciantes - FLISOL 2011
Visão Geral do Java para Iniciantes - FLISOL 2011Frederico Maia Arantes
 
Introdução a Tecnologia Java
Introdução a Tecnologia JavaIntrodução a Tecnologia Java
Introdução a Tecnologia JavaThiago Gonzaga
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Aécio Costa
 
Certificacoes java
Certificacoes javaCertificacoes java
Certificacoes javaBruno Garcia
 
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoDesenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoTchelinux
 
As muitas faces do java
As muitas faces do javaAs muitas faces do java
As muitas faces do javaPedro Cavalero
 
Java Bahia Desenvolvimento Java Area1
Java Bahia Desenvolvimento Java Area1Java Bahia Desenvolvimento Java Area1
Java Bahia Desenvolvimento Java Area1guestc9a1c7
 
Interop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETInterop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETAlessandro Binhara
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java FundamentosWilson Lima
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaRosicleia Frasson
 
Java: o que estudar para o mercado de trabalho
Java: o que estudar para o mercado de trabalhoJava: o que estudar para o mercado de trabalho
Java: o que estudar para o mercado de trabalhoPedro Cavalero
 

Similaire à Desmistificando a Certificação Sun Java Programmer (20)

Apostila Java
Apostila JavaApostila Java
Apostila Java
 
Apostila Java
Apostila JavaApostila Java
Apostila Java
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
Visão Geral do Java para Iniciantes - FLISOL 2011
Visão Geral do Java para Iniciantes - FLISOL 2011Visão Geral do Java para Iniciantes - FLISOL 2011
Visão Geral do Java para Iniciantes - FLISOL 2011
 
Imergindo na JVM
Imergindo na JVMImergindo na JVM
Imergindo na JVM
 
Introdução a Tecnologia Java
Introdução a Tecnologia JavaIntrodução a Tecnologia Java
Introdução a Tecnologia Java
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
Java
JavaJava
Java
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!
 
Certificacoes java
Certificacoes javaCertificacoes java
Certificacoes java
 
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoDesenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
 
As muitas faces do java
As muitas faces do javaAs muitas faces do java
As muitas faces do java
 
Java Bahia Desenvolvimento Java Area1
Java Bahia Desenvolvimento Java Area1Java Bahia Desenvolvimento Java Area1
Java Bahia Desenvolvimento Java Area1
 
Interop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETInterop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NET
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com Java
 
Java: o que estudar para o mercado de trabalho
Java: o que estudar para o mercado de trabalhoJava: o que estudar para o mercado de trabalho
Java: o que estudar para o mercado de trabalho
 
Java pode ser_hipster
Java pode ser_hipsterJava pode ser_hipster
Java pode ser_hipster
 

Desmistificando a Certificação Sun Java Programmer

  • 1. Magno A. Cavalcante 1 www.riojug.org Desde 2001 difundindo a tecnologia Java no Rio de Janeiro Hoje, mais de 1200 membros ativos
  • 2. Magno A. Cavalcante 2 Desmistificando aDesmistificando a SCPJ 5.0 (Tiger)SCPJ 5.0 (Tiger) Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0 Magno A. Cavalcante (RioJUG Leader) Janeiro/2006
  • 3. Magno A. Cavalcante 3 O Que é Tecnologia Java?  Java é uma linguagem de programação de computadores de alto nível, com sintaxe extremamente similar à do C++, e com diversas características herdadas de outras linguagens, como Smalltalk e Modula-3, criada pela Sun Microsystems.  É antes de tudo uma linguagem simples, fortemente tipada, portável e independente de arquitetura de hardware, robusta, segura, extensível, bem estruturada, distribuída, com suporte nativo a processamento paralelo e desalocação automática de memória por processo de coletor de lixo.  Inicialmente elaborada para ser a linguagem-base de projetos de software para produtos eletrônicos, hoje a tecnologia se estende aos mais diversos equipamentos e componentes eletrônicos que tenham processador e área de memória, mesmo que bem pequenos.
  • 4. Magno A. Cavalcante 4 O Que é Tecnologia Java?  Atualmente chamamos Java de tecnologia ou plataforma, e não simplesmente de linguagem por causa de seu amplo suporte aos mais diversos tipos de sistemas de processamento.  A tecnologia Java divide-se em blocos de APIs (Application Program Interfaces) para diferentes níveis de capacidade de processamento.  Como requisito básico temos a JSE – Java Standard Edition, destinada a computadores pessoais e pequenos servidores.  Em função das necessidades do usuário, existem:  JEE – Java Enterprise Edition, para sistemas de grande porte e servidores;  JME – Java Micro Edition, para sistemas de pequeno porte e embarcados;  JavaCard, para operação de SIM Cards ou chips passivos.
  • 5. Magno A. Cavalcante 5 James Gosling, um dos criadores da tecnologia Java.
  • 7. Magno A. Cavalcante 7 Tecnologia Java – Histórico de Versões  1.0 – 1995: versão inicial;  1.1 – 1997: AWT, Inner Classes, JavaBeans, JDBC, RMI;  1.2 (Playground) – 1998: Reflection, Swing, compilador JIT, Java Plug-in, Java IDL for CORBA, Collections;  1.3 (Kestrel) – 2000: HotSpot JVM, RMI for CORBA, JavaSound, JNDI, Platform Debugger;  1.4 (Merlin) – 2002: expressões regulares, Exception Chaining, New I/O, Logger, XML parser, XSLT processor, extensões de criptografia e segurança (JCE, JSSE, JAAS);  5.0 (Tiger) – 2004: generics, autoboxing/unboxing, metadados, enumerações, loop for estendido;  6.0 (Mustang) – 2006 ou 2007: projeto GlassFish, Java Compiler API, Pluggable Annotation Processing API, XML Digital Signatures, melhorias no diagnóstico de OutOfMemoryError, melhorias na JVM e no Debugger.  7.0 (Dolphin) – 2008 ou 2009
  • 8. Magno A. Cavalcante 8 Contexto Atual Sobre Tecnologia Java  Desde seu lançamento, em maio de 1995, a plataforma Java foi adotada mais rapidamente do que qualquer outra linguagem de programação na história da computação.  Em 2003 Java atingiu a marca de 4 milhões de desenvolvedores em todo mundo. Java continuou e continua crescendo, e hoje é com certeza um padrão para o mercado oferecendo qualidade, performance e segurança ainda sem nenhum competidor a altura.  Java tornou-se popular pelo seu uso na Internet e hoje possui seu ambiente de execução presente em web browsers, mainframes, diversos Sistemas Operacionais, celulares, PalmTops, PDAs, automóveis, aviões, robôs e cartões inteligentes.
  • 9. Magno A. Cavalcante 9 Contexto Atual Sobre Tecnologia Java  Em 2005 comemorou-se 10 anos do surgimento oficial da tecnologia Java.  Java está presente em mais da metade do mercado mundial de desenvolvimento de software.  Hoje é a principal linguagem utilizada em pesquisas relacionadas a software ou que utilizem software, em todo o mundo.  É a linguagem preferida da NASA para controle dos novos robôs de exploração espacial.  Está sendo utilizada pela Boeing para os novos sistemas de controle de vôo autônomo.
  • 10. Magno A. Cavalcante 10 Contexto Atual Sobre Tecnologia Java  Apesar de Índia e China serem pólos de desenvolvimento de software mundial, muitas empresas estrangeiras estão montando fábricas de software no Brasil por causa da estabilidade econômica e política de uma região sem conflitos e da baixa ocorrência de desastres naturais.  Isso também estimula a concorrência entre as empresas nacionais, gerando mais oportunidades para os profissionais qualificados.  O profissional Java é mais valorizado porque para dominar a tecnologia ele precisa conhecer conceitos acadêmicos do ciclo de vida de software.  Ainda hoje existe muita carência de profissionais qualificados, dados os amplos conhecimentos exigidos dos candidatos.
  • 11. Magno A. Cavalcante 11 Contexto Atual Sobre Tecnologia Java  “As empresas estão procurando profissionais que saibam muito, sejam bem capacitados, experientes e com conhecimento sólido da plataforma. A razão é simples: os investimentos em TI estão cada vez mais curtos e sendo medidos milimetricamente. Sabe- se exatamente o que se quer e com que tipo de retorno. Desperdícios não são mais tolerados.” *  “Para se capacitar, o profissional tem várias alternativas: cursos, livros, revistas, sites, e, sem dúvida alguma, o auto-aprendizado (toda a especificação do Java é pública e está disponível a qualquer pessoa). Além disso, há também uma outra maneira interessante de penetrar nesse mercado de trabalho: participando, como voluntário, em grupos de usuários e em projetos de desenvolvimento de software livre em Java, o profissional pode iniciar sua rede de contatos e, ao mesmo tempo, ganhar experiência real de trabalho.” * * por Eduardo Ramos, colunista do TI Master, outubro/2003.
  • 12. Magno A. Cavalcante 12 Certificações Java  Dos vários caminhos existentes para melhorar o seu fator de empregabilidade, o mais objetivo de todos é a busca por possuir o maior número de certificações internacionais que for possível.  Porém, é muito importante ressaltar que o profissional também deverá ter cursado um curso de graduação de tecnologia em uma universidade que seja reconhecida pelo mercado.  Em Java, as duas certificações “de entrada” para o profissional são a Sun Certified Associate for the Java 2 PlatformSun Certified Associate for the Java 2 Platform e a Sun Certified Programmer for the Java 2Sun Certified Programmer for the Java 2 Platform, Standard EditionPlatform, Standard Edition, já que as mesmas não têm outras certificações como pré-requisito.  Mas antes de estudar para uma certificação em Java você deve fortalecer seus conhecimentos de programação estruturada, construção de compiladores e construção de sistemas operacionais. Invista tempo com isso, e sua capacidade de entendimento da tecnologia vai aumentar muito.
  • 14. Magno A. Cavalcante 14 Um grupo de cientistas colocou cinco macacos em uma jaula. No meio, uma escada e, sobre ela, um cacho de bananas. Quando um macaco subia na escada para pegar as bananas, os cientistas jogavam um jato de água fria com uma mangueira de incêndio nos que estavam no chão. Depois de certo tempo, quando algum macaco ia subir a escada, os outros o pegavam e o enchiam de pancada. Com mais algum tempo, nenhum macaco subia mais a escada, apesar da tentação de comer as bananas. Então, os cientistas substituíram um dos macacos por um outro novo. A primeira coisa que ele fez foi subir a escada, dela sendo retirado pelos outros, que o surraram. Depois de algumas surras, o novo integrante do grupo não subia mais a escada. Um segundo foi substituído e o mesmo ocorreu, tendo o primeiro substituto participado com entusiasmo na surra ao novato. Um terceiro foi trocado e o mesmo ocorreu. Um quarto, e afinal, o último dos veteranos foi substituído. Os cientistas então ficaram com um grupo de cinco macacos que, mesmo nunca tendo tomado um banho frio, continuavam batendo naquele que tentasse pegar as bananas. Se possível fosse perguntar a algum deles porque eles batiam em quem tentasse subir a escada, com certeza a resposta seria: "Não sei, mas as coisas sempre foram assim por aqui". (autor desconhecido) Mudanças no Cotidiano, Os Macacos
  • 15. Magno A. Cavalcante 15 Sun Certified Associate for the Java 2 Platform
  • 16. Magno A. Cavalcante 16 Sun Certified Associate for the Java 2 Platform  Destina-se a programadores de nível médio ou a profissionais da indústria de software que trabalhem em projetos utilizando a plataforma Java.  O candidato deverá ter experiência com HTML, JavaScript, XML, SQL, TCP-IP.  O candidato deverá ter experiência com UML e conceitos e modelagem com orientação a objetos.  O candidato deverá ter experiência com programação em Java, APIs Java SE, Java EE, Java ME e Web Services. A Quem Se Destina
  • 17. Magno A. Cavalcante 17 Sun Certified Associate for the Java 2 Platform  Programadores de nível médio;  Programadores oriundos de outras tecnologias;  Estudantes que queiram tornar-se programadores Java;  Gerentes de projetos que trabalham com a tecnologia Java;  Gerentes de TI. Perfil dos Candidatos
  • 18. Magno A. Cavalcante 18 Sun Certified Associate for the Java 2 Platform  Descrever e comparar tipos primitivos (inteiros, ponto flutuante, booleanos e caracteres), tipos enumerados e objetos;  Descrever e comparar classes concretas, classes abstratas, interfaces e como se aplica a herança a estes elementos;  Descrever e comparar composições de classes, associações (incluindo multiplicidades um-para-um, um-para-muitos e muitos-para-muitos) e navegação pelas associações;  Descrever o ocultamento de informações (usando atributos privados e métodos), encapsulamento e exposição da funcionalidade dos objetos utilizando métodos públicos; Objetivos – Conceitos Fundamentais de Orientação a Objetos
  • 19. Magno A. Cavalcante 19 Sun Certified Associate for the Java 2 Platform  Descrever as convenções para JavaBeans, como os métodos pré-fixados “setter”, “getter” e “is”;  Descrever como se aplica o polimorfismo a classes e interfaces;  Descrever e aplicar o princípio da “programação para interfaces”. Objetivos – Conceitos Fundamentais de Orientação a Objetos
  • 20. Magno A. Cavalcante 20 Sun Certified Associate for the Java 2 Platform  Reconhecer a representação UML para classes, incluindo atributos e operações, classes abstratas e interfaces;  Reconhecer a representação UML para herança (implementação concreta, abstrata e interfaces);  Reconhecer a representação UML para modificadores de visibilidades dos atributos da classes (private, default, protected e public);  Reconhecer a representação UML para associações de classes, composições, indicadores de multiplicidade da associação e navegação pelos indicadores das associações. Objetivos – Representação UML para Conceitos de Orientação a Objetos
  • 21. Magno A. Cavalcante 21 Sun Certified Associate for the Java 2 Platform  Verificar exemplos de código utilizando o operador “new”;  Desenvolver código que utilize tipos primitivos; tipos enumerados, referências a objetos e reconhecer literais para estes tipos;  Desenvolver código que declare classes concretas, classes abstratas, interfaces; código que suporte implementação e herança de interfaces; que declare atributos de instância e métodos; que utilize modificadores de acesso;  Desenvolver código que implemente associações simples de classes; que implemente multiplicidade usando arrays e coleções; Objetivos – Implementação Java para os Conceitos de Orientação a Objetos
  • 22. Magno A. Cavalcante 22 Sun Certified Associate for the Java 2 Platform  Reconhecer código que implemente composições em contraste com associações simples; que implemente corretamente navegação pelas associações.  Desenvolver código que utilize polimorfismo para classes e interfaces; e reconhecer código que utilize o princípio da “programação para interfaces”. Objetivos – Implementação Java para os Conceitos de Orientação a Objetos
  • 23. Magno A. Cavalcante 23 Sun Certified Associate for the Java 2 Platform  Descrever e comparar 3 tipos de instruções básicas: atribuição, condições booleanas e iterações. E dada a descrição de um algoritmo, selecionar o tipo apropriado de instrução para o projeto do algoritmo;  Dado um algoritmo como pseudo-código, determinar o escopo correto para uma variável utilizada. Desenvolver código que declare variáveis em um dos seguintes escopos: variáveis de instância, parâmetros de métodos e variáveis locais  Dado um algoritmo como pseudo-código, desenvolver código de método que implemente instruções de acesso condicional (if, switch), de iterações (for, for-each, while, do-while), de atribuição, instruções break e continue para controle de fluxo dentro de blocos swith e blocos de iterações; Objetivos – Projeto e Implementação de Algoritmos
  • 24. Magno A. Cavalcante 24 Sun Certified Associate for the Java 2 Platform  Dado um algoritmo com múltiplas entradas e uma saída, desenvolver código de método que implemente usando parâmetros de método, um tipo de retorno e uma instrução de retorno. Reconhecer os efeitos quando referências a objetos ou primitivos são passados como parâmetros para métodos que os modificam.  Dado um algoritmo como pseudo-código, desenvolver código que aplique os operadores apropriados, incluindo operações de atribuição (limitado a: =, +=, -=), operadores aritméticos (limitado a: +, -, *, /, %, ++, --), operadores relacionais (limitado a: <, <=, >, >=, ==, !=), operadores lógicos (limitado a:!, &&, ||) para produzir o resultado esperado. Escrever código que determine a igualdade entre 2 objetos e entre 2 primitivos;  Desenvolver código que utilize o operador de concatenação (+), e os seguintes métodos da classe String: charAt, indexOf, trim, substring, replace, length, startsWith, endsWith. Objetivos – Projeto e Implementação de Algoritmos
  • 25. Magno A. Cavalcante 25 Sun Certified Associate for the Java 2 Platform  Descrever o propósito dos pacotes na linguagem Java, e reconhecer o uso apropriado das instruções import e package;  Demonstrar o uso apropriado do comando “javac” (incluindo as opções de linha de comando –d e –classpath);  Demonstrar o uso apropriado do comando “java” (incluindo as opções de linha de comando –classpath, -D e –version);  Descrever o propósito e tipos de classes para os seguintes pacotes Java: java.awt, javax.swing, java.io, java.net, java.util. Objetivos – Fundamentos de Desenvolvimento em Java
  • 26. Magno A. Cavalcante 26 Sun Certified Associate for the Java 2 Platform  Distinguir as características básicas das 3 plataformas Java: JSE, JME, JEE. E dada a finalidade de uma arquitetura de alto nível, selecionar a apropriada plataforma ou plataformas Java que se aplicam;  Descrever os benefícios e características básicas de RMI e processamento paralelo com multithreading;  Descrever os benefícios e características básicas de JDBC, SQL e tecnologias de SGBD e persistência de dados;  Descrever os benefícios e características básicas de JNDI, sistemas de mensagens assíncronas e tecnologias JMS. Objetivos – Plataformas Java e Integração de Tecnologias
  • 27. Magno A. Cavalcante 27 Sun Certified Associate for the Java 2 Platform  Descrever as características básicas, benefícios e desvantagens da criação de clientes leves usando HTML e JavaScript, e soluções para configuração e publicação dos recursos relacionados;  Descrever as características básicas, benefícios, desvantagens e soluções para configuração e publicação dos recursos relacionados a criação de clientes com JME midlets;  Descrever as características básicas, benefícios, desvantagens e soluções para configuração e publicação dos recursos relacionados a criação de clientes pesados usando Applets;  Descrever as características básicas, benefícios, desvantagens e soluções para configuração e publicação dos recursos relacionados a criação de clientes pesados usando Swing. Objetivos –Tecnologias para o Lado Cliente
  • 28. Magno A. Cavalcante 28 Sun Certified Associate for the Java 2 Platform  Descrever as características de uso, benefícios e desvantagens de: EJB, servlets, JSP, JMS, JNDI, SMTP, JAX-RPC, Web Services (incluindo SOAP, UDDI, WSDL, e XML), e JavaMail;  Descrever as características de uso, benefícios e desvantagens de Servlets e JSP no suporte a clientes leves com HTML;  Descrever as características de uso, benefícios e desvantagens de EJBs: session, entity e message-driven beans;  Descrever as características básicas de uso, benefícios e desvantagens ao utilizar tecnologias JEE no lado servidor, descrevendo e comparando a camada web (web-tier), a camada de negócios (business-tier) e a camada de integração de sistemas (EIS tier). Objetivos –Tecnologias para o Lado Servidor
  • 29. Magno A. Cavalcante 29 Sun Certified Associate for the Java 2 Platform  Código: 310-019  Preço: US$ 100.00  Pré-requisitos: Não Tem  Tipo de Exame: Questões de Múltipla Escolha e de Arrastar e Soltar  Número de Questões: 51  Pontuação Mínima: 68% (35 questões)  Duração: 115 minutos (média de 2 minutos por questão) O Exame
  • 30. Magno A. Cavalcante 30 Sun Certified Associate for the Java 2 Platform  Sedimente os seus conhecimentos de HTML, JavaScript, XML, SQL e TCP-IP estudando através de livros e apostilas;  Adquira um bom livro sobre tecnologia Java para ser o seu livro de “cabeceira”, e estude-o do início ao fim, implementando em código-fonte todos os exercícios;  Estude conceitos de análise e modelagem orientada a objetos utilizando UML, seja através de um livro ou de apostilas capturadas na Internet;  Estude o tutorial do Java Standard versão 5.0, que pode ser capturado direto do website da Sun Microsystems;  Não esqueça que RMI e JNDI são recursos nativos do Java Standard; Como se Preparar
  • 31. Magno A. Cavalcante 31 Sun Certified Associate for the Java 2 Platform  Estude o tutorial do J2EE, disponível para download no website da Sun.  Procure na Internet tutoriais sobre Web Services em Java;  Leia mensalmente as revistas Java Magazine e Mundo Java;  Se puder pagar, faça uma formação completa de desenvolvedor Java em algum dos centros de treinamento existentes;  Troque idéias com seus colegas de trabalho sobre tópicos da certificação;  Estude sobre a evolução dos sistemas de 1, 2, 3 e n camadas, e sobre quais são as tecnologias presentes atualmente em cada camada;  Estude sobre padrões de projeto (design patterns);  Participe de um fórum de discussões sobre Java;  Faça muitos simulados e exercícios práticos do tipo “E se eu fizer isso...” Como se Preparar
  • 32. Magno A. Cavalcante 32 Java SE 5.0 (Tiger)
  • 33. Magno A. Cavalcante 33 Java SE 5.0 – Novos Recursos  Autoboxing/Unboxing  Type-safe enumerations  Varargs  Static import  Loop “for” estendido (“foreach”)  Generics
  • 34. Magno A. Cavalcante 34 Java SE 5.0 - Autoboxing public class AutoboxingUnboxing { public static void main(String[] args) { semAutoboxingUnboxing(); comAutoboxingUnboxing(); } private static void semAutoboxingUnboxing() { Integer fator1 = new Integer(15); int fator2 = 10; int produto = fator1.intValue() * fator2; System.out.println("Sem autoboxing/unboxing:"); System.out.printf("%d x %d = %dnn", fator1, fator2, produto); }
  • 35. Magno A. Cavalcante 35 Java SE 5.0 - Autoboxing private static void comAutoboxingUnboxing() { Integer fator1 = 15; // Autoboxing int fator2 = 10; int produto = fator1 * fator2; // Unboxing System.out.println("Com autoboxing/unboxing:"); System.out.printf("%d x %d = %dnn", fator1, fator2, produto); } }
  • 36. Magno A. Cavalcante 36 Java SE 5.0 - Autoboxing public class BoxingCompare { public static void main(String... args) { int x = 3, y=3; Integer z = new Integer(3); Integer k = new Integer(3); testWrapperFirst(x, y); // true testWrapperSecond(z, y); // true testWrapperFirst(z, k); // false } static void testWrapperFirst(Integer a, Integer b){ System.out.print("Integer a = " + a); System.out.println("tInteger b = " + b); System.out.println((a == b) ? true : false); }
  • 37. Magno A. Cavalcante 37 Java SE 5.0 - Autoboxing static void testWrapperSecond(int a, Integer b){ System.out.print("int a = " + a); System.out.println("tInteger b = " + b); System.out.println((a == b) ? true : false); } }
  • 38. Magno A. Cavalcante 38 Java SE 5.0 - Enums import java.text.NumberFormat; import static java.lang.System.out; public class Premiacao { private enum Medalha { OURO ("Ouro"), PRATA ("Prata"), BRONZE ("Bronze"); final String s; Medalha(String s) { this.s = s; } public String toString() { return this.s; } }
  • 39. Magno A. Cavalcante 39 Java SE 5.0 - Enums private static void imprimirResultado(Medalha medalha) { String colocacao = ""; double premio = 0.0; switch (medalha) { case OURO: colocacao = "Primeiro"; premio = 5000.0; break; case PRATA: colocacao = "Segundo"; premio = 2000.0; break; case BRONZE: colocacao = "Terceiro"; premio = 1000.0; }
  • 40. Magno A. Cavalcante 40 Java SE 5.0 - Enums out.printf("%s colocadonMedalha de %snPremio de %snn", colocacao, medalha, NumberFormat.getCurrencyInstance().format(premio)); } public static void main(String[] args) { imprimirResultado(Medalha.OURO); imprimirResultado(Medalha.PRATA); imprimirResultado(Medalha.BRONZE); } }
  • 41. Magno A. Cavalcante 41 Java SE 5.0 - Varargs public class SemVarargs { static String calcula(String s, int a) { return s + " = " + (a); } static String calcula(String s, int a, int b) { return s + " = " + (a + b); } static String calcula(String s, int a, int b, int c) { return s + " = " + (a + b + c); } public static void main(String[] riojug) { System.out.print(" Valor -> " + calcula("var", 2, 5)); } }
  • 42. Magno A. Cavalcante 42 Java SE 5.0 - Varargs public class ComVarargs { static String calcula(String s, int... a) { int total = 0; for (int i : a) { total += i; } return s + " = " + total; } public static void main(String... riojug) { System.out.print(" Valor -> " + calcula("var", 2, 5)); } }
  • 43. Magno A. Cavalcante 43 Java SE 5.0 – Static import import static java.lang.Math.*; public class StaticMath { private double getCosseno(){ double r = cos(PI / 2.5); return r; } public static void main(String... args){ StaticMath sm = new StaticMath(); System.out.println(sm.getCosseno()); } }
  • 44. Magno A. Cavalcante 44 Java SE 5.0 – Static import import static java.lang.Math.*; public class StaticImportTest { public static void main(String args[]) { System.out.printf("sqrt(900.0) = %.1fn", sqrt(900.0)); System.out.printf("ceil(-9.8) = %.1fn", ceil(-9.84)); System.out.printf("floor(-9.84) = %.1fn", floor(-9.84)); System.out.printf("round(-9.84) = %dn", round(-9.84)); System.out.printf("rint(-9.85) = %.2fn", rint(-9.85)); System.out.printf("abs(-9.8) = %.1fn", abs(-9.8)); System.out.printf("log(E) = %.1fn", log(E)); System.out.printf("cos(0.0) = %.1fn", cos(0.0)); System.out.printf("ulp(9.85) = %.2fn", ulp(9.85)); } }
  • 45. Magno A. Cavalcante 45 Java SE 5.0 – Generics public class SimpleGeneric { public <E> void metodoSimples(E value) { System.out.println(" Elemento Generico: " + value.getClass().getName() + " => " + value); } public static void main(String... riojug) { SimpleGeneric t = new SimpleGeneric(); t.metodoSimples(" riojug e scpj 5.0 "); t.metodoSimples(new Integer(7)); t.metodoSimples((new float[] {1.2F, 2.3F, 3.4F})); t.metodoSimples(3.1415); } }
  • 46. Magno A. Cavalcante 46 Java SE 5.0 – Generics public class ArrayTestGenerics { public static <E> void printArray(E... inputArray) { for (E element : inputArray) { System.out.printf("%s ", element); } System.out.println(); } public static void main(String... args) { Integer[] integerArray = {1, 2, 3, 4, 5, 6}; Double[] doubleArray = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6}; Character[] characterArray = {'H', 'E', 'L', 'L', 'O'}; printArray(integerArray); printArray(doubleArray); printArray(characterArray); } }
  • 47. Magno A. Cavalcante 47 Java SE 5.0 – Generics public class ColecoesSemGenerics { public static void main(String[] args) { colecoesSemGenerics(); } private static void colecoesSemGenerics() { List nomes = new ArrayList(); // Runtime Fail by ClassCastException // nomes.add(new StringBuffer("Joaquim")); nomes.add("Joaquim"); nomes.add("Joao"); nomes.add("Maria"); String primeiroNome = null; primeiroNome = ((String) nomes.get(0)).toUpperCase(); System.out.println(primeiroNome); } }
  • 48. Magno A. Cavalcante 48 Java SE 5.0 – Generics public class ColecoesComGenerics { public static void main(String[] args) { colecoesComGenerics(); } private static void colecoesComGenerics() { List<String> nomes = new ArrayList<String>(); /* Compilation Fail: The method add(String) in the * type List<String> is not applicable * for the arguments (StringBuffer) */ // nomes.add(new StringBuffer("Joaquim")); nomes.add("Joaquim"); nomes.add("Joao"); nomes.add("Maria"); String primeiroNome = nomes.get(0).toUpperCase(); System.out.println(primeiroNome); } }
  • 49. Magno A. Cavalcante 49 Java SE 5.0 – Generics class SequenciaStrings { public void semGenerics(List seq, char primChar) { for (Iterator i = seq.iterator(); i.hasNext();) { if (((String) i.next()).charAt(0) != primChar) { i.remove(); } } } public void comGenerics(List<String> seq, char primChar) { for (Iterator<String> i = seq.iterator(); i.hasNext();) { if (i.next().charAt(0) != primChar) { i.remove(); } } }
  • 50. Magno A. Cavalcante 50 Java SE 5.0 – Generics public void comForeach(List<String> seq, char primChar) { for (String i : seq) { if (i.charAt(0) != primChar) { seq.remove(i); } } } }
  • 51. Magno A. Cavalcante 51 Java SE 5.0 – Generics public class ColecaoNumber<T extends Number> { List<T> cj; public ColecaoNumber() { cj = new ArrayList<T>(); } public void loadNumber(T number) { cj.add(number); }
  • 52. Magno A. Cavalcante 52 Java SE 5.0 – Generics public void extractNumbers() { for (Number n : cj) { System.out.printf("%ft", n.doubleValue()); } } public static void main(String... var) { ColecaoNumber cn = new ColecaoNumber(); cn.loadNumber(new Integer(2)); cn.loadNumber(4.1357); cn.loadNumber(7L); cn.extractNumbers(); } }
  • 53. Magno A. Cavalcante 53 Java SE 5.0 – Generics public class StackGeneric<T> implements Cloneable { private ArrayList<T> items; private int top = 0; public StackGeneric() { items = new ArrayList<T>(); } public StackGeneric(T... ts ) { items = new ArrayList<T>(); for (T a : ts) { items.add(a); } } public void push(T item) { items.add(item); top++; }
  • 54. Magno A. Cavalcante 54 Java SE 5.0 – Generics public T pop() { if (items.size() == 0) { throw new EmptyStackException(); } T obj = items.get(--top); return obj; } public boolean isEmpty() { if (items.size() == 0) return true; else return false; }
  • 55. Magno A. Cavalcante 55 Java SE 5.0 – Generics protected StackGeneric<T> clone() { try { StackGeneric<T> s = (StackGeneric<T>) super.clone(); s.items = (ArrayList<T>) items.clone(); return s; } catch (CloneNotSupportedException e) { throw new InternalError(); } }
  • 56. Magno A. Cavalcante 56 Java SE 5.0 – Generics public static void main(String[] args) { StackGeneric<String> s = new StackGeneric<String>(); s.push("1o."); s.push("2o."); s.push("3o."); StackGeneric<String> s2 = s.clone(); System.out.printf("%s t %s t %s t %s", s.pop(), s.pop(), s.pop(), s2.pop()); //3o. 2o. 1o. 3o. } }
  • 57. Magno A. Cavalcante 57 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0
  • 58. Magno A. Cavalcante 58 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Programadores experientes que utilizam a linguagem Java.  Esta certificação fornece claras evidências que o programador entende a sintaxe básica e a estrutura da linguagem Java e que pode criar aplicações Java que serão executadas tanto em sistemas servidores quanto em sistemas desktops, utilizando o JSE 5.0. A Quem Se Destina
  • 59. Magno A. Cavalcante 59 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Desenvolver código que declare classes (incluindo classes abstratas e todas as formas de classes aninhadas/nested), interfaces, enums, incluindo o uso apropriado das instruções package e import (incluindo static imports);  Desenvolver código que declare uma interface. Desenvolver código que implemente ou estenda uma ou mais interfaces. Desenvolver código que declare uma classe abstrata. Desenvolver código que declare estenda uma classe abstrata;  Desenvolver código que declare, inicialize e utilize tipos primitivos, arrays, enums e objetos, suportando variáveis estáticas, de instância e locais, utilizando identificadores corretos para os nomes das variáveis; Objetivos – Declaração, Inicialização e Escopo
  • 60. Magno A. Cavalcante 60 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Desenvolver código que declare métodos estáticos e não-estáticos simultaneamente, e – se for o caso – que utilizem nomes de métodos aderentes ao padrão JavaBeans. Desenvolver código que declare e utilize uma lista de argumentos de tamanho variável;  Dado um código de exemplo, determine se um método está sobrescrevendo ou sobrecarregando outro método, além de identificar valores de retorno corretos (incluindo valores covariantes) para o método;  Dado um conjunto de classes e superclasses, desenvolver construtores para uma ou mais classes. Dada uma declaração de classe, determinar se um construtor default vai ser criado, e se for, determinar o comportamento daquele construtor. Dada uma lista de classes aninhadas e não- aninhadas, escrever código que instancie estas classes. Objetivos – Declarações, Inicialização e Escopo
  • 61. Magno A. Cavalcante 61 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Desenvolver código que implemente uma instrução if ou switch; e identificar tipos de argumentos corretos para estas instruções;  Desenvolver código que implemente todas as formas de loops e iterações, incluindo o uso de for, o loop for estendido (for-each), do, while, labels, break, continue; e interpretar os valores tratados pelo contador do loop durante e depois da execução do loop;  Desenvolver código que faça uso de assertions, e distinguir apropriadamente o uso incorreto de assertions;  Desenvolver código que faça uso de exceptions e clausulas que tratam exceptions (try, catch, finally). Declarar métodos e sobrescrita de métodos que lançam exceptions; Objetivos – Controle de Fluxo
  • 62. Magno A. Cavalcante 62 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Reconhecer o efeito que uma exception produz em um ponto específico dentro de um pedaço de código-fonte;  Reconhecer as diferenças entre Runtime Exception, Checked Exception, ou Error;  Reconhecer situações que poderão acabar em um dos seguintes casos de lançamento de exceptions ou errors: ArrayIndexOutOfBoundsException, ClassCastException, IllegalArgumentException, IllegalStateException, NullPointerException, NumberFormatException, AssertionError, ExceptionInInitializerError, StackOverflowError, NoClassDefFoundError. Entender quais destes são lançados pela JVM e reconhecer situações em que outros devem ser lançados programaticamente. Objetivos – Controle de Fluxo
  • 63. Magno A. Cavalcante 63 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Desenvolver código que utilize classes wrapper (como Boolean, Character, Double, Integer, etc.) e condições de ocorrência de autoboxing e unboxing.  Discutir as diferenças entre as classes String, StringBuilder e StringBuffer.  Dado um cenário envolvendo navegação pelo sistema de arquivos, leitura ou escrita de arquivos, desenvolver a solução adequada usando as seguintes classes (algumas vezes em combinação) do pacote java.io: BufferedReader,BufferedWriter, File, FileReader, FileWriter, PrintWriter;  Desenvolver código que serialize e/ou de-serialize objetos usando as seguintes classes (algumas vezes em combinação) do pacote java.io: DataInputStream, DataOutputStream,FileInputStream, FileOutputStream, ObjectInputStream, ObjectOutputStream, Serializable; Objetivos – Conteúdo da API
  • 64. Magno A. Cavalcante 64 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Desenvolver código que utilize as APIs do pacote java.text corretamente para formatar e transformar datas, números e valores monetários para uma localidade específica. Dado um cenário, determinar os métodos apropriados para utilizar se você quer exibir dados com a localidade padrão ou para uma específica localidade. Descrever o propósito e o uso da classe java.util.Locale;  Escrever código que utilize APIs dos pacotes java.util e java.util.regex para formatar e transformar strings ou streams de dados. Para strings, escrever código que utilize as classes Pattern e Matcher e o método String.split; Objetivos – Conteúdo da API
  • 65. Magno A. Cavalcante 65 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Reconhecer e utilizar padrões de expressões regulares para combinações de strings (limitado a: . (dot), * (star), + (plus), ?, d, s, w, [], ()). O uso de *, +, e ? estará limitado a quantificadores e o operador () somente vai ser usado como um mecanismo de agrupamento, enão para captura de conteúdo nas combinações. Para streams, escrever código que use as classes Formatter e Scanner e os métodos PrintWriter.format/printf. Reconhecer e utilizar parâmetros de formatação (limitado a: %b, %c, %d, %f, %s) para formatar strings. Objetivos – Conteúdo da API
  • 66. Magno A. Cavalcante 66 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Escrever código que define, instancia e inicia novas threads usando java.lang.Thread e/ou java.lang.Runnable;  Reconhecer os estados em que uma thread pode existir, e identificar caminhos em que uma thread pode transitar entre um estado e outro;  Dado um cenário, escrever código que faça uso correto de “object locking” para proteger variáveis estáticas ou de instância contra problemas de acesso concorrente;  Dado um cenário, escrever código que faça uso correto de wait, notify, notifyAll. Objetivos – Concorrência
  • 67. Magno A. Cavalcante 67 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Desenvolver código que implemente encapsulamento compacto, baixo acoplamento e alta coesão em classes, descrevendo os respectivos benefícios;  Dado um cenário, desenvolver código que demonstre o uso de polimorfismo. Determinar quando a conversão (casting) de tipos será necessária e reconhecer erros do compilador versus erros de tempo de execução relacionados ao casting da referência de objetos;  Expor o efeito dos modificadores de acesso, na herança de objetos, com respeito a construtores, variáveis estáticas ou de instância e métodos estáticos ou de instância;  Dado um cenário, desenvolver código que declare e/ou invoque sobrescrita ou sobrecarga de métodos; e código que declare e/ou invoque superclasse, sobrescrita ou sobrecarga de construtores;  Desenvolver código que implemente relacionamentos entre classes do tipo “is-a” e/ou “has-a”. Objetivos – Conceitos de Orientação a Objetos
  • 68. Magno A. Cavalcante 68 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Dado um cenário de projeto, determinar quais classes de coleções e/ou interfaces devem ser usadas para implementar corretamente aquele projeto, incluindo o uso da interface Comparable;  Distinguir entre a forma correta e a incorreta de sobrescrever os métodos correspondentes hashCode e equals, e explicar a diferença entre o operador == e o método equals;  Escrever código que utilize as versões genéricas da API de Collections, em particular as interfaces Set, List, Queue, Map e as classes que as implementam;  Reconhecer as limitações dos elementos não-genéricos da API de Collections e como fazer para modificar o código para utilizar as versões genéricas; Objetivos – Coleções e Generics
  • 69. Magno A. Cavalcante 69 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Desenvolver código que faça uso apropriado de parâmetros de tipo genéricos na declaração de classes ou interfaces, variáveis de instância, argumentos de métodos e tipos de retorno. Escrever métodos genéricos ou métodos que façam uso de marcadores de tipos e entender as similaridades e diferenças entre estas duas abordagens;  Utilizar as capacidades do pacote java.util para escrever código que manipule uma lista para ordenação, execução de busca binária, ou conversão de um array para uma lista;  Utilizar as interfaces java.util.Comparator e java.lang.Comparable para modificar a forma de ordenação de listas e de arrays. Além disso, reconhecer o efeito da “ordenação natural” de classes wrapper para primitivos e da classe java.lang.String na ordenação. Objetivos – Coleções e Generics
  • 70. Magno A. Cavalcante 70 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Dado um exemplo de código e um cenário, escrever código que utilize os modificadores de acesso apropriados, declarações de pacotes e instruções de importação para interagir (acesso direto ou por herança) com o código no exemplo;  Dado um exemplo de classe e uma linha de comando, determinar o comportamento esperado em tempo de execução;  Determinar o efeito a respeito de referências de objetos e valores primitivos quando eles são passados como parâmetros para métodos que realizam atribuições e outras operações de modificação sobre os parâmetros;  Dado um exemplo de código, reconhecer o ponto no qual um objeto torna- se elegível para a coleta automática de lixo (garbage collection), e determinar o que é e o que não é garantido pelo sistema de coleta automática de lixo; Objetivos – Fundamentos
  • 71. Magno A. Cavalcante 71 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Reconhecer os comportamentos de System.gc e finalization;  Dado um nome completo de uma classe que é publicada dentro e/ou fora de um arquivo JAR, construir a estrutura de diretórios apropriada para aquela classe;  Dado um exemplo de código e um CLASSPATH, determinar se o CLASSPATH vai ser compatível para a compilação completa e correta do código;  Escrever código que aplique corretamente os operadores apropriados, incluindo operadores de atribuição (limitado a: =, +=, -=), operadores aritméticos (limitado a: +, -, *, /, %, ++, --), operadores relacionais (limitado a: <, <=, >, >=, ==, !=), o operador instanceof, operadores lógicos(limitado a: &, |, ^, !, &&,||), ) e o operador condicional ( ? : ), para produzir o resultado desejado;  Escrever código que determine a igualdade entre dois objetos e dois primitivos. Objetivos – Fundamentos
  • 72. Magno A. Cavalcante 72 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Código: 310-055  Preço: US$ 150.00  Pré-requisitos: Não Tem  Tipo de Exame: Questões de Múltipla Escolha e de Arrastar e Soltar  Número de Questões: 73  Pontuação Mínima: 59% (44 questões)  Duração: 175 minutos (média de 2 minutos por questão) O Exame
  • 73. Magno A. Cavalcante 73 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0 Upgrade Exam  Código: 310-056  Preço: US$ 100.00  Pré-requisitos: versão anterior (1.4) do exame Sun Certified Programmer for Java 2 Platform  Tipo de Exame: Questões de Múltipla Escolha e de Arrastar e Soltar  Número de Questões: 46  Pontuação Mínima: 59% (28 questões)  Duração: 105 minutos (média de 2 minutos por questão) O Exame de Upgrade
  • 74. Magno A. Cavalcante 74 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Estude os fundamentos da linguagem por um livro em português, fazendo todos os exercícios recomendados;  Peça emprestado outros livros diferentes para seus colegas e estude-os;  Faça o download do Java Standard Tutorial e estude os tópicos que estão relacionados diretamente com o exame, implementando todos os exemplos. Faça variações sobre os exemplos;  Estude os artigos técnicos escritos por Rogério Moraes de Carvalho sobre os novos recursos do Java 5.0 (Tiger) nos boletins do DFJUG do primeiro semestre de 2005;  Procure por artigos sobre o Java 5.0 nas revistas Java Magazine e Mundo Java de 2005 e de 2006; Como se Preparar
  • 75. Magno A. Cavalcante 75 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Leia especialmente os artigos escritos pelo colunista Osvaldo Pinali Doederlein, na revista Java Magazine. Ele é membro individual do Java Community Proccess e participa ativamente das definições do JSE;  Estude o artigo de Gilad Bracha, com o nome “Generics in the Java Programming Language”, de 5 de julho de 2004;  Estude e implemente os exemplos do artigo “J2SE 5.0 in a Nutshell”;  Estude o “White Paper Java Platform Migration Guide, Version 1.3 to 5.0”, disponível no website da Sun Microsystems;  Estude o artigo “The All-New Java 2 Platform, Standard Edition (J2SE) 5.0 Platform: Programming with the New Language Features in J2SE 5.0”;  Importante: utilize fortemente em sua preparação todo material que você conseguir sobre a certificação anterior (J2SE 1.4); Como se Preparar
  • 76. Magno A. Cavalcante 76 Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0  Faça o download dos códigos-fontes do livro “Java Como Programar – 6a. Edição”, a partir do website do Deitel, e estude os capítulos que se enquadram nos objetivos da certificação.  Sempre procure exercitar a prática dos exemplos, variando as opções com curiosidade, aplicando a técnica do “E se eu fizer esta alteração...”;  Procure por simulados do exame na Internet, tanto do 1.4 quanto do 5.0. Repita os testes até o ponto em que você estiver obtendo uma média de acertos superior a 90% na maioria deles;  Não se esqueça: as certificações se baseiam no fato de que o profissional tem disponível apenas um editor de texto tipo MS Notepad ou VI, e nada além disso. Como se Preparar
  • 77. Magno A. Cavalcante 77 Adquirindo um Voucher  No Brasil, telefone para 0800-557863 durante o horário comercial;  Ao ser atendido, informe que deseja adquirir um voucher para realizar prova de certificação;  Informe os três primeiros números do código da certificação (em geral é 310);  O valor atual do voucher é R$ 330,00  Após pagar o boleto bancário que você vai receber por e-mail, você receberá em sua casa um envelope com a documentação sobre aquele voucher;  Você terá um ano, a partir da data de emissão do voucher, para usá-lo antes que ele perca a validade. Contactando os Serviços Educacionais da Sun Microsystems do Brasil
  • 78. Magno A. Cavalcante 78 Fazendo o Exame  Cadastre-se no website de certificações da Prometric.com;  Procure por centros de exame autorizados na sua cidade;  Visite pessoalmente os centros autorizados para selecionar o que melhor se enquadra nas suas expectativas;  No website, selecione um local de realização, o código e nome do exame, escolha uma data e informe o código do voucher;  No dia do exame, procure chegar com 30 minutos de antecedência ao local de realização;  Dê preferência em resolver primeiro às questões mais simples. Procure deixar questões tipo Drag & Drop e sobre threads para o final;  Após o exame, verifique seus pontos obtidos. Registrando-se na Prometric.com
  • 80. Magno A. Cavalcante 80 Cartão de Certificação Nominal
  • 81. Magno A. Cavalcante 81 Referências  Java Como Programar; 6a. Edição; Deitel; Editora Pearson Education.  UML – Guia do Usuário; Booch, Rumbauch, Jacobson; Editora Campus.  Tutorial do J2EE (tradução); Bodoff; Editora Ciência Moderna.  Core J2EE Patterns; Dan Malks, Deepak Alur, John Crupi; Editora Campus.  Head First Java, 2nd Edition; Kathy Sierra, Bert Bates; Editora O'Reilly & Associates. Livros
  • 82. Magno A. Cavalcante 82 Referências  Sun Java Technology Certification Paths (www.sun.com/training/ certification/java/index.html)  Java Ranch's (www.javaranch.com/certfaq.jsp)  UML for the Java Associate (www.hfoobook.com/pdf/hfoo-associateuml.pdf )  Marcus Green's Certification (www.jchq.net)  Java Enterprise Edition Specification (jcp.org/aboutJava/ communityprocess/pr/jsr244/index.html)  Java Micro Edition Documentation (java.sun.com/j2me/docs/)  DEITEL Online (www.deitel.com) Internet
  • 83. Magno A. Cavalcante 83 Referências  J2SE 5.0 in a Nutshell (java.sun.com/developer/technicalArticles/releases /j2se15/)  The All-New Java 2 Platform, Standard Edition (J2SE) 5.0 Platform: Programming with the New Language Features in J2SE 5.0 (java.sun.com/ developer/technicalArticles/releases/j2se15langfeat/)  Using and Programming Generics in J2SE 5.0 (java.sun.com/developer/ technicalArticles/J2SE/generics/index.html)  Java Community Process (www.jcp.org)  RioJUG (www.riojug.org)  DFJUG (www.dfjug.org)  SouJava (www.soujava.org.br) Internet
  • 84. Magno A. Cavalcante 84 Referências  JavaFree (www.javafree.com.br)  GUJ (www.guj.com.br)  Serviços Educacionais da Sun Microsystems do Brasil (www.sun.com.br/ service/educacao/certificacoes)  Thomson Prometric (www.prometric.com)  TI Master (www.timaster.com.br) Internet
  • 85. Magno A. Cavalcante 85 Desmistificando aDesmistificando a SCPJ 5.0 (Tiger)SCPJ 5.0 (Tiger) O RioJUG agradece a sua participação. Obrigado! Magno A. Cavalcante magno@riojug.org RioJUG Leader riojug-owner@yahoogroups.com RioJUG Leaders Janeiro/2006