SlideShare una empresa de Scribd logo
1 de 58
Java: muito mais que uma linguagem!

Aécio Costa
Pós Graduação FCAP-UPE
Engenheiro de Sistemas - CESAR
Agenda
 Java: A linguagem
 Plataforma Java
 JVM – Java Virtual Machine
 JRE, JDK
 Tecnologias
 Plataformas
 Linguagens
 Frameworks
SunOne 2003 – Java is everywhere!




 http://www.youtube.com/watch?v=guXCmQDy9Es&feature=relmfu
Java: A linguagem
“Java é uma linguagem de programação de propósito
   geral, concorrente, baseada em classes e orientada a
   objetos. Projetada para ter o mínimo de dependências
   possível permitindo desenvolvedores escrever um
   programa uma vez e depois ser capaz de executá-lo
   em qualquer lugar na internet.” [ORACLE]




                      James Gosling
                         Pai do Java
Java: A linguagem
 JCP    – Java Community Process
Mecanismo para o desenvolvimento de especificações técnicas
 padrão para a tecnologia Java.

 JSR   – Java Specification Requests
Simples versão de uma especificação Java.

  ◦ Especificações
      JDBC, JSP, Servlet API, JAX-WS, ...

  ◦ Membros
JCP e ALJUG
 Promove educação, treinamentos, eventos (como
  este!) e etc.;
 Lugar onde é possível encontrar profissionais com
  expertise em diversos assuntos Java;
 Programas lançados pela JCP como “o seu JUG no
  JavaOne Latin America” ou “Adote uma JSR”;
  Desconto de 15% para os JUGs cadastrados no
     evento;
  JUG responsável por uma JSR;
 Além de Network e Currículo.
Plataforma Java
Java não é apenas uma linguagem...

...é uma Plataforma.

Plataforma é uma infra-estrutura para programação
  baseada no poder das redes de computadores e na
  idéia de que uma mesma aplicação possa executar
  em diferentes máquinas, aparelhos e dispositivos
  eletrônicos.

"Write once, run anywhere“
[Sun Microsystems]
Plataforma Java
De laptops à datacenters, game consoles à super
 computadores,   telefones à Internet,   Java is
 everywhere!

   1.1 bilhões de desktops rodam Java;
   930 milhões de downloads da Java Runtime Environment a
    cada ano;
   3 bilhões de mobile phones rodam Java;
   100% de todos Blu-ray players rodam Java;
   1.4 bilhões Java Cards são fabricados a cada ano;
   Set-top boxes, impressoras, Web cams, games, car navigation
    systems, terminais de loteria, dispositivos médicos, estações
    de pagamento de estacionamento, e muito mais rodam Java.
JVM – Java Virtual Machine

JVM é a base da plataforma Java. É o componente
  responsável pela independência. [ORACLE]
JVM – Java Virtual Machine
Características

 JVM não sabe nada sobre a Linguagem Java;
 Entende um tipo de arquivo binário particular
  denominado arquivo de classe (.class);
 O arquivo .class contém instruções também
  conhecidos como bytecodes;
 A JVM impõe fortes restrições sintáticas e estruturais
  sobre o código (.class);
 Qualquer linguagem que possa gerar arquivos de
  classe pode ser hospedada na máquina virtual Java.
JVM – Java Virtual Machine
JVM – Java Virtual Machine
Implementações

 HotSpot;
 OpenJDK;
 JRockit;
 ...
JRE, JDK
 JRE   – Java Runtime Enviroment

Conjunto de ferramentas que permitem a execução de
 aplicativos Java.


 JDK   – Java Development Kit

Conjunto de ferramentas que permite desenvolver
 aplicações Java.
JRE, JDK
Arquitetura
Tecnologias

 Desktop (Swing)
 Web (Applets, JSP, Servlets)
 Mobile/Embedded (Midlets, Xlets)
Plataformas
JSE – Java Standard Edition

Permite desenvolver aplicações seguras, portáveis
  e de alto desempenho para a mais ampla
  variedade de plataformas.

 JVM
 BibliotecasPadrão (java.lang, java.io, ...)
 Aplicações Desktop
 UI: Swing
Plataformas
JSE – Java Standard Edition

   Arquitetura
Plataformas
JEE – Java Enterprise Edition

Padrão da indústria para aplicações Java para o
  ambiente Web e Server-Side.
Plataformas
JEE – Java Enterprise Edition

   Arquitetura
Plataformas
JEE – Java Enterprise Edition

Implementa especificações como:

   Servlets
   JSP – Java Server Pages
   EJB – Entreprise Java Beans
   JPA – Java Persistence API
Plataformas
JEE – Java Enterprise Edition

   Servlet Container

Componente de um Web Server que interage com Servlets Java.

javax.servlet.*

   Application Server

Servidor que implementa as especificações JavaEE.

javax.ejb.*
Plataformas
JEE – Java Enterprise Edition

Servlet Container x     Application Server
Plataformas
JME – Java Micro Edition

Plataforma     usada     para      desenvolver
  aplicações para celulares.

 Midlets
 Especificamente Feature Phones
 UI: Lwuit
(Plataformas)

“A primeira plataforma verdadeiramente aberta e
  compreensiva para dispositivos móveis, tudo que um
  software mobile precisa, mas sem obstáculos que escondam
  a inovação.”




                               Andy Rubin
                   Director of Mobile Platforms



http://googleblog.blogspot.com/2007/11/wheres-my-gphone.html
(Plataformas)
Características
 Linux
 Linguagem Java
 Máquina Virtual Dalvik
 Framework para desenvolvimento de app
     Biblioteca de Gráficos
     SQLite
     Suporte a multimídia
     Tecnologia GSM
     Bluetooth, EDGE, 3G e WiFi
     Câmera e GPS
     Web Services
     Content Providers
Plataformas
JavaCard

Permite o desenvolvimento de aplicações para serem
  embarcadas em smart cards, sim cards, NFC e
  dispositivos similares que possuam pouca memória.
Plataformas
JavaTV

Permite o desenvolvimento de aplicações para uso
  em set-top boxes permitindo interatividade na TV.

   100% dos Blu-ray Disc Players embarcam JavaTV
   Middleware de diversos padrões em TV Digital (MHP, Ginga)
Plataformas
JavaTV

   JMF – Java Media Framework
   JavaDTV
   Ginga-J
   HAVi
   DAVIC




javax.tv.service, javax.tv.graphics, …
Plataformas
JavaFX

Permite o desenvolvimento de aplicativos clientes
  Java com interfaces (UI) ricas.
Plataformas
JavaFX

 Permite aos usuários uma melhor experiência no uso;
 Utilizado em navegadores ou desktop;
 Mais de 50 gráficos personalizáveis​​, formulários e
  componentes layout que podem ser integrados em
  aplicações Swing existentes;
 Alta performance com acelerador de hardware para
  gráficos permitindo visualização de interfaces ricas e
  complexas.
Linguagens
Características
   Linguagem Dinâmica;
   Baseada em Java com características inspiradas em Python,
    Ruby e Smalltalk;
   Curva mínima de aprendizagem;
   Aumenta a produtividade reduzindo scaffolding code;
   Integra sem problemas com classes e bibliotecas Java
    existentes;
   Compila diretamente para Java bytecode.
Linguagens

“Groovy é como uma super versão do Java. Ela aproveita as
  capacidades do Java e provê recursos de produtividade
  interessantes como closures, builders e tipagem dinâmica.
  Se você é um desenvolvedor, você vai amar Groovy.”
  [GROOVY]
Linguagens
Exemplo Código
Linguagens


Implementação da linguagem Python em Java que
  combina poder com sintaxe muito limpa e suporte a
  P.O.O. Jython é complementar a Java e muito usado
  para:

   Embedded scripting
   Interactive experimentation
   Rapid application development
Linguagens
   Embedded scripting
Possibilidade de adicionar bibliotecas Jython aos seus softwares permitindo
   usuários finais escreverem scripts simples ou complexos que adicionem
   funcionalidades a aplicação.

   Interactive experimentation
Fornece um interpretador que pode ser usado para interagir com pacotes Java ou
   com aplicações Java rodando. Isso possibilita depuração de sistemas Java usando
   Jython.


   Rapid application development
Programas em Python são tipicamente menores do que programas em Java
   equivalentes. Jython provê maior produtividade além de poder misturar as duas
   linguagens.
Linguagens
Características

   Compilação dinâmica para Java bytecodes;
   Possibilidade de extender classes Java em Jython (permite
    efeitos de classes abstratas e etc);
   Permite criação de applets, servlets, beans,...;
   Trabalha com bibliotecas já inscritas em Java;
   Excelente Linguagem de scripts para ser embarcada.
Linguagens
Exemplo Código
Linguagens
Características

 Implementação da linguagem Ruby 100% em Java para
  JVM;
 Maioria das bibliotecas padrão Ruby;
     Some are still missing, but we hope to implement as many as is feasible. [JRuby].

   Alta performance.
Linguagens
Plataformas e Ferramentas
   Web Applications
     JRuby on Rails
     Porting de aplicações Rails para JRuby

   Desktop Applications
     Cheri::Swing
     Limelight
     Monkeybars
     Rswing
     ...

   Tools
     JRuby Rake
Linguagens
Exemplo Código
Linguagens


Linguagem de programação projetada para expressar
  padrões de programação comuns de uma forma
  concisa e elegante. Integra recursos de linguagens
  OO e funcional trazendo maior produtividade.
  [SCALA]
Linguagens
Características

 Linguagem Orientada à Objeto/Funcional;
 Estaticamente Tipada;
 Closures;
 Interoperabilidade com Java e .NET.
Linguagens
Porque migrar?

 Impulsionar  produtividade;
 Escalar aplicações;
 Confiabilidade total.
Linguagens
Case
Linguagens
Case
Linguagens
Case

                   back end




   Mudança do Core do enfileiramento de mensagens;
   Motivo: Atender rápidas taxas de crescimento do Twitter;
   1500 Linhas de Código Scala;
   Projeto Open-Source Twitter Kestrel.
Linguagens
Características

 Roda na JVM, CLR e em JavaScript engines;
 Dialeto da linguagem LISP;
 Linguagem Funcional;
 Ênfase em recursão;
 Linguagem Dinâmica;
 Concorrência.
Linguagens
Exemplo de Código 1
Linguagens
Exemplo de Código 2
Frameworks
 Apache Velocity
 Struts
 JSF  – Java Server Faces
 Google Web Toolkit
 Spring
 EclipseLink
 Hibernate
 JBoss Seam
 ...
Frameworks

Framework open source        para   criação   de
  aplicações Java Web.

Desenhado para permitir a separação arquitetural
 em MVC (Model,View, Controller).

Versão Atual: Struts 2
Frameworks

Especificação padrão baseada em componentes
  de UI para a plataforma Java EE. [JSF]

Especificado na JSR – 314, JSF estabelece o padrão
  para construir UI do lado do servidor.
  [ORACLE].

Versão Atual: JSF 2.0
Frameworks
Implementações
Frameworks

Oferece uma programação abrangente e um modelo
 de configuração para aplicações baseadas em Java
 EE. [SPRING]

   Spring Security
   Spring Integration
   Spring Batch
   Spring Data
   Spring Web Flow
   Spring Web Services
   Spring Mobile
   Spring Social
   Spring Android
Frameworks

Framework para mapeamento objeto relacional
  (ORM) para a linguagem Java.

 Mapeia classes Java para base de dados;
 Persistência de objetos POJO’s;
 Hibernate Query Language (HQL);
 Possui outros componentes como:
     Hibernate Validator
     Hibernate OGM – Object/Grid Mapper
     ...
Dúvidas?
Referências
[ORACLE] http://docs.oracle.com/javase/specs/jls/se7/html/jls-1.html
[SCALA] http://www.scala-lang.org/
[GROOVY] http://groovy.codehaus.org/
[JYTHON] http://www.jython.org/
[JRUBY] http://jruby.org/
[STRUTS] http://struts.apache.org/
[JSF] http://www.javaserverfaces.org/
[SPRING] http://www.springsource.org/spring-framework
[HIBERNATE] http://www.hibernate.org
[ANDROID] http://developer.android.com
Obrigado!



      www.aeciocosta.com.br




            www.cesar.org.br

Más contenido relacionado

La actualidad más candente

Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos JavaMarcio Marinho
 
Palestra Desenvolvimento de Apps Móveis: Iniciando no iOS e Android
Palestra Desenvolvimento de Apps Móveis: Iniciando no iOS e AndroidPalestra Desenvolvimento de Apps Móveis: Iniciando no iOS e Android
Palestra Desenvolvimento de Apps Móveis: Iniciando no iOS e AndroidCarlos Eugenio Torres
 
Java, historico e futuro
Java, historico e futuroJava, historico e futuro
Java, historico e futuroFabiano Souza
 
Introdução a linguagem java
Introdução a linguagem javaIntrodução a linguagem java
Introdução a linguagem javaRosicleia Frasson
 
Curso Android - Dia 1 - Apresentação java
Curso Android - Dia 1 - Apresentação javaCurso Android - Dia 1 - Apresentação java
Curso Android - Dia 1 - Apresentação javaAlex Braz
 
Tutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com JavaTutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com JavaPaulo César M Jeveaux
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaRosicleia Frasson
 
Programação em java linguagem, ap is, boas práticas e eclipse
Programação em java   linguagem, ap is, boas práticas e eclipseProgramação em java   linguagem, ap is, boas práticas e eclipse
Programação em java linguagem, ap is, boas práticas e eclipseFilipe Bezerra Sousa
 
Iniciação JSP!
Iniciação JSP!Iniciação JSP!
Iniciação JSP!JErickPPTs
 
Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Luis Borges Gouveia
 
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaSeminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaDiego Cavalca
 

La actualidad más candente (19)

Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
 
Palestra Desenvolvimento de Apps Móveis: Iniciando no iOS e Android
Palestra Desenvolvimento de Apps Móveis: Iniciando no iOS e AndroidPalestra Desenvolvimento de Apps Móveis: Iniciando no iOS e Android
Palestra Desenvolvimento de Apps Móveis: Iniciando no iOS e Android
 
Netbeans
NetbeansNetbeans
Netbeans
 
Java, historico e futuro
Java, historico e futuroJava, historico e futuro
Java, historico e futuro
 
Introdução a linguagem java
Introdução a linguagem javaIntrodução a linguagem java
Introdução a linguagem java
 
Java
JavaJava
Java
 
Curso Android - Dia 1 - Apresentação java
Curso Android - Dia 1 - Apresentação javaCurso Android - Dia 1 - Apresentação java
Curso Android - Dia 1 - Apresentação java
 
Tutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com JavaTutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com Java
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
Academia java intensivo
Academia java intensivoAcademia java intensivo
Academia java intensivo
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com Java
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
Programação em java linguagem, ap is, boas práticas e eclipse
Programação em java   linguagem, ap is, boas práticas e eclipseProgramação em java   linguagem, ap is, boas práticas e eclipse
Programação em java linguagem, ap is, boas práticas e eclipse
 
1213 java
1213 java1213 java
1213 java
 
Iniciação JSP!
Iniciação JSP!Iniciação JSP!
Iniciação JSP!
 
Java modulo 01 - Introdução
Java modulo 01 - IntroduçãoJava modulo 01 - Introdução
Java modulo 01 - Introdução
 
Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)
 
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaSeminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec Cafelândia
 

Similar a Java: mais que linguagem

Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaDaniel Brandão
 
JavaFX - Uma visão Geral
JavaFX - Uma visão GeralJavaFX - Uma visão Geral
JavaFX - Uma visão GeralEder Nogueira
 
Jugday - Java Básico
Jugday - Java BásicoJugday - Java Básico
Jugday - Java BásicoPaloma Costa
 
Introdução a Tecnologia Java
Introdução a Tecnologia JavaIntrodução a Tecnologia Java
Introdução a Tecnologia JavaThiago Gonzaga
 
Ferramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilFerramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilInael Rodrigues
 
WebSphere 8 Intro (pt-BR)
WebSphere 8 Intro (pt-BR)WebSphere 8 Intro (pt-BR)
WebSphere 8 Intro (pt-BR)Juarez Junior
 
Poo1 aula 1 - java - história e introdução
Poo1   aula 1 - java -  história e introduçãoPoo1   aula 1 - java -  história e introdução
Poo1 aula 1 - java - história e introduçãoDenis Sobrenome
 
Poo1 aula 1 - java - história e introdução
Poo1   aula 1 - java -  história e introduçãoPoo1   aula 1 - java -  história e introdução
Poo1 aula 1 - java - história e introduçãoDenis Sobrenome
 
Java No Mundo Real
Java No Mundo RealJava No Mundo Real
Java No Mundo RealSaulo Arruda
 
Palestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao JavafxPalestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao Javafxalfredofurtado
 
Apostila Java
Apostila JavaApostila Java
Apostila Javadeilton
 
Apostila Java
Apostila JavaApostila Java
Apostila Javadeilton
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVMWilliam Gouvea
 
Apresentação java
Apresentação javaApresentação java
Apresentação javamunosai
 
[DESATUALIZADO] Apostila Desenvolvimento Android Básico
[DESATUALIZADO] Apostila Desenvolvimento Android Básico[DESATUALIZADO] Apostila Desenvolvimento Android Básico
[DESATUALIZADO] Apostila Desenvolvimento Android BásicoMau Salamon
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 

Similar a Java: mais que linguagem (20)

Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
Aula 01 o que é java
Aula 01  o que é javaAula 01  o que é java
Aula 01 o que é java
 
JavaFX - Uma visão Geral
JavaFX - Uma visão GeralJavaFX - Uma visão Geral
JavaFX - Uma visão Geral
 
ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01
 
Jugday - Java Básico
Jugday - Java BásicoJugday - Java Básico
Jugday - Java Básico
 
Introdução a Tecnologia Java
Introdução a Tecnologia JavaIntrodução a Tecnologia Java
Introdução a Tecnologia Java
 
Ferramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilFerramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento Ágil
 
WebSphere 8 Intro (pt-BR)
WebSphere 8 Intro (pt-BR)WebSphere 8 Intro (pt-BR)
WebSphere 8 Intro (pt-BR)
 
Poo1 aula 1 - java - história e introdução
Poo1   aula 1 - java -  história e introduçãoPoo1   aula 1 - java -  história e introdução
Poo1 aula 1 - java - história e introdução
 
Poo1 aula 1 - java - história e introdução
Poo1   aula 1 - java -  história e introduçãoPoo1   aula 1 - java -  história e introdução
Poo1 aula 1 - java - história e introdução
 
Javafx
JavafxJavafx
Javafx
 
Java No Mundo Real
Java No Mundo RealJava No Mundo Real
Java No Mundo Real
 
Palestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao JavafxPalestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao Javafx
 
Aula 1 1
Aula 1 1Aula 1 1
Aula 1 1
 
Apostila Java
Apostila JavaApostila Java
Apostila Java
 
Apostila Java
Apostila JavaApostila Java
Apostila Java
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVM
 
Apresentação java
Apresentação javaApresentação java
Apresentação java
 
[DESATUALIZADO] Apostila Desenvolvimento Android Básico
[DESATUALIZADO] Apostila Desenvolvimento Android Básico[DESATUALIZADO] Apostila Desenvolvimento Android Básico
[DESATUALIZADO] Apostila Desenvolvimento Android Básico
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 

Más de Aécio Costa

Android - de usuários a desenvolvedores
Android - de usuários a desenvolvedoresAndroid - de usuários a desenvolvedores
Android - de usuários a desenvolvedoresAécio Costa
 
Desafios e perspectivas para TV Conectada
Desafios e perspectivas para TV ConectadaDesafios e perspectivas para TV Conectada
Desafios e perspectivas para TV ConectadaAécio Costa
 
Facebook api além de meros usuários
Facebook api além de meros usuáriosFacebook api além de meros usuários
Facebook api além de meros usuáriosAécio Costa
 
Google tv desafios e oportunidades na tv conectada
Google tv desafios e oportunidades na tv conectadaGoogle tv desafios e oportunidades na tv conectada
Google tv desafios e oportunidades na tv conectadaAécio Costa
 
Refinamento e boas práticas de programação
Refinamento e boas práticas de programaçãoRefinamento e boas práticas de programação
Refinamento e boas práticas de programaçãoAécio Costa
 
Introdução ao Google TV
Introdução ao Google TVIntrodução ao Google TV
Introdução ao Google TVAécio Costa
 
Grails: The search is over
Grails: The search is overGrails: The search is over
Grails: The search is overAécio Costa
 

Más de Aécio Costa (7)

Android - de usuários a desenvolvedores
Android - de usuários a desenvolvedoresAndroid - de usuários a desenvolvedores
Android - de usuários a desenvolvedores
 
Desafios e perspectivas para TV Conectada
Desafios e perspectivas para TV ConectadaDesafios e perspectivas para TV Conectada
Desafios e perspectivas para TV Conectada
 
Facebook api além de meros usuários
Facebook api além de meros usuáriosFacebook api além de meros usuários
Facebook api além de meros usuários
 
Google tv desafios e oportunidades na tv conectada
Google tv desafios e oportunidades na tv conectadaGoogle tv desafios e oportunidades na tv conectada
Google tv desafios e oportunidades na tv conectada
 
Refinamento e boas práticas de programação
Refinamento e boas práticas de programaçãoRefinamento e boas práticas de programação
Refinamento e boas práticas de programação
 
Introdução ao Google TV
Introdução ao Google TVIntrodução ao Google TV
Introdução ao Google TV
 
Grails: The search is over
Grails: The search is overGrails: The search is over
Grails: The search is over
 

Java: mais que linguagem

  • 1. Java: muito mais que uma linguagem! Aécio Costa Pós Graduação FCAP-UPE Engenheiro de Sistemas - CESAR
  • 2. Agenda  Java: A linguagem  Plataforma Java  JVM – Java Virtual Machine  JRE, JDK  Tecnologias  Plataformas  Linguagens  Frameworks
  • 3. SunOne 2003 – Java is everywhere! http://www.youtube.com/watch?v=guXCmQDy9Es&feature=relmfu
  • 4. Java: A linguagem “Java é uma linguagem de programação de propósito geral, concorrente, baseada em classes e orientada a objetos. Projetada para ter o mínimo de dependências possível permitindo desenvolvedores escrever um programa uma vez e depois ser capaz de executá-lo em qualquer lugar na internet.” [ORACLE] James Gosling Pai do Java
  • 5. Java: A linguagem  JCP – Java Community Process Mecanismo para o desenvolvimento de especificações técnicas padrão para a tecnologia Java.  JSR – Java Specification Requests Simples versão de uma especificação Java. ◦ Especificações  JDBC, JSP, Servlet API, JAX-WS, ... ◦ Membros
  • 6. JCP e ALJUG  Promove educação, treinamentos, eventos (como este!) e etc.;  Lugar onde é possível encontrar profissionais com expertise em diversos assuntos Java;  Programas lançados pela JCP como “o seu JUG no JavaOne Latin America” ou “Adote uma JSR”; Desconto de 15% para os JUGs cadastrados no evento; JUG responsável por uma JSR;  Além de Network e Currículo.
  • 7. Plataforma Java Java não é apenas uma linguagem... ...é uma Plataforma. Plataforma é uma infra-estrutura para programação baseada no poder das redes de computadores e na idéia de que uma mesma aplicação possa executar em diferentes máquinas, aparelhos e dispositivos eletrônicos. "Write once, run anywhere“ [Sun Microsystems]
  • 8. Plataforma Java De laptops à datacenters, game consoles à super computadores, telefones à Internet, Java is everywhere!  1.1 bilhões de desktops rodam Java;  930 milhões de downloads da Java Runtime Environment a cada ano;  3 bilhões de mobile phones rodam Java;  100% de todos Blu-ray players rodam Java;  1.4 bilhões Java Cards são fabricados a cada ano;  Set-top boxes, impressoras, Web cams, games, car navigation systems, terminais de loteria, dispositivos médicos, estações de pagamento de estacionamento, e muito mais rodam Java.
  • 9. JVM – Java Virtual Machine JVM é a base da plataforma Java. É o componente responsável pela independência. [ORACLE]
  • 10. JVM – Java Virtual Machine Características  JVM não sabe nada sobre a Linguagem Java;  Entende um tipo de arquivo binário particular denominado arquivo de classe (.class);  O arquivo .class contém instruções também conhecidos como bytecodes;  A JVM impõe fortes restrições sintáticas e estruturais sobre o código (.class);  Qualquer linguagem que possa gerar arquivos de classe pode ser hospedada na máquina virtual Java.
  • 11. JVM – Java Virtual Machine
  • 12. JVM – Java Virtual Machine Implementações  HotSpot;  OpenJDK;  JRockit;  ...
  • 13. JRE, JDK  JRE – Java Runtime Enviroment Conjunto de ferramentas que permitem a execução de aplicativos Java.  JDK – Java Development Kit Conjunto de ferramentas que permite desenvolver aplicações Java.
  • 15. Tecnologias  Desktop (Swing)  Web (Applets, JSP, Servlets)  Mobile/Embedded (Midlets, Xlets)
  • 16. Plataformas JSE – Java Standard Edition Permite desenvolver aplicações seguras, portáveis e de alto desempenho para a mais ampla variedade de plataformas.  JVM  BibliotecasPadrão (java.lang, java.io, ...)  Aplicações Desktop  UI: Swing
  • 17. Plataformas JSE – Java Standard Edition  Arquitetura
  • 18. Plataformas JEE – Java Enterprise Edition Padrão da indústria para aplicações Java para o ambiente Web e Server-Side.
  • 19. Plataformas JEE – Java Enterprise Edition  Arquitetura
  • 20. Plataformas JEE – Java Enterprise Edition Implementa especificações como:  Servlets  JSP – Java Server Pages  EJB – Entreprise Java Beans  JPA – Java Persistence API
  • 21. Plataformas JEE – Java Enterprise Edition  Servlet Container Componente de um Web Server que interage com Servlets Java. javax.servlet.*  Application Server Servidor que implementa as especificações JavaEE. javax.ejb.*
  • 22. Plataformas JEE – Java Enterprise Edition Servlet Container x Application Server
  • 23. Plataformas JME – Java Micro Edition Plataforma usada para desenvolver aplicações para celulares.  Midlets  Especificamente Feature Phones  UI: Lwuit
  • 24. (Plataformas) “A primeira plataforma verdadeiramente aberta e compreensiva para dispositivos móveis, tudo que um software mobile precisa, mas sem obstáculos que escondam a inovação.” Andy Rubin Director of Mobile Platforms http://googleblog.blogspot.com/2007/11/wheres-my-gphone.html
  • 25. (Plataformas) Características  Linux  Linguagem Java  Máquina Virtual Dalvik  Framework para desenvolvimento de app  Biblioteca de Gráficos  SQLite  Suporte a multimídia  Tecnologia GSM  Bluetooth, EDGE, 3G e WiFi  Câmera e GPS  Web Services  Content Providers
  • 26. Plataformas JavaCard Permite o desenvolvimento de aplicações para serem embarcadas em smart cards, sim cards, NFC e dispositivos similares que possuam pouca memória.
  • 27. Plataformas JavaTV Permite o desenvolvimento de aplicações para uso em set-top boxes permitindo interatividade na TV.  100% dos Blu-ray Disc Players embarcam JavaTV  Middleware de diversos padrões em TV Digital (MHP, Ginga)
  • 28. Plataformas JavaTV  JMF – Java Media Framework  JavaDTV  Ginga-J  HAVi  DAVIC javax.tv.service, javax.tv.graphics, …
  • 29. Plataformas JavaFX Permite o desenvolvimento de aplicativos clientes Java com interfaces (UI) ricas.
  • 30. Plataformas JavaFX  Permite aos usuários uma melhor experiência no uso;  Utilizado em navegadores ou desktop;  Mais de 50 gráficos personalizáveis​​, formulários e componentes layout que podem ser integrados em aplicações Swing existentes;  Alta performance com acelerador de hardware para gráficos permitindo visualização de interfaces ricas e complexas.
  • 31. Linguagens Características  Linguagem Dinâmica;  Baseada em Java com características inspiradas em Python, Ruby e Smalltalk;  Curva mínima de aprendizagem;  Aumenta a produtividade reduzindo scaffolding code;  Integra sem problemas com classes e bibliotecas Java existentes;  Compila diretamente para Java bytecode.
  • 32. Linguagens “Groovy é como uma super versão do Java. Ela aproveita as capacidades do Java e provê recursos de produtividade interessantes como closures, builders e tipagem dinâmica. Se você é um desenvolvedor, você vai amar Groovy.” [GROOVY]
  • 34. Linguagens Implementação da linguagem Python em Java que combina poder com sintaxe muito limpa e suporte a P.O.O. Jython é complementar a Java e muito usado para:  Embedded scripting  Interactive experimentation  Rapid application development
  • 35. Linguagens  Embedded scripting Possibilidade de adicionar bibliotecas Jython aos seus softwares permitindo usuários finais escreverem scripts simples ou complexos que adicionem funcionalidades a aplicação.  Interactive experimentation Fornece um interpretador que pode ser usado para interagir com pacotes Java ou com aplicações Java rodando. Isso possibilita depuração de sistemas Java usando Jython.  Rapid application development Programas em Python são tipicamente menores do que programas em Java equivalentes. Jython provê maior produtividade além de poder misturar as duas linguagens.
  • 36. Linguagens Características  Compilação dinâmica para Java bytecodes;  Possibilidade de extender classes Java em Jython (permite efeitos de classes abstratas e etc);  Permite criação de applets, servlets, beans,...;  Trabalha com bibliotecas já inscritas em Java;  Excelente Linguagem de scripts para ser embarcada.
  • 38. Linguagens Características  Implementação da linguagem Ruby 100% em Java para JVM;  Maioria das bibliotecas padrão Ruby;  Some are still missing, but we hope to implement as many as is feasible. [JRuby].  Alta performance.
  • 39. Linguagens Plataformas e Ferramentas  Web Applications  JRuby on Rails  Porting de aplicações Rails para JRuby  Desktop Applications  Cheri::Swing  Limelight  Monkeybars  Rswing  ...  Tools  JRuby Rake
  • 41. Linguagens Linguagem de programação projetada para expressar padrões de programação comuns de uma forma concisa e elegante. Integra recursos de linguagens OO e funcional trazendo maior produtividade. [SCALA]
  • 42. Linguagens Características  Linguagem Orientada à Objeto/Funcional;  Estaticamente Tipada;  Closures;  Interoperabilidade com Java e .NET.
  • 43. Linguagens Porque migrar?  Impulsionar produtividade;  Escalar aplicações;  Confiabilidade total.
  • 46. Linguagens Case back end  Mudança do Core do enfileiramento de mensagens;  Motivo: Atender rápidas taxas de crescimento do Twitter;  1500 Linhas de Código Scala;  Projeto Open-Source Twitter Kestrel.
  • 47. Linguagens Características  Roda na JVM, CLR e em JavaScript engines;  Dialeto da linguagem LISP;  Linguagem Funcional;  Ênfase em recursão;  Linguagem Dinâmica;  Concorrência.
  • 50. Frameworks  Apache Velocity  Struts  JSF – Java Server Faces  Google Web Toolkit  Spring  EclipseLink  Hibernate  JBoss Seam  ...
  • 51. Frameworks Framework open source para criação de aplicações Java Web. Desenhado para permitir a separação arquitetural em MVC (Model,View, Controller). Versão Atual: Struts 2
  • 52. Frameworks Especificação padrão baseada em componentes de UI para a plataforma Java EE. [JSF] Especificado na JSR – 314, JSF estabelece o padrão para construir UI do lado do servidor. [ORACLE]. Versão Atual: JSF 2.0
  • 54. Frameworks Oferece uma programação abrangente e um modelo de configuração para aplicações baseadas em Java EE. [SPRING]  Spring Security  Spring Integration  Spring Batch  Spring Data  Spring Web Flow  Spring Web Services  Spring Mobile  Spring Social  Spring Android
  • 55. Frameworks Framework para mapeamento objeto relacional (ORM) para a linguagem Java.  Mapeia classes Java para base de dados;  Persistência de objetos POJO’s;  Hibernate Query Language (HQL);  Possui outros componentes como:  Hibernate Validator  Hibernate OGM – Object/Grid Mapper  ...
  • 57. Referências [ORACLE] http://docs.oracle.com/javase/specs/jls/se7/html/jls-1.html [SCALA] http://www.scala-lang.org/ [GROOVY] http://groovy.codehaus.org/ [JYTHON] http://www.jython.org/ [JRUBY] http://jruby.org/ [STRUTS] http://struts.apache.org/ [JSF] http://www.javaserverfaces.org/ [SPRING] http://www.springsource.org/spring-framework [HIBERNATE] http://www.hibernate.org [ANDROID] http://developer.android.com
  • 58. Obrigado! www.aeciocosta.com.br www.cesar.org.br