Top Banner
Globalcode – Open4education Java – From old school to modern art Marcos Roberto Ferreira Engenheiro de Software - ContaAzul
63

TDC 2015 - Java: from old school to modern art!

Jul 30, 2015

Download

Software

Marcos Ferreira
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: TDC 2015 - Java: from old school to modern art!

Globalcode  –  Open4education

Java – From old school to modern art Marcos Roberto Ferreira

Engenheiro de Software - ContaAzul

Page 2: TDC 2015 - Java: from old school to modern art!

• Engenheiro de Software na ContaAzul

• Formado em Sistemas de Informação pela UDESC

• +12 anos XP dev web

• +10 anos XP Java

• Colaborador do GUJavaSC

github.com/Marcosabout.me/marcos.ferreira

QUEM SOU EU?

MARCOS ROBERTO FERREIRA

[email protected]

Page 3: TDC 2015 - Java: from old school to modern art!

old school: ContaAzul antes de ser ContaAzul

modern art: ContaAzul Startup

APIs/Projetos usados no ContaAzul

AGENDA…

1

2

3

Page 4: TDC 2015 - Java: from old school to modern art!

O que é ContaAzul?

Page 5: TDC 2015 - Java: from old school to modern art!

5

Page 6: TDC 2015 - Java: from old school to modern art!

6

Alguns números…

Page 7: TDC 2015 - Java: from old school to modern art!

7

MPE’s que já utilizaram o ContaAzul até agora

+350.000

Novas empresas que começam a usar todo mês

23.000

Page 8: TDC 2015 - Java: from old school to modern art!

8

Número de transações financeiras

15.000.000 48.000.000.000Total de transações

Vendas criadas

2.500.000 ~4.000.000Contatos na nossa plataforma

Page 9: TDC 2015 - Java: from old school to modern art!

9

Tudo isso em 3 anos

Page 10: TDC 2015 - Java: from old school to modern art!

10

old school…https://c2.staticflickr.com/8/7217/7298542244_5c356381eb_b.jpg

Page 11: TDC 2015 - Java: from old school to modern art!

20002005

eFinance

Page 12: TDC 2015 - Java: from old school to modern art!

20002005

eFinance

2006

Page 13: TDC 2015 - Java: from old school to modern art!

20002005

eFinance

20062009

AgilERP

Page 14: TDC 2015 - Java: from old school to modern art!

/app

<%view%>Servlet

Business Object

Page 15: TDC 2015 - Java: from old school to modern art!

public class MemberServlet extends HTTPServlet{

public void doGet(…) throws IOException{

List<Member> members = memberService.list();

request.setAttribute(“members”, members);

String jsp = “member.jsp";request.getRequestDispatcher( ) .forward( request, response );

}}

Page 16: TDC 2015 - Java: from old school to modern art!

<%@ page contentType="text/html; charset=UTF-8"%><html><body>

<c:forEach var="member" items=“{member}”>${member} <br/>

</c:forEach></body>

</body>

Page 17: TDC 2015 - Java: from old school to modern art!

/app

<%viewA%>ControllerA

BusinessObjectA

<%viewB%>ControllerB

BusinessObjectB

ServletController

Page 18: TDC 2015 - Java: from old school to modern art!

18

http://www.jajakarta.org/struts/struts1.2/documentation/ja/target/images/struts.gif http://www.techideator.com/wp-content/uploads/2015/03/Spring-MVC-e1410633092262.png

http://vraptor3.vraptor.org/assets/images/logo.png https://www.playframework.com/assets/images/logos/play_full_color.png

Page 19: TDC 2015 - Java: from old school to modern art!

19

Page 20: TDC 2015 - Java: from old school to modern art!

20

flexibilidade verbosidade

escalabilidade

produtividade

X

Page 21: TDC 2015 - Java: from old school to modern art!

21

modern art…https://www.socwall.com/images/wallpapers/15185-3458x2306.jpg

Page 22: TDC 2015 - Java: from old school to modern art!
Page 23: TDC 2015 - Java: from old school to modern art!

1a. empresa Brasileira

selecionada 500Startups

Page 24: TDC 2015 - Java: from old school to modern art!
Page 25: TDC 2015 - Java: from old school to modern art!

1a. empresa Brasileira

selecionada 500Startups

Lançamento oficial

Page 26: TDC 2015 - Java: from old school to modern art!

26

Page 27: TDC 2015 - Java: from old school to modern art!

27

flexibilidade verbosidade

escalabilidade

produtividade

X

Page 28: TDC 2015 - Java: from old school to modern art!

Como resolver o problema?

http://sustainablesurf.org/wp-content/uploads/2011/05/Me-and-shaping-dust.jpg

Page 29: TDC 2015 - Java: from old school to modern art!

Construir um framework?

http://sustainablesurf.org/wp-content/uploads/2011/05/Me-and-shaping-dust.jpg

Page 30: TDC 2015 - Java: from old school to modern art!

Mudar de stack?

Page 31: TDC 2015 - Java: from old school to modern art!

Ou evoluir dentro da tecnologia?

Page 32: TDC 2015 - Java: from old school to modern art!

http://www.railz.net/images/ocean/surf1/hangten/hangten.jpg

Page 33: TDC 2015 - Java: from old school to modern art!

APIs e projetos no ContaAzul

Page 34: TDC 2015 - Java: from old school to modern art!

34

lombok

Page 35: TDC 2015 - Java: from old school to modern art!

35

private String name;

public String getName() {return name;

}

public void setName(String name) {this.name = name;

}

Page 36: TDC 2015 - Java: from old school to modern art!

36

private String name;

public String getName() {return name;

}

public void setName(String name) {this.name = name;

}

@Getter@Setterprivate String name;

Page 37: TDC 2015 - Java: from old school to modern art!

37

@Getter@Setterpublic class Member {private Long id;private String name;

}

Page 38: TDC 2015 - Java: from old school to modern art!

38

@Getter@Setterpublic class Member {private Long id;private String name;

}

@Getter@Setter@ToString@EqualsAndHashCodepublic class Member {private Long id;private String name;

}

Page 39: TDC 2015 - Java: from old school to modern art!

39

@Getter@Setter@ToString@EqualsAndHashCodepublic class Member {private Long id;private String name;

}

Page 40: TDC 2015 - Java: from old school to modern art!

40

@Getter@Setter@ToString@EqualsAndHashCodepublic class Member {private Long id;private String name;

}

@Datapublic class Member {private Long id;private String name;

}

Page 41: TDC 2015 - Java: from old school to modern art!

41

public class Member {private Long id;private String name;public Member() {}public Member(Long id, String name) {super();this.id = id;this.name = name;

}}

Page 42: TDC 2015 - Java: from old school to modern art!

42

public class Member {private Long id;private String name;public Member() {}public Member(Long id, String name) {super();this.id = id;this.name = name;

}}

@NoArgsConstructor@AllArgsConstructorpublic class Member {private Long id;private String name;

}

Page 43: TDC 2015 - Java: from old school to modern art!

43

Member.builder().id(1L).name(“Marcos")

.build();

Page 44: TDC 2015 - Java: from old school to modern art!

44

@Builderpublic class Member {

private Long id;private String name;

}

Member.builder().id(1L).name(“Marcos")

.build();

Page 45: TDC 2015 - Java: from old school to modern art!

45

javaee

Page 46: TDC 2015 - Java: from old school to modern art!

/app

<%viewA%>ControllerA

BusinessObjectA

ServletController formB.html

/rest/B

BusinessObjectB

Page 47: TDC 2015 - Java: from old school to modern art!

formA.html

/rest/A

BusinessObjectA

/app

formB.html

/rest/B

BusinessObjectB

Page 48: TDC 2015 - Java: from old school to modern art!
Page 49: TDC 2015 - Java: from old school to modern art!

49

@Path("user")@Produces(APPLICATION_JSON)@Consumes(APPLICATION_JSON)public class UserResource {

@POSTpublic User save(User user){

return userService.save(user);}

@GETpublic List<User> list(){

return userService.list();}

}

REST + JSON

Page 50: TDC 2015 - Java: from old school to modern art!

50

@PersistenceContextprivate EntityManager entityManager;

private void save(Long userId, User user) {if (userId == null)entityManager.persist(user);

else {user.setId(userId);entityManager.merge(user);

}}

persitência de dados

Page 51: TDC 2015 - Java: from old school to modern art!

51

@Statelesspublic class UserService {

@TransactionAttribute(REQUIRES_NEW)public void save(Long userId, User user) {

…}

}

transações

@Statelesspublic class UserService {public void save(Long userId, User user) {

…}

}

Page 52: TDC 2015 - Java: from old school to modern art!

52

@Statelesspublic class PaymentService {@Asynchronouspublic void update(User user){…}

}

@Injectprivate PaymentService paymentService;

public User save(User user) {paymentService.update(user);

}

processamento assíncrono

Page 53: TDC 2015 - Java: from old school to modern art!

53

@Statelesspublic class UserJob {

@Schedule(hour="*",minute="*",second="*/20")public void schedule(){…}

}

agendamento

Page 54: TDC 2015 - Java: from old school to modern art!

54

querydsl

Page 55: TDC 2015 - Java: from old school to modern art!

55

new JPAQuery(entityManager).from(member).list(member);

import static org.gujavasc.entities.QMember.member;

Page 56: TDC 2015 - Java: from old school to modern art!

56

new JPAQuery(entityManager).from(post).innerJoin(post.member, member).list(QPost.create(member.name, post.title, post.content));

import static org.gujavasc.entities.QMember.member;import static org.gujavasc.entities.QPost.post;

Page 57: TDC 2015 - Java: from old school to modern art!

57

new JPAQuery(entityManager).from(post).leftJoin(post.member, member).list(QPost.create(member.name, post.title,

post.content));

import static org.gujavasc.entities.QMember.member;import static org.gujavasc.entities.QPost.post;

Page 58: TDC 2015 - Java: from old school to modern art!

58

new JPAQuery(entityManager).from(post).leftJoin(post.member, member).where(post.status.eq(DRAFT)).list(QPost.create(member.name, post.title,

post.content));

import static org.gujavasc.entities.QMember.member;import static org.gujavasc.entities.QPost.post;

Page 59: TDC 2015 - Java: from old school to modern art!

59

new JPAUpdateClause(entityManager, post).set(post.status, Status.PUBLISHED).execute();

import static org.gujavasc.entities.QPost.post;

Page 60: TDC 2015 - Java: from old school to modern art!

60

new JPADeleteClause(entityManager,post).where(post.status.in(Status.PUBLISHED,Status.DRAFT)).execute();

import static org.gujavasc.entities.QPost.post;

Page 61: TDC 2015 - Java: from old school to modern art!

61

Page 62: TDC 2015 - Java: from old school to modern art!

Dúvidas?!