Groovy & Grails. Arian Pasquali. quarta-feira, 12 de outubro de 11



Documentos relacionados
Frameworks - Grails. Aécio Costa

Breve introdução. Uma breve introdução. Simplicidade e Poder. Rápido Dinâmico Robusto

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Java - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br

O Struts morreu. Como escolher um novo framework Web.

CURSO DE PROGRAMAÇÃO EM JAVA

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Grails: o que isso quer dizer? Gilliard Cordeiro

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Java. Marcio de Carvalho Victorino

Fundamentos de Programação II. Introdução à linguagem de programação C++

Objetivos do mini curso. Conhecer a linguagem. Noção de programação utilizando Python. Aprender o báscio.

Desenvolvimento Web TCC Turma A-1

Programação online em Java

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

Programação por Objectos. Java

FRWTC800 - Desenvolvimento Web com Ruby on Rails

OOP - Java. Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora

Programação de Computadores II TCC Turma A-1

Um pouco do Java. Prof. Eduardo

Receita de bolo para instalar MinGW-GCC e Netbeans em Windows

Groovy. Desenvolvimento ágil para plataforma Java. Lucas Mazzega Menegucci Rodolfo Gobbi de Angeli Ricardo Natale

Configuração de Cliente de Web Service HTTPS

Produtividade na web com Groovy e Grails

2 Orientação a objetos na prática

Prof. M.Sc. Fábio Procópio Prof. M.Sc. João Maria Criação: Fev/2010

Ruby. Simplicidade e produtividade

Linguagens de Programação. Linguagens de Script. Carlos Bazilio

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Prof. Esp. Adriano Carvalho

Tutorial de instalação do Java 7 no Windows 7.

Capítulo 6. Java IO - Ficheiros

Bacharelado em Ciência e Tecnologia BC Processamento da Informação Teoria Arquivos Prof. Edson Pinheiro Pimentel edson.pimentel@ufabc.edu.

Tudo o que Você Sempre Quis Saber Sobre Linguagens de Programação* (*Mas Tinha Medo de Perguntar) Diego Padilha Rubert FACOM

Analisar os sistemas operacionais apresentados na figura e responder as questões abaixo: Identificar

Programação Orientada a Objetos com Java. Prof. Júlio Machado julio.machado@pucrs.br

O nome ANT é uma sigla para another neat tool (mais uma ferramenta organizada), segundo seu autor James Duncan Davidson.

Laboratório I Aula 2

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Curso de Extensão Programação Orientada a Objetos com Java. Última atualização: 25/05/2010

Programação de Computadores II TCC /Turma A 1

Técnicas de Programação II

LINGUAGEM ORIENTADA A OBJETOS

1. Instalando o JDK - Java Development Kit

Introdução à Linguagem Java

Ler e escrever bytes, caracteres e Strings de/para a entrada e saída padrão. Ler e escrever bytes, caracteres e Strings de/para arquivos

Grails. C ada vez mais aplicações corporativas são desenvolvidas ou migradas para a plataforma web.

Análise comparativa de produtividade entre Groovy e Java, aplicado no desenvolvimento web

Programação Na Web. Servlets: Como usar as Servlets. Agenda. Template genérico para criar Servlets Servlet 2.4 API

Grails e as novidades

Definições. Parte 02. Java Conceitos e. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

JAVA. Introdução. Marcio de Carvalho Victorino. Page 1 1/40 2/40

TECNOLOGIA JAVA TENDÊNCIAS, MERCADO E FUTURO

Tutorial Eclipse (IDE)

A Linguagem Algorítmica Estrutura de Repetição. Ex. 2

Persistência de Classes em Tabelas de Banco de Dados

JSF e PrimeFaces. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Alunos. Hudson Martins da Silva Laércio Pedro Hoppe

Invocação de Métodos Remotos

Java para Desktop. Introdução à Plataforma Java JSE

Instalando e configurando o Java Development Kit (JDK)

Fatos e Mitos do Java EE. Fernando Lozano Consultor 4Linux lozano@4linux.com.br

Hoje em dia é muito comum utilizar uma API de logging de mensagens como o Log4j para indicar os comportamentos de uma aplicação.

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Associação Carioca de Ensino Superior Centro Universitário Carioca

EJB ainda tem vez no Java EE 6? Fernando Lozano Consultor 4Linux

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Universidade Federal de Uberlândia

1ª QUESTÃO Linguagem C Vantagens: Desvantagens: Linguagem C++ Vantagens: Desvantagens:

Java Básico. Matrícula de Alunos. Marco Antonio, Arquiteto de Software TJDF Novembro/2005

Primeiro programa em Java (compilação e execução)

Apache Camel rotas para as suas mensagens. Bruno Borges 2009

Sintaxe Básica de Java Parte 1

Este livro é dedicado a minha esposa Edna e a todos os desenvolvedores que fizeram do software livre um meio profissional levado a sério.

A Linguagem Java. Apresentação. Java. A Linguagem da Internet

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

SISTEMAS DISTRIBUÍDOS

PROGRAMAÇÃO JAVA. Parte 1

Procedimentos para Configuração do Ambiente J2EE e J2SE em Ambiente Windows

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro

WebWork 2. João Carlos Pinheiro.

Introdução à linguagem Python. Slides extras

INSTITUTO FEDERAL DE EDUCAÇÃO CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TÉCNICO EM INFORMÁTICA DISCIPLINA:

Começando com Ruby on

UNIVERSIDADE FEDERAL DO PARANÁ

Programação Orientada a Objetos (DPADF 0063)

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Alexandre Malveira, Wolflan Camilo

Instalando o J2SE 5.0 JDK no Windows 2000/XP

Linguagem Java. Arquitetura e Ambiente de Desenvolvimento. Arquitetura e Ambiente de Desenvolvimento Prof. Anderson Augustinho Uniandrade

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Programação com sockets (em Java)

Web Services Novembro de 2011

Transcrição:

Groovy & Grails Arian Pasquali

Arian Pasquali 24 anos eu Formado em Sistemas de Informação Java, Objective-C, Flex, Groovy SCJP, SCJA, ACE 6 anos de Java

Orientação a Objetos Plataforma Multi-plataforma Garbage Collector Interplanetária Máquina virtual Java Community Process Just-in-time compiler

Java é fácil?

é simples import java.io.*; class FileRead { public static void main(string args[]) { try{ // Open the file that is the first // command line parameter FileInputStream fstream = new FileInputStream("textfile.txt"); // Get the object of DataInputStream DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String strline; //Read File Line By Line while ((strline = br.readline())!= null) { // Print the content on the console System.out.println (strline); } //Close the input stream in.close(); }catch (Exception e){//catch exception if any System.err.println("Error: " + e.getmessage()); } } }

Java como linguagem Força Orientação a Objetos Não dá pra fazer script Fortemente tipada Não suporta programação funcional Verbose syntax Difícil de aprender A evolução da linguagem é lenta

linguagens dinâmicas ganhando popularidade Python Ruby

Java como plataforma Máquina virtual Gestão de ambiente Segurança Performance Mão de obra

... Linguagens portadas Ruby -> JRuby Python -> Jython Lisp -> Jatha Erlang -> Erjang JavaScript -> Rhino Lua -> LuaJ PHP -> Caucho Quercus pra JVM

mais alternativas?

Groovy extends Java é Java com super poderes

Groovy Linguagem dinâmica baseada em Java que roda na JVM Com mais recursos Syntax mais simples MOP - Meta Object Protocol Tipagem dinâmica opcional Clojures DSLs etc, etc, etc

Curva de aprendizado Baseado no Java Baixa curva de aprendizado para desenvolvedores Java/ Ruby/Python Integração transparente com qualquer código Java existente

Interoperabilidade

Compilado file.groovy file.java bytecode bytecode The Java Virtual Machine Compilada. Não interpretada.

Uma classe.java Uma classe em Java public class HelloWorld { private String name; } public String getname() { return name; } public void setname(string message) { this.name = message; } public String message() { return "Hello World of "+this.name; } public static void main(string[] args) { HelloWorld hello = new HelloWorld(); hello.setname("grooooooovy"); System.out.println(hello.message()); }

Uma classe.groovy Uma classe em Java public class HelloWorld { private String name; } public String getname() { return name; } public void setname(string message) { this.name = message; } public String message() { return "Hello World of "+this.name; } public static void main(string[] args) { HelloWorld hello = new HelloWorld(); hello.setname("grooooooovy"); System.out.println(hello.message()); }

Se você já programa em Java Você já programa em Groovy

A mesma classe a mesma classe em groovy em Groovy class HelloWorld { String name def message() { "Hello World of $name" } } def hello = new HelloWorld(name:"Grooovy") println hello.message()

Tipos dinâmicos usando def Auto getters and setters ; no final da linha é opcional return é opcional () é opcional Tudo em Groovy é public a não ser que você informe

Lists e Maps old way groovy way

Lists e Maps

Lists e Maps

Lists e Maps

GString

Clojures {Bloco de código ou ponteiro para um método}

Operadores

Operator overloading

Elvis Operator old way groovy way

Safe Navigation Operator old way groovy way

Meta-Programming {capacidade de adicionar comportamento em tempo de execução}

Meta-Programming {é possível interceptar chamada de métodos e simular AOP}

Meta-Programming mas e se o método não existir?

Vamos aprender Java? http://www.flickr.com/photos/oskay/472097903/

Instalação Download JDK Download Groovy binaries http://groovy.codehaus.org/download

Instalação JAVA_HOME (Java 1.5 ou >) GROOVY_HOME set PATH para testar digite no terminal groovy -v

Instalação groovysh - comand line client groovyconsole - gui client

Groovy Console

Java Beans mais simples

Java Beans

Java Beans Nos casos mais típicos, normalmente a nossa classe ficaria assim

Leitura de arquivos

Lendo arquivos em Java

import java.io.*; class FileRead { public static void main(string args[]) { try{ // Open the file that is the first // command line parameter FileInputStream fstream = new FileInputStream("textfile.txt"); // Get the object of DataInputStream DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String strline; //Read File Line By Line while ((strline = br.readline())!= null) { // Print the content on the console System.out.println (strline); } //Close the input stream in.close(); }catch (Exception e){//catch exception if any System.err.println("Error: " + e.getmessage()); } } }

Lendo arquivos em Groovy

def file = new File("textfile.txt") file.eachline { line -> println line }

Escrevendo arquivos

Lendo um diretório

Aplicações Scripting (builds, banco de dados, geração de código) Domain Specific Languages Externalização de regra de negócio Ex: Fórmulas matemáticas Web

Então você quer usar groovy?

Mais um framework web? Struts VRaptor Cocoon Wicket Tapestry JSF etc, etc e etc...

Princípios e mantras Full-stack Convenções no lugar de configurações Inspirado no Ruby on Rails, Django e TurboGears Não reinventar a roda Hibernate, Spring, JEE Ser o mais simples possível Reduzindo complexidade Pra Aumentar produtividade Java

Full-stack web framework Mapeamento Objeto Relacional basedado no Hibernate Camada de View - GSP, SiteMesh Injeção de Dependiencia Camada de Controller baseado no SpringMVC Scaffolding (CRUD) Internacionalização (i18n) Webserver embutido - tomcat ou jetty Build (gerenciamento de dependências) - Maven, Ivy Gerenciamento de configurações por ambiente Testes - junit

Grails stack

grails create-app udesc

um projeto grails

Configuração por ambiente

MVC Model View Controller

Domain model validação eventos

CRUD

Querying

Dynamic Finders

Controllers Responsável por tratar os requests Renderiza ou prepara a resposta

Controllers Negaciação de conteúdo Facilita construção de APIs REST

Services Não coloque regras de negócio dentro de Controllers. Use Services Transacionais por default

+ de 680 Plugins

Ferramentas Eclipse (SpringSource) Netbeans InteliJIDEA (melhor opção, porém é paga) Editor de textos : TextMate, vim, etc

duvidas?

arianpasquali.com about.me/arianpasquali arian.pasquali@informant.com.br