Conhecendo a JSR 223: Scripting for the Java Platform

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    2 Favorites

    Conhecendo a JSR 223: Scripting for the Java Platform - Presentation Transcript

    1. Conhecendo a JSR 223: Scripting for the Java Platform Chri i stano M if lont ht p:/ w w . if . g t /w m lontor
    2. Roadmap 1 – Porque outras linguagens? 2 – JVM vs CLR 3 – Outras linguagens na JVM 4 – Padronizando com a JSR 223 5 – Desvantagens com scripting
    3. Porque outras linguagens? Funcional vs Orientado a objetos Prototype-based Vs Class-based Declarativo Vs Imperativo Tipos dinâmicos Vs Estáticos Tipos fracos vs Tipos Fortes
    4. Porque outras linguagens? Pattern Quine Matching Lambda calculus Continuation List Closure comprehension Tail Call CurryingThunk backtracing High-order functions
    5. Porque outras linguagens? var consulta = reduce(+, map(*,array,k)); Rotinas funcionais não explicitam a ordem de execução e tem liberdade de executar todas ao mesmo tempo em paralelo
    6. Porque outras linguagens? DSL – Domain Specific Language SGBD controla armazenamento, transação, concorrência, busca... o programador simplesmente escreve SELECT * FROM TABLE Macro - Excel ABAP - SAP LINQ - C# 3 ... Todo desenvolvedor que trabalha com web conhece mais de uma linguagem: XML, HTML,CSS
    7. Porque outras linguagens? Linguagem correta para problema using System; using System.IO; public class RemoveArquivosVelhos { Usando C# public static void Main(string[] args) { foreach (FileInfo fi in (new DirectoryInfo (@“\\temp\\backup”)).GetFiles()) { if (((TimeSpan) (DateTime.Now - fi.LastWriteTime)).Days > 7) { fi.Delete(); } } } } Usando Bash find /usr -atime +6 -exec rm -f \"{}\" \";\"
    8. Porque outras linguagens? Sem reinventar a roda def thumbnail(temp, target) system(\"/usr/local/bin/convert #{escape(temp)} -resize 48x48! #{escape(target)}\") end Trapaceando com Ruby
    9. Porque outras linguagens? DEPLOY [Cliente no gtalk: Gostaria de inserir uma regrinha, demora muito? [cmilfont]: Nada, aguarda aí que é rapi10, so o tempo do deploy [Cliente no gtalk]: O.o
    10. Porque outras linguagens? Tendência SimpleDB, Amazon.com's document- based database written in Erlang Google uses Python for backends of web apps such as Gmail and GMaps Youtube uses Python \"to produce maintainable features in record times, with a minimum of developers\" Fonte: http://en.wikipedia.org
    11. Porque outras linguagens? Dois caminhos Transformar Java em multiparadigma ou Usar uma linguagem apropriada
    12. Porque outras linguagens? Java com Closure Voce quer isso? <R, T extends java.io.Closeable, throws E> R with(T t, {T=>R throws E} block) throws E { try { return block.invoke(t); } finally { try { t.close(); } catch (IOException ex) {} } } ...ou melhorar o suporte da JVM às outras linguagens?
    13. JVM vs CLR Microsoft tinha a melhor IDE e a melhor JVM... ... Criou sua própria marca aproveitando o “Know how”... ... Suporte a várias linguagens desde o início... ... Forçou o Java correr atrás, varargs, generics, anotações... ... ainda está alguns passos na frente!
    14. JVM vs CLR A JVM aproveita o maior marketshare... ... Já tem mais linguagens do que a CLR ... ... Hoje tem performance superior e considerada a melhor VM... ... JSR 292 - Supporting Dynamically Typed Languages ... ... JSR 223: Scripting for the Java Platform!
    15. Outras linguagens na JVM JRuby, Jython, Groovy, BeanShell, Pnuts, Jacl (TCL), JudoScript, Rhino, Jaskell, Sleep (Perl), Jelly, AWK, JEP, Jexl, JST, SISC (Scheme), Athena (Smaltalk), Jepp (Python native), Quercus (PHP), BexScript, Jasconn (AppleScript), JavaFX...
    16. Outras linguagens na JVM List comprehensions Jaskell getEvenNumbers aList = [ x | x >- aList, x `mod` 2 = 0] Jython def getEvenNumbers(l): return [x for x in l if x % 2 == 0] def getEvenNumbers(l : List[int]) = Scala for {i val2i <- l 0 } % == yield i
    17. Outras linguagens na JVM Linguagem construída sobre uma outra linguagem de Scripting Java - Network, IO, JNI... Pnuts - Scripting Jasp (Java Based Statistical Processor) http://jasp.ism.ac.jp/overview-e.html
    18. Padronizando com a JSR 223 Bean Scripting Framework Projeto de pesquisa de Sanjiva Weerawarana no T.J. Watson Research Center da IBM em 1999 Em 1999 a IBM doou ou Apache Cada linguagem tinha sua própria forma de interagir com a JVM criando dependência
    19. Padronizando com a JSR 223 Bean Scripting Framework BSF criou uma camada única de interação entre o Java e as outras linguagens Proliferação de abordagens semelhantes? Hora de padronizar!
    20. Padronizando com a JSR 223 JSR 223 Scripting for the java Plataform API padronizada que fornece uma interface comum a todas as linguagens de scripting API incluída no Mustang (Java 6) Implementação no Mustang com Rhino (javascript)
    21. Padronizando com a JSR 223 API simples javax.script.AbstractScriptingEngine javax.script.Bindings javax.script.Compilable javax.script.CompiledScript javax.script.Invocable javax.script.ScriptContext javax.script.ScriptEngine; javax.script.ScriptEngineFactory javax.script.ScriptEngineManager; javax.script.ScriptException; javax.script.SimpleBindings javax.script.SimpleScriptContext
    22. Padronizando com a JSR 223 Descobrindo e instanciando um mecanismo de engine ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName(\"JavaScript\");
    23. Padronizando com a JSR 223 Construindo e executando o script String [] script = { \"var a = 2;\", \"var b = 3;\", \"var c = a + b;\", \"print(\\\"a + b = \\\" + c);\" }; engine.eval(script));
    24. Padronizando com a JSR 223 Executando um script em arquivo String path = NotaFiscal.class.getResource(\"script.js\") .getPath(); engine.eval(new FileReader(path));
    25. Padronizando com a JSR 223 Trocando variáveis entre o java e o script no mesmo contexto engine.put(\"total\", this.total); String path = getArquivo(); engine.eval(new FileReader(path)); this.total = (Double) engine.get(\"total\");
    26. Padronizando com a JSR 223 Compilando o script ScriptEngine e = ... CompiledScript cs = ((Compilable) e) .compile(statement); cs.eval();
    27. Desvantagens com scripting Sintaxes extranhas Performance Debug Mais pontos de manutenção Pouco pessoal qualificado Aprender muitos paradigmas * * Deveria ser vantagem mas é o terror dos Code Monkeys
    28. Fim! Mais em: http://www.milfont.org

    + Christiano MilfontChristiano Milfont, 2 years ago

    custom

    2680 views, 2 favs, 2 embeds more stats

    Palestra ministrada no evento "Café com Tapioca" r more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 2680
      • 2566 on SlideShare
      • 114 from embeds
    • Comments 0
    • Favorites 2
    • Downloads 28
    Most viewed embeds
    • 113 views on http://www.milfont.org
    • 1 views on http://www.netvibes.com

    more

    All embeds
    • 113 views on http://www.milfont.org
    • 1 views on http://www.netvibes.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories