java: muito mais que uma linguagem

90
JAVA: Muito mais que uma linguagem Enrico Nicoletto Fernando Alonso Ivan Lopes Alonso José Erinaldo de Jesus Martins Disciplina: Paradigmas de programação - UNIARARAS

Upload: liverig

Post on 17-Dec-2014

5.311 views

Category:

Technology


3 download

DESCRIPTION

Trabalho sobre a Linguagem de Programação Java. Work about Java Programming Language.

TRANSCRIPT

Page 1: JAVA: Muito mais que uma linguagem

JAVA: Muito mais que uma linguagem

Enrico NicolettoFernando AlonsoIvan Lopes AlonsoJosé Erinaldo de Jesus Martins

Disciplina: Paradigmas de programação - UNIARARAS

Page 2: JAVA: Muito mais que uma linguagem

Licença Creative Commons

Trabalho sob licença Creative Commons, alguns direitos reservados.

Você pode transmitir, modificar ou transmitir a obra desde que citados os autores.

Creative Commons 3.0 Brasil, mais informações em:

http://creativecommons.org/licenses/by/3.0/br/

Page 3: JAVA: Muito mais que uma linguagem
Page 4: JAVA: Muito mais que uma linguagem

TÓPICOS DESTA APRESENTAÇÃO :

•PERDENDO O SOTAQUE•EXPLICAÇÃO DO CÓDIGO•A HISTÓRIA DA LINGUAGEM•COM LICENÇA, JAVA?•CARACTERÍSTICAS DA LINGUAGEM•JAVASCRIPT VS JAVA •A PLATAFORMA JAVA•CONCEITOS DE GERENCIAMENTO DE MEMÓRIA•AMBIENTE DE DESENVOLVIMENTO •AMBIENTE DE EXECUÇÃO•INTRODUÇÃO A POO EM JAVA•CERTIFICAÇÕES•JAVA E O DRAGÃO•CONSIDERAÇÕES FINAIS•VÍDEO DE ENCERRAMENTO (02” 30s)

Page 5: JAVA: Muito mais que uma linguagem

Perdendo o sotaque

Aprender uma nova linguagem de programação é mais fácil que aprender uma nova língua falada. Entretanto, em ambos os esforços, é necessário esforço extra para aprender a falar a nova língua sem sotaque. É necessário erradicar certas expressões e corrigir algumas pronúncias para que você fale de forma fluente.

A forma como falamos,

demonstra nossas origens...

Page 6: JAVA: Muito mais que uma linguagem

Perdendo o sotaque

Não usar as convenções do Java e escrever o código da mesma forma que em C / C++ ou qualquer outra linguagem, trará a você uma imagem de convertido, ao invés de falante nativo!

Seu código vai funcionar, mas parecerá errado aos ouvidos de um nativo. Como resultado, os nativos podem usar um olhar

superior com falantes não nativos

Infelizmente na história do Brasil e de muitos países,colonizadores achavam-se superiores aos colonizados.

Índios nativos do Brasil e portugueses (elite paulista)

Page 7: JAVA: Muito mais que uma linguagem

Perdendo o sotaqueQuem é esse poookémon ?

Page 8: JAVA: Muito mais que uma linguagem

class Test {

public static void main(String argv[]) { float F, C; float min_tmp, max_tmp, x; min_tmp = 0; max_tmp = 300; x = 20; F = min_tmp; while (F <= max_tmp) { C = 5 * (F-32) / 9; printf("%f\t%f\n", F, C); F = F + x; } }

private static void printf(String format, Object... args) { System.out.printf(format, args); } }

É um código Java muito engraçado. Trabalho de

alguém que pensa em C e está meramente traduzindo

para a linguagem Java...

Page 9: JAVA: Muito mais que uma linguagem

Why?•As variáveis são floats em vez de doubles.

•Todas as variáveis são declaradas na parte de cima do método.

•A inicialização segue a declaração.

•É usado um loop while em vez de um loop for.

•É usado printf em vez de println.

•O argumento do método main() é nomeado argv.

•Os parênteses de array vêm depois do nome do argumento e não depois do tipo.

Essas expressões não estão erradas, mas tomados em conjunto eles constituem um

código muito estranho que é difícil para um programador Java ler.

Page 10: JAVA: Muito mais que uma linguagem

Anatomia básica

/* Aplicativo Anatomia Básica */

public static void main(String[] args){ System.out.println(“Eu sou um programa Java!”); }

public class AnatomiaBasica {

}

Comentário do blocoNome da classe Nome do método

Declaração de argumento variável local: args tipo: String[]

Ponto-e-vírgula aofinal de toda instrução

Atribuição de argumento para o método println()

Chamada do método println() via objeto out acessível através da

classe System

Definição do método main()

Definição da classe AnatomiaBasica

Page 11: JAVA: Muito mais que uma linguagem

A classe scannerPara ler entrada de dados, devemos utilizar a classe Scanner, veja o exemplo abaixo:

Page 12: JAVA: Muito mais que uma linguagem

Explicação do códigoimport java.util.*; // ou usar java.util.Scanner, que é o pacote utilizado para obter entrada do usuário via teclado

class Trabalho_Paradigma_Java { public static void main(String args[]) {

float n1 = 0, n2 = 0, nf = 0, PExtra = 1; // variáveis para uso das funções String cong = ""; // variável para controle da participação do Congresso

do { //parametro para continuar a execução. O "do" faz o teste condicional ao final, beleza ?

Scanner entrada = new Scanner(System.in); String nome=""; do { //controle da entrada do nome caso seja = ""

//Entrada do nome do aluno. System.out.println("Digite o Nome do Aluno: "); nome = entrada.nextLine();

} while (nome.equals(""));

int RA=0; do { //controle da entrada do RA caso seja = ""

Page 13: JAVA: Muito mais que uma linguagem

Explicação do código //Entrada do RA do aluno. System.out.println("Digite o RA do Aluno: "); RA = entrada.nextInt(); } while (RA == 0); //int RA = Integer.parseInt(RA); // Conversão de tipo //requerimento da nota da Lista1 e Scanner da mesma. System.out.println("Digite a nota da Lista 1: "); float lista1 = entrada.nextFloat();

// Verificação de nota menor que 0 ou maior que 10 if ((lista1 < 0.0) || (lista1 > 10.0)) { System.out.println("Favor Informar números entre 0 e 10"); lista1 = entrada.nextFloat(); }

// Requerimento da nota da Prova1 e leitura da mesma. System.out.println("Digite a nota da Prova 1: "); float prova1 = entrada.nextFloat();

// Verificação de nota menor que 0 ou maior que 10 if ((prova1 < 0.0) || (prova1 > 10.0)) { System.out.println("Favor Informar números entre 0 e 10"); prova1 = entrada.nextFloat(); }

Page 14: JAVA: Muito mais que uma linguagem

Explicação do código //requerimento da nota do SPA e Scanner da mesma. System.out.println("Digite a nota do SPA: "); float SPA = entrada.nextFloat();

// Verificação de nota menor que 0 ou maior que 10 if ((SPA < 0.0) || (SPA > 10.0)) { System.out.println("Favor Informar números entre 0 e 10"); SPA = entrada.nextFloat(); }

//requerimento da nota da AT1 e Scanner da mesma. System.out.println("Digite a nota da Apresentação (AT1): "); float AT1 = entrada.nextFloat();

// Verificação de nota menor que 0 ou maior que 10 if ((AT1 < 0.0) || (AT1 > 10.0)) { System.out.println("Favor Informar números entre 0 e 10"); AT1 = entrada.nextFloat(); }

//requerimento da nota da TInter e Scanner da mesma. System.out.println("Digite a nota do Trabalho Inter. (TInter): "); float TInter = entrada.nextFloat();

Page 15: JAVA: Muito mais que uma linguagem

Explicação do código // Verificação de nota menor que 0 ou maior que 10 if ((TInter < 0.0) || (TInter > 10.0)) { System.out.println("Favor Informar números entre 0 e 10"); TInter = entrada.nextFloat(); }

//verificação para participação no congresso System.out.println("Participou do Congresso?: "); cong = entrada.next(); cong = cong.toLowerCase();

if (cong.equals("s")) { System.out.println("Parabéns Você Ganhou um Ponto Extra em AT1");

} else { System.out.println("Que Pena Você Não Ganhou um Ponto Extra em AT1"); }

n1 = calculaN1(lista1, prova1); n2 = calculaN2(AT1, TInter, PExtra, cong); nf = calculaNF(n1, n2, SPA);

Page 16: JAVA: Muito mais que uma linguagem

Explicação do código //Prints da vida System.out.printf("\n\n"); System.out.println("Aluno: " + nome + " RA: " + RA); System.out.printf("\n"); System.out.println("Nota 1: "+n1); System.out.println("Nota 2: "+n2); System.out.println("Nota Final: "+nf);

System.out.println(""); //Pra que usar printf se você tem o poderoso Println ?????? situacaoAluno(nf); // Se quiser usar printf use, mas não é convenção padrão de Java :-/ System.out.println("");

//verificação para continuar no programa System.out.println("Deseja Continuar (S/N)?: "); cong = entrada.next(); cong = cong.toLowerCase();

} while (cong.equals("s")); } /* * Calcular a nota N1. */ static float calculaN1(float l1, float p1) { return ((l1 + p1) / 2); }

Page 17: JAVA: Muito mais que uma linguagem

Explicação do código /* * Calcular a nota N2. */ static float calculaN2(float at1, float ti, float PExtra, String cong) { float n2 = (((float) 0.3) * at1) + (((float) 0.7) * ti); if (n2 == 10) { return (n2); } if (cong.equals("s")) { n2 = n2 + PExtra; } if (cong.equals("n")) { return (n2); } return (n2); } /* * Calcular a nota final. */

static float calculaNF(float n1, float n2, float spa) { return ((n1 + 2 * spa + 2 * n2) / 5); }

Page 18: JAVA: Muito mais que uma linguagem

Explicação do código

/* * Avalia a situacao do aluno. */

static void situacaoAluno(float nf) { if (nf < 3) { System.out.printf("Foi reprovado(a) na matéria"); System.out.printf("\n"); } if (nf >= 3 && nf < 5) { System.out.printf("Esta de RE"); System.out.printf("\n"); } if (nf >= 5) { System.out.printf("Esta Aprovado(a) ! Parabéns. "); System.out.printf("\n"); } }}

Page 19: JAVA: Muito mais que uma linguagem

Explicação do código - JavaDoc

JavaDoc, show de bola!!!!

Page 20: JAVA: Muito mais que uma linguagem

Histórico

A linguagem JAVA foi projetada e implementada por um pequeno grupo de pessoas, coordenado

por James Gosling, na Sun Microsystems em Mountain View, Califórnia, em 1991.

Page 21: JAVA: Muito mais que uma linguagem

Histórico

Equipe trabalhava no projeto de software para produtos eletrônicos de consumo.

TVs interativas, torradeiras interativas, uma casa interativa.

Interconectados e com a mesma interface.

Projeto Green(1991)

Page 22: JAVA: Muito mais que uma linguagem

Histórico

Protótipo de dispositivo de comunicação entre aparelhos eletrodomésticos. (espécie de controle

remoto)

Projeto Green

*7 (Star Seven)Meu primeiro emprego: guia virtual do *7

Page 23: JAVA: Muito mais que uma linguagem

Histórico

*7 (Star Seven)

Linguagem de programação que tenha alta confiabilidade, compatibilidade e que operem dadas as limitações de hardware.

O grande desafio do projetoC++

E agora, quem poderá me defender ?????

Page 24: JAVA: Muito mais que uma linguagem

Histórico

Eu, o chapolin colorado!a linguagem Oak !!!

Em português Oak significa Carvalho.

Page 25: JAVA: Muito mais que uma linguagem

Histórico

1993 – A internet torna-se mais popular e a Sun direciona o potencial da linguagem JAVA

para conteúdo dinâmico na internet .

Oak

1995 – Java é anunciado em uma importante conferência.

Java

Page 26: JAVA: Muito mais que uma linguagem

E agora o que será do fluxo contínuo de

espaço de tempo????

Dia 02 de Abril de 2010 – James Gosling se demite da Oracle

N o tí c i a m a i s r e c e n t e . . .

27 Jan 2010

Page 27: JAVA: Muito mais que uma linguagem

Com licença, JAVA?• Durante alguns anos, a Sun resistiu a colocar o Java sob GPL, licença

padrão para software livre. A Sun manifestava temor de que, uma vez aberto, produtos ruins feitos em Java pudessem criar problemas de compatibilidade e afetar negativamente a imagem da linguagem.

• Em 13 de Novembro de 2006, a Sun lançou a maior parte do Java como Software Livre sob os termos da GNU General Public License (GPL).

• Foi quando em 09 de Maio de 2007 a Sun anunciou a oficialização da linguagem JAVA sob licença GPL. Praticamente todo código Java como software de código aberto, menos uma pequena porção da qual a Sun não possui copyright.

“O homem nasceu livre, e em todos os lugares ele está acorrentado.”Jean-Jacques Rousseau

Refletir....

Page 28: JAVA: Muito mais que uma linguagem

Características da Linguagem

Simples Orientado a Objetos

Distribuída

Robusta Segura Portável

Page 29: JAVA: Muito mais que uma linguagem

Características da Linguagem

Dinâmica

Interpretada Alto Desempenho

Multi-tarefas(Multithreaded)

Muitas APIs

Page 30: JAVA: Muito mais que uma linguagem

Características da Linguagem

Alocação automática de memória

Herança únicaSem ponteiros

Arquitetura neutra

Coleta de lixo (garbage collector)

Page 31: JAVA: Muito mais que uma linguagem

Características da Linguagem

Coerção de tipo implícita

Verificação de faixa de índice

implícita

Híbrida

Imperativa

Destrutores diferentes: finalizadores.

Page 32: JAVA: Muito mais que uma linguagem

Características da Linguagem

Programação multi-plataforma

Popular Orientada a Eventos

Gratuita

Page 33: JAVA: Muito mais que uma linguagem

Características da Linguagem

Ortogonalidade

Carga dinâmica de Código

Internacionalização

Tratamento de excessões

Page 34: JAVA: Muito mais que uma linguagem

Javascript vs Java

Javascript tem sintaxe similar a de Java (mas também de C e C++)

Javascript é interpretado enquanto Java é compilado

Javascript depende de interpretador-mestre (navegador). Java, uma vez compilado, necessita da JVM

Javascript é uma linguagem limitada e não consegue, em vias normais, criar um programa autônomo (standalone)

Não se inclui Java em uma página, carrega-se uma applet ou componente

X

Javascript é jamais Java!Java é jamais Javascript!

Saber, decorar, nunca mais esquecer!

Page 35: JAVA: Muito mais que uma linguagem

Javascript vs Java

Saber, decorar, nunca mais esquecer!

Uma “homenagem” pela Sun ter ajudado (financeiramente) a Netscape.

O nome e a bandeira do Brasil em 1889 se pareceram muito com os Estados Unidos (óbvio que só nisso), Javascript tem o nome ‘Java’ e possui sintaxe parecida com a de Java (e de C e C++ também), mas

Javascript só é Java se Estados Unidos for Brasil.

Bandeira da República dos Estados Unidos do Brasil

Porque será que Javascript tem o nome Java se são diferentes?

É PECADO dizer que Javascript é DERIVADO de Java. A palavra derivado significa“originário”, o leite é derivado do queijo. Mas uma meia fedida não é derivadado queijo apesar do odor parecido – desculpem o exemplo fedorento!!!!!

Page 36: JAVA: Muito mais que uma linguagem

Disponível em: <https://meapplicationdevelopers.dev.java.net/fragmentation.html>, acesso em 26 abril 2010

A plataforma Java

“O homem nunca sabe do que é capaz, até que o tenta “.Charles Dickens.

Page 37: JAVA: Muito mais que uma linguagem

A plataforma JavaMais exemplos...

Java Card(chip para celulares

e disp. móveis)

Receitanet rodandono Mac Os X

Um applet

Java Model Railroad Interface, suíte de ferramentas para modelar

ferrovias.

Page 38: JAVA: Muito mais que uma linguagem

Arquitetura de aplicativos Java

Plataforma Java é o ambiente computacional onde se permite desenvolver aplicativos utilizando a linguagem Java. Uma grande vantagem da plataforma é a de não estar

presa a um único sistema operacional ou hardware, pois roda sob a JVM (o coração do JAVA).

J2EE J2SE J2ME

J2EEJ2SEJ2ME

Servidor não é a

mamãe!!!!

Oh!!

Page 39: JAVA: Muito mais que uma linguagem

Conceitos de Gerenciamento de Memória (Alocação dinâmica)

As instruções de um programa são temporariamente armazenados na memória do computador. Não é necessário o programador

preocupar-se com a gestão da memória (coisa que não acontece em outras linguagens tais como o C ou C++): a JVM e o garbage collector tratam do assunto. Todavia ajuda sabermos onde são armazenados os dados na memória para termos uma melhor

compreensão de como os objetos são criados.

Há duas áreas distintas onde os dados de um programa são armazenados: stack e heap são duas formas (ou sítios) diferentes de armazenar em memória os elementos de um programa que

está em execução.

Page 40: JAVA: Muito mais que uma linguagem

Conceitos de Gerenciamento de Memória (Heap)

Vivem na Heap:• Variáveis de instância: as variáveis de tipos primitivos definidas

dentro da classe mas fora dos métodos (variável de instância pertence a um objeto)

• Referências a variáveis de instância: as variáveis que se referem a um objeto e são definidas dentro da classe mas fora dos

métodos.• Objetos: Todos os objetos vivem na heap.

O garbage collector libera a memória destruindo os objetos

da heap que estejam em desuso.

Page 41: JAVA: Muito mais que uma linguagem

Conceitos de Gerenciamento de Memória (Stack)

Vivem na Stack:• Variáveis locais: as variáveis de tipos primitivos definidas dentro de

um método ou como parâmetros de um método. (pertencem a métodos e vivem na stack)

• Referências de variáveis locais: as variáveis que se referem a um objeto e são definidas dentro de um método ou como parâmetros de

um método.Um objeto cuja variável local se refere vive na heap.• Invocações a métodos: quando invocamos um método, esse

método é empurrado para a stack (é colocado no topo da stack).

As variáveis locais vivem dentro do método e o seu alcance restringe-se ao método. Quando a execução do método termina, as variáveis locais desaparecem mas os

objetos, cujas variáveis locais eventualmente se referem, continuam vivos na heap (não morrem com a desreferenciação).

Page 42: JAVA: Muito mais que uma linguagem

Conceitos de Gerenciamento de Memória (Heap e Stack)

Obtido de: <http://www.youtube.com/watch?v=HQ3YI70PDe0&feature=SeriesPlayList&p=4BBB74C7D2A1049C&index=8>, 01:57, acesso em 01 mai 2010.

Obtido de: <http://img187.imageshack.us/img187/2904/hfjcap089fbyh1.png>, acesso em 31 mar 2010.

Page 43: JAVA: Muito mais que uma linguagem

Conceitos de Gerenciamento de Memória (Heap e Stack)

Heap objetos de forma desorganizada (métodos agrupados sem orientação lógica)

Stack pilha de objetos de forma organizada (Cada método é empilhado, e empilhando-se

sucessivamente ao executar o método dentro de outro método. Ao finalizar, o método é

direcionado ao final da pilha.

Page 44: JAVA: Muito mais que uma linguagem

Ambiente de desenvolvimentoAntes de falarmos das IDEs, devemos citar os kit´s de

desenvolvimento, eles são:

JDK = Java Development Kit (Sun) OpenJDK = Open JDK (Comunidade, livre)

O usuário não precisa ter eles para executar seu programa Java, mas o desenvolvedor precisa deles para fazer o código.

JDK (desenvolvedor) JRE (usuário)

Page 45: JAVA: Muito mais que uma linguagem

Java Development KitSuportado em

Solaris SPARC x86Solaris SPARC x64Windows x86Windows x64Linux x86Linux x64Mac OS (já vem no próprio S.O. )

Especificações detalhadas de configurações de sistema do JDK em:http://java.sun.com/javase/6/webnotes/install/system-configurations.html

Como instalar no Linux em:http://techreviews.in/installing-and-setting-up-java-6-jdk-in-intrepid-ibex/

Page 46: JAVA: Muito mais que uma linguagem

Ambiente de desenvolvimentojEdit - (recomendado para programadores iniciantes)

Dr.Java – Ambiente projetado principalmente para o ensino da linguagem. Desenvolvido na Universidade Rice (EUA).

JCreator - (gratuito/shareware) — um ambiente desenvolvido pela Xinox (recomendado para programadores iniciantes);

Eclipse - (software livre) — um projeto aberto iniciado pela IBM;

NetBeans - (software livre) — um ambiente criado pela empresa Sun Microsystems;

JBuilder - um ambiente desenvolvido pela empresa Borland;

JDeveloper - (gratuito OTN) — uma IDE desenvolvida pela empresa Oracle;

IntelliJ IDEA - (comercial) — uma IDE desenvolvida pela JetBrains (considerada por muitos a melhor IDE do mercado).

Page 47: JAVA: Muito mais que uma linguagem

Ambiente de desenvolvimento

Dados obtidos de: <http://forum.worldwindcentral.com/showthread.php?t=24462>, acesso em 15 abril de 2010

Page 48: JAVA: Muito mais que uma linguagem

Netbeans, I LOVE YOU!!!

Page 49: JAVA: Muito mais que uma linguagem

Este IDE foi desenvolvida pela empresa Oracle

Page 50: JAVA: Muito mais que uma linguagem

Este é o Eclipse, num Linux...

Page 51: JAVA: Muito mais que uma linguagem

Esse é o Jcreator da Xinox

Page 52: JAVA: Muito mais que uma linguagem

E esse é o ... Vocês não enxergam lá

em cima????

Page 53: JAVA: Muito mais que uma linguagem

Aplicações independentes, Applets, Servlets, JSPs e MIDlets.

Os aplicativos independentes (stand-alone) são executados através de um sistema operacional.

Os Applets são aplicativos que são executados através de um navegador de internet.

Os Servlets são aplicativos que são executados em um servidor de internet.

Os JSP permitem misturar tags HTML e código Java. Ao invés do servlet (código html dentro do java), escreve-se html que pode conter o java.

Os MIDLets são pequenos aplicativos Java que rodam em celulares que possuem Java.

Page 54: JAVA: Muito mais que uma linguagem

Java não roda só Java...

groovy.codehaus.org www.jython.org

jruby.codehaus.org sun.com/javafx

www.beanshell.org

Rhino: JavaScript for Java

www.mozilla.org/rhino

REHEM, Serge. Desenvolvimento Java. Slide 57. Disponível em:<http://www.slideshare.net/serge_rehem/desenvolvimento-java>. Acesso em: 23 abr. 2010.

Page 55: JAVA: Muito mais que uma linguagem

Código e componente MediaBox disponível em:http://javafx.com/samples/MediaBox/index.html

JavaFX• Gráficos• Folha de estilos ...• Conteúdo multimídia ...• Jogos on-line ...

Page 56: JAVA: Muito mais que uma linguagem

Distribuição meuarquivo.class

Ambiente de execução

Ambiente de meuarquivo.javaDesenvolvimento

Ambiente de execução

Para que o programa Java seja executado precisamos da JRE, muito chique. Não concordam?

JRE

= Biblioteca de classes + JVM

Código java

Compilador

Byte Code Java

VM Linux VM Windows VM Celular

SO Windows SO CelularSO Linux

Page 57: JAVA: Muito mais que uma linguagem

Os bytecodes são a linguagem de máquina da JVM.

Sem bytecodes ? ADEUS, JVM. ADEUS portabilidade!

Ambiente de execuçãoA JVM é uma máquina imaginária

emulada em um hardware. JVM

James Gosling já afirmou que a linguagem Java não é mais importante da plataforma, e sim a JVM.

Page 58: JAVA: Muito mais que uma linguagem

Ambiente de execução

Arquitetura da Máquina Virtual Java.

// Este é o programa add.java

public class add { public static void main(String args[]) { int x=15, y=9, z=0; z = x + y; } }

Programa Java e arquivo .class compilado

Page 59: JAVA: Muito mais que uma linguagem

Ambiente de execução (100% segura?)

Uma vulnerabilidade no código de analise de imagens do Ambiente de Execução do Java (JRE) existe devido a um erro de buffer overflow, o que pode permitir a um applet não confiável ou a uma aplicação em java elevar seus privilégios de execução.

Uma segunda vulnerabilidade poderia permitir a um applet não confiável ou a uma aplicação em Java que fizesse a Maquina Virtual do Java (Java Virtual Machine) parar de responder, levando-a a uma condição de negação de serviço (DoS).

(....) recomenda-se que administradores mantenham seus sistemas e aplicativos sempre atualizados, de acordo com as ultimas versões e correções oferecidas pelos fabricantes.

Alerta AL-2007.0071

Page 60: JAVA: Muito mais que uma linguagem

Ambiente de execução (os 3 mosqueteiros)

Observação: Arquivos interpretados, apesar de portáveis, rodam de 100x a 200x mais lentos que os compilados.

Podemos resumir em 3 formas de execução:

1. Compilação do código Java para bytecode e interpretação através daimplementação da JVM em software. (10x mais lento que compilado emC)

2. Compilação Just-in-time (vêm junto com a JVM, melhoria feita na JVMPela Sun a partir de 1996 – aplicativo com performance comparável a de C++)

3. Execução do bytecode diretamente em uma implementação da JVM emhardware.

Page 61: JAVA: Muito mais que uma linguagem

Ambiente de execução (JIT)

Sistema de produção Just-in-time: Fazer apenas o necessário, quando necessário e apenas na quantidade necessária. – Kiichiro

Toyoda

Em vez de interpretar bytecode JVM instrução por instrução na máquina destino, a cada vez que uma nova instrução é encontrada os compiladores JIT levam em conta o fato de que a maioria dos programas gasta a maior parte do tempo em loops e outras rotinas iterativas. Quando o JIT encontra uma linha de código pela primeira vez, ele a compila em código nativo e o armazena na memória para reutilização posterior. Da próxima vez que o código for executado, a execução usa o código pré-compilado em lugar do bytecode.

A opção de compilador JIT deve ser usada especialmente seo método executável é repetidamente reutilizado no código.

Lembrar que:

O peso do bytecode triplica (+ memória) e perde-se portabilidade.

Page 62: JAVA: Muito mais que uma linguagem

A microarquitetura picoJava-II é voltada para a execução eficiente de Java diretamente em hardware. Desta forma, é

possível executar com desempenho aplicativos Java em processadores baratos, para os quais seria necessário uma

máquina de alto desempenho com compiladores Just in Time. Com isto, uma vasta gama de aplicações embarcadas abre-se

para o uso de Java.

Ambiente de execução (picoJava-II)

Page 63: JAVA: Muito mais que uma linguagem

•Objetivo: otimizar a execução de código Java (acelerar)

• Executa diretamente parte das instruções do código Java• Otimiza sincronização de pipeline (4 níveis no picoJava-I e 6

níveis no picoJava-II)•Otimiza gestão das variaveis locais (obtendo menor numero de

ciclos de clock por instrucao)•Otimização na execução de instruções em C/C++

•Modos de configuração entre consumo, tamanho e velocidade.• Pode-se usar barramento PCI para acessar periféricos/memória

•Destinado a dispositivos eletrônicos de consumo

Ambiente de execução (picoJava-II)

Page 64: JAVA: Muito mais que uma linguagem

Diagrama adaptado de: <http://www.cqpub.co.jp/dwm/contents/0020/dwm002000420.pdf> Acesso em 17 abril 2010.

Figura 1: Execução da Linguagem C e Java

Conjuntos de instruções dosBytecodes java

(a) Ao usar CPU de propósito geral (b) Ao usar o picojava

Execução direta dosBytecodes

CompilaçãoCompilação/Montagem

Código nativo

Compilação/Montagem

Bytecode Java Código nativo do picoJava(bytecodes e bytes de expansão)

Ambiente de execução (picoJava-II)

Page 65: JAVA: Muito mais que uma linguagem

Quando devo usar OO ??

Page 66: JAVA: Muito mais que uma linguagem

Introdução a POO em Java

Um paradigma de programação trata computacionalmente os problemas encontrados nomundo real.

O POO ou OOP (em inglês) surgiu nos anos 60, no centro Norueguês de Computação, onde o Simula 67 introduzia conceitos de classe e herança.

O projeto de java teve influência de C++ e Smalltalk (Tucker e Noona, p.7)

A maioria dos projetos hoje são orientados a objetos

Alan Kay formulou a chamada

analogia biológica: “COMO SERIA UM SISTEMA DE SOFTWARE QUEFUNCIONASSE COMO UM SER-VIVO?”.

Page 67: JAVA: Muito mais que uma linguagem

Introdução a POO em JavaCada “célula” interagiria com outras através de envios de mensagens

para realizar um objetivo comum, cada qual comportar-se-ia como unidade autônoma.

Alan Kay pensou em como construir um sistema de software a partir de agentes autônomos que interagem entre si.

Com isso nascem os princípios da orientação a objetos.

Eu sei que é emocionante, mas contenham as lágrimas!

Page 68: JAVA: Muito mais que uma linguagem

Objetos

Pessoas Livro Automóvel

Tangíveis

Incidente

Competição

TransaçãoInteração

Projeto Conserto

Saque Venda

Um objeto é uma extensão do conceito de objeto no mundo real, onde podem-se ter coisastangíveis, um incidente (evento ou ocorrência) ou uma interação (transação ou contrato).

Os atributos representam os estados armazenados e realizam troca de mensagens.

Page 69: JAVA: Muito mais que uma linguagem

ClasseUma classe é uma coleção de objetos que podem ser descritos por um conjunto básico deatributos e possuem operações semelhantes.

Utilitário Passeio Tração animalEsportivo

Veículos

EspecializaçãoG

ener

aliz

ação

Page 70: JAVA: Muito mais que uma linguagem

Minivan

Classe Subclasse Subclasse Instância Instância

Veículos Passeio Sedan Marca: ChevroletModelo: Corsa Classicano: 2002eixos:2Injeção eletrônica: Sim

Marca: ChevroletModelo: Chevette SLano: 1984eixos:2Injeção eletrônica: Não

Instâncias de ObjetosQuando se fala em classes de objetos, considera-se que podem ser incluidos objetos nelas.

Passeio

Veículos

Sedan

Para cada novo veículo, será criado uma nova instância deobjeto de uma determinada classe, ex:

Fiat idea -> Minivan

Page 71: JAVA: Muito mais que uma linguagem

HerançaHerança nada mais é do que a implementação da generalização. É o compartilhamentode atributos e operações entre classes com base em um relacionamento hierárquico.

Quando é criado uma nova instância de um objeto, dizemos, em orientação a objeto, que esse novo objeto herda os atributos e as operações de sua classe.

Ah, fala logo que uma classe (sub-classe) pode

estender outra classe (superclasse), estendendo seus comportamentos e

atributos !

Instância

Marca: ChevroletModelo: Chevette SLano: 1984eixos:2Injeção eletrônica: Não

Page 72: JAVA: Muito mais que uma linguagem

Herança simples Herança múltipla

PAI

FILHO FILHO

(Java)

FILHO

PAIPAI

(C++)

Page 73: JAVA: Muito mais que uma linguagem

PolimorfismoAssociado ao conceito de Herança, ele permite que o objeto assuma umcomportamento diferente daquele definido em sua classe.

Polimorfismo: vem do grego poli =“muitas” e morphos=“formas”, é a capacidade deassumir muitas formas.

Operação darPartida();

Considerando-se que a operação dar partida precisa ser adaptada para a classe tração animal, reescrevem-

se as tarefas para essa operação. Que passará a responder de forma diferente apenas para esta classe

e para os objetos instanciados por ela.

Page 74: JAVA: Muito mais que uma linguagem

EncapsulamentoO encapsulamento, também chamado de ocultamento de informações, consiste naseparação entre os aspectos externos de um objeto, acessíveis por outros objetos,e os detalhes internos da implementação daquele objeto, que ficam ocultos dos demais objetos;

O encapsulamento impede que um programa se torne tão interdependente que umapequena modificação possa provocar grandes efeitos que se propaguem por todo osistema.

PublicPrivate

Protected

Permite que o membro público seja acessado por qualquer outrocódigo do programa. (+ responsabilidade ao usar)

Determina que o membro privado seja acessado apenas por métodos de dentro da própria classe. (usar sempre que possível)

O membro protegido está disponível a todas as classes do mesmopacote, incluindo todas as subclasses da classe que possui o recurso protegido. Somente os métodos e atributos devem ser declarados.

Default O modificador de acesso padrão é adotado quando nenhum outro tipo de moderador é declarado.

Page 75: JAVA: Muito mais que uma linguagem

CertificaçõesA tecnologia Java oferece por meio da Sun uma série de certificações de diversos níveis e perfis. Há certificações

para iniciantes, programadores, desenvolvedores e arquitetos, abrangendo Java SE, EE e ME.

Page 76: JAVA: Muito mais que uma linguagem

Gráfico obtido da V Pesquisa Nacional Java, disponível em <http://www.mundojava.com.br/NovoSite/vozDoPlanalto/vozplanalto_MJ_ED10.pdf> Acesso em 03/04/2010

Certificações * Sun Certified Java Associate (SCJA) * Sun Certified Java Programmer (SCJP) + “popular” * Sun Certified Java Developer (SCJD) * Sun Certified Web Component Developer (SCWCD) * Sun Certified Business Component Developer (SCBCD) * Sun Certified Developer For Java Web Services (SCDJWS) * Sun Certified Mobile Application Developer (SCMAD) * Sun Certified Enterprise Architect (SCEA) - “popular”

Page 77: JAVA: Muito mais que uma linguagem

CertificaçõesEventualmente, quando é lançada uma nova certificação ou versão de uma certificação já

existente, é comum a Sun oferece-lá a comunidade Java por valores bem menores dos oficiais, ou mesmo totalmente de graça.Dentre as certificações Java, a mais conhecida e concorrida é a de programador Java, chamada SCJP (Sun Certified Java Programmer). Seu código é o 310-035, duração de 2 horas e custo de 150 dólares.  Este exame é um dos mais rigorosos da lista

de certificações e abrange o core da linguagem Java (Java SE).  Essa certificação é pré-requisito para as certificações mais específicas, como as desenvolvedor em geral .

Page 78: JAVA: Muito mais que uma linguagem

CertificaçõesOutra certificação importante da

tecnologia é a de Arquiteto Corporativo (SCEA), que é formada de três fases. O rigor dessa certificação

mostra ainda o baixo número de profissionais certificados como

arquitetos Java.

A “caçula” das certificações Java é a de Sun Certified Associate e é voltada

para estudantes ou profissionais que estejam iniciando seus estudos e/ou

atividades na tecnologia.

Page 79: JAVA: Muito mais que uma linguagem

 A própria Sun divide em 5 passos o caminho para se obter uma certificação

Java:1.  Faça os cursos de que você precisa para se preparar para o exame. Você pode

se inscrever em cursos ligando para 0800-55-7863.

2. Contate os Serviços Educacionais Sun para adquirir um voucher de testes ligando para 0800-55-78-63.

3. De posse dos vouchers, marque seu teste em um local que seja mais conveniente contactando um APTC - Authorized Prometric Testing Center.

Visite www.prometric.com para obter uma relação de APTCs.

4.  Faça o teste Prometric.

5. Parabéns por sua certificação Sun! Quando você concluir com sucesso os passos para a certificação, você receberá um Kit de Certificação Sun e acesso

à ferramenta CertManager, com a qual você poderá manter sua conta atualizada e gerenciar suas futuras certificações.

Page 80: JAVA: Muito mais que uma linguagem

Benefícios ao profissional

Solidificação e aumento de conhecimento Mais chances de conseguir emprego Mostra o interesse do profissional na atualização de seus

conhecimentos Adquire respeito dos demais colegas Adquire mais segurança em si Selo de qualidade importante para uma profissão que é não

regulamentada

Benefícios às empresas

Os clientes se sentem mais seguros ao investir em projetos que

estarão sendo feitos por profissionais certificados.

Questão salarial

Depende da empresa na qual você trabalha Em alguns casos o aumento de salário é significativo Algumas empresas possuem plano de cargos

Certificações

Page 81: JAVA: Muito mais que uma linguagem

Bons programadores e arquitetos não necessariamente possuem certificações

Certificação não significa que você é “o(a) especialista”. Comprova que você se esforçou, estudou e tem conhecimento sobre o assunto

Existem excelentes programadores e arquitetos que não possuem certificações e são reconhecidos

Certificações

Nem sempre o título é sinal de poder.

O príncipe Charles nasceu para ser rei, foi preparado para ser rei, e todomundo fica o tempo todo dizendo que ele vai ser rei, que é só uma questãode paciência...

Bom, quando ele era jovem, alguém disse que a mãe dele, Sua Majestade a Rainha, renunciaria quando ele fizesse 25 anos. E lá está o príncipe Charles, viúvo e casado pela segunda vez, aos 56 anos, esperando a mãe renunciar para que ele, finalmente, se torne rei.

Page 82: JAVA: Muito mais que uma linguagem

Java e o dragãoHá uma linda princesa, prisioneira na maior torre de um castelo, guardada por um poderoso dragão e um

destemido cavaleiro deverá salvá-la...Isto descreve como cada linguagem gerenciaria o resgate da princesa das mãos do dragão:

Java - Chega, encontra o dragão, desenvolve um framework para aniquilamento de dragões em múltiplas camadas, escreve vários artigos sobre o framework mas não mata o dragão.

.NET - Chega, olha a idéia do Javanês e a copia, tenta matar o dragão, mas é comido pelo réptil.

C - Chega, olha para o dragão com olhar de desprezo, puxa seu canivete, degola o dragão, encontra a princesa, mas a ignora para ver os últimos checkins no cvs do kernel Linux.

C++ Cria um canivete básico e vai juntando funcionalidades até ter uma espada complexa que apenas ele consegue entender … mata o dragão mas trava no meio da ponte por causa dos memory leaks.

COBOL - Chega, olha o dragão, pensa que tá velho demais para conseguir matar um bicho daquele tamanho e pegar a princesa e, então, vai embora.

Pascal - Se prepara durante 10 anos para criar um sistema de aniquilamento de dragão … chegando lá descobre que o programa só aceita lagartixas como entrada.

PERL - Vai até o CPAN e baixa uma espada de luz anti-dragão-seqüestrador-de-princesa. Escreve o procedimento para matar o dragão em apenas 7 caracteres e tenta. Erra por um milímetro. Tenta modificar para poder acertar o dragão, mas não consegue mais entender o que escreveu…

PHP - Pesquisa bancos de scripts e acha as classes de construção de espada, manuseio da espada, localização da princesa e dragão. Remenda tudo e coloca umas firulas próprias.

Mata o dragão e casa com a princesa. Como tudo foi feito com gambiarras, o dragão um dia vai ressuscitar e comer os dois.

HTML: Monta uma página sobre espadas famosas usadas para matar dragões, mas ignora os padrões W3C. Quando ele encontra o dragão, ele descobre que o código não é compatível com o seu navegador, que o deixa desarmado. O dragão come ele como aperitivo.

Page 83: JAVA: Muito mais que uma linguagem

Java e o dragãoJavaScript: O programador tenta matar o grande dragão verde que cospe fogo pela boca. Ele cria um script que irá apagar o dragão

quando ele carregar uma página, para criar segundos depois, algumas donzelas que lhe arremessarão flores e baterão palmas. Infelizmente ele não leva em conta a estrutura DOM do réptil, também conhecido como Mozilla, e a única coisa que ele consegue é

preencher seu console de erros e o Livro de Mozilla conta como ele foi devorado.

VB monta uma arma de destruição de dragões a partir de vários componentes, parte pro pau pra cima do dragão e, na hora H, descobre que a espada só funciona durante noites chuvosas…

Ruby on Rails Para matar o dragão cria em 5 minutos uma estrela da morte com todas as funcionalidades básicas implementadas: raio da morte, quarto com espelhos pra quando salvar a princesa e RSS. Ao disparar contra o dragão nota que só funciona se o dragão, a

princesa e o castelo estiverem acessando a web.

Smalltalk Chega, analisa o dragão e a princesa, vira as costas e vai embora, pois eles são muito inferiores.

ASSEMBLY Acha que ta fazendo o mais certo e enxuto, porém troca um A por D, mata a princesa e transa com o dragão.

Fortran Chega desenvolve uma solução com 45000 linhas de código, mata o dragão vai ao encontro da princesa ... mas esta o chama de tiuzinho e sai correndo atrás do programador Java que era elegante e ficou rico.

Python Desenvolve uma arma mortal. Mata o dragão, a princesa e a si mesmo.

ANALISTA DE PROCESSOS Chega ao dragão com duas toneladas de documentação desenvolvendo o processo unificado de matar-dragão, desenvolve um diagrama de fluxo de dados para libertar a princesa e se casar com ela, convence o dragão que aquilo vai ser o melhor pra ele e que não será doloroso. Ao executar o processo ele estima o esforço e o tamanho do estrago que isso vai causar com um plano assinado pelo Papa, pelo Buda e pelo Raul Seixas. Então compra 2 bombas nucleares, 45 canhões, 1 porta aviões, contrata

300 homens armados até os dentes, quando tudo que precisava era da espada que estava na sua mão o tempo todo.

Adaptado de:http://mindthoughts-leela.blogspot.com/2007/10/how-to-kill-dragon-with-various.html

http://arcano.castelodotempo.com/node/20http://www.colherdesopa.com.br/2009/08/como-matar-um-dragao-programadores.html

Page 84: JAVA: Muito mais que uma linguagem

Considerações finais

• Os cavaleiros agem de diferentes formas e na história não desempenharam o papel correto

(de ficar com a princesa);

• Se você ainda não speak, é melhor começar a “spekar”;

• Posso inventar 1000 motivos para não começar, mas uma longa jornada começa com o

primeiro passo;

Page 85: JAVA: Muito mais que uma linguagem

Considerações finais

• Tornar-se um bom programador não é fácil, exige prática e experiência.

• É bom utilizarmos convenções certas para o bom funcionamento (e legibilidade) do código

e não apenas “achismos e/ou remendos”.

• Aprender inglês é uma longa jornada, não se iluda pensando que aprenderá em 2 semanas...

Page 86: JAVA: Muito mais que uma linguagem

Considerações finais

System.out.println(“Obrigado!”);

“Se você não falha em pelo menos 90% das vezes, seus objetivos não foram ambiciosos o suficiente.”Alan Kay

Esse trabalho não poderia terminar sem a seguinte citação:

Page 87: JAVA: Muito mais que uma linguagem

Vídeo sobre Java

Tempo do vídeo

http://www.youtube.com/watch?v=guXCmQDy9Es

Link do youtube para o vídeo:

Utilizar o mesmo reprodutor, a legenda deve estar no mesmo diretório do vídeo...

Para a apresentação:

Page 88: JAVA: Muito mais que uma linguagem

BibliografiaSIMON, Imre. Von Neumann, o cientista e a figura humana. Estud. av., São Paulo, v. 10, n. 26, abr. 1996 . Disponível em <http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0103-40141996000100017&lng=pt&nrm=iso>. Acessos em 30 abr. 2010. doi: 10.1590/S0103-40141996000100017.

DEITEL, Harvey M.; DEITEL, Paul J. Java – Como Programar – 6a Edição. São Paulo: Makron Books, 2005.

PUGA, S. RISSETTII, G. Lógica de programação e estruturas de dados com aplicações em Java. São Paulo: Pearson Prentice Hall, 2003. 254 p. ISBN: 8587918826.

MURDOCCA, Miles J.; HEURING, Vicent P. Introdução à Arquitetura de Computadores. Rio de Janeiro: Campus, 2001. ISBN: 85-352-0684-1

TUCKER, Alllen B. / NOONAN, Robert e. - Linguagens de programação – princípios e paradigmas

ELLIS, Graham. When should I use OO techniques? Publicado em: 11 mai 2009. Disponível em: <http://www.wellho.net/archives/2009/05/when_should_i_u.html>. Acesso em: 23 abr. 2010.

APPLE. Java Frequently Asked Questions. Mac OS X Java FAQ. Disponível em: <http://developer.apple.com/java/faq/#bundle>. Acesso em: 03 maio 2010.

http://www.slideshare.net/joellobo/curso-java-basico-1455829http://www.phph.com.br/JAVA/programacao-orientada-objetos.html http://www.slideshare.net/fgsouza/JavaUnipac2

Page 89: JAVA: Muito mais que uma linguagem

Bibliografiahttp://www.dcc.unesc.net/sulcomp/05/Art110SulComp2005.pdf <- comparação das 3 linguagenshttp://www.inf.unisinos.br/~barbosa/paradigmas/consipa3/53/s27/javac.htmhttp://www.coladaweb.com/informatica/comparativo-entre-c-e-javahttp://www.dcc.ufrj.br/~comp2/TextosJava/Comparando%20C%20com%20Java.pdfhttp://en.wikipedia.org/wiki/Comparison_of_programming_languageshttp://java.com/en/javahistory/timeline.jsphttp://www.linhadecodigo.com.br/Artigo.aspx?id=745http://inventors.about.com/od/gstartinventors/a/James_Gosling.htmhttp://falandodejava.blogspot.com/2007/02/histria-do-java.htmlhttp://java.com/pt_BR/about/http://www.scriptbrasil.com.br/forum/index.php?showtopic=129724http://distritos.telepolis.com/java/lib/documentos/historia.htmhttp://www.cad.com.mx/historia_del_lenguaje_java.htmhttp://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/I_2.htmhttp://www.infoq.com/news/2010/04/gosling_leaves_oraclehttp://g1.globo.com/Noticias/Tecnologia/0,,MUL1566487-6174,00-CRIADOR+DA+LINGUAGEM+DE+PROGRAMACAO+JAVA+DEIXA+A+ORACLE.htmlhttp://pt.wikipedia.org/wiki/James_Goslinghttp://nighthacks.com/roller/jag/entry/time_to_move_onhttp://pt.wikipedia.org/wiki/Licen%C3%A7as_BSD_e_GPLhttp://www.ronaud.com/frases-pensamentos-citacoes-de/jean-jacques-rousseauhttp://www.citador.pt/pensar.php?op=7&author=26http://www.imotion.com.br/frases/?cat=513http://info.abril.com.br/aberto/infonews/052007/09052007-14.shlhttp://pt.wikipedia.org/wiki/Gnuhttp://www.viamais.net/blog/?p=895https://users.cs.jmu.edu/bernstdh/web/common/lectures/slides_cpp_dynamic-memory.phphttp://en.wikipedia.org/wiki/Dynamic_memory_allocationhttp://homepages.dcc.ufmg.br/~camarao/ipcj/ambientes-java.htmlhttp://mindprod.com/jgloss/midlet.htmlhttp://www.slideshare.net/sgvargas/introduccion-a-java-presentation – slide 20http://www.dm.ufscar.br/~waldeck/curso/java/introd.htmlhttp://javafree.uol.com.br/noticia/3604/Vulnerabilidades-no-Ambiente-de-Execucao-do-Java-JRE-da-Sun-AL20070071.htmlhttp://imasters.uol.com.br/faq/420 http://www.java-tips.org/java-se-tips/java.lang/what-is-java-just-in-time-compiler.html http://www.glaucoreis.com.br/developers/2000/novembro2000-artigo.jpghttp://www.arquiteturajava.com.br/livro/java-como-plataforma-nao-como-linguagem.pdf

Page 90: JAVA: Muito mais que uma linguagem

Bibliografiahttp://paginas.fe.up.pt/~ee94168/trabalhos/AC_picoJava.pdfhttp://www.inf.ufrgs.br/gppd/disc/cmp135/trabs/992/picoJava/node6.htmlhttp://www.inf.ufrgs.br/gppd/disc/cmp157/trabalhos/sem2000-2/tf/lisboa/index.htmlhttp://www.inf.ufrgs.br/gppd/disc/cmp135/trabs/992/picoJava/node6.htmlhttp://www.webgoal.com.br/desenvolvimento/origem-da-orientacao-a-objetos/http://www.infnet.edu.br/desktopmodules/tipoevento/slides/Orientação%20a%20Objetos%20na%20Prática.pdfhttp://www.csse.monash.edu.au/~jonmc/CSE2305/Topics/01.01.OverviewAbsEnc/html/text.htmlhttp://www.slideshare.net/jjfeitosa/curso-java-basico-1108760http://luishenrique.org/blog/posts/paradigmas-de-programacaohttp://www.guj.com.br/posts/list/66878.javahttp://www.hwn.com.br/pej/tij2pej/PEJ306.htmhttp://www.inf.puc-rio.br/~java/progjava/protected/apostilas/oo1.pdfhttp://www.vivaolinux.com.br/artigo/Programacao-orientada-a-objetos-e-o-Java-%28Parte-6%29/?pagina=2http://www.infowester.com/lingjava.phphttp://www.rodflash.com/en/2007/07http://teamkings.forumeiros.com/java-e-javascript-f60/ola-mundo-java-javascript-t780.htmhttp://amsterdaintelligence.blogspot.com/2009/10/java-vs-javascript.htmlhttp://antigo.qi.com.br/professor/downloads/download8785.pdfhttp://www.joomreem.com/joomla-articles/20-generaltopics/26-javavsjavascript.htmlhttp://www.sislands.com/coin70/week1/javajs.htmhttp://www.dannyg.com/ref/javavsjavascript.htmlhttp://www.guiadohardware.net/artigos/programacao-orientada-objetos/ http://www.casodepolicia.com/2007/09/25/conheca-te-a-ti-mesmo-atraves-da-historia/http://www.ibm.com/developerworks/br/java/library/j-noaccent/http://www.slideshare.net/rafaelcarneiro/certificaes-java http://www.ronaud.com/frases-pensamentos-citacoes-de/alan-kayhttp://www.yurimalheiros.com/2009/12/apresentacoes-sem-slides.html http://www.scribd.com/doc/3360383/Choosing-the-Right-Speaker