Java: Por onde começar nos dias de hoje?
-
Upload
thiago-mazarao-maltempi -
Category
Software
-
view
94 -
download
1
Transcript of Java: Por onde começar nos dias de hoje?
![Page 1: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/1.jpg)
JAVA: Por onde começar nos dias de hoje?
FATEC DEV DAY
![Page 2: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/2.jpg)
Sobre o palestrantePor: Thiago Mazarão Maltempi
Github: http://github.com/maltempi
LinkedIn: https://br.linkedin.com/in/maltempi
--------------------
Formado em Análise e desenvolvimento de Sistemas
pela Fatec Mogi Mirim.
Trabalha com desenvolvimento desde 2011 e
atualmente trabalha no instituto Venturus (www.
venturus.org.br).
![Page 3: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/3.jpg)
Nível 0 de aprendizado em Java.Conceitos Básicos que você precisa saber antes de começar:
- Orientação a objetos (Classes, Objetos, classe abstrata,
interfaces, generics) e conceitos do Java Standard Edition.
- JDBC - Um overview apenas para saber como funciona
conexões com banco de dados, pool de conexões etc.
- Preciso ser um ninja Java SE para continuar? NÃO!
![Page 4: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/4.jpg)
Áreas de atuação comuns para Java
JAVA SE
WEB
ANDROID
![Page 5: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/5.jpg)
E o que basicamente preciso saber sobre WEB?1. Aplicações Cliente - Servidor
2. Básico de HTTP para você criar RESTs.
3. Persistência de dados (banco de dados).
4. Inversão de controle e injeção de dependência
5. MVC
6. HTML + CSS + Javascript
7. Maven ou Gradle.
Leia sobre tudo isso, e a partir daí já comece a fazer NA
PRÁTICA!
![Page 6: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/6.jpg)
OK, e por onde começar ou por onde NÃO começar?Tente focar em coisas novas que estão rolando na comunidade
JAVA.
Tecnologias antigas exigem conhecimento de muitos detalhes.
Detalhes são importantes, mas eles devem ser aprendidos aos
poucos.
Tecnologias novas já tratam grandes problemas antigos,
causadores de longas curvas de aprendizado e calvices.
![Page 7: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/7.jpg)
JAVA WEB, e os problemas de ontem (e as vezes de hj)Muito código! E muito código significa:
- + Horas gastas desenvolvendo
- + Horas gastas testando
- + Bugs!
- + Horas gastas resolvendo bugs
- + E então quando encontra a causa do
bug...
![Page 8: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/8.jpg)
Complexidade de configuração… Você descobre que era uma configuração
errada em um XML.
Muitas coisas antes eram resolvidas com base
em configurações XML.
![Page 9: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/9.jpg)
São rodadas em servidores de aplicação pesadosTecnologias antigas são extremamente
dependentes de servidores de aplicação.
Dependendo do que é feito, é de difícil migração
entre servidores de aplicação
Ex: configurações de segurança, JMS (serviço
de mensageria)
Altíssimo custo para se criar testes unitários e
integração
![Page 10: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/10.jpg)
E o frontend então...● Backend e Frontend são fortemente acoplados
○ Mas era proposital, eles realmente pensavam que isso era uma boa
ideia.
○ Poderia até ser, mas hoje as interfaces WEB evoluíram.
● HTML, CSS e JS criados a partir do backend (JSP, JSF, GWT ...)
● Mistura de regras de negócio de frontend e backend, tornando-se uma
bagunça.
● Sem controle do frontend = gambiarras para suprir limitações.
![Page 11: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/11.jpg)
Mas calma, esses problemas foram resolvidos!
![Page 12: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/12.jpg)
E inclusive na plataforma Java!
![Page 13: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/13.jpg)
Arquitetura de uma aplicação básicaBROWSER / MOBILE /
WHATEVER
Faz chamadas HTTP
(GET, POST, PUT, DELETE etc)
HTTP REQUEST
SERVIDOR ( MVC / DATA PERSISTENCE / WHATEVER)
HTTP RESPONSE
Base de
Dados
REST
Podem ser outras
interfaces também.
Serviços(Regras
de negócio)
Persistência(Forma de
acesso à base de dados)
![Page 14: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/14.jpg)
Framework MVC?
{
“name”: “Saul Goodman”,
“phone”: “505 503 4455”,
“email”: “[email protected]”
}
Spring MVC!
Por exemplo, vamos cadastrar um usuário na base, então o client mandará um request
ao server na URL http://127.0.0.1:8080/usuario via método POST um dado em JSON ou
outro formato:
![Page 15: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/15.jpg)
Framework MVC!O que o framework MVC vai fazer? Criar uma interface entre o cliente e o servidor,
convertendo o dado enviado em objetos, para conseguirmos trabalhar:
@RestController(“/usuario”)public class UsuarioController {
@Postpublic void cadastrarUsuario(Usuario usuario) {
System.out.println(“Name: ” + usuario.getName());System.out.println(“Phone: ” + usuario.getPhone());System.out.println(“Email: ” + usuario.getEmail());
}}
![Page 16: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/16.jpg)
Framework MVC!!!!!Note que a conversão de JSON para objeto Java foi totalmente transparente à nós,
programadores.
Foi o framework MVC (Spring MVC) quem fez toda essa parte para nós.
Esta foi a parte de controller da aplicação, onde interagimos com o o VIEW.
Spring MVC já não é novidade há um tempo, porém, é extremamente importante para
aplicações modernas.
![Page 17: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/17.jpg)
Precisando de persistência de dados?Spring data!
Sem mais necessidade de longas configurações
Sem mais criação de mais do mesmo (Connection Factories, classes generics de acesso
a dados etc).
Sem mais longos criterias ou HSQL.
Agora basta você fazer sua configuração em alto nível e depois criar suas entidades.
![Page 18: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/18.jpg)
Precisando criar telas?Misturar de código em backend com frontend não é mais uma boa ideia.
Perca o medo de Javascript, HTML e CSS, eles são seus amigos! :-)
Hoje em dia temos Bootstrap, SemanticUI, Angular JS, React JS, Ember JS e outros
123803812328102 frameworks para frontend!
Além de ferramentas que vão facilitar sua vida, por exemplo: Bower, Grunt, Gulp etc.
![Page 19: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/19.jpg)
Configurações? Facilidade de deploy? SPRING BOOT!Ele já tem uma configuração default para você começar a desenvolver
instantaneamente.
Altamente customizável.
Crie perfis de runtime para testes, desenvolvimento, homologação etc.
É prático: Ele cria um JAR que encapsula tudo para você: projetos, dependência,
servidor de aplicação etc.
Quer rodar seu projeto em produção?
java -jar meuProjetoEmProducao.jar
![Page 20: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/20.jpg)
Sem mais desculpas para não fazer testes!Crie um perfil de testes, tenha um ambiente
totalmente isolado e faça seus testes!
Isso é uma grande vantagens a outras tecnologias
antigas, que necessitavam de pesados servidores
de aplicação.
![Page 21: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/21.jpg)
![Page 22: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/22.jpg)
Por onde continuar?Spring Security
Integração contínua (Jenkins, Sonar, Code review)
Arquiteturas micro services
Aplicações distribuídas
Spring Integration
![Page 23: Java: Por onde começar nos dias de hoje?](https://reader034.fdocumentos.com/reader034/viewer/2022051006/58ee5b1c1a28ab01318b4719/html5/thumbnails/23.jpg)