Partindo além do Java e conhecendo novas linguagens e tecnologias que podem aumentar o seu conjunto de ferramentas.
Palestra apresentada originalmente em 11 de julho de 2011 no N-ésimo encontro do PBJUG.
1. ALÉM DO JAVA: AS OUTRAS
LINGUAGENS DA JVM
Maurício Linhares
@mauriciojr | http://techbot.me/
sábado, 9 de julho de 2011
2. QUEM?
• Desenvolvedor na OfficeDrop.com
• Professor na Faculdade iDez
sábado, 9 de julho de 2011
3. JAVA, ONTEM
Cool guy do início da década passada
sábado, 9 de julho de 2011
4. JAVA, HOJE
wastelands
sábado, 9 de julho de 2011
5. NOVOS TEMPOS
Java não está mais na moda
sábado, 9 de julho de 2011
6. O QUE ACONTECEU?
• Busca por padrões no papel estagnou a comunidade;
•A linguagem não sofria atualizações enquanto a concorrência
seguia em frente;
• Programação concorrente trazendo a tona outra vez a
programação funcional;
• JavaScript;
• Rails;
sábado, 9 de julho de 2011
7. MAS NA DIREÇÃO
CONTRÁRIA...
•A comunidade começa a se voltar a novas linguagens
seriamente;
•A comunidade olha com carinho pra Java Virtual Machine e as
coisas que já foram desenvolvidas em cima dela;
• Em 2003 os primeiros passos sérios são dados com Scala e
Groovy;
sábado, 9 de julho de 2011
8. JRUBY RESSURGE
Rails na Java Virtual Machine é agora uma realidade
sábado, 9 de julho de 2011
9. SEGUINDO EM FRENTE
•A atenção que o JRuby consegue na comunidade faz os seus
dois desenvolvedores serem contratados pela Sun (e um
terceiro pela ThoughtWorks)
•A realização de que a comunidade realmente está interessada
em novas linguagens na JVM reforça projetos antigos, como
Scala e Groovy e traz novidades, como Clojure;
sábado, 9 de julho de 2011
10. DA VINCI VM
Transformando a JVM para que ela facilite a existência de
linguagens além do Java
sábado, 9 de julho de 2011
11. MULTI LANGUAGE VM
•O sucesso do JRuby criou a necessidade de que a própria
máquina virtual simplificasse a vida de quem quer colocar sua
linguagem de programação na JVM;
• Novos bytecodes, rotinas de execução e muita gente
discutindo soluções novas pra que Java, como plataforma, seja
onde os programas continuam executando;
sábado, 9 de julho de 2011
14. MARTELOS! DIVERSOS!
Para todos os seus pregos, mesmo que eles não sejam pregos!
sábado, 9 de julho de 2011
15. DIVERSIDADE
• Cada linguagem tem seus prontos fortes e fracos, conhecer
várias linguagens adiciona novas ferramentas na sua caixinha
de conhecimento;
• Aprender linguagens de ideais ou paradigmas diferentes faz
com que você possa ter um ponto de vista diferente na hora
de resolver os mesmos problemas;
sábado, 9 de julho de 2011
16. PROBLEMA
Preciso enviar um arquivo para um armazenamento na nuvem,
mas a rede não é confiável e pode falhar a qualquer momento.
Meu código deve ser capaz de tentar por um número X de
vezes até desistir e lançar o erro capturado.
sábado, 9 de julho de 2011
17. EM RUBY
def retry( tries, &block)
count = 0
begin
count += 1
block.call
rescue => e
if count <= tries
retry
! else
raise e
end
end
end
retry(3) do
send_file( "file" )
end
sábado, 9 de julho de 2011
18. COMO FAZER O MESMO EM
JAVA?
É possível fazer o mesmo?
sábado, 9 de julho de 2011
19. “APRENDER UMA NOVA
LINGUAGEM DE
PROGRAMAÇÃO É SÓ
APRENDER A SINTAXE”
Alguém que você conhece
sábado, 9 de julho de 2011
21. APRENDA UMA NOVA
LINGUAGEM DE
PROGRAMAÇÃO A CADA
ANO
E que sejam diferentes, aprender C# se você já programa em
Java não traz vantagens
sábado, 9 de julho de 2011
26. SCALA
• Une programação orientada a objetos a funcional;
• Sintaxe próxima a do Java e integração completa com a
linguagem, incluindo compilação de projetos híbridos Scala-
Java;
• Modelo de objetos próximo ao do Java, é simples chamar
objetos Scala a partir de código Java puro;
sábado, 9 de julho de 2011
27. CLOJURE
• Lisp on Java!
• Linguagem puramente funcional, um dialeto de Lisp,
executando dentro da JVM;
• Acesso completo as bibliotecas do Java, incluindo todo o
suporte a programação concorrente de verdade;
• Macros, macros and MACROS!
sábado, 9 de julho de 2011
28. JRUBY
• Implementação completa e funcional de um interpretador da
linguagem Ruby executando na JVM;
•É capaz de executar normalmente aplicações Rails e a maior
parte do código Ruby disponível atualmente;
• Acesso simplificado a código nativo através de FFI e JNA;
sábado, 9 de julho de 2011