O documento fornece um resumo abrangente sobre a linguagem Java e sua plataforma, incluindo: 1) Uma introdução à linguagem Java, sua especificação e comunidade; 2) Uma explicação da máquina virtual Java e suas implementações; 3) Uma visão geral das principais plataformas, tecnologias e frameworks Java.
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.
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.
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
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.*
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
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, …
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]
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
...