SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
Copyright 2015 Google Inc
TechTalk
Percepções de uma
viagem em dois mundos:
Java e Python
Ryan Padilha (ryan.padilha@gmail.com)
Aperte os cintos e aproveite o melhor do design!
Copyright 2015 Google Inc
Focused on software architecture and problem solving
JavaEE expert, SOA specialist and technical writer.
Experience of 13+ years in solution design and development software.
Working on Software Architecture, DevOps Culture and Cloud Computing.
https://ryanpadilha.github.io
http://br.linkedin.com/in/ryanpadilha
Ryan Padilha
Copyright 2015 Google Inc
Agenda
Introdução
Design de software em Python
1
2
Design de software em Java3
• Descritivo
• Análise de duas principais linguagens de programação do mercado.
• Design de software baseado em arquitetura de software e evolução de produtos.
Estudo de caso “Quase perfeito”4
Copyright 2015 Google Inc
Introdução
Copyright 2015 Google Inc
Introdução
Python
• Criada em 1991
• Guido van Rossum (62 anos)
• Baseada em ABC
• Automação tarefas diárias
• Tipagem dinâmica e forte
• Multi-plataforma
• Sintaxe concisa e clara
• Interpretada e compilada
• Possui 33 palavras reservadas
• Grande biblioteca padrão
• Aumentar a produtividade
• Implementação Original CPython
Java
• Criada em 1995
• James Gosling (63 anos)
• Baseada em C++
• Execução neutra em arquitetura
• Tipagem estática e forte
• Multi-plataforma
• Sintaxe verbosa e prolixa
• Compilador JIT e JVM Hotspot
• Possui 53 palavras reservadas
• Ecossistema robusto como plataforma
• Simplicidade na especificação
• Focada a multi-threading e distribuído
Infográfico
Copyright 2015 Google Inc
Introdução
Python - Filosofia “Zen of Python”
• “keeping it fun to use”
• Bonito é melhor que feio
• Explícito é melhor que implícito
• Simples é melhor que complexo
• Complexo é melhor que complicado
• Legibilidade importa
• Computação científica, web, IA
• Baixa curva de aprendizagem
Java - Princípios
• “write once run anywhere”
• Simples, orientada a objetos e familiar
• Robusto e seguro
• Arquitetura neutra e portável
• Executar com alto desempenho
• Interpretado, concorrente e dinâmico
• Enterprise server-side, web, mobile
• Alta curva de aprendizagem
Copyright 2015 Google Inc
Pesquisas
Stackoverflow - Developer Survey Results 2018 - link
Copyright 2015 Google Inc
Pesquisas
TIOBE Index for June 2018 - link
Copyright 2015 Google Inc
Pesquisas
Performance Comparison; Java, Python and Go on App Engine - link
Copyright 2015 Google Inc
Design de software
• Premissas e orientações:
• Deve ser simples
• Deve ser estável (soluções provadas)
• Não reinvente a roda
• Deve ser suportável, pense na manutenção e evolução
• Não justifique tecnologia pela tecnologia
• Esteja atento aos RNF: volumetria, performance, segurança, escalabilidade,
disponibilidade
• Medida de produtividade: tempo de desenvolvimento, complexidade,
confiabilidade, equação (LoC / Hrs)
• Seja o dono da solução técnica!
Copyright 2015 Google Inc
Design de software em Python
• Flask é um microframework baseado em WSGI
• Possui um vasto conjunto maduro de extensões
• Características principais:
• Servidor werkzeug de desenvolvimento e debug integrado
• RESTful request dispatching
• Template engine baseado em Jinja2
• Suporte a cookies seguros (client session)
• Documentação extensa
• Comunidade presente e ativa!
Copyright 2015 Google Inc
Design de software em Python
• Confusão ou liberdade para arquitetar aplicações?
• Application Factory
• Blueprints
• Gerenciamento de rotas
• Environment Configuration
• Error Handlers
• Logging e Debugging
• Webservices RESTful
• Renderização de templates
• Conexão com Base de Dados
• Modelo de autenticação e autorização
Copyright 2015 Google Inc
Design de software em Python
• Blueprint é usado para organizar o projeto entre componentes distintos
• Escolha seu modelo de acordo com o projeto:
• Estrutura Funcional - flask-website github
• Organização baseada em responsabilidades
• Agrupa arquivos semelhantes
• Estrutura Divisional
• Organização baseada em módulos
• Empacotamento
• http://exploreflask.com/en/latest/index.html
Copyright 2015 Google Inc
Design de software em Java
• Spring Framework é baseado nos padrões CDI e IoC
• Simplifica o processo de desenvolvimento em Java
• Características principais:
• Suporte abrangente a infra-estrutura em nível de aplicação
• Recursos organizados em cerca de 20 módulos
• Cria projetos para serem usados, JavaEE foca na padronização
• Estrutura de aplicação leve, emprega o padrão MVC
• Spring Boot com starters e conversão sobre configuração
• Documentação madura e extensa
Copyright 2015 Google Inc
Design de software em Java
• Complexidade inicial afasta iniciantes - web e spring
• Arquitetura com visão lógica em camadas
• Diretrizes:
• Alta coesão
• Baixo acoplamento
• Atribuição clara de responsabilidades
• Encapsulamento, modularidade, reuso
• Granularidade no nível correto
• Abstração baseado em interfaces
Copyright 2015 Google Inc
Design de software em Java
Copyright 2015 Google Inc
• BE: Atlas Authentication Server com Spring Security e JWT
• FE: Flask com Gunicorn e NGINX
Estudo de caso “Quase perfeito”
Copyright 2015 Google Inc
Estudo de caso “Quase perfeito”
Copyright 2015 Google Inc
Meu muito obrigado!
“Quando você descobre algo,
você se sente como se estivesse
apaixonado”. Wozniak

Mais conteúdo relacionado

Semelhante a Java e Python: Uma análise de arquitetura de software

Flask e Docker - rumo a AWS!
Flask e Docker - rumo a AWS!Flask e Docker - rumo a AWS!
Flask e Docker - rumo a AWS!Ryan Padilha
 
Arquitetura monolítica à orientação a serviços
Arquitetura monolítica à orientação a serviçosArquitetura monolítica à orientação a serviços
Arquitetura monolítica à orientação a serviçosRyan Padilha
 
Visão Geral do Java para Iniciantes - FLISOL 2011
Visão Geral do Java para Iniciantes - FLISOL 2011Visão Geral do Java para Iniciantes - FLISOL 2011
Visão Geral do Java para Iniciantes - FLISOL 2011Frederico Maia Arantes
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoAlvaro Viebrantz
 
Desenvolvimento ágil com Scrum e TFS 11 - Microsoft TechDay Sorocaba 2012
Desenvolvimento ágil com Scrum e TFS 11 - Microsoft TechDay Sorocaba 2012Desenvolvimento ágil com Scrum e TFS 11 - Microsoft TechDay Sorocaba 2012
Desenvolvimento ágil com Scrum e TFS 11 - Microsoft TechDay Sorocaba 2012Igor Abade
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosThiago Soares
 
Pipeconf no CoffeOps Campinas
Pipeconf no CoffeOps CampinasPipeconf no CoffeOps Campinas
Pipeconf no CoffeOps CampinasAécio Pires
 
Projeto Indiana
Projeto IndianaProjeto Indiana
Projeto Indianahellequin
 
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Renato Groff
 
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...Renato Groff
 
Gestão ágil de projetos de software com Scrum 2.0 e Team Foundation Server e ...
Gestão ágil de projetos de software com Scrum 2.0 e Team Foundation Server e ...Gestão ágil de projetos de software com Scrum 2.0 e Team Foundation Server e ...
Gestão ágil de projetos de software com Scrum 2.0 e Team Foundation Server e ...Alvaro Brognoli
 
Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013André Borgonovo
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourcetdc-globalcode
 
Práticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwarePráticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwareTiago Barros
 
WSO2 - Visão Geral de Negócios
WSO2 - Visão Geral de NegóciosWSO2 - Visão Geral de Negócios
WSO2 - Visão Geral de NegóciosEdgar Silva
 
Ambientes de Desenvolvimento, Groupware, MOOC's
Ambientes de Desenvolvimento, Groupware, MOOC'sAmbientes de Desenvolvimento, Groupware, MOOC's
Ambientes de Desenvolvimento, Groupware, MOOC'sJoão Pedro Daltro
 

Semelhante a Java e Python: Uma análise de arquitetura de software (20)

Flask e Docker - rumo a AWS!
Flask e Docker - rumo a AWS!Flask e Docker - rumo a AWS!
Flask e Docker - rumo a AWS!
 
Arquitetura monolítica à orientação a serviços
Arquitetura monolítica à orientação a serviçosArquitetura monolítica à orientação a serviços
Arquitetura monolítica à orientação a serviços
 
Visão Geral do Java para Iniciantes - FLISOL 2011
Visão Geral do Java para Iniciantes - FLISOL 2011Visão Geral do Java para Iniciantes - FLISOL 2011
Visão Geral do Java para Iniciantes - FLISOL 2011
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
Web Tools Pt Br
Web Tools Pt BrWeb Tools Pt Br
Web Tools Pt Br
 
Desenvolvimento ágil com Scrum e TFS 11 - Microsoft TechDay Sorocaba 2012
Desenvolvimento ágil com Scrum e TFS 11 - Microsoft TechDay Sorocaba 2012Desenvolvimento ágil com Scrum e TFS 11 - Microsoft TechDay Sorocaba 2012
Desenvolvimento ágil com Scrum e TFS 11 - Microsoft TechDay Sorocaba 2012
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
 
Pipeconf no CoffeOps Campinas
Pipeconf no CoffeOps CampinasPipeconf no CoffeOps Campinas
Pipeconf no CoffeOps Campinas
 
Projeto Indiana
Projeto IndianaProjeto Indiana
Projeto Indiana
 
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
 
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...
 
Gestão ágil de projetos de software com Scrum 2.0 e Team Foundation Server e ...
Gestão ágil de projetos de software com Scrum 2.0 e Team Foundation Server e ...Gestão ágil de projetos de software com Scrum 2.0 e Team Foundation Server e ...
Gestão ágil de projetos de software com Scrum 2.0 e Team Foundation Server e ...
 
Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013
 
Tecnologias ria2
Tecnologias ria2Tecnologias ria2
Tecnologias ria2
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
 
Práticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwarePráticas de Desenvolvimento de Software
Práticas de Desenvolvimento de Software
 
WSO2 - Visão Geral de Negócios
WSO2 - Visão Geral de NegóciosWSO2 - Visão Geral de Negócios
WSO2 - Visão Geral de Negócios
 
Com vocês, Django!
Com vocês, Django!Com vocês, Django!
Com vocês, Django!
 
Web tools pt-br
Web tools pt-brWeb tools pt-br
Web tools pt-br
 
Ambientes de Desenvolvimento, Groupware, MOOC's
Ambientes de Desenvolvimento, Groupware, MOOC'sAmbientes de Desenvolvimento, Groupware, MOOC's
Ambientes de Desenvolvimento, Groupware, MOOC's
 

Mais de Ryan Padilha

Startups - O novo paradigma da administração
Startups - O novo paradigma da administraçãoStartups - O novo paradigma da administração
Startups - O novo paradigma da administraçãoRyan Padilha
 
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelDesign Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelRyan Padilha
 
Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)Ryan Padilha
 
Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Ryan Padilha
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Ryan Padilha
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 

Mais de Ryan Padilha (6)

Startups - O novo paradigma da administração
Startups - O novo paradigma da administraçãoStartups - O novo paradigma da administração
Startups - O novo paradigma da administração
 
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelDesign Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
 
Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)
 
Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 

Java e Python: Uma análise de arquitetura de software

  • 1. Copyright 2015 Google Inc TechTalk Percepções de uma viagem em dois mundos: Java e Python Ryan Padilha (ryan.padilha@gmail.com) Aperte os cintos e aproveite o melhor do design!
  • 2. Copyright 2015 Google Inc Focused on software architecture and problem solving JavaEE expert, SOA specialist and technical writer. Experience of 13+ years in solution design and development software. Working on Software Architecture, DevOps Culture and Cloud Computing. https://ryanpadilha.github.io http://br.linkedin.com/in/ryanpadilha Ryan Padilha
  • 3. Copyright 2015 Google Inc Agenda Introdução Design de software em Python 1 2 Design de software em Java3 • Descritivo • Análise de duas principais linguagens de programação do mercado. • Design de software baseado em arquitetura de software e evolução de produtos. Estudo de caso “Quase perfeito”4
  • 4. Copyright 2015 Google Inc Introdução
  • 5. Copyright 2015 Google Inc Introdução Python • Criada em 1991 • Guido van Rossum (62 anos) • Baseada em ABC • Automação tarefas diárias • Tipagem dinâmica e forte • Multi-plataforma • Sintaxe concisa e clara • Interpretada e compilada • Possui 33 palavras reservadas • Grande biblioteca padrão • Aumentar a produtividade • Implementação Original CPython Java • Criada em 1995 • James Gosling (63 anos) • Baseada em C++ • Execução neutra em arquitetura • Tipagem estática e forte • Multi-plataforma • Sintaxe verbosa e prolixa • Compilador JIT e JVM Hotspot • Possui 53 palavras reservadas • Ecossistema robusto como plataforma • Simplicidade na especificação • Focada a multi-threading e distribuído Infográfico
  • 6. Copyright 2015 Google Inc Introdução Python - Filosofia “Zen of Python” • “keeping it fun to use” • Bonito é melhor que feio • Explícito é melhor que implícito • Simples é melhor que complexo • Complexo é melhor que complicado • Legibilidade importa • Computação científica, web, IA • Baixa curva de aprendizagem Java - Princípios • “write once run anywhere” • Simples, orientada a objetos e familiar • Robusto e seguro • Arquitetura neutra e portável • Executar com alto desempenho • Interpretado, concorrente e dinâmico • Enterprise server-side, web, mobile • Alta curva de aprendizagem
  • 7. Copyright 2015 Google Inc Pesquisas Stackoverflow - Developer Survey Results 2018 - link
  • 8. Copyright 2015 Google Inc Pesquisas TIOBE Index for June 2018 - link
  • 9. Copyright 2015 Google Inc Pesquisas Performance Comparison; Java, Python and Go on App Engine - link
  • 10. Copyright 2015 Google Inc Design de software • Premissas e orientações: • Deve ser simples • Deve ser estável (soluções provadas) • Não reinvente a roda • Deve ser suportável, pense na manutenção e evolução • Não justifique tecnologia pela tecnologia • Esteja atento aos RNF: volumetria, performance, segurança, escalabilidade, disponibilidade • Medida de produtividade: tempo de desenvolvimento, complexidade, confiabilidade, equação (LoC / Hrs) • Seja o dono da solução técnica!
  • 11. Copyright 2015 Google Inc Design de software em Python • Flask é um microframework baseado em WSGI • Possui um vasto conjunto maduro de extensões • Características principais: • Servidor werkzeug de desenvolvimento e debug integrado • RESTful request dispatching • Template engine baseado em Jinja2 • Suporte a cookies seguros (client session) • Documentação extensa • Comunidade presente e ativa!
  • 12. Copyright 2015 Google Inc Design de software em Python • Confusão ou liberdade para arquitetar aplicações? • Application Factory • Blueprints • Gerenciamento de rotas • Environment Configuration • Error Handlers • Logging e Debugging • Webservices RESTful • Renderização de templates • Conexão com Base de Dados • Modelo de autenticação e autorização
  • 13. Copyright 2015 Google Inc Design de software em Python • Blueprint é usado para organizar o projeto entre componentes distintos • Escolha seu modelo de acordo com o projeto: • Estrutura Funcional - flask-website github • Organização baseada em responsabilidades • Agrupa arquivos semelhantes • Estrutura Divisional • Organização baseada em módulos • Empacotamento • http://exploreflask.com/en/latest/index.html
  • 14. Copyright 2015 Google Inc Design de software em Java • Spring Framework é baseado nos padrões CDI e IoC • Simplifica o processo de desenvolvimento em Java • Características principais: • Suporte abrangente a infra-estrutura em nível de aplicação • Recursos organizados em cerca de 20 módulos • Cria projetos para serem usados, JavaEE foca na padronização • Estrutura de aplicação leve, emprega o padrão MVC • Spring Boot com starters e conversão sobre configuração • Documentação madura e extensa
  • 15. Copyright 2015 Google Inc Design de software em Java • Complexidade inicial afasta iniciantes - web e spring • Arquitetura com visão lógica em camadas • Diretrizes: • Alta coesão • Baixo acoplamento • Atribuição clara de responsabilidades • Encapsulamento, modularidade, reuso • Granularidade no nível correto • Abstração baseado em interfaces
  • 16. Copyright 2015 Google Inc Design de software em Java
  • 17. Copyright 2015 Google Inc • BE: Atlas Authentication Server com Spring Security e JWT • FE: Flask com Gunicorn e NGINX Estudo de caso “Quase perfeito”
  • 18. Copyright 2015 Google Inc Estudo de caso “Quase perfeito”
  • 19. Copyright 2015 Google Inc Meu muito obrigado! “Quando você descobre algo, você se sente como se estivesse apaixonado”. Wozniak