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?
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