SlideShare uma empresa Scribd logo
1 de 23
Aumentando a produtividade
Uso de frameworks ágeis para
desenvolvimento web
Miguel Galves
48 horas entre início e instalação no cliente
Projeto Haiti
Haiti - Minustah
Python
 Linguagem script, criada no final dos anos 80
 Multiplataforma
 Multiparadigma (OO, Funcional, Procedural)
 Sintaxe limpa e concisa
 Binding para diversas linguagens
 Extensível em C
Django
 Criado em 2003 como projeto interno do
Lawrence Journal
 Objetivo: permitir a criação de novas
funcionalidades em curtos espaços de tempo
 Open Source desde 2005
 Comunidade Ativa
 http://www.djangoproject.com
“THE WEB FRAMEWORK FOR PERFECTIONISTS
WITH DEADLINES”
O que realmente interessa no Django...
Porque Django em vez de J2EE
para desenvolvimento Web?
SIMPLICIDADE
J2EE

Enterprise JavaBeans Specification (EJB),

Java Persistence API (JPA),

JavaServer Pages Specification (JSP),

Java Servlet Specification,

JavaServer Faces (JSF),

JavaServer Pages Standard Tag Library (JSTL),

JDBC API,

Java Naming and Directory Interface
Specification (JNDI),

Java Message Service (JMS),

Java Transaction API (JTA),

Java Transaction Service (JTS),

JavaMail API Specification,

JavaBeans Activation Framework Specification
(JAF),

J2EE Connector Architecture,

Java API for XML Processing (JAXP),

Java Authentication and Authorization Service (JAAS),
Version 1.0

Java Authorization Service Provider Contract for
Containers(JACC)

Web Services for Java EE

Java API for XML-based RPC (JAX-RPC)

Java API for XML Registries (JAXR)

Java Management Extensions

Java Platform, Enterprise Edition Management
Specification

Java Platform, Enterprise Edition Deployment
Specification

Java API for XML-based Web Services (JAX-WS)

Java Architecture for XML Binding (JAXB)

SOAP with Attachments API for Java (SAAJ)

Web Services Metadata for the Java Platform

Streaming API for XML (StAX)
J2EE foca em blocos estruturais grandes e
complexos, tentando resolver problemas
que talvez não existam!
Django: DRY (Don't Repeat Yourself)
 Foco na automação de tarefas
 Arquivos de configuração em … Python
 Criação automática de interfaces de Administração
 ORM
 Templates
 Mecanismo de autenticação / perfil de usuários
 Hot deploy (que realmente funciona)
 Ambiente de testes integrado
 Plugins: paginação, sitemaps, email, visualização de
dados, RSS, i18n, l10n, redirecionamento, serialização,
cache
Django foca em fornecer
ferramentas que impactam
diretamente na produtividade de
desenvolvimento.
Confiabilidade? Robustez? Escalabilidade?
Python é uma linguagem séria e
confiável?
 Yahoo!
 Google
 CERN
 NASA
 Atech
 ILM
 Autodesk
 Frequentis
 ESRI
Django é confiável e robusto?
Servidor de aplicações por trás do Google
Apps Engine
 Versão gratuita permite até 5M de pageviews
por mês....
Washington Post
 8.5M pageviews por mês
Escalabilidade
 O framework sozinho não resolve
 Projeto hardware e arquitetura de SW
 Django oferece ferramentas que ajudam a
escrever aplicações escaláveis
 Cache, suporte a múltiplas bases de dados
 Django permite integração de diversas ferramentas
externas comprovadas, que podem ser
adicionadas conforme a necessidade.
 Não impacta o dia a dia de desenvolvimento
Exemplo de Setup de Produção
 Cache em memória: Memcache
 Facebook, Flickr, Twitter,
Youtube, LiveJournal,
Wikipedia
 HTTP: Apache
 Market Share: 54%
(NetCraft)
 Balanceamento de carga
 Arquivos estático: Nginx
 Utilizado por 4% dos sites
mais acessados em 2010.
Linguagens Dinâmicas vs Java
Python (Django)
Ruby (Ruby On Rails)
Scala (Lift)
Groovy (Grails)
Contras
Performance de execução
Python/Ruby: sem tipagem estática
 Ferramentas de refactoring menos eficientes
 Leitura de código as vezes mais complicada
Mão de obra menos abundante
Envolvem paradigmas e conceitos
avançados
Prós
 Mais concisas, mais expressivas
 Mesmas funcionalidades, menos código
 Menos código => maior facilidade de
manutenção
 Menos código => maior produtividade (5x)
 Mais poderosas
 Introspecção
 Metaprogramação
Prós – Produtividade
Ciclo padrão de desenvolvimento Java
Ciclo padrão de desenvolvimento linguagens dinâmicas
Integrando o melhor dos mundos
 Plataforma Java
 Máquina virtual extremamente eficiente
 JIT
 API Extensa
 Oracle/Sun abriu as portas para linguagens
de script para JVM
Integrando o melhor dos mundos
Jython, JRuby
 Interpretadores que rodam na JVM,
permitindo acesso direto à APIs Java
Scala, Groovy
 Linguagens desenvolvidas para serem
executadas na JVM
Conclusão?
Cada tarefa requer ferramentas apropriadas.
Estamos refletindo sobre isso quando
desenvolvemos nossos projetos?
Dúvidas? Sugestões?
Críticas?
Obrigado

Mais conteúdo relacionado

Mais procurados

Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017Renato Groff
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosFelipe Gadelha Ruoso
 
Introdução ao LiveOak
Introdução ao LiveOakIntrodução ao LiveOak
Introdução ao LiveOakjesuinoPower
 
Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016Renato Groff
 
JavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavaJavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavajesuinoPower
 
Testes de interfaces Web com Selenium
Testes de interfaces Web com SeleniumTestes de interfaces Web com Selenium
Testes de interfaces Web com SeleniumRenato Groff
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Erik Cruz
 
Desenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJangoDesenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJangoRafael Nunes
 
Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017Renato Groff
 
Conectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SPConectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SPjesuinoPower
 
Comparando as Hypes - React & Vue
Comparando as Hypes - React & VueComparando as Hypes - React & Vue
Comparando as Hypes - React & VueHerbert Henrique
 
Pyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para WebPyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para WebNielson Santana
 
Dev ops integração contínua com jenkins
Dev ops integração contínua com jenkinsDev ops integração contínua com jenkins
Dev ops integração contínua com jenkinsMichel Cordeiro
 
Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Renato Groff
 
Java 9 – Produtividade, Performance e Competitividade, mais do que uma nova v...
Java 9 – Produtividade, Performance e Competitividade, mais do que uma nova v...Java 9 – Produtividade, Performance e Competitividade, mais do que uma nova v...
Java 9 – Produtividade, Performance e Competitividade, mais do que uma nova v...Joao Galdino Mello de Souza
 
Chega de lendas! JavaFX em Android
Chega de lendas! JavaFX em AndroidChega de lendas! JavaFX em Android
Chega de lendas! JavaFX em AndroidBruno Oliveira
 
Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsGilmar Pupo
 
Bugs, DVCS e tools
Bugs, DVCS e toolsBugs, DVCS e tools
Bugs, DVCS e toolsPaulo Mattos
 

Mais procurados (20)

Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhos
 
Introdução ao LiveOak
Introdução ao LiveOakIntrodução ao LiveOak
Introdução ao LiveOak
 
Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016
 
JavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavaJavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma Java
 
Testes de interfaces Web com Selenium
Testes de interfaces Web com SeleniumTestes de interfaces Web com Selenium
Testes de interfaces Web com Selenium
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021
 
Desenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJangoDesenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJango
 
Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017
 
Conectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SPConectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SP
 
Comparando as Hypes - React & Vue
Comparando as Hypes - React & VueComparando as Hypes - React & Vue
Comparando as Hypes - React & Vue
 
Blazor #SnetTalks3
Blazor  #SnetTalks3Blazor  #SnetTalks3
Blazor #SnetTalks3
 
Pyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para WebPyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para Web
 
Dev ops integração contínua com jenkins
Dev ops integração contínua com jenkinsDev ops integração contínua com jenkins
Dev ops integração contínua com jenkins
 
Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017
 
Java 9 – Produtividade, Performance e Competitividade, mais do que uma nova v...
Java 9 – Produtividade, Performance e Competitividade, mais do que uma nova v...Java 9 – Produtividade, Performance e Competitividade, mais do que uma nova v...
Java 9 – Produtividade, Performance e Competitividade, mais do que uma nova v...
 
Integração Continua - Jenkins
Integração Continua - JenkinsIntegração Continua - Jenkins
Integração Continua - Jenkins
 
Chega de lendas! JavaFX em Android
Chega de lendas! JavaFX em AndroidChega de lendas! JavaFX em Android
Chega de lendas! JavaFX em Android
 
Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com Jenkins
 
Bugs, DVCS e tools
Bugs, DVCS e toolsBugs, DVCS e tools
Bugs, DVCS e tools
 

Destaque

Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Felipe Queiroz
 
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
[PDF] Repensando o Desenvolvimento Web com Ruby on RailsDante Regis
 
Mini-curso RoR - Apresentação
Mini-curso RoR - ApresentaçãoMini-curso RoR - Apresentação
Mini-curso RoR - ApresentaçãoAgence Educacional
 
Introducao ao Ruby On Rails
Introducao ao Ruby On RailsIntroducao ao Ruby On Rails
Introducao ao Ruby On RailsAndre Ferraro
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Railsismaelstahelin
 
Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Lindomar ...
 
Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsJulio Betta
 
Segurança em Rails
Segurança em RailsSegurança em Rails
Segurança em RailsJuan Maiz
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Douglas Roeder
 
Introdução ao Ruby On Rails
Introdução ao Ruby On RailsIntrodução ao Ruby On Rails
Introdução ao Ruby On RailsMilton Moura
 
Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011Andre Bernardes
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Marcelo Bohn
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsLucas Caton
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyDiego Rubin
 
Curso de Ruby on Rails
Curso de Ruby on RailsCurso de Ruby on Rails
Curso de Ruby on RailsCJR, UnB
 

Destaque (20)

Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!
 
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
 
Mini-curso RoR - Apresentação
Mini-curso RoR - ApresentaçãoMini-curso RoR - Apresentação
Mini-curso RoR - Apresentação
 
Introducao ao Ruby On Rails
Introducao ao Ruby On RailsIntroducao ao Ruby On Rails
Introducao ao Ruby On Rails
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71
 
Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on Rails
 
Segurança em Rails
Segurança em RailsSegurança em Rails
Segurança em Rails
 
SEA Rails na pratica
SEA Rails na praticaSEA Rails na pratica
SEA Rails na pratica
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01
 
Mini-curso RoR - Aula 01
Mini-curso RoR - Aula 01Mini-curso RoR - Aula 01
Mini-curso RoR - Aula 01
 
Introdução ao Ruby On Rails
Introdução ao Ruby On RailsIntrodução ao Ruby On Rails
Introdução ao Ruby On Rails
 
Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014
 
Rails na pratica
Rails na praticaRails na pratica
Rails na pratica
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on Rails
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação Ruby
 
Curso de Ruby on Rails
Curso de Ruby on RailsCurso de Ruby on Rails
Curso de Ruby on Rails
 
Ruby Beyond Rails
Ruby Beyond RailsRuby Beyond Rails
Ruby Beyond Rails
 

Semelhante a Django: Uso de frameworks ágeis para desenvolvimento web

Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Aécio Costa
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos JavaMarcio Marinho
 
Javascript levado a sério
Javascript levado a sérioJavascript levado a sério
Javascript levado a sériosaspi2
 
Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serioJaydson Gomes
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Valmir Justo
 
Inovando na plataforma Java
Inovando na plataforma JavaInovando na plataforma Java
Inovando na plataforma JavaEteg
 
Netbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 PortuguesNetbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 PortuguesRodrigo Peleias
 
Uma breve introdução de play framework
Uma breve introdução de play frameworkUma breve introdução de play framework
Uma breve introdução de play frameworkWende Mendes
 
SimulaRSO - Simulador de Recursos de Sistemas Operacionais
SimulaRSO - Simulador de Recursos de Sistemas OperacionaisSimulaRSO - Simulador de Recursos de Sistemas Operacionais
SimulaRSO - Simulador de Recursos de Sistemas OperacionaisCaio Ribeiro Pereira
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineFrederico Maia Arantes
 
Palestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao JavafxPalestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao Javafxalfredofurtado
 
Guia para o Profissional Java
Guia para o Profissional JavaGuia para o Profissional Java
Guia para o Profissional Javaarmeniocardoso
 
Desenvolvendo aplicações PHP, AJAX e YUI! Yahoo User Interface
Desenvolvendo aplicações PHP, AJAX e YUI! Yahoo User InterfaceDesenvolvendo aplicações PHP, AJAX e YUI! Yahoo User Interface
Desenvolvendo aplicações PHP, AJAX e YUI! Yahoo User InterfaceDomingos Teruel
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Flávio Lisboa
 
Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoRegis Magalhães
 

Semelhante a Django: Uso de frameworks ágeis para desenvolvimento web (20)

Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!
 
Django
DjangoDjango
Django
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Javascript levado a sério
Javascript levado a sérioJavascript levado a sério
Javascript levado a sério
 
Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serio
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 
Inovando na plataforma Java
Inovando na plataforma JavaInovando na plataforma Java
Inovando na plataforma Java
 
Inovando na Plataforma Java
Inovando na Plataforma JavaInovando na Plataforma Java
Inovando na Plataforma Java
 
Netbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 PortuguesNetbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 Portugues
 
Uma breve introdução de play framework
Uma breve introdução de play frameworkUma breve introdução de play framework
Uma breve introdução de play framework
 
SimulaRSO - Simulador de Recursos de Sistemas Operacionais
SimulaRSO - Simulador de Recursos de Sistemas OperacionaisSimulaRSO - Simulador de Recursos de Sistemas Operacionais
SimulaRSO - Simulador de Recursos de Sistemas Operacionais
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
 
Palestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao JavafxPalestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao Javafx
 
XPT Framework
XPT FrameworkXPT Framework
XPT Framework
 
Guia para o Profissional Java
Guia para o Profissional JavaGuia para o Profissional Java
Guia para o Profissional Java
 
Desenvolvendo aplicações PHP, AJAX e YUI! Yahoo User Interface
Desenvolvendo aplicações PHP, AJAX e YUI! Yahoo User InterfaceDesenvolvendo aplicações PHP, AJAX e YUI! Yahoo User Interface
Desenvolvendo aplicações PHP, AJAX e YUI! Yahoo User Interface
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
 
Java 01 Java Visao Geral
Java 01 Java Visao GeralJava 01 Java Visao Geral
Java 01 Java Visao Geral
 
Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral Detalhado
 

Mais de Miguel Galves

Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014
Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014
Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014Miguel Galves
 
Redis para iniciantes - TDC 2014
Redis para iniciantes - TDC 2014Redis para iniciantes - TDC 2014
Redis para iniciantes - TDC 2014Miguel Galves
 
New Strategy to detect SNPs
New Strategy to detect SNPsNew Strategy to detect SNPs
New Strategy to detect SNPsMiguel Galves
 
Comparison of Genomic DNA to cDNA Alignment Methods
Comparison of Genomic DNA to cDNA Alignment MethodsComparison of Genomic DNA to cDNA Alignment Methods
Comparison of Genomic DNA to cDNA Alignment MethodsMiguel Galves
 
Qualificação de Mestrado
Qualificação de MestradoQualificação de Mestrado
Qualificação de MestradoMiguel Galves
 
Uma abordagem computacional para a determinação de polimorfismos de base única
Uma abordagem computacional para a determinação de polimorfismos de base únicaUma abordagem computacional para a determinação de polimorfismos de base única
Uma abordagem computacional para a determinação de polimorfismos de base únicaMiguel Galves
 
Data Mining em redes sociais
Data Mining em redes sociaisData Mining em redes sociais
Data Mining em redes sociaisMiguel Galves
 

Mais de Miguel Galves (9)

Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014
Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014
Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014
 
Redis para iniciantes - TDC 2014
Redis para iniciantes - TDC 2014Redis para iniciantes - TDC 2014
Redis para iniciantes - TDC 2014
 
New Strategy to detect SNPs
New Strategy to detect SNPsNew Strategy to detect SNPs
New Strategy to detect SNPs
 
Comparison of Genomic DNA to cDNA Alignment Methods
Comparison of Genomic DNA to cDNA Alignment MethodsComparison of Genomic DNA to cDNA Alignment Methods
Comparison of Genomic DNA to cDNA Alignment Methods
 
Qualificação de Mestrado
Qualificação de MestradoQualificação de Mestrado
Qualificação de Mestrado
 
Uma abordagem computacional para a determinação de polimorfismos de base única
Uma abordagem computacional para a determinação de polimorfismos de base únicaUma abordagem computacional para a determinação de polimorfismos de base única
Uma abordagem computacional para a determinação de polimorfismos de base única
 
GIS em 3 horas
GIS em 3 horasGIS em 3 horas
GIS em 3 horas
 
AJAX
AJAXAJAX
AJAX
 
Data Mining em redes sociais
Data Mining em redes sociaisData Mining em redes sociais
Data Mining em redes sociais
 

Django: Uso de frameworks ágeis para desenvolvimento web

  • 1. Aumentando a produtividade Uso de frameworks ágeis para desenvolvimento web Miguel Galves
  • 2. 48 horas entre início e instalação no cliente Projeto Haiti Haiti - Minustah
  • 3. Python  Linguagem script, criada no final dos anos 80  Multiplataforma  Multiparadigma (OO, Funcional, Procedural)  Sintaxe limpa e concisa  Binding para diversas linguagens  Extensível em C
  • 4. Django  Criado em 2003 como projeto interno do Lawrence Journal  Objetivo: permitir a criação de novas funcionalidades em curtos espaços de tempo  Open Source desde 2005  Comunidade Ativa  http://www.djangoproject.com
  • 5. “THE WEB FRAMEWORK FOR PERFECTIONISTS WITH DEADLINES” O que realmente interessa no Django...
  • 6. Porque Django em vez de J2EE para desenvolvimento Web? SIMPLICIDADE
  • 7. J2EE  Enterprise JavaBeans Specification (EJB),  Java Persistence API (JPA),  JavaServer Pages Specification (JSP),  Java Servlet Specification,  JavaServer Faces (JSF),  JavaServer Pages Standard Tag Library (JSTL),  JDBC API,  Java Naming and Directory Interface Specification (JNDI),  Java Message Service (JMS),  Java Transaction API (JTA),  Java Transaction Service (JTS),  JavaMail API Specification,  JavaBeans Activation Framework Specification (JAF),  J2EE Connector Architecture,  Java API for XML Processing (JAXP),  Java Authentication and Authorization Service (JAAS), Version 1.0  Java Authorization Service Provider Contract for Containers(JACC)  Web Services for Java EE  Java API for XML-based RPC (JAX-RPC)  Java API for XML Registries (JAXR)  Java Management Extensions  Java Platform, Enterprise Edition Management Specification  Java Platform, Enterprise Edition Deployment Specification  Java API for XML-based Web Services (JAX-WS)  Java Architecture for XML Binding (JAXB)  SOAP with Attachments API for Java (SAAJ)  Web Services Metadata for the Java Platform  Streaming API for XML (StAX)
  • 8. J2EE foca em blocos estruturais grandes e complexos, tentando resolver problemas que talvez não existam!
  • 9. Django: DRY (Don't Repeat Yourself)  Foco na automação de tarefas  Arquivos de configuração em … Python  Criação automática de interfaces de Administração  ORM  Templates  Mecanismo de autenticação / perfil de usuários  Hot deploy (que realmente funciona)  Ambiente de testes integrado  Plugins: paginação, sitemaps, email, visualização de dados, RSS, i18n, l10n, redirecionamento, serialização, cache
  • 10. Django foca em fornecer ferramentas que impactam diretamente na produtividade de desenvolvimento.
  • 12. Python é uma linguagem séria e confiável?  Yahoo!  Google  CERN  NASA  Atech  ILM  Autodesk  Frequentis  ESRI
  • 13. Django é confiável e robusto? Servidor de aplicações por trás do Google Apps Engine  Versão gratuita permite até 5M de pageviews por mês.... Washington Post  8.5M pageviews por mês
  • 14. Escalabilidade  O framework sozinho não resolve  Projeto hardware e arquitetura de SW  Django oferece ferramentas que ajudam a escrever aplicações escaláveis  Cache, suporte a múltiplas bases de dados  Django permite integração de diversas ferramentas externas comprovadas, que podem ser adicionadas conforme a necessidade.  Não impacta o dia a dia de desenvolvimento
  • 15. Exemplo de Setup de Produção  Cache em memória: Memcache  Facebook, Flickr, Twitter, Youtube, LiveJournal, Wikipedia  HTTP: Apache  Market Share: 54% (NetCraft)  Balanceamento de carga  Arquivos estático: Nginx  Utilizado por 4% dos sites mais acessados em 2010.
  • 16. Linguagens Dinâmicas vs Java Python (Django) Ruby (Ruby On Rails) Scala (Lift) Groovy (Grails)
  • 17. Contras Performance de execução Python/Ruby: sem tipagem estática  Ferramentas de refactoring menos eficientes  Leitura de código as vezes mais complicada Mão de obra menos abundante Envolvem paradigmas e conceitos avançados
  • 18. Prós  Mais concisas, mais expressivas  Mesmas funcionalidades, menos código  Menos código => maior facilidade de manutenção  Menos código => maior produtividade (5x)  Mais poderosas  Introspecção  Metaprogramação
  • 19. Prós – Produtividade Ciclo padrão de desenvolvimento Java Ciclo padrão de desenvolvimento linguagens dinâmicas
  • 20. Integrando o melhor dos mundos  Plataforma Java  Máquina virtual extremamente eficiente  JIT  API Extensa  Oracle/Sun abriu as portas para linguagens de script para JVM
  • 21. Integrando o melhor dos mundos Jython, JRuby  Interpretadores que rodam na JVM, permitindo acesso direto à APIs Java Scala, Groovy  Linguagens desenvolvidas para serem executadas na JVM
  • 22. Conclusão? Cada tarefa requer ferramentas apropriadas. Estamos refletindo sobre isso quando desenvolvemos nossos projetos?

Notas do Editor

  1. Falar da minha experiencia com Python
  2. Falar da minha experiencia com Django
  3. Google usa Python como uma das suas linguagens internas de programação Esri: ArgGIS usa como linguagem de script NASA WAS (Workflow Automation System) Gestao de fluxo de informacoes para desenvolvimento de missoes do Onibus espacial Frequentis Tower and Airport Tools = Controle de luzes de pista e condicoes meteorologicas ILM usa Python para controlar o workflow de processamento gráfico e como linguagem de script