Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Além do Java: Um overview sobre linguagens baseadas na JVM

Bianca Rosa
November 26, 2015

Além do Java: Um overview sobre linguagens baseadas na JVM

Apresentação nível ultra mega super iniciante sobre linguagens baseadas na JVM (Foco em Groovy, Scala e Closure)

Bianca Rosa

November 26, 2015
Tweet

More Decks by Bianca Rosa

Other Decks in Programming

Transcript

  1. JAVA • Desde 1995. • Baseada em SmallTalk. • Orientada

    a objetos. • Muito usada no mercado :) • Multi-plataforma. (por causa da JVM)
  2. JVM - Java Virtual Machine • Feita pra rodar o

    Java :) • Traz portabilidade ao código fonte Java - ele é compilado apenas para uma máquina, a JVM. • Quando um programa Java roda, ela se encarrega de compilar, interpretar ou executar o bytecode gerado no primeiro estágio de compilação.
  3. Você pode fazer sua própria linguagem compatível com a JVM

    (quem quiser conversar sobre como, podemos trocar uma ideia. não tenho experiência mas posso te dizer por onde começar)
  4. Groovy • Dinâmico (parece com Python / Ruby) • Código

    Java é um código Groovy válido (Curva de aprendizado baixa pra quem já sabe Java) • Por padrão, tipagem fraca. Oferece possibilidade de compilar de forma a forçar tipagem forte. • METAPROGRAMAÇÃO • Orientado a objeto + funcional • Interpolação de strings • Framework: Grails
  5. Groovy - Closures def possoSair = { dinheiro, provasProximas ->

    if (provasProximas.size() ==0 && dinheiro) { return true } return false }
  6. Scala • Tipagem estática. • Conversa bem com código em

    Java. • Orientação a objeto + funcional • Frameworks: Akka / Play
  7. Scala - Classe class Person( name: String, age: Int, birthdate:

    Date, astrologicalSign: String, shoeSize: Int, favoriteColor: java.awt.Color) { def firstMethod: Foo = ... }
  8. Scala - Coleções val (minors, adults) = people partition (_.age

    < 18) val fruit = Set("apple", "orange", "peach", "banana") fruit("peach") (retorna true) fruit("potato") (retorna false)
  9. Clojure • É um dialeto de Lisp. • Funcional! •

    Frameworks: Compojure, Webjure, Conjure, Moustache
  10. Clojure - Operações e funções (+ 3 10) (* 2

    5 10) (defn square [x] (* x x)) (square 10)
  11. Mas quem usa essas coisas? Coursera (Scala) https://tech.coursera.org/blog/2014/02/18/why-we-love-scala-at-coursera/ Netflix -

    Aplicações internas (Grails) http://netflix.github.io/asgard/ Walmart (Clojure) http://blog.cognitect.com/blog/2015/6/30/walmart-runs-clojure-at-scale