Java nas Nuvens:
Uma abordagem de Cloud Computing com Java




                              Thiago Gonzaga
                                Java Noroeste
Agenda

   Quem?!
   Java?! Que saci é esse?
   Cloud Computing?! Que saci é esse, parte 2?
   Google App Engine
   Por quê Java?
   Por onde começo?
   JSP
   Servlets
   Banco de Dados NoSQL (Big Table)
   Mapeamento Objeto-Relacional e Persistência
   Java Noroeste
Quem é esse LOKO?!

   Estudante de computação
   Trabalhou na Sun Microsystems (hoje, Oracle) por 2 anos.
   Programador Java há +5 anos.
   Palestrante em vários eventos: Campus Party, Just Java, etc
   Coordenador do Java Noroeste
   Membro fundador e organizador do projeto Java Day
   E Professor de Inglês!!!
JAVA?! QUE SACI É ESSE?!
O que é Java?



Linguagem de programação + Plataforma
Linguagem

   Alto nível
   Híbrida
   Compilada para bytecodes
   Orientada a objetos
   Sintáxe semelhante ao C++
   Robusta e altamente escalável
   Multiplataforma
Plataforma

   Java Virtual Machine
   Responsável por tornar Java multiplataforma
   Interpreta bytecodes e tranforma em linguagem
    de máquina
   JIT (Just-in-Time Compiler)
   Sandbox
   Garbage Collector
Processo do Código
Ou seja...
QUE DIFERENÇA ISSO FAZ?!
Essa...
CLOUD COMPUTING?! QUE SACI É ESSE?
            PARTE 2
Cloud Computing

   informações são processadas e armazenadas
    em diversos servidores (centenas, muitas
    vezes milhares deles) espalhados pela Internet.
   Transparência
   Internet = Nuvem (Cloud)
   Serviço
   Pague pelo que usar
   Melhor aproveitamento dos recursos
Cloud Computing

   Serviços na Cloud:
       IaaS (Infrastructure as a Service, ou
        Infraestrutura como Serviço)
       PaaS (Platform as a Service, ou Plataforma
        como Serviço)
       SaaS (Software as a Service, ou Software
        como Serviço)
Google App Engine

   PaaS
   Conjunto de tecnologias para criar e hospedar
    aplicativos da web
   Java
   Python
   BigTable (NoSQL)
   Alta disponibilidade
   Gratuito até certo ponto
Por Quê Java?

   Plataforma
   JVM
   JIT
   Sandbox
   Escalabilidade
   Scala, PHP, Ruby, Python, ...
Por onde começo?

   Baixe o Eclipse
   Baixe o SDK
Problema




    Cadastro de participantes do evento
Vamos por partes...

   Módulos:
       Cadastro
       Edição
       Remoção de registros
       Busca de um registro
JSP

   Java Server Pages
   Integração Cliente/Servidor
   Utiliza 2 padrões de codificação: Java e JSP
    tags
   O conteúdo é gerado no servidor e
    transformado em HTML.
   Similar ao PHP e ASP.
Exemplo

   Tags:
    <%@ page contentType="text/html;charset=UTF-8"
    language="java" %> (obrigatória no topo de toda página JSP
    antes de qualquer html)
    <%@ page import="java.util.List" %> (imports da página)
   Java:
   <% out.println(”Hello World!”) %> - Todo código java vai
    entre ”<% %>”
Servlets

   Miniservidores
   Recursos disponiveis na parte do servidor
   Acesso via GET ou POST
   Acesso direto ao Banco de Dados
NoSQL

   Sistema simples
   Geralmente arquivo de texto plano
   Sem relacionamentos
   Mais rápido
   Problema de consistência de dados
   Pode ser resolvido via código
Mapeamento Objeto/Relacional

   Define a tabela do banco em um POJO (Plan
    Old Java Object)
   Persistentes
   JPA (Java Persistence API)
   Simples de usar
   Pode trabalhar em conjunto com outros
    frameworks, como Hibernate ou TopLink
Exemplo
@Entity
public class Participante {

            @Id
            @GeneratedValue(strategy = GenerationType.IDENTITY)
            private Long id;
            private String nome;
            private String email;

            public Long getId() {
            return id;
            }

            public String getNome() {
            return nome;
            }

            public void setNome(String nome) {
            this.nome = nome;
            }


            public String getEmail() {
            return email;
            }

            public void setEmail(String email) {
            this.email = email;
            }
}
Prática
Java Noroeste

   Grupo de usuários Java
   Lista de e-mails
   Mais de 1000 usuários cadastrados
   Um dos maiores grupos do Brasil
   Dúvidas
   Eventos
   Região de Rio Preto
   Site: www.javanoroeste.com.br
?!

DÚVIDAS
OBRIGADO!
Java nas Nuvens:
Uma abordagem de Cloud Computing com Java




Thiago Gonzaga
Twitter: @thiago_javaboy
Facebook: http://www.facebook.com/thiago.gonzaga

Compweek

  • 1.
    Java nas Nuvens: Umaabordagem de Cloud Computing com Java Thiago Gonzaga Java Noroeste
  • 2.
    Agenda  Quem?!  Java?! Que saci é esse?  Cloud Computing?! Que saci é esse, parte 2?  Google App Engine  Por quê Java?  Por onde começo?  JSP  Servlets  Banco de Dados NoSQL (Big Table)  Mapeamento Objeto-Relacional e Persistência  Java Noroeste
  • 3.
    Quem é esseLOKO?!  Estudante de computação  Trabalhou na Sun Microsystems (hoje, Oracle) por 2 anos.  Programador Java há +5 anos.  Palestrante em vários eventos: Campus Party, Just Java, etc  Coordenador do Java Noroeste  Membro fundador e organizador do projeto Java Day  E Professor de Inglês!!!
  • 4.
    JAVA?! QUE SACIÉ ESSE?!
  • 5.
    O que éJava? Linguagem de programação + Plataforma
  • 6.
    Linguagem  Alto nível  Híbrida  Compilada para bytecodes  Orientada a objetos  Sintáxe semelhante ao C++  Robusta e altamente escalável  Multiplataforma
  • 7.
    Plataforma  Java Virtual Machine  Responsável por tornar Java multiplataforma  Interpreta bytecodes e tranforma em linguagem de máquina  JIT (Just-in-Time Compiler)  Sandbox  Garbage Collector
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
    CLOUD COMPUTING?! QUESACI É ESSE? PARTE 2
  • 13.
    Cloud Computing  informações são processadas e armazenadas em diversos servidores (centenas, muitas vezes milhares deles) espalhados pela Internet.  Transparência  Internet = Nuvem (Cloud)  Serviço  Pague pelo que usar  Melhor aproveitamento dos recursos
  • 14.
    Cloud Computing  Serviços na Cloud:  IaaS (Infrastructure as a Service, ou Infraestrutura como Serviço)  PaaS (Platform as a Service, ou Plataforma como Serviço)  SaaS (Software as a Service, ou Software como Serviço)
  • 15.
    Google App Engine  PaaS  Conjunto de tecnologias para criar e hospedar aplicativos da web  Java  Python  BigTable (NoSQL)  Alta disponibilidade  Gratuito até certo ponto
  • 16.
    Por Quê Java?  Plataforma  JVM  JIT  Sandbox  Escalabilidade  Scala, PHP, Ruby, Python, ...
  • 17.
    Por onde começo?  Baixe o Eclipse  Baixe o SDK
  • 18.
    Problema Cadastro de participantes do evento
  • 19.
    Vamos por partes...  Módulos:  Cadastro  Edição  Remoção de registros  Busca de um registro
  • 20.
    JSP  Java Server Pages  Integração Cliente/Servidor  Utiliza 2 padrões de codificação: Java e JSP tags  O conteúdo é gerado no servidor e transformado em HTML.  Similar ao PHP e ASP.
  • 21.
    Exemplo  Tags: <%@ page contentType="text/html;charset=UTF-8" language="java" %> (obrigatória no topo de toda página JSP antes de qualquer html) <%@ page import="java.util.List" %> (imports da página)  Java:  <% out.println(”Hello World!”) %> - Todo código java vai entre ”<% %>”
  • 22.
    Servlets  Miniservidores  Recursos disponiveis na parte do servidor  Acesso via GET ou POST  Acesso direto ao Banco de Dados
  • 23.
    NoSQL  Sistema simples  Geralmente arquivo de texto plano  Sem relacionamentos  Mais rápido  Problema de consistência de dados  Pode ser resolvido via código
  • 24.
    Mapeamento Objeto/Relacional  Define a tabela do banco em um POJO (Plan Old Java Object)  Persistentes  JPA (Java Persistence API)  Simples de usar  Pode trabalhar em conjunto com outros frameworks, como Hibernate ou TopLink
  • 25.
    Exemplo @Entity public class Participante{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String nome; private String email; public Long getId() { return id; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
  • 26.
  • 27.
    Java Noroeste  Grupo de usuários Java  Lista de e-mails  Mais de 1000 usuários cadastrados  Um dos maiores grupos do Brasil  Dúvidas  Eventos  Região de Rio Preto  Site: www.javanoroeste.com.br
  • 28.
  • 29.
    OBRIGADO! Java nas Nuvens: Umaabordagem de Cloud Computing com Java Thiago Gonzaga Twitter: @thiago_javaboy Facebook: http://www.facebook.com/thiago.gonzaga