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

Percepções de uma viagem em dois mundos: Java e Python

  • 1.
    Copyright 2015 GoogleInc 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 GoogleInc 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 GoogleInc 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 GoogleInc Introdução
  • 5.
    Copyright 2015 GoogleInc 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 GoogleInc 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 GoogleInc Pesquisas Stackoverflow - Developer Survey Results 2018 - link
  • 8.
    Copyright 2015 GoogleInc Pesquisas TIOBE Index for June 2018 - link
  • 9.
    Copyright 2015 GoogleInc Pesquisas Performance Comparison; Java, Python and Go on App Engine - link
  • 10.
    Copyright 2015 GoogleInc 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 GoogleInc 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 GoogleInc 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 GoogleInc 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 GoogleInc 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 GoogleInc 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 GoogleInc Design de software em Java
  • 17.
    Copyright 2015 GoogleInc • BE: Atlas Authentication Server com Spring Security e JWT • FE: Flask com Gunicorn e NGINX Estudo de caso “Quase perfeito”
  • 18.
    Copyright 2015 GoogleInc Estudo de caso “Quase perfeito”
  • 19.
    Copyright 2015 GoogleInc Meu muito obrigado! “Quando você descobre algo, você se sente como se estivesse apaixonado”. Wozniak