O documento apresenta uma palestra sobre como se tornar um desenvolvedor Java "NINJA", abordando tópicos como boas práticas de codificação, exemplos de diferenças entre String e StringBuffer, explicação sobre o Garbage Collector, iniciativas de código aberto para desenvolvedores, dicas para se destacar na comunidade Java e sobre grupos de usuários Java.
3. Cesar A. Nogueira
• Engenheiro de Software na Indra;
• Trabalhou em grandes empresas como
Instituto de Pesquisas Eldorado,
IBM (USA), Fundação CPqD
trabalhando diretamente com Java e suas tecnologias;
• Atual organizador do @SouJavaCampinas;
@cesarnogcps
26 anos
4. Hivison do Nascimento Moura
• Analista de sistemas na Matera;
• Trabalhou em grandes empresas como CPFL e Indra
• Trabalha diretamente com Java e suas tecnologias;
• Membro do @SouJavaCampinas;
@hivison_moura
25 anos
6. • Boas práticas de codificação em Java
• Exemplo de diferenças entre String e StringBuffer (Cesar)
• Exemplo Garbage Collector (Hivison)
• Open-Source Java para futuros desenvolvedores NINJAS
• Iniciativas Adopt-a-JSR e OpenJDK
• Como um NINJA se destaca em uma comunidade Java
• 5 dicas de como ser tornar um desenvolvedor Java NINJA
• O que são JUGs e como fazer parte de um grupo NINJA de Java
Agenda
9. Strings são IMUTÁVEIS
Então você se pergunta
se Strings são imutáveis,
então porque eu consigo concatenar
vários valores a uma String, tornando-a
diferente da original?
10. Você está criando um novo objeto em memória!
Cada vez que você acha que está
concatenando uma String com
outra, você está criando diversos
objetos distintos em memória, e
as Strings “antigas” perdem
referência, mas continuam lá.
11. public class ConcatenaString {
public static void main (String[] args){
//Cria um objeto em memória
String str = "hello";
/*
* Sabemos que nossa string agora será: "hello world".
*
* Ocorre que é criada a String "world" em memória,
* depois a JVM cria um outro objeto "hello world".
* No total vão ser 3 objetos para que essa 'concatenação'
* ocorra.
* */
str = str.concat(" world");
/*
* O mesmo conceito é aplicado acima. É criada uma string
* "from java" em memória, depois é criada uma
* nova juntando "hello world from java".
* No total temos agora 5 objetos em memória,
* sendo que apenas 1 estamos utilizando,
* veja que desperdício.
* */
str += " from Java";
}
}
12. StringBuilder vs String
“A performance do StringBuilder
em detrimento do String comum é
exponencialmente melhor quando
precisamos concatenar valores.”
Exemplo rodando em:
https://is.gd/KnVUuV
17. SOLID Principles
São chamados de SOLID após a popularização dos mesmos por meio do
Uncle Bob (os 5 princípios fazem parte do famoso livro “Agile Principles, Patterns and Practices”).
Por que CINCO princípios?
18. É um acrônimo – onde cada letra corresponde a um princípio:
[S]ingle Responsability Principle
[O]pen/Closed Principle
[L]iskov Substitution Principle
[I]nterface Segregation Principle
[D]ependency Inversion Principle
19. SRP, ou Princípio da Responsabilidade Única
Este princípio nada mais é do que uma perspectiva diferente para um dos mais fundamentais
princípios da orientação a objetos: a coesão.
Sua definição diz que: “Uma classe deve ter somente uma razão para mudar”.
20.
21. O SRP é um dos princípios mais importantes que existe
na orientação a objetos. Lembrando-se dele, você
poderá projetar classes menores, mais coesas e de
mais fácil entendimento.
23. Leitura do Código
BigDecimal valor = BigDecimal.ZERO;
for(Conta x : lista) {
for(ItemConta y : x.getItens()) {
if (y.getValor() != null) {
valor = valor.add(y.getValor());
}
}
BigDecimal media =
valor.divide(BigDecimal.valueOf(lista.size()));
24. Leitura do Código
BigDecimal valorTotal = BigDecimal.ZERO;
for(Conta conta : contas) {
for(ItemConta itemConta : conta.getItens()) {
if (itemConta.getValor() != null) {
valorTotal = valorTotal.add(itemConta.getValor());
}
}
BigDecimal quantidadeDeContas =
valor.divide(BigDecimal.valueOf(contas.size()));
BigDecimal media = valor.divide(quantidadeDeContas);
42. • Importante iniciativa para os Devs
NINJAS aprimorarem os padrões da linguagem Java;
• Grupos globais de membros de JUGs trabalham em JSRs;
• Receba olhares de empresas de tecnologia locais que procuram NINJAS;
• Te ajuda a ser tornar um profissional NINJA, que ajuda seu grupo local;
• Atraia mais desenvolvedores NINJAS para sua comunidade;
Adopt-a-JSR
44. • Java Specification Requests (JSRs)
são descrições reais de especificações propostas para a plataforma Java.
• Existem inúmeras JSRs que são criadas a todo momento e são discutidas
pela comunidade, através do processo de análise e aprovação.
• Comunidade de desenvolvimento das especificações da tecnologia Java
45. O Java Community Process (JCP) convida TODOS a moldar as
especificações Java através do programa Adopt-a-JSR,
ENCORAJANDO a comunidade global de Java a se envolver
com as Java Specification Requests (JSRs).
Como você,
dev NINJA pode então moldar
o Java NESTE MOMENTO?
46. JUG: O que é e como participar de um??
365 Grupos de Usuários Java no mundo
~ 894.000 membros
Existem em 88 Países
O Brasil está em 2º lugar no ranking de membros,
estando na frente da Alemanha que está em 3º lugar
50. 2. Dev Ninja, precisa estudar!
Há sempre novidades no mundo
Java
51. 3. Compartilhe conhecimento
por onde for!
“Ninguém é tão sábio suficiente que não tenha algo a aprender.
DEVs NINJAs sempre estão aprendendo algo novo.”