além do java - maratona4java 2005
DESCRIPTION
Palestra polêmica sobre o futuro da plataforma Java, com ênfase em novas linguagens para a JVM. Apresentada no Maratona4Java de Brasília. http://blog.fragmental.com.br/wiki/index.php/Maratona4Java2005:_Alem_do_Java%E2%84%A2:_Novos_Horizontes_para_o_DesenvolvedorTRANSCRIPT
www.fragmental.com.br
Alem do Java™: Novos Horizontes para o
Desenvolvedor
Phillip Calçadohttp://www.fragmental.com.br
www.fragmental.com.br Slide 2
• Tentar entender como Java™ chegou a sua atual posição
• Avaliar a situação atual da Linguagem e Plataforma Java™
• Entender como Java™ está se modificando à novas realidades
• Avaliar opções alternativas
Objetivos
Não São Objetivos
• Depreciar ou evangelizar sobre qualquer Linguagem ou Plataforma
• Prever o futuro• Dizer o que fazer da sua vida/carreira• Fazer você jogar todo software que desenvolveu ou
possui fora
(Tentar não ser apedrejado!)
(Mas nada impede que aconteçam...)
www.fragmental.com.br Slide 3
• Quem é Você?• Pequena Introdução• Como Chegamos Aqui?• Problemas no Status Quo• Além do Java: Como Reagir?• Múltiplas Linguagens, Uma Plataforma• Alternativas Hoje• Conclusão• Bibliografia, Links e Referências
Agenda(A gente veio aqui pra beber ou conversar?)
www.fragmental.com.br Slide 4
• Phillip Calçado, a.k.a. Shoes• Programador desde 1996• Com Java desde 2003 (“¡ adios, C++ !”)• Coordenador do GUJ• JUG Leader do RioJUG• Consultor, instrutor, coach• Diversos projetos open-source (alguns chegaram até a
ter uma versão 1.0!)• Escritor ocasional (http://www.fragmental.com.br)• Aplicações para análise de risco, redes GSM, gestão de
conteúdo, setor financeiro, biologia... A grande maioria utilizando Java EE
Quem é Você?(Quem é esse doido que veio falar mal de Java aqui?!?!)
www.fragmental.com.br
Pequena Introdução
?
www.fragmental.com.br Slide 6
• Java™ possui domínio de mercado, em 2003 75% dos desenvolvedores a utilizavam*
• Java™ é uma Linguagem de Programação e uma Plataforma de Software
• A maioria dos trabalhos revolucionários em vários segmentos na última década foi produzida com Java™, Linguagem e Plataforma
• A curva de aprendizado é um dos fatores críticos• O uso de uma única Linguagem de Programação para
toda e qualquer tarefa não tem se mostrado produtivo ou eficiente
• Novas tecnologias e paradigmas pedem recursos de meta-programação que não estão disponíveis na Linguagem Java™
• Grandes programadores (os verdadeiros java hackers) e acadêmicos estão procurando e trabalhando em alternativas
Pequena Introdução(Se você só puder ler dois slides, leia esses)
* Dados da Sun Microsystems™, http://www.java.com
www.fragmental.com.br Slide 7
A corrente de desenvolvedores que procuram alternativas para aliviar os problemas encontrados no
desenvolvimento em Java™ hoje está sendo chamada de
Pequena Introdução(Se você só puder ler dois slides, leia esses)
www.fragmental.com.br
Como Chegamos Aqui?
www.fragmental.com.br Slide 9
Como Chegamos Aqui?(De ônibus?)
• Arquitetura Cliente/Servidor não atendia a demanda: quem vinha do mainframe precisava de algo mais robusto e de melhor manutenção
• A Microsoft se beneficiava de seu monopólio em Sistemas Operacionais para conseguir o monopólio em desenvolvimento: quem paga a conta não gosta de monopólios
• A Internet impôs novos modelos de comércio, aplicações C/S ou Desktop estão fora, CGI não escala, linguagens de script (ASP/PHP/ColdFusion) não são integradas eficientemente: Java já estava no browser, pro servidor foi um pulo
• Orientação a Objetos se consolida no desenvolvimento de aplicações: a definição da UML, processos OO e ferramentas CASE tornam o paradigma popular e aplicável na prática
www.fragmental.com.br Slide 10
Como Chegamos Aqui?(...barca?)
Por que Java e não C++?• C++ é uma linguagem construída em cima de C, uma
linguagem de infra-estrutura (systems language), não de aplicações
• Aritmética de ponteiros, herança múltipla, gerência manual de memória e outros recursos avançados são exigidos de iniciantes
• A Microsoft não ajudou com sua arquitetura de bibliotecas dinâmicas (DLL Hell)
• CORBA não pegou na prática, como criar aplicações distribuídas padronizadas?
• Falta de portabilidade
www.fragmental.com.br Slide 11
Como Chegamos Aqui?(...metrô nem pensar, né?)
www.fragmental.com.br Slide 12
www.fragmental.com.br Slide 13
Como Chegamos Aqui?(Ah! Claro..de rover...)
• Ter portabilidade como princípio levou Java™ onde outras linguagens nunca chegariam
• Ser uma especificação contribui para que muitos colaborem em conjunto
• Ambiente gerenciado e segurança são necessários e/ou muito úteis em uma na maioria dos ambientes
• Ter que aprender apenas uma Linguagem/Plataforma é muito mais barato e cômodo
Mas...
É Java™ a Panacéia das Linguagens de Programação?
www.fragmental.com.br Slide 14
Problemas no Status Quo
http://www.garbett.org/?q=node/25
www.fragmental.com.br Slide 15
Problemas no Status Quo(Houston...)
Sinais de que existe algo errado:• Complexidade crescente
• Quantos frameworks são necessários para trocar uma lâmpada?
• Revoluções (não evoluções) constantes, frequentemente downsizing• JSP -> MVC• JNDI -> Depedency Injection• BMP/CMP -> JDO/Hibernate
• Gambiarras constantes e crescentes• AOP• Excesso de XML
• Infra-Estrutura muito exigente• Quantos % do seu código lida com o problema de Negócios e
quanto lida com configurações, recursos e outras coisas?
• Muletas para o Desenvolvedor• Desenvolver Java EE™ sem nenhuma geração de código não é
produtivo
www.fragmental.com.br Slide 16
Problemas no Status Quo(Houston...)
Fatos Positivos:• Java™ hoje é imbatível no desenvolvimento de
middleware
• A plataforma Java EE™ possui todos os recursos necessários para o desenvolvimento de aplicações de larga escala
• Mão-de-obra Java™ é geralmente fácil de achar e não mais cara como antigamente
• Existe um mercado enorme de fornecedores de soluções geralmente padronizadas, livres ou proprietárias em Java™
• Centenas de casos de sucesso em dez anos de história facilitam a escolha da tecnologia
www.fragmental.com.br Slide 17
Problemas no Status Quo(Houston...)
Fatos Negativos:• Desenvolver front-ends Java™ não é tão simples ou
produtivo quanto era com Linguagens especializadas, web ou desktop
• Aplicações que apenas fazem CRUD em Banco de Dados se tornam inchadas com Java™
• A curva de aprendizado requer que alguém se torne hábil em muitas coisas antes de se tornar produtivo
• A Linguagem Java™ evolui devagar e faltam nela recursos necessários para facilitar algumas tarefas
• Java não oferece suporte direto à Domain Specific Languages
• Ainda que seja bastante dinâmica, Java™ não oferece recursos como closures ou continuations
www.fragmental.com.br Slide 18
Além do Java: Como Reagir?
www.fragmental.com.br Slide 19
Alem do Java: Como Reagir?(Dois ratos caíram num balde de leite, um desistiu e morreu afogado, o outro...)
É preciso:• Manter e ampliar a Comunidade, o grande diferencial
• Manter a JVM, um dos mais sofisticados softwares do mundo com uma grande base instalada
• Manter compatibilidade com o rico legado de aplicações e bibliotecas
• Continuar investindo em padronização e comitês abertos
• Diminuir a curva de aprendizado
• Separar aplicações simples de aplicações complexas
• Facilitar a criação de linguagens mais leves, produtivas e especializadas
www.fragmental.com.br Slide 20
Múltiplas Linguagens, Uma Plataforma
www.fragmental.com.br Slide 21
Múltiplas Linguagens, Uma Plataforma(Projeto Babel)
• Linguagens de Sistema:• Possuem o necessário para a construção da infra-estrutura
do sistema• São geralmente complexas e genéricas• C/C++ e Java
• Linguagens de Aplicação:• Possuem a produtividade esperada para se criar aplicações• São leves e menos exigentes• Servem para utilizar os componentes criados pelas
Linguagens de Sistema• Ruby, Python, Groovy e outros
• Linguagem de Domínio:• Como de Aplicação, mas trazem conceitos do domínio em
si• Geralmente são utilizadas por não-programadores• Mini-linguagens do UNIX, dialetos XML e outros
www.fragmental.com.br Slide 22
Múltiplas Linguagens, Uma Plataforma(Projeto Babel)
• CLR não é a primeira nem única VM para várias linguagens
• A Microsoft apenas tentou replicar o mercado VB/C++• C# possui as mesmas limitações básicas de Java• Mono poderia ser uma saída se não se fixasse tanto em
copiar
O futuro de Java™ é ser .Net?!?
www.fragmental.com.br Slide 23
Múltiplas Linguagens, Uma Plataforma(Projeto Babel)
O que já está sendo feito? - Oficialmente• JSR 223: Scripting for the JavaTM Platform – Public Review
• Implementação de Referência: PHP• Implementação de JavaScript no Java™ 6 Mustang
• JSR 241: The Groovy Programming Language• JSR 274: The BeanShell Scripting Language
www.fragmental.com.br Slide 24
Múltiplas Linguagens, Uma Plataforma(Projeto Babel)
O que já está sendo feito? – Pela Comunidade• BeanShell• Groovy• Velocity• Rhino – JavaScript para JVM
• Projeto da Mozilla Foundation• Jython – Python para a JVM
• Utilizado pela Bea para scripting no WebLogic Diablo• JRuby – Ruby para a JVM
• Interpretador compatível com Ruby 1.8.2 100% Java™
• Mais de 200 projetos de linguagens para a JVM• De Smalltalk a COBOL
• Superwaba
www.fragmental.com.br Slide 25
Alternativas Hoje
2004 - New and Cool Java TechnologyJava Technology and Scripting Languages, the Next Generation: TS-1027, 2004
www.fragmental.com.br Slide 26
Alternativas Hoje(Não pergunte o que sua plataforma pode fazer por você...)
• Aplicações em Ruby• Rails: Ambiente altamente produtivo mantendo
qualidade• Performance inferior e ainda baixa aceitação no
Brasil• Ainda não viável para mais que scripts ou web
• Aplicações em Python• Forte comunidade• Grande número de bibliotecas e frameworks• Não é tão diferente de Java EE™ assim
• Aplicações em Java• Linguagens de Script para aplicações simples• Linguagens de script para interfaces• Trails/Grails
www.fragmental.com.br Slide 27
Conclusão
!
www.fragmental.com.br Slide 28
Conclusão
• Java™ está sofrendo com seu próprio peso
• Java™ não é simples como antigamente
• Java™ domina o mercado e não vai ser substituída facilmente
• Não existe Tamanho Único em Linguagens de Programação
• O ideal é que a Plataforma Java™ ofereça suporte melhor à linguagens, incluindo de Sistemas, Aplicações e DSLs
• Não existe plataforma hoje que compita com Java™ em todos os seus ambientes
• Existem plataformas que competem com Java em segmentos específicos
• Ainda que difícil prever o futuro, é iminente uma revolução no modo como aplicações são construídas
www.fragmental.com.br Slide 29
• Bruce Tate & Justin Gehtland – Beyond Java• Bruce Tate & Justin Gehtland – Better, Faster, Lighter Java• Rod Johnson – J2EE Developmen Without EJB• Dave Thomas et al. – Programming Ruby• Dave Thomas et al. – Agile Web Development with Rails• Eric Evans – Domain-Driven Design• Andrew Hunt & David Thomas – The Pragmatic
Programmer
• Craig Larman – Applying UML and Patterns• Bertrand Meyer – Object-Oriented Software Construction• Martin Fowler – Refactoring, PEAI, Analisys Patterns...• Meilir Page-Jones – Fundamentals of Object-Oriented
Design Using UML
Autores Recomendados
www.fragmental.com.br Slide 30
• http://groovy.codehaus.org/• http://www.beanshell.org/• http://www.jython.org/• http://jruby.sourceforge.net/• http://www.mozilla.org/rhino/• http://www.robert-tolksdorf.de/vmlanguages.html• http://www.martinfowler.com/articles/
languageWorkbench.html• http://developer.sun.com/learning/javaoneonline/2004/
corej2se/TS-3814.html• http://developer.sun.com/learning/javaoneonline/2004/
newcooltech/TS-1027.html
Para Saber Mais
www.fragmental.com.br Slide 31
Continua em...
www.fragmental.com.br Slide 32
Contato
http://www.fragmental.com.br
http://www.guj.com.br
http://www.riojug.org
www.fragmental.com.br Slide 33
Obrigado!Que Zahl os Acompanhe...