A SCJA (Sun Certified Java Associate) é a certificação Java de nÃvel de entrada. Como ela não é pre-requisito para nenhuma outra certificação poucas pessoas tiram a SCJA. Apesar disso eu a acho uma certificação interessante porque ela é bem abrangente, embora que superficial. Eu estou estudando para SCJA como uma porta de entrada para as outras certificações.
Este post é uma coletânea de links e dicas úteis para aqueles que possuirem estes mesmo objetivos.
- Página oficial da SCJA – nesta página estão as principais informações sobre a certificação, algumas referencias de material para estudo e os objetivos do exame, que é a primeira coisa que você deve ler. Se possÃvel imprima os objetivos do exame e vá marcando os objetivos que você já estudou.
- UML for the Java Associate – Esse é um PDF gratuito que cobre alguns conceitos básicos de UML em uma linguagem fácil de divertida. Eu gostaria de ter tido isso em mãos alguns semestres atrás. O autor é o Dave Wood (que também elabora provas da SCJA) e é da mesma editora da série Head First. Esse livrinho é um ótimo ponto de partida para começar a estudar.
- JavaRanch SCJA FAQ – Um tira dúvidas das dúvidas comuns sobre o SCJA e também uma excelente coletânea de materiais de estudo.
- J2EE Specification – Um dos objetivos da é “Java Platforms and Integration Technologies“. Vá nesse PDF J2EE Specification, na seção 2.6 há um ótimo guia de termos de J2EE.
- Trail: Learning the Java Language – Trilha de aprendizado da página oficial de tutoriais do Java. Muito bom e completo.
Objetivos da Certificação SCJA
Essa tradução fui em quem fiz, não é oficial. Se encontrar algum erro me notifique nos comentários do post.
- Seção 1 – Conceitos Fundamentais de Orientação a Objetos.
- Descrever, comparar e contrastar primitivas (inteiro, ponto flutuante, booleano, e caractere), tipos enumerados e objetos.
- Descrever, comparar e contrastar classes concretas, classes abstratas, e interfaces, e como a herança se aplica a elas.
- Descrever, comparar e contrastar composição de classes, e associações (inclusive de multiplicidade um-para-um, um-para-muitos e muitos-para-muitos) e associações de navegação.
- Descrever ocultamento de informação (usando atributos privados e métodos), encampsulamento e exposição de funcionalidades de objetos usando métodos públicos; e descrever as convenções de JavaBeans para métodos setter e getter.
- Descrever polimorfismo aplicado a classes e interfaces, e descrever e aplicar o princÃpio de “programar para uma interface”.
- Seção 2 – Representação UML de Conceitos de Orientação a Objetos.
- Reconhecer as representações UML de classes, (incluindo atributos e operações, classes abstratas, e interfaces), as representações UML de herança (ambas implementações e interface), e a representação UML de modificadores de visibilidades de membros de classe (- para privado e + para público).
- Reconhecer a presetação UML de associação de classe, composição, indicadores de multiplicidade da associação, e indicadores de navegação da associação.
- Seção 3 – Implementação Java de Conceitos de Orientação a Objetos.
- Nota: exemplos de código podem usar o operador “new“.
- Desenvolver código que use tipos primitivos, tipos enumerados, e referencias a objetos, e reconhecer os literais desses tipos.
- Desenvolver código que declare classes concretas, classes abstratas, e interfaces, código que suporte implementação e interfaces de herança, código que declare atributos de instância e métodos, e código que use os modificadores de acesso: private e public.
- Desenvolver código que implemente associação de classes simples, código que implemente multiplicidade usando vetores, e reconhecer código que implemente composição em detrimento de simples associações, e código que implementa associações de navegação corretamente.
- Desenvolver código que use polimorfismo tanto para classes quanto para interfaces, e reconhecer código que usa o princÃpio de “programar para uma interface”
- Seção 4 – Projeto e Implementação de Algoritmos.
- Descrever, comparar e contrastar estes três tipos fundamentais de sentenças: atribuição, condicional, e iteração, e dado uma descrição de um algoritmo, selecionar os tipos apropriados de sentenças para projetar o algoritmo.
- Dado um algoritmo em pseudo-código, terminar o escopo correto para a variável usada no algoritmo, e desenvolver código que declara variáveis em qualquer um dos seguintes escopos: variável de instância, parâmetro de método, e variável local.
- Dado um algoritmo em pseudo-código, desenvolver um código de método que implementa o algoritmo usando sentenças condicionais (if e switch), sentenças de iteração (for, for-each, while, e do-while), sentenças de atribuição, e sentenças break e continue para controlar o fluxo no switch e nas sentenças de iteração.
- Dado um algoritmo e múltiplas entradas e saÃdas, desenvolver o código do método que implementa o algoritmo usando os parâmetros de métodos, um tipo de retorno, e uma sentença de retorno, e reconhecer os efeitos quando referencias a objetos e primitivas são passadas para métodos que os modificam.
- Dado um algoritmo em pseudo-código, desenvolver código que aplica corretamente e apropriadamente os operadore incluÃndo os operadores de atribuição (limitados a: =, +=, -=), operadores aritméticos (limitados a: +, -, *, /, %, ++, –), operadores relacionais (limitados a: <, <=, >, >=, ==, !=), operadores lógicos (limitados a: !, &&, ||) para produzir o resultado desejado. Também escrever código que determina a igualdade de dois objetos ou duas primitivas.
- Desenvolver código que usa o operador de concatenação (+), e os seguintes métodos da classe String: charAt, indexOf, trim, substring, replace, length, startsWith, e endsWith.
- Seção 5 – Fundamentos de Desenvolvimento Java.
- Descrever os propósitos de pacotes (packages) na linguagem Java, e reconhecer o uso correto de sentenças de import e package.
- Demonstrar o uso correto do comando “javac” (inclusive as opções de linha de comando: -d e -classpath), e demonstrar o uso correto do comando “java” (inclusive as opções de linha de comando: -classpath, -D e -version).
- Descrever os propósitos e tipos de classes dos seguintes pacotes Java: java.awt, javax.swing, java.io, java.net, java.util.
- Seção 6 – Tecnologias Java de Plataforma e Integração.
- Distinguir as caracterÃsticas básicas das três plataformas Java: J2SE, J2ME, e J2EE, e dado objetivos arquitetônicos de alto nÃvel, selecionar a(s) plataforma(s) apropriada(s).
- Descrever em um alto nÃvel os benefÃcios e as caracterÃsticas básicas do RMI.
- Descrever em um alto nÃvel os benefÃcios e as caracterÃsticas básicas das tecnologias JDBC, SQL e RDBMS.
- Descrever em um alto nÃvel os benefÃcios e as caracterÃsticas básicas das tecnologias JNDI, mensagem, e JMS.
- Seção 7 – Tecnologias Cliente.
- Descrever em um alto nÃvel as caracterÃsticas básicas, benefÃcios e inconvenientes de criar thin-clients usando HTML e JavaScript e os problemas e soluções relacionadas à distribuição.
- Descrever em um alto nÃvel as caracterÃsticas básicas, benefÃcios, inconvenientes e os problemas de distribuição relacionados a criação de clientes usando J2ME.
- Descrever em um alto nÃvel as caracterÃsticas básicas, benefÃcios, inconvenientes e os problemas de distribuição relacionados a criação de fat-clients usando Applets.
- Descrever em um alto nÃvel as caracterÃsticas básicas, benefÃcios, inconvenientes e os problemas de distribuição relacionados a criação de fat-clients usando Swing.
- Seção 8 – Tecnologias Servidor.
- Descrever em um alto nÃvel as caracterÃsticas básica de: EJB, servlets, JSP, JMS, JNDI, SMTP, JAX-RPC, Web Services (incluindo SOAP, UDDI, WSDL, e XML), e JavaMail.
- Descrever em um alto nÃvel as caracterÃsticas básicas de servlet e o suporte JSP para thin-clients HTML.
- Descrever em um alto nÃvel o uso e as caracterÃsticas básicas de uma seção EJB, beans de entidade e beans orientados a mensagem (message-driven).
- Descrever em uum alto nÃvel os benefÃcios fundamentais e inconvenientes de usar tecnologias do lado do servidor J2EE e descrever e comparar as caracterÃsticas básicas da camada web, camada de negócios e a camada EIS.
Simulados SCJA gratuitos
- scja.de – na lateral esquerda, tem uns botões azuis. Cada um deles é uma bateria de questões.
- ejavaguru.com – 10 questões de SCJA.
- cafe4java.com – 5 questões sobre SCJA.
- WGS-PREX-J019C – Esse é o melhor teste que eu já vi. É o teste oficial da Sun, com 150 questões e é um teste pago e o valor varia de paÃs para paÃs. O que certamente você não sabe é que esse teste está disponÃvel gratuitamente, só que neste site bem escondido. Você vai lá, se cadastra e recebe um link, login e senha. O ambiente não é tão bom quanto o Sun Learning Connection mas as questões são as mesmas. Inclusive nesse mesmo pacote tem testes para várias outras certificações, tudo de graça e dentro da lei. 🙂
Eu estou incrementando e organizando esse post aos poucos.