Ae galera como de costume passando para relatar…
Passei na SCJD, fiz o projeto entre janeiro e fevereiro deste ano, estava todo pronto, porém eu tinha que enviar o projeto e fazer a prova escrita, aí eu não estava nem um pouco afim de gastar $$ pagando os R$ 330,00 de um voucher na sun. Então esperei e só agora surgiu um voucher mais barato, aí enviei o projeto e fiz a prova semanas atrás.
Detalhe, não adianta enviar o projeto e ficar aguardando pra fazer a prova, eles só corrigem seu projeto DEPOIS que você fizer a prova escrita, além do mais, nesse tempo que não for fazer a prova, pode ser útil pra revisar o projeto se necessário, pois se já tiver submetido o projeto já era, não pode mais corrigir.
Aí só conferi se estava tudo ok no projeto que estava pronto desde começo do ano, enviei pra sun e no outro dia fui fazer a prova escrita.
Result:
The maximum possible score is 400; the minimum to pass is 320.
General Considerations (maximum = 100): 100
Documentation (maximum = 70): 70
O-O Design (maximum = 30): 30
GUI (maximum = 40): 29 :roll:
Locking (maximum = 80): 80
Data store (maximum = 40): 40
Network server (maximum = 40): 40
Result is 389/400
Pelo resultado achei normal, eu não sou bom de design, único local onde perdi ponto foi na interface, e minha interface ficou muito, muito simples.
Em relação ao projeto achei bem interessante de ser desenvolvido, faz você rever alguns conceitos que vamos esquecendo ao usar muitos frameworks por ai.
Os grandes pontos do projeto está no mecanismo de rede RMI ou Sockets, e o bloqueio dos registro no file.db
Eu usei RMI, já tinha usado socket então resolvi fazer pelo que eu conhecia menos até pra rever um conceito, apesar que hoje dificilmente alguém ainda use isso diretamente.
A parte de bloqueio foi uma parte mais elaborada, pois tive que fazer uma estratégia para guardar quem era o cliente que estava bloqueando, nas novas atribuições já vem no método de bloqueio e desbloqueio um parâmetro para o “cookie” do cliente que solicitou, porém nos projetos antigos não existia esse parâmetro e isso precisa ser contornado, foi meu caso.
Quanto à persistência, eu fiz as duas maneiras que normalmente são feitas e decidi por uma:
1- Salvar registros no file.db - esta forma, a cada operação eu escrevia direto no arquivo de dados, isso torna um pouco mais lenta operação devido IO, mas imperceptível no projeto, a grande questão é o risco de corromper os dados, 1 byte escrito em local incorreto já era o arquivo e o projeto será reprovado.
2- Salvar registros em memória - desta maneira, as operações são gravadas em memória sempre, e aí em determinadas operações, como por exemplo, parar o servidor, é realizada a operação de salvar os registros da memória pro file.db
O risco desta forma é se o pc onde está o server desligar, terminar o processo do java, etc… todos os dados serão perdidos, pois não terá salvo no arquivo… mas isso você pode justificar qué uma premissa ter um ambiente seguro contra falhas de energia etc…
Bem é questão de escolha… no final eu acabei optando pela opção 1, mas foi sem juízo de valor, simplesmente escolhi, pois ambos funcionam bem.
No geral, é fazer a documentação do projeto, código bem escrito e comentado…
A prova pra defender o projeto é sempre a mesma pra todo mundo, são simplesmente questões para eles saberem se foi você que fez.
Em relação se vale a pena ou não fazer essa prova, já tem um tópico aqui com muitas opiniões, mas se você tem voucher disponível e um tempinho pra divertir, acho que é válido, além do mais, aqui em Brasília já vi algumas vagas pedindo essa certificação. Mas se não tem esse tempo, melhor aproveitar estudando algo mais atual, sei lá XP, DDD… o que tiver na moda…
No geral é isso.
Valeu, Hewerton Crisóstomo.