• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
76
0
0

Texto

(1)

Groovy & Grails

(2)

Arian Pasquali

24 anos

Formado em Sistemas de

Informação

Java, Objective-C, Flex,

Groovy

SCJP, SCJA, ACE

(3)

Plataforma

Orientação a Objetos

Garbage Collector

Máquina virtual

Multi-plataforma

Interplanetária

Just-in-time compiler

Java Community Process

(4)
(5)

é 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

(6)

Java como linguagem

Força Orientação a Objetos

Não dá pra fazer script

Fortemente tipada

Não suporta programação

funcional

(7)

linguagens dinâmicas

ganhando popularidade

Python

(8)

Java como plataforma

Máquina virtual

Gestão de ambiente

Segurança

Performance

Mão de obra

(9)

Linguagens portadas

pra JVM

Ruby -> JRuby

Python -> Jython

Lisp -> Jatha

Erlang -> Erjang

JavaScript -> Rhino

Lua -> LuaJ

PHP -> Caucho Quercus

(10)
(11)
(12)

Groovy extends Java

(13)

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

(14)

Curva de aprendizado

Baseado no Java

Baixa curva de

aprendizado para

desenvolvedores Java/

Ruby/Python

Integração transparente

com qualquer código

(15)
(16)

Compilado

file.groovy

file.java

The Java Virtual Machine

(17)

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());

}

(18)

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"

);

(19)

Se você já programa

em Java

Você já

programa em

Groovy

(20)

a mesma classe em groovy

class

HelloWorld {

String

name

def

message() {

"Hello World of $name"

}

}

def

hello =

new

HelloWorld(name:

"Grooovy"

)

println

hello.message()

A mesma classe

em Groovy

(21)

Tipos dinâmicos usando “def”

Tudo em Groovy é public a não ser que você informe

Auto getters and setters

; no final da linha é opcional

“return“ é opcional

(22)

Lists e Maps

old way

(23)
(24)
(25)
(26)
(27)

Clojures

(28)
(29)
(30)

Elvis Operator

old way

(31)

Safe Navigation

Operator

old way

(32)

Meta-Programming

{capacidade de adicionar comportamento em tempo

de execução}

(33)

Meta-Programming

{é possível interceptar chamada de métodos e simular

AOP}

(34)

Meta-Programming

(35)
(36)

Instalação

Download JDK

Download Groovy binaries

(37)

Instalação

JAVA_HOME (Java 1.5 ou >)

GROOVY_HOME

set PATH

(38)

Instalação

groovysh - comand line client

(39)
(40)
(41)
(42)
(43)
(44)

Java Beans

Nos casos mais típicos, normalmente a nossa

classe ficaria assim

(45)
(46)
(47)

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());

    }

  }

}

(48)

Lendo arquivos em

Groovy

(49)

def 

file =

new

File(

"textfile.txt"

)

file.eachLine { line ->

println line

}

(50)
(51)
(52)

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

(53)

Então

você

quer

usar

(54)
(55)

Mais um framework web?

Struts

VRaptor

Cocoon

Wicket

Tapestry

JSF

(56)
(57)
(58)

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

(59)

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

(60)
(61)
(62)
(63)
(64)
(65)

MVC

Model

View

(66)

Domain model

eventos

validação

(67)
(68)
(69)
(70)

Controllers

Responsável por tratar os requests

(71)

Controllers

Negaciação de

conteúdo

Facilita construção de

APIs REST

(72)

Services

Não coloque regras de negócio dentro de Controllers. Use

Services

(73)
(74)

Ferramentas

Eclipse (SpringSource)

Netbeans

InteliJIDEA (melhor opção, porém é paga)

(75)

duvidas

?

(76)

arianpasquali.com

about.me/arianpasquali

arian.pasquali@informant.com.br

Referências

Documentos relacionados

A Faculdade de Ciências Integradas do Pontal- FACIP, da Universidade Federal de Uberlândia e os Tutores do Programa de Educação Tutorial (Interdisciplinar) – PET

 Projeto: Nanoemulsões à base de óleo de copaíba (Copaifera multijuga Hayne): Desenvolvimento tecnológico, estudo de permeação cutânea, avaliação da atividade

Desta forma, questões relacionadas às tais dimensões surgem, como a justificação e exercício do poder político sob a ótica da soberania, das relações entre o Estado e

O impacto sobre a redução de habitat tem sua ação na medida em que irão ser extraídas árvores que são fornecedoras de alimentos e abrigo da fauna, por ser uma

22 O meio de contraste utilizado para realizar a incidência de tórax em perfil esquerdo com o esôfago contrastado no estudo radiográfico convencional do coração e dos vasos da

Art.7º - Na hipótese de não ser alcançada a Mediação ou se assim decidirem as partes em comum acordo, a controvérsia poderá ser submetida à Arbitragem, observada a existência

Este arquivo eletrônico, Nota Fiscal Eletrônica (NF-e), será transmitido pela Internet para a Secretaria da Fazenda do Estado em que estiver localizado o emitente, esta fará

Para os fins estabelecidos nesta Resolução, compreende-se por desempenho didático dos docentes a relação entre o desenvolvimento do plano de ensino ou de orientação,