Introdução à Tecnologia Java
Vítor E. Silva Souza vitorsouza@gmail.com
http:/ / www.javablogs.com.br/ page/ engenho http:/ / esjug.dev.java.net
– Julho 2005 –
Sobre o palestrante
Formação:
{ Graduação em Ciência da Computação, com ênfase em
Engenharia de Software, pela Universidade Federal do Espírito Santo (UFES);
{ Mestrado em I nformática (em andamento) na mesma
instituição.
Java:
{ Desenvolvedor Java desde 1999;
{ Especialista em desenvolvimento Web;
{ Autor do blog Engenho – www.javablogs.com.br/ page/ engenho.
Profissional:
{ Consultor em Desenvolvimento de Software Orientado a
Agenda
Um pouco de história;
O que é Java;
Desenvolvimento orientado a objetos;
Arquitetura da plataforma;
Aplicações;
Java no mercado;
Comunidades;
Há m uito tem po atrás, na
Sun MicroSystem s...
Patrick Naughton, engenheiro da Sun,
estava cansado e iria sair;
Scott McNealy, CEO da Sun, pediu para que
ele escrevesse o que estava errado;
Naughton não poupou palavras, mas achou
que não ia dar em nada;
McNealy enviou a mensagem para outros e
Naughton recebeu uma enxurrada de
Nasce o projeto Green
A Sun, então, faz sua contra-proposta: cria
o projeto Green para desenvolver algo inovador;
Reclusos e sem contato com a Sun, os
melhores desenvolvedores analisavam e debatiam sobre tecnologias existentes;
A sacada: como aparelhos eletrônicos
(jogos, TVs, VCRs, etc.) poderiam comunicar-se uns com os outros?
Oak e StarSeven
Começaram a desenvolver uma nova
linguagem, batizada de Oak;
{ Criada por James Gosling; { Orientada a Objetos;
{ Parecida com C+ + ;
{ Projetada para rodar em
diferentes hardwares.
Desenvolveram, então, um controle
Mudança de rum os
Depois de 18 meses, a Sun transforma o
projeto Green em uma empresa, chamada “First Person” e tira o time da reclusão;
A empresa tinha uma boa idéia, mas não
tinha mercado;
Em 1993 foi lançado o Mosaic, primeiro
navegador para a World Wide Web;
O projeto muda de rumo e aposta no
sucesso da I nternet, que se encaixava perfeitamente com as idéias do grupo;
A nova idéia era criar um sistema para
Nasce Java! – 23/ 05/ 1995
A linguagem Oak se tornaria o produto.
Naughton sugere que seja distribuída gratuitamente na web;
O time desenvolve o navegador
WebRunner, mais tarde HotJava Browser. Nascem as Applets;
Sun concorda em disponibilizar Oak,
mas antes troca seu nome para Java (outros mais cotados: Neon, Lyric, Pepper e Silk);
A Netscape anuncia seu novo navegador
Java hoje
Java faz 10 anos;
Evolução:
{ Java 1.0a;
{ Java Development Kit 1.1; { Java 2 Platform 1.2;
{ Java 2 Platform 1.3; { Java 2 Platform 1.4;
{ Java 2 Platform 5.0 (Tiger);
O Que é Java
A linguagem, a plataforma, o
processo de especificação,
O que é Java?
Java é...
{ Um software?
{ Uma tecnologia?
{ Uma linguagem de programação?
{ Uma plataforma de desenvolvimento?
Java é tudo isso!
Simples, orientada a objetos;
I ndependente de plataforma (WORA);
Portável, baseada no poder das redes;
Versátil, dinâmica, robusta e segura;
Gratuita;
Fácil de usar e desenvolver;
Popular e rodeada por uma
Java é um a linguagem
Orientada a objetos;
Híbrida (compilada e interpretada);
Semelhante a C/ C+ + , mas:
{ É mais simples e tão poderosa quanto* :
não tem ponteiro, # define, .h, etc.
{ É independente de plataforma;
{ É mais robusta e segura: coletor de lixo,
Java é um a especificação
The Java Virtual Machine Specification The Java Virtual Machine Specification
Especifica como uma máquina virtual Java funciona.
Pode ser comprada como livro ou baixada gratuitamente: http:/ / java.sun.com/ docs/ books/ vmspec/ .
The Java Language Specification The Java Language Specification
Especifica a linguagem de programação Java, sintática e semanticamente, descrevendo todos os seus aspectos.
O que isso significa?
Que organizações podem criar suas
próprias versões de Java;
Que todas elas serão compatíveis, pois
devem passar por um teste;
Que você não fica preso a um
Quem escreve a especificação?
No início, quem criou Java foi a Sun;
A partir de 1998, foi criado o Java
Community Process (www.jcp.org):
{ O JCP é um processo aberto e
participativo de desenvolvimento e revisão das especificações Java;
{ A Sun possui grande influência (Executive
Comitee), mas não domina o JCP.
Quem é m em bro do JCP?
Mais de 900 pessoas, empresas e
organizações sem fins lucrativos;
{ Empresas desenvolvedoras: Apple, BEA, I BM,
JBoss, Oracle, etc.
{ Empresas usuárias: Boeing, Computer
Associates, Google, LG, MySQL, Motorola, PalmSoftware, PeopleSoft, Sony, Sybase, etc.
{ Pessoas: Bruno Souza, Michael Nascimento,
Osvaldo Doederlein, etc.
Com o se tornar m em bro?
Assinando a JSPA (Java Specification
Participation Agreement) e pagando a anuidade;
É possível colaborar sem ser membro,
revisando e comentando especificações.
Anuidade JCP Anuidade W3C
Empresas US$ 5.000,00 De US$ 6.350,00
a US$ 63.500,00
Organizações US$ 2.000,00 US$ 6.350,00
Quem im plem enta Java?
Muita gente:
{ A Sun Microsystems (a mais usada);
{ Não-livres: I BM, BEA, Apple, Microsoft,
JET, Blackdown, etc.;
{ Livres: GNU GCJ/ Classpath, Kaffe, etc.;
{ Para fins de pesquisa: JNode, Jikes RVM,
Sun MVM, I BM CJVM, etc.
Todas são compatíveis com a
Java é Open Source?
Java é uma especificação aberta;
A implementação da Sun não é open
source:
{ Licença não é reconhecida como livre
pela OSI ou FSF;
{ Porém é gratuita e o código é aberto;
{ É permitido alterar, porém não distribuir;
{ Para distribuir, deve primeiro passar pelo
Mitos
Java é lenta!
{ As primeiras versões eram lentas, mas as
novas são até mais rápidas que C+ + .
Não possui um ambiente RAD!
{ Há muitas ferramentas de alta
produtividade disponíveis, inclusive gratuitas.
JavaScript é uma derivação de Java!
{ Não. Em comum elas só tem o nome e a
Mitos (2)
Java só serve para fazer Applets!
{ Ledo engano. Java serve para fazer de
clientes desktop à aplicações enterprise, passando por dispositivos móveis.
Java é a melhor forma de fazer tudo!
{ Bem que eu queria, mas não é. Java é
Por que usar Java?
Precisa de mais motivos?
{ Projetada para redes desde o começo –
“The network is the computer”;
{ Alta aceitação e suporte da indústria;
{ Muitas ferramentas disponíveis, várias
delas gratuitas e livres;
{ Vasta documentação, fácil de aprender;
{ Alta produtividade;
Desenvolvimento Orientado a
Objetos
Comparação com o
Engenharia de Software
Desenvolver software não é uma arte;
A Engenharia de Software busca
formalizar metodologias;
Paradigmas regem as tarefas de
análise, projeto e codificação;
Os mais conhecidos:
{ Paradigma Estruturado (ou Procedural);
Java é Orientada a Objetos
Para desenvolver bem em Java é
preciso saber os conceitos de OO;
Se não...
{ Dificilmente conseguirá evoluir além de
programas bem simples;
{ Será difícil entender outros programas e
outras pessoas entenderem o seu;
{ Você estará perdendo tempo. Use C,
Orientação a Objetos
Análise, projeto e programação;
Mapear o mundo real no mundo
computacional utilizando objetos;
Abstração mais próxima do mundo real
Com paração com Estruturado
Sistema de Gerência
Departamento Funcionário Nome Ramal Funcionário Nome Ramal Tarefa Descrição Prazo + funcionario + gerente
Registrar Tarefa Ver Tarefas
Orientado a Objetos
Mais próximo do mundo real. A lógica é encapsulada em objetos.
Mais próximo do mundo computacional. O foco é nos procedimentos.
Conceitos
Abstração; Encapsulamento; Modularidade; Objetos; Classes; Ligações e
associações;
Composição e
agregação;
Herança;
Mensagens e
métodos;
Persistência; Classes e
operações abstratas;
Sobrecarga e
sobrescrita;
Abstração
I gnorar aspectos irrelevante e
concentrar nos principais;
Tipos:
{ Abstração de dados;
Encapsulam ento
Separar os aspectos externos (o que
faz) dos aspectos internos (com faz):
{ Aspectos externos = interface, contrato;
Modularidade
Decomposição do sistema em
módulos:
{ Coesos (baixo acoplamento);
{ Autônomos;
{ De interface simples e coerente.
Objetos
Conceito central deste paradigma;
Entidades que incorporam abstrações
relevantes do problema;
Um objeto tem três características
principais:
{ Estado (estrutura);
{ Comportamento;
{ I dentidade.
Classes
Objetos que possuem mesma
estrutura e comportamento são de
uma mesma classe;
Definimos classes, não objetos.
Casa
Cor;
Número; Abrir Porta; Fechar Porta; Arquiteto.
#
Ligações e associações
Objetos relacionam-se entre si:
{ Ligação: conexão entre objetos;
{ Associação: conexão entre classes que
representa existência de ligações.
Associações podem ter cardinalidades.
Com posição e agregação
Associações todo-parte;
{ Objetos complexos são compostos de
objetos mais simples;
{ Composição: as partes estão sempre
relacionadas ao todo;
{ Agregação: as partes podem ser
decompostas.
+
+
=
Herança
Quando classes
têm semelhanças podemos
generalizá-las;
Hierarquias:
{ Relações de
superclasse x subclasse;
{ “Filhos” herdam
Mensagens e m étodos
Objetos trocam mensagens para se
comunicar (deve ser a única forma);
Métodos: operações que um objeto
pode realizar.
Objeto: Contador Objeto: Calculadora Calcular I R (renda, descontos)
Persistência
Capacidade do objeto de transcender
o tempo e o espaço;
{ Armazenamento em banco de dados;
Classes e operações abstratas
Classes abstratas não podem ser
instanciadas;
Operações abstratas não possuem
implementação;
Classe composta
somente por operações
abstratas = interface.
Veículo
Andar ()
Carro
Andar ()
Bicicleta
Sobrecarga e sobrescrita
Sobrecarga: operações distintas com o
mesmo nome;
Sobrescrita: subclasse define nova
implementação para operação definida
na superclasse.
Calculadora
Calcular I R (renda)
Polim orfism o
Habilidade de tomar várias formas.
Forma
UML
Unified Modeling Language
TM;
Linguagem de modelagem padrão
para análise/ projeto orientado a
objeto;
Definida pela OMG (Object
Diagram as
A UML define diversos diagramas:
{ Diagrama de caso de uso;
{ Diagrama de classes e pacotes;
{ Diagrama de estados;
{ Diagrama de sequência / colaboração;
{ Diagrama de componentes;
{ Diagrama de atividades;
{ Diagrama de implantação;
Diagram a de Classe UML
DVD + getResumo() CD - artista + getResumo() Faixa - numero - nome 1..* 11 1..* Usuario - email - senha Compra - data + getPrecoTotal() * 1 Produto - nome - preco + getResumo() * * Livro + getResumo() Autor - nome * * * * CompraProduto - preco 1 * * * Cla sseN om e At r ibu t os Ope r a çõe s Cla sse
Abst r a t a
H e r a n ça
Agr e ga çã o
Associa çã o ( e
su a s ca r din a lida de s) Cla sse
Arquitetura da Plataforma
Java significa várias coisas
A Linguagem de programação Java;
O ambiente de execução Java;
O kit de desenvolvimento Java;
Plataform a Java 2
Desde a versão 1.2, passou a ser
chamada de “Java 2” e foi dividida em:
{ Java 2 Platform Standard Edition (J2SE);
{ Java 2 Platform Enterprise Edition (J2EE);
{ Java 2 Platform Mobile Edition (J2ME).
Cada uma tem sua API ;
Nova nom enclatura
A partir da versão 6, tira-se o “2”:
{ Java Platform, Standard Edition 6
ou Java SE 6;
{ Java Platform, Enterprise Edition 6
ou Java EE 6;
{ Java Platform, Mobile Edition 6
ou Java ME 6.
O “Java 2” permanece na versão atual,
Java Platform , Standard Edition
Ferramentas de desenvolvimento +
API núcleo da plataforma Java;
{ Permite o desenvolvimento de aplicações
desktop, inclusive com interface gráfica, acesso à banco de dados, I / O, rede, etc.
{ Dividida em:
JDK = Java Development Kit;
Java Developm ent Kit
Somente para os programadores;
Contém:
{ Ferramentas de desenvolvimento;
{ Ambiente de execução (JRE);
{ API Java SE (compilada e código-fonte);
{ Programas de demonstração;
{ Bibliotecas adicionais;
Java Runtim e Environm ent
Necessária para rodar programas Java,
pois além de compilada, Java também
é interpretada;
É a única parte da plataforma Java
que os clientes necessitam instalar;
Em alguns sistemas operacionais (ex.
MacOS X) já vem instalada.
Plataform as que há suporte
A Sun dá suporte às seguintes plataformas:
{ Windows i586 / AMD64;
{ Linux i586 / AMD64;
{ Solaris SPARC / x86 / x64.
A Apple desenvolveu versão para MacOS.
Outras:
{ HP UX, FreeBSD, OS/ 2, AI X, AS/ 400, OS/ 390,
I RI X, Alpha, SCO, NetWare, etc.;
Write Once, Run Anywhere
Java é compilada e interpretada:
1. Códigos das classes são compilados para
uma linguagem intermediária chamada Bytecode;
2. O Bytecode é interpretado por uma
“máquina virtual”: a JVM;
3. A JVM envia comandos específicos da
plataforma para o sistema operacional.
Passo 1: escrever a classe
/** Hello, world. O exemplo mais banal! */
public class HelloWorld {
/** Método principal. */
public static void main(String[] args) {
// Imprime mensagem infame.
System.out.println("Hello, world!");
}
Passo 2: com pilar a classe
/** Hello, world. O exemplo mais banal! */
public class HelloWorld {
/** Método principal. */
public static void main(String[] args) {
// Imprime mensagem infame.
System.out.println("Hello, world!"); }
}
javac HelloWorld.java
ca fe ba be 00 00 00 31 00 1d 0a 00 06 00 0f 09 00 10 00 11 08 00 12 0a 00 13 00 14 07 00 15 07 00 16 01 00 06 3c 69 6e 69 74 3e 01 00 03 28 29 56 01 00 04 43 6f 64 65 01 00 0f 4c 69 6e . . .
Código fonte ( texto) : HelloWorld.java
Passo 3: executar a classe
ca fe ba be 00 00 00 31 00 1d 0a 00 . . .
Bytecode
Java Virtual Machine ( JVM)
Sistema Operacional / Hardw are Class Loader Classe remota? Bytecode Verifier
Ambiente de Execução
I nterpretador JI T Compiler Código nativo
S
Ferram entas disponíveis
Compilador (javac);
I nterpretador (java);
Gerador de documentação (javadoc);
Depurador (jdb);
Gerador de pacotes (jar);
Outros:
6
0
P
ri
n
ci
p
a
is
A
P
Principais APIs
AWT/ Swing: interfaces gráficas; Java2D: desenho;
JDBC: acesso a bancos de dados;
JNDI : acesso a servidores de nomes; RMI : invocação remota de métodos; Beans: padrão JavaBeans;
i18n: suporte a internacionalização; I / O: entrada e saída (arquivos);
Principais APIs (2)
Networking: transmissão pela rede; Security: segurança;
Serialization: persistência por serialização; XML: processamento de XML e afins;
Lang & Util: núcleo da linguagem, utilitários
(coleções, datas, compactação, etc.);
Concurrency: programação concorrente
(threads);
Logging: funções de relatório (log);
Java Platform , Enterprise Edition
Permite o desenvolvimento de
aplicações corporativas:
{ Multi-camada, distribuídas, centradas em
servidores, altamente robustas, estáveis e escaláveis;
I nclui as especificações para
Container
É um servidor que gerencia o ciclo de
vida de componentes;
Para executar uma aplicação Java EE,
é preciso um dos seguintes containers:
{ Container Web: execução de Servlets,
JSPs e Web Services;
{ Container EJB: execução de componentes
Enterprise Java Beans;
Servlets/ JSP e EJBs
Servlets e JSPs:
{ Componentes que respondem à
requisições web, usados para construir páginas dinâmicas e Web Services.
EJBs:
{ Componentes gerenciados integrados a
outras tecnologias Java EE para prover acesso remoto, persistência e transações transparentes, processamento
Outras tecnologias
Java EE não é só Servlets e EJB:
{ RMI / I I OP e Java I DL: conectividade;
{ JNDI : serviço de nomes;
{ JAC e JNI : acesso a sistemas legados;
{ JAAS: segurança;
{ JTA: transações em bancos de dados;
{ JMS e JavaMail: envio de mensagens;
Servidores Java EE
Ao contrário do Java SE, a
implemen-tação da Sun é só para referência;
Servidores web:
{ Apache Tomcat, Caucho Resin, Jetty, etc.
Servidores de aplicação:
{ BEA WebLogic, Borland Enterprise Server,
JBoss Application Server, Oracle
Application Server, I BM WebSphere, etc.;
Java Platform , Mobile Edition
Permite o desenvolvimento de
aplicações para dispositivos móveis:
{ Telefones celulares;
{ PDAs (Palm, iPaq, etc.);
{ Dispositivos embarcados (embedded);
{ Etc.
Java Card: aplicações para Smart
Configurações Java ME
Atualmente são duas:
{ CLDC: Connected Limited Device
Configuration;
{ CDC: Connected Device Configuration.
Cada uma possui uma API diferente,
A
p
li
c
a
ç
õ
e
s
d
e
J
a
v
7
1
Ja
va
e
st
á
em
t
od
o
lu
ga
7
2
A
p
p
le
7
3
A
p
lic
a
çõ
es
E
n
te
rp
ri
7
4
A
p
lic
a
çõ
es
M
óv
ei
7
5
A
p
lic
a
çõ
es
D
es
k
to
7
6
Te
cn
ol
og
ia
d
e
p
on
7
7
D
em
on
st
ra
çã
Ja
v
a
n
o
M
e
rc
a
d
O poder de Java em núm eros
I nformações do JavaOne 2005:
{ 700 milhoes de micros rodando aplicacoes Java;
{ 155 milhoes de downloads da Java desde junho
de 2003;
{ 12 milhoes de visitas por mes ao site java.com;
{ 4,5 milhoes de desenvolvedores Java no mundo;
{ 150.000 desenvolvedores registrados no site
java.net;
{ 912 membros no JCP;
O poder de Java em núm eros (2)
I nformações do JavaOne 2005
(continuação):
{ 635 modelos de celular no mundo com Java;
{ 32 fabricantes de celulares Java no mundo;
{ 140 operadoras de telefonia movel usando Java;
{ 3 milhoes de downloads de J2EE;
{ 28 tipos diferentes de servidores Java;
{ A e-Bay confia em Java para todas suas vendas
Mais núm eros de m ercado
Estimativa que Java movimenta US$ 100
bilhões / ano e vem crescendo;
Estimativa que o mercado de jogos Java
para celulares valerá US$ 1,9 bilhões em 2006;
A Sun está em mais de 170 países e tem
uma receita anual de US$ 18,3 bilhões;
100% das 500 maiores empresas (segundo
Mais núm eros de m ercado (2)
Segundo o I nstituto Gartner:
{ Java é a tecnologia escolhida pelas
empresas, 60% já usam, 22% planejam;
{ Java e .NET terão 80% do mercado até
2008 (40% cada uma).
Java x .NET:
{ Muita guerra de marketing e religião;
Em pregos Java
Oportunidade:
{ Muitas vagas surgindo;
{ Poucos capacitados, raros certificados; { Bons salários.
JavaSoft.com.br:
{ Mais de 4000 currículos;
{ Mais de 900 vagas de emprego.
No ES:
Certificações
A Sun cria provas para certificar
profissionais na plataforma Java;
O instituto Thomson Prometric aplica a
prova em vários lugares do Brasil;
No Espírito Santo:
{ I SH: http:/ / www.ish.com.br
{ MindWorks: http:/ / www.mindworks.com.br
Profissional certificado possui
reconhecimento no mercado;
C
o
m
u
n
id
a
d
e
Java e Open Source
Centenas de projetos no SourceForge:
perde apenas para C/ C+ + ;
Primeiro lugar no FreshMeat;
Java.net: 150.000 membros e mais de
1.500 projetos;
Java-Source.net: projetos divididos em
mais de 50 categorias;
Mais de 550 grupos de usuários no
8
9
A
lg
u
n
s
ex
em
p
lo
Open Source lucrativo?
Pode ser uma opção para empresas:
{ JasperReports -> JasperSoft; { Hibernate e JBoss -> JBoss;
{ Spring Framework -> I nterface 21; { OpenSymphony -> Atlassian;
Suporte é muito procurado para
produtos de alta qualidade;
A própria Sun tem investido muito em
Com unidades Virtuais
Portal Java
(http:/ / www.portaljava.com);
GUJ (http:/ / www.guj.com.br);
Java 2 Brasil
(http:/ / www.j2b.com.br/ );
J2EE Brasil
(http:/ / www.jspbrasil.com.br/ );
JavaFree
Com o participar
O que podem fazer
por você:
{ Notícias;
{ Artigos e tutoriais;
{ Fóruns;
{ Downloads e links;
{ Eventos;
{ etc.
O que você pode
fazer:
{ Cadastre-se;
{ Responda
mensagens nos fóruns;
{ Escreva artigos;
{ Envie notícias;
Atividades
Cursos;
Grupos de estudo;
Reuniões mensais;
Palestras;
Eventos;
Com o participar
O que podemos
fazer por você:
{ I ntercâmbio com
outros
desenvolvedores;
{ Capacitação em
palestras, cursos e estudos;
{ Participação em
eventos;
O que você pode
fazer:
{ Cadastre-se na lista
de e-mails;
{ Participe das
reuniões mensais e outras atividades;
{ Seja ativo!
{ Prepare artigos,
9
7
R
ev
is
ta
P
ri
m
e
ir
o
s
P
a
s
s
o
Gostei! Quero aprender Java!
Você está com sorte:
{ Muitos livros (alguns até gratuitos);
{ Muitos tutoriais (o da Sun é muito bom);
{ Cursos;
{ Portais;
{ Grupos de usuários;
O que baixar?
Kit de desenvolvimento:
{ http:/ / java.sun.com/
{ J2SE -> Downloads -> J2SE 5.0;
{ JDK 5.0 Update 3;
Com o instalar?
Windows:
{ Kit: assistente de instalação;
{ Documentação: descompactar o zip.
Linux:
{ Algumas distros possuem pacotes;
{ Kit: binário de instalação via console;
{ Documentação: descompactar o zip.
Escrevendo program as
Use uma I DE:
{ Eclipse; { NetBeans;
{ JetBrains I ntelliJ I DEA; { Borland JBuilder;
{ Etc.
Editores mais simples:
{ JEdit;
1 0 3
Tu
to
ri
a
l d
o
E
S
JU
G
httAlgum as referências
Thinkin in Java, de Bruce Eckel:
{ http:/ / www.bruceeckel.com
Empresas que promovem cursos:
{ http:/ / www.caelum.com.br
{ http:/ / www.argonavis.com.br
Comunidades virtuais:
{ http:/ / www.portaljava.com
{ http:/ / www.guj.com.br
Grupos de usuários:
Introdução à Tecnologia Java
Vítor E. Silva Souza vitorsouza@gmail.com
http:/ / www.javablogs.com.br/ page/ engenho http:/ / esjug.dev.java.net
– Julho 2005 –