Alem do Java™: Novos Horizontes para o Desenvolvedor Phillip Calçado http://www.fragmental.com.br
<ul><li>Tentar entender como Java™ chegou a sua atual posição </li></ul><ul><li>Avaliar a situação atual da Linguagem e Pl...
<ul><li>Quem é Você? </li></ul><ul><li>Pequena Introdução </li></ul><ul><li>Como Chegamos Aqui? </li></ul><ul><li>Problema...
(Quem é esse doido que veio falar mal de Java aqui?!?!) <ul><li>Phillip Calçado,  a.k.a.   Shoes </li></ul><ul><li>Program...
Pequena Introdução ?
<ul><li>Java™ possui domínio de mercado, em 2003 75% dos desenvolvedores a utilizavam* </li></ul><ul><li>Java™ é uma Lingu...
A corrente de desenvolvedores que procuram alternativas para aliviar os problemas encontrados no desenvolvimento em Java™ ...
Como Chegamos Aqui?
Como Chegamos Aqui? (De ônibus?) <ul><li>Arquitetura Cliente/Servidor não atendia a demanda: quem vinha do mainframe preci...
Como Chegamos Aqui? (...barca?) <ul><li>Por que Java e não C++? </li></ul><ul><li>C++ é uma linguagem construída em cima d...
Como Chegamos Aqui? (...metrô nem pensar, né?)
 
Como Chegamos Aqui? (Ah! Claro..de rover...) <ul><li>Ter portabilidade como princípio levou Java™ onde outras linguagens n...
Problemas no Status Quo http://www.garbett.org/?q=node/25
Problemas no Status Quo (Houston...) <ul><li>Sinais de que existe algo errado: </li></ul><ul><li>Complexidade crescente </...
Problemas no Status Quo (Houston...) <ul><li>Fatos Positivos: </li></ul><ul><li>Java™ hoje é imbatível no desenvolvimento ...
Problemas no Status Quo (Houston...) <ul><li>Fatos Negativos: </li></ul><ul><li>Desenvolver  front-ends  Java™ não é tão s...
Além do Java: Como Reagir?
Alem do Java: Como Reagir? (Dois ratos caíram num balde de leite, um desistiu e morreu afogado, o outro...) <ul><li>É prec...
Múltiplas Linguagens, Uma Plataforma
Múltiplas Linguagens, Uma Plataforma (Projeto Babel) <ul><li>Linguagens de Sistema: </li></ul><ul><ul><li>Possuem o necess...
Múltiplas Linguagens, Uma Plataforma (Projeto Babel) <ul><li>CLR não é a primeira nem única VM para várias linguagens </li...
Múltiplas Linguagens, Uma Plataforma (Projeto Babel) <ul><li>O que já está sendo feito? - Oficialmente </li></ul><ul><li>J...
Múltiplas Linguagens, Uma Plataforma (Projeto Babel) <ul><li>O que já está sendo feito? – Pela Comunidade </li></ul><ul><l...
Alternativas Hoje 2004 - New and Cool Java TechnologyJava Technology and Scripting Languages, the Next Generation: TS-1027...
Alternativas Hoje (Não pergunte o que sua plataforma pode fazer por você...) <ul><li>Aplicações em Ruby </li></ul><ul><ul>...
Conclusão !
Conclusão <ul><li>Java™ está sofrendo com seu próprio peso </li></ul><ul><li>Java™ não é simples como antigamente </li></u...
<ul><li>Bruce Tate & Justin Gehtland  – Beyond Java </li></ul><ul><li>Bruce Tate & Justin Gehtland  – Better, Faster, Ligh...
<ul><li>http://groovy.codehaus.org/ </li></ul><ul><li>http://www.beanshell.org/ </li></ul><ul><li>http://www.jython.org/ <...
Continua em...
Contato http://www.fragmental.com.br http://www.guj.com.br http://www.riojug. org [email_address]
Obrigado! Que Zahl os Acompanhe...
Próximos SlideShares
Carregando em…5
×

Além do Java - Maratona4Java 2005

2.028 visualizações

Publicada em

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_Desenvolvedor

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.028
No SlideShare
0
A partir de incorporações
0
Número de incorporações
76
Ações
Compartilhamentos
0
Downloads
85
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Além do Java - Maratona4Java 2005

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

×