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

Java: Muito mais que uma linguagem!

  • 1.
    Java: muito maisque uma linguagem! Aécio Costa Pós Graduação FCAP-UPE Engenheiro de Sistemas - CESAR
  • 2.
    Agenda  Java: Alinguagem  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 – JavaVirtual Machine JVM é a base da plataforma Java. É o componente responsável pela independência. [ORACLE]
  • 10.
    JVM – JavaVirtual 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 – JavaVirtual Machine
  • 12.
    JVM – JavaVirtual 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.
  • 14.
  • 15.
    Tecnologias  Desktop (Swing) Web (Applets, JSP, Servlets)  Mobile/Embedded (Midlets, Xlets)
  • 16.
    Plataformas JSE – JavaStandard 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 – JavaStandard Edition  Arquitetura
  • 18.
    Plataformas JEE – JavaEnterprise Edition Padrão da indústria para aplicações Java para o ambiente Web e Server-Side.
  • 19.
    Plataformas JEE – JavaEnterprise Edition  Arquitetura
  • 20.
    Plataformas JEE – JavaEnterprise Edition Implementa especificações como:  Servlets  JSP – Java Server Pages  EJB – Entreprise Java Beans  JPA – Java Persistence API
  • 21.
    Plataformas JEE – JavaEnterprise 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 – JavaEnterprise Edition Servlet Container x Application Server
  • 23.
    Plataformas JME – JavaMicro Edition Plataforma usada para desenvolver aplicações para celulares.  Midlets  Especificamente Feature Phones  UI: Lwuit
  • 24.
    (Plataformas) “A primeira plataformaverdadeiramente 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  LinguagemJava  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 desenvolvimentode aplicações para serem embarcadas em smart cards, sim cards, NFC e dispositivos similares que possuam pouca memória.
  • 27.
    Plataformas JavaTV Permite o desenvolvimentode 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 desenvolvimentode aplicativos clientes Java com interfaces (UI) ricas.
  • 30.
    Plataformas JavaFX  Permite aosusuá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 é comouma 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]
  • 33.
  • 34.
    Linguagens Implementação da linguagemPython 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.
  • 37.
  • 38.
    Linguagens Características  Implementação dalinguagem 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
  • 40.
  • 41.
    Linguagens Linguagem de programaçãoprojetada 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.
  • 44.
  • 45.
  • 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 naJVM, CLR e em JavaScript engines;  Dialeto da linguagem LISP;  Linguagem Funcional;  Ênfase em recursão;  Linguagem Dinâmica;  Concorrência.
  • 48.
  • 49.
  • 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 baseadaem 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
  • 53.
  • 54.
    Frameworks Oferece uma programaçãoabrangente 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 mapeamentoobjeto 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  ...
  • 56.
  • 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