0
JAVA: Muito mais que uma linguagem<br />Disciplina: Paradigmas de programação - UNIARARAS<br />Enrico Nicoletto<br />Ferna...
Licença CreativeCommons<br />Trabalho sob licença CreativeCommons, alguns direitos reservados.<br />Você pode transmitir, ...
TÓPICOS DESTA APRESENTAÇÃO :<br /><ul><li>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)</li></li></ul><li>Perdendo o sotaque<br />Aprender uma nova linguagem de programação é mai...
Perdendo o sotaque<br />Não usar as convenções do Java e escrever o código da mesma forma que em C / C++ ou qualquer outra...
Perdendo o sotaque<br />Quem é esse poookémon ?<br />
classTest  {<br />publicstaticvoidmain(String argv[]) {  <br />float F, C;<br />floatmin_tmp, max_tmp, x;<br />min_tmp = 0...
Why?<br /><ul><li>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.</li></ul>.<br />Essas expressões não estão er...
Anatomia básica<br />Declaração de argumento           variável local: args           tipo: String[]<br />Nome da classe<b...
A classe scanner<br />Para ler entrada de dados, devemos utilizar a classe Scanner, veja o exemplo abaixo:<br />
Explicação do código<br />
Explicação do código<br />
Explicação do código<br />
Explicação do código<br />
Explicação do código<br />
Explicação do código<br />
Explicação do código<br />
Explicação do código - JavaDoc<br />JavaDoc, show de bola!!!!<br />
Histórico<br />A linguagem JAVA foi projetada e implementada por um pequeno grupo de pessoas, coordenado por James Gosling...
Histórico<br />Equipe trabalhava no projeto de software para produtos eletrônicos de consumo.<br />TVs interativas, torrad...
Histórico<br />Projeto Green<br />*7 (Star Seven)<br />Meu primeiro emprego: guia virtual do *7<br />Protótipo de disposit...
Histórico<br />C++<br />*7 (Star Seven)<br />O grande desafio do projeto<br />Linguagem de programação que tenha alta conf...
Histórico<br />Eu,o chapolin colorado!<br />a linguagem Oak !!! <br />Em português Oak significa Carvalho.<br />
Histórico<br />Oak<br />Java<br />1993 –  A internet torna-se mais popular e a Sun direciona o potencial da linguagem JAVA...
E agora o que será do fluxo contínuo de espaço de tempo????<br />27 Jan 2010<br />Notícia mais recente...<br />Dia 02 de A...
Com licença, JAVA?<br />Durante alguns anos, a Sun resistiu a colocar o Java sob GPL, licença padrão para software livre. ...
Características da Linguagem<br />Distribuída<br />Simples<br />Orientado a Objetos<br />Robusta<br />Segura<br />Portável...
Características da Linguagem<br />Multi-tarefas(Multithreaded)<br />Interpretada<br />Alto Desempenho<br />Muitas APIs<br ...
Características da Linguagem<br />Alocação automática de memória<br />Herança única<br />Sem ponteiros<br />Coleta de lixo...
Características da Linguagem<br />Coerção de tipo implícita<br />Verificação de faixa de índice implícita<br />Imperativa<...
Características da Linguagem<br />Programação multi-plataforma<br />Gratuita<br />Popular<br />Orientada a Eventos<br />
Características da Linguagem<br />Ortogonalidade<br />Tratamento de excessões<br />Carga dinâmica de Código<br />Internaci...
Javascriptvs Java<br />Javascript tem sintaxe similar a de Java (mas também de C e C++)Javascript é interpretado enquanto ...
Javascriptvs Java<br />Bandeira da República dos Estados Unidos do Brasil<br />Porque será que Javascript tem o nome Java ...
A plataforma Java<br />Disponível em: <https://meapplicationdevelopers.dev.java.net/fragmentation.html>, acesso em 26 abri...
A plataforma Java<br />Mais exemplos...<br />Um applet<br />Java Card(chip para celularese disp. móveis)<br />Java ModelRa...
Arquitetura de aplicativos Java<br />Plataforma Java é o ambiente computacional onde se permite desenvolver aplicativos ut...
Conceitos de Gerenciamento de Memória (Alocação dinâmica)<br />As instruções de um programa são temporariamente armazenado...
Conceitos de Gerenciamento de Memória (Heap)<br />Vivem na Heap:<br /><ul><li>Variáveis de instância: as variáveis de tipo...
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 do...
Objetos: Todos os objetos vivem na heap.</li></ul>O garbagecollector libera a memória  destruindo os objetos da heap que e...
Conceitos de Gerenciamento de Memória (Stack)<br />Vivem na Stack:<br /><ul><li> Variáveis locais: as variáveis de tipos p...
 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â...
 Invocações a métodos: quando invocamos um método, esse método é empurrado para a stack (é colocado no topo da stack).As v...
Conceitos de Gerenciamento de Memória (Heap e Stack)<br />Heap objetos de forma desorganizada (métodos agrupados sem orie...
Ambiente de desenvolvimento<br />Antes de falarmos das IDEs, devemos citar os kit´s de desenvolvimento, eles são:<br />JDK...
Java Development Kit<br />Suportado em<br />Solaris SPARC x86Solaris SPARC x64Windows x86Windows x64Linux x86Linux x64<br ...
Ambiente de desenvolvimento<br />jEdit - (recomendado para programadores iniciantes)<br />Dr.Java – Ambiente projetado pri...
Ambiente de desenvolvimento<br />Dados obtidos de: <http://forum.worldwindcentral.com/showthread.php?t=24462>, acesso em 1...
Netbeans, I LOVE YOU!!!<br />
Este IDE foi desenvolvida pela empresa Oracle<br />
Este é o Eclipse, num Linux...<br />
Esse é o Jcreator da Xinox<br />
E esse é o ... Vocês não enxergam lá em cima???? <br />
Aplicações independentes, Applets, Servlets, JSPs e MIDlets.<br />Os aplicativos independentes (stand-alone) são executado...
Java não roda só Java...<br />groovy.codehaus.org<br />www.jython.org<br />jruby.codehaus.org<br />sun.com/javafx<br />Rhi...
<ul><li>Gráficos
Folha de estilos ...
Conteúdo multimídia ...
Jogos on-line ...</li></ul>JavaFX<br />Código e componente MediaBox disponível em:<br />http://javafx.com/samples/MediaBox...
Ambiente de execução<br />JRE<br />= Biblioteca de classes + JVM<br />Para que o programa Java seja executado precisamos d...
Ambiente de execução<br />A JVM é uma máquina imaginária emulada em um hardware. <br />JVM<br />Os bytecodes são a linguag...
Ambiente de execução<br />Programa Java e arquivo .class compilado<br />Arquitetura da Máquina Virtual Java.<br />//  Este...
Ambiente de execução (100% segura?)<br />Alerta AL-2007.0071<br />Uma vulnerabilidade no código de analise de imagens do A...
Ambiente de execução (os 3 mosqueteiros)<br />Podemos resumir em 3 formas de execução:<br />Compilação do código Java para...
Ambiente de execução (JIT)<br />Em vez de interpretar bytecode JVM instrução por instrução na máquina destino, a cada vez ...
Ambiente de execução (picoJava-II)<br />A microarquiteturapicoJava-II é voltada para a execução eficiente de Java diretame...
Ambiente de execução (picoJava-II)<br /><ul><li>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)
Upcoming SlideShare
Loading in...5
×

JAVA: Muito mais que uma linguagem

5,565

Published on

Trabalho sobre a Linguagem de Programação Java.

Work about Java Programming Language.

Published in: Technology, News & Politics
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,565
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
160
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Transcript of "JAVA: Muito mais que uma linguagem"

  1. 1. JAVA: Muito mais que uma linguagem<br />Disciplina: Paradigmas de programação - UNIARARAS<br />Enrico Nicoletto<br />Fernando AlonsoIvan Lopes Alonso<br />José Erinaldo de Jesus Martins<br />
  2. 2. Licença CreativeCommons<br />Trabalho sob licença CreativeCommons, alguns direitos reservados.<br />Você pode transmitir, modificar ou transmitir a obra desde que citados os autores.<br />CreativeCommons 3.0 Brasil, mais informações em:http://creativecommons.org/licenses/by/3.0/br/<br />
  3. 3.
  4. 4. TÓPICOS DESTA APRESENTAÇÃO :<br /><ul><li>PERDENDO O SOTAQUE
  5. 5. EXPLICAÇÃO DO CÓDIGO
  6. 6. A HISTÓRIA DA LINGUAGEM
  7. 7. COM LICENÇA, JAVA?
  8. 8. CARACTERÍSTICAS DA LINGUAGEM
  9. 9. JAVASCRIPT VS JAVA
  10. 10. A PLATAFORMA JAVA
  11. 11. CONCEITOS DE GERENCIAMENTO DE MEMÓRIA
  12. 12. AMBIENTE DE DESENVOLVIMENTO
  13. 13. AMBIENTE DE EXECUÇÃO
  14. 14. INTRODUÇÃO A POO EM JAVA
  15. 15. CERTIFICAÇÕES
  16. 16. JAVA E O DRAGÃO
  17. 17. CONSIDERAÇÕES FINAIS
  18. 18. VÍDEO DE ENCERRAMENTO (02” 30s)</li></li></ul><li>Perdendo o sotaque<br />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.<br />A forma como falamos, demonstra nossas origens...<br />
  19. 19. Perdendo o sotaque<br />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!<br />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<br />Infelizmente na história do Brasil e de muitos países,<br />colonizadores achavam-se superiores aos colonizados.<br />Índios nativos do Brasil e portugueses (elite paulista)<br />
  20. 20. Perdendo o sotaque<br />Quem é esse poookémon ?<br />
  21. 21. classTest {<br />publicstaticvoidmain(String argv[]) { <br />float F, C;<br />floatmin_tmp, max_tmp, x;<br />min_tmp = 0; <br />max_tmp = 300;<br /> x = 20;<br /> F = min_tmp;<br />while (F <= max_tmp) { <br /> C = 5 * (F-32) / 9;<br />printf("%f %f ", F, C);<br /> F = F + x;<br /> } <br /> }<br />privatestaticvoidprintf(String format, Object... args) {<br /> System.out.printf(format, args);<br /> }<br />} <br />É um código Java muito engraçado. Trabalho de alguém que pensa em C e está meramente traduzindo para a linguagem Java...<br />
  22. 22. Why?<br /><ul><li>As variáveis são floats em vez de doubles.
  23. 23. Todas as variáveis são declaradas na parte de cima do método.
  24. 24. A inicialização segue a declaração.
  25. 25. É usado um loop while em vez de um loop for.
  26. 26. É usado printf em vez de println.
  27. 27. O argumento do método main() é nomeado argv.
  28. 28. Os parênteses de array vêm depois do nome do argumento e não depois do tipo.</li></ul>.<br />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. <br />
  29. 29. Anatomia básica<br />Declaração de argumento variável local: args tipo: String[]<br />Nome da classe<br />Nome do método<br />Comentário do bloco<br />/* Aplicativo Anatomia Básica */<br />publicclassAnatomiaBasica {<br />}<br />publicstaticvoidmain(String[] args){<br />System.out.println(“Eu sou um programa Java!”);<br /> } <br />Ponto-e-vírgula ao<br />final de toda instrução<br />Chamada do método println() via objeto out acessível através da classe System<br />Definição do método main()<br />Atribuição de argumento para o método println()<br />Definição da classe AnatomiaBasica<br />
  30. 30. A classe scanner<br />Para ler entrada de dados, devemos utilizar a classe Scanner, veja o exemplo abaixo:<br />
  31. 31. Explicação do código<br />
  32. 32. Explicação do código<br />
  33. 33. Explicação do código<br />
  34. 34. Explicação do código<br />
  35. 35. Explicação do código<br />
  36. 36. Explicação do código<br />
  37. 37. Explicação do código<br />
  38. 38. Explicação do código - JavaDoc<br />JavaDoc, show de bola!!!!<br />
  39. 39. Histórico<br />A linguagem JAVA foi projetada e implementada por um pequeno grupo de pessoas, coordenado por James Gosling, na Sun Microsystems em MountainView, Califórnia, em 1991.<br />
  40. 40. Histórico<br />Equipe trabalhava no projeto de software para produtos eletrônicos de consumo.<br />TVs interativas, torradeiras interativas, uma casa interativa.<br />Interconectados e com a mesma interface.<br />Projeto Green<br />(1991)<br />
  41. 41. Histórico<br />Projeto Green<br />*7 (Star Seven)<br />Meu primeiro emprego: guia virtual do *7<br />Protótipo de dispositivo de comunicação entre aparelhos eletrodomésticos. (espécie de controle remoto)<br />
  42. 42. Histórico<br />C++<br />*7 (Star Seven)<br />O grande desafio do projeto<br />Linguagem de programação que tenha alta confiabilidade, compatibilidade e que operem dadas as limitações de hardware.<br />E agora, quem poderá me defender ?????<br />
  43. 43. Histórico<br />Eu,o chapolin colorado!<br />a linguagem Oak !!! <br />Em português Oak significa Carvalho.<br />
  44. 44. Histórico<br />Oak<br />Java<br />1993 – A internet torna-se mais popular e a Sun direciona o potencial da linguagem JAVApara conteúdo dinâmico na internet .<br />1995 – Java é anunciado em uma importante conferência.<br />
  45. 45. E agora o que será do fluxo contínuo de espaço de tempo????<br />27 Jan 2010<br />Notícia mais recente...<br />Dia 02 de Abril de 2010 – James Gosling se demite da Oracle<br />
  46. 46. Com licença, JAVA?<br />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.<br />Em 13 de Novembro de 2006, a Sun lançou a maior parte do Java como Software Livre sob os termos da GNU General PublicLicense (GPL). <br />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.<br />Refletir....<br />“O homem nasceu livre, e em todos os lugares ele está acorrentado.”Jean-Jacques Rousseau<br />
  47. 47. Características da Linguagem<br />Distribuída<br />Simples<br />Orientado a Objetos<br />Robusta<br />Segura<br />Portável<br />
  48. 48. Características da Linguagem<br />Multi-tarefas(Multithreaded)<br />Interpretada<br />Alto Desempenho<br />Muitas APIs<br />Dinâmica<br />
  49. 49. Características da Linguagem<br />Alocação automática de memória<br />Herança única<br />Sem ponteiros<br />Coleta de lixo (garbagecollector)<br />Arquitetura neutra<br />
  50. 50. Características da Linguagem<br />Coerção de tipo implícita<br />Verificação de faixa de índice implícita<br />Imperativa<br />Híbrida<br />Destrutores diferentes: finalizadores.<br />
  51. 51. Características da Linguagem<br />Programação multi-plataforma<br />Gratuita<br />Popular<br />Orientada a Eventos<br />
  52. 52. Características da Linguagem<br />Ortogonalidade<br />Tratamento de excessões<br />Carga dinâmica de Código<br />Internacionalização<br />
  53. 53. Javascriptvs Java<br />Javascript tem sintaxe similar a de Java (mas também de C e C++)Javascript é interpretado enquanto Java é compilado<br />Javascript depende de interpretador-mestre (navegador). Java, uma vez compilado, necessita da JVMJavascript é uma linguagem limitada e não consegue, em vias normais, criar um programa autônomo (standalone)<br />Não se inclui Java em uma página, carrega-se uma applet ou componente<br />X<br />Saber, decorar, nunca mais esquecer!<br />Javascript é jamais Java!Java é jamais Javascript!<br />
  54. 54. Javascriptvs Java<br />Bandeira da República dos Estados Unidos do Brasil<br />Porque será que Javascript tem o nome Java se são diferentes?<br />Uma “homenagem” pela Sun ter ajudado (financeiramente) a Netscape.<br />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.<br />Saber, decorar, nunca mais esquecer!<br />É PECADO dizer que Javascript é DERIVADO de Java. A palavra derivado significa“originário”, o leite é derivado do queijo. Mas uma meia fedida não é derivada<br />do queijo apesar do odor parecido – desculpem o exemplo fedorento!!!!! <br />
  55. 55. A plataforma Java<br />Disponível em: <https://meapplicationdevelopers.dev.java.net/fragmentation.html>, acesso em 26 abril 2010 <br />“O homem nunca sabe do que é capaz, até que o tenta “.Charles Dickens.<br />
  56. 56. A plataforma Java<br />Mais exemplos...<br />Um applet<br />Java Card(chip para celularese disp. móveis)<br />Java ModelRailroad Interface, suíte de ferramentas para modelar<br />ferrovias.<br />Receitanet rodandono Mac Os X<br />
  57. 57. Arquitetura de aplicativos Java<br />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).<br />J2EE<br />J2SE<br />J2ME<br />J2ME<br />J2SE<br />Servidor não é a mamãe!!!!<br />Oh!!<br />J2EE<br />
  58. 58. Conceitos de Gerenciamento de Memória (Alocação dinâmica)<br />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 garbagecollector 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.<br />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.<br />
  59. 59. Conceitos de Gerenciamento de Memória (Heap)<br />Vivem na Heap:<br /><ul><li>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)
  60. 60. 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.
  61. 61. Objetos: Todos os objetos vivem na heap.</li></ul>O garbagecollector libera a memória destruindo os objetos da heap que estejam em desuso.<br />
  62. 62. Conceitos de Gerenciamento de Memória (Stack)<br />Vivem na Stack:<br /><ul><li> 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)
  63. 63. 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.
  64. 64. 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).</li></li></ul><li>Conceitos de Gerenciamento de Memória (Heap e Stack)<br />Obtido de: <http://www.youtube.com/watch?v=HQ3YI70PDe0&feature=SeriesPlayList&p=4BBB74C7D2A1049C&index=8>, 01:57, acesso em 01 mai 2010.<br />Obtido de: <http://img187.imageshack.us/img187/2904/hfjcap089fbyh1.png>, acesso em 31 mar 2010.<br />
  65. 65. Conceitos de Gerenciamento de Memória (Heap e Stack)<br />Heap objetos de forma desorganizada (métodos agrupados sem orientação lógica)<br />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.<br />
  66. 66. Ambiente de desenvolvimento<br />Antes de falarmos das IDEs, devemos citar os kit´s de desenvolvimento, eles são:<br />JDK = Java Development Kit (Sun) <br />OpenJDK = Open JDK (Comunidade, livre)<br />O usuário não precisa ter eles para executar seu programa Java, mas o desenvolvedor precisa deles para fazer o código.<br />JDK (desenvolvedor)  JRE (usuário)<br />
  67. 67. Java Development Kit<br />Suportado em<br />Solaris SPARC x86Solaris SPARC x64Windows x86Windows x64Linux x86Linux x64<br />Mac OS (já vem no próprio S.O. )<br />Especificações detalhadas de configurações de sistema do JDK em:<br />http://java.sun.com/javase/6/webnotes/install/system-configurations.html<br />Como instalar no Linux em:http://techreviews.in/installing-and-setting-up-java-6-jdk-in-intrepid-ibex/<br />
  68. 68. Ambiente de desenvolvimento<br />jEdit - (recomendado para programadores iniciantes)<br />Dr.Java – Ambiente projetado principalmente para o ensino da linguagem. Desenvolvido na Universidade Rice (EUA).<br />JCreator- (gratuito/shareware) — um ambiente desenvolvido pela Xinox (recomendado para programadores iniciantes);<br />Eclipse - (software livre) — um projeto aberto iniciado pela IBM;<br />NetBeans - (software livre) — um ambiente criado pela empresa Sun Microsystems;<br />JBuilder - um ambiente desenvolvido pela empresa Borland;<br />JDeveloper - (gratuito OTN) — uma IDE desenvolvida pela empresa Oracle;<br />IntelliJ IDEA - (comercial) — uma IDE desenvolvida pela JetBrains (considerada por muitos a melhor IDE do mercado).<br />
  69. 69. Ambiente de desenvolvimento<br />Dados obtidos de: <http://forum.worldwindcentral.com/showthread.php?t=24462>, acesso em 15 abril de 2010<br />
  70. 70. Netbeans, I LOVE YOU!!!<br />
  71. 71. Este IDE foi desenvolvida pela empresa Oracle<br />
  72. 72. Este é o Eclipse, num Linux...<br />
  73. 73. Esse é o Jcreator da Xinox<br />
  74. 74. E esse é o ... Vocês não enxergam lá em cima???? <br />
  75. 75. Aplicações independentes, Applets, Servlets, JSPs e MIDlets.<br />Os aplicativos independentes (stand-alone) são executados através de um sistema operacional.<br />Os Applets são aplicativos que são executados através de um navegador de internet.<br />Os Servlets são aplicativos que são executados em um servidor de internet.<br />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.<br />Os MIDLets são pequenos aplicativos Java que rodam em celulares que possuem Java.<br />
  76. 76. Java não roda só Java...<br />groovy.codehaus.org<br />www.jython.org<br />jruby.codehaus.org<br />sun.com/javafx<br />Rhino: JavaScript for Java<br />www.beanshell.org<br />www.mozilla.org/rhino<br />REHEM, Serge. Desenvolvimento Java. Slide 57. Disponível em:<http://www.slideshare.net/serge_rehem/desenvolvimento-java>. Acesso em: 23 abr. 2010. <br />
  77. 77. <ul><li>Gráficos
  78. 78. Folha de estilos ...
  79. 79. Conteúdo multimídia ...
  80. 80. Jogos on-line ...</li></ul>JavaFX<br />Código e componente MediaBox disponível em:<br />http://javafx.com/samples/MediaBox/index.html<br />
  81. 81. Ambiente de execução<br />JRE<br />= Biblioteca de classes + JVM<br />Para que o programa Java seja executado precisamos da JRE, muito chique. Não concordam?<br />Código java<br />Ambiente de meuarquivo.java<br />Desenvolvimento<br />Compilador<br />Distribuição<br />meuarquivo.class<br />Byte Code Java<br />Ambiente de execução<br />VM Linux<br />VM Celular<br />VM Windows<br />SO Windows<br />SO Celular<br />SO Linux<br />
  82. 82. Ambiente de execução<br />A JVM é uma máquina imaginária emulada em um hardware. <br />JVM<br />Os bytecodes são a linguagem de máquina da JVM. <br />Sem bytecodes ? ADEUS, JVM. ADEUS portabilidade!<br />James Gosling já afirmou que a linguagem Java não é <br /> mais importante da plataforma, e sim a JVM.<br />
  83. 83. Ambiente de execução<br />Programa Java e arquivo .class compilado<br />Arquitetura da Máquina Virtual Java.<br />// Este é o programa add.java<br />publicclassadd {<br />public staticvoid main(Stringargs[]) {<br />int x=15, y=9, z=0;<br /> z = x + y;<br /> }<br /> }<br />
  84. 84. Ambiente de execução (100% segura?)<br />Alerta AL-2007.0071<br />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. <br />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). <br />(....) recomenda-se que administradores mantenham seus sistemas e aplicativos sempre atualizados, de acordo com as ultimas versões e correções oferecidas pelos fabricantes. <br />
  85. 85. Ambiente de execução (os 3 mosqueteiros)<br />Podemos resumir em 3 formas de execução:<br />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)<br />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++) <br />Execução do bytecode diretamente em uma implementação da JVM emhardware.<br />Observação: Arquivos interpretados, apesar de portáveis, rodam de 100x a 200x mais lentos que os compilados.<br />
  86. 86. Ambiente de execução (JIT)<br />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.<br />A opção de compilador JIT <br />deve ser usadaespecialmente seo métodoexecutável é repetidamentereutilizado no código.<br />O peso do bytecode triplica (+ memória) e perde-se portabilidade.<br />Lembrarque:<br />Sistema de produção Just-in-time: Fazer apenas o necessário, quando necessário e apenas na quantidade necessária. – KiichiroToyoda<br />
  87. 87. Ambiente de execução (picoJava-II)<br />A microarquiteturapicoJava-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.<br />
  88. 88. Ambiente de execução (picoJava-II)<br /><ul><li>Objetivo: otimizar a execução de código Java (acelerar)
  89. 89. Executa diretamente parte das instruções do código Java
  90. 90. Otimiza sincronização de pipeline (4 níveis no picoJava-I e 6 níveis no picoJava-II)
  91. 91. Otimiza gestão das variaveis locais (obtendo menor numero de ciclos de clock por instrucao)
  92. 92. Otimização na execução de instruções em C/C++
  93. 93. Modos de configuração entre consumo, tamanho e velocidade.
  94. 94. Pode-se usar barramento PCI para acessar periféricos/memória
  95. 95. Destinado a dispositivos eletrônicos de consumo</li></li></ul><li>Ambiente de execução (picoJava-II)<br />Figura 1: Execução da Linguagem C e Java<br />Compilação<br />Compilação/<br />Montagem<br />Compilação/<br />Montagem<br />Código nativo do picoJava<br />(bytecodes e bytes de expansão)<br />Bytecode Java<br />Conjuntos de instruções dos<br />Bytecodesjava<br />Execução direta dos<br />Bytecodes<br />Código nativo<br />(a) Ao usar CPU de propósito geral (b) Ao usar o picojava<br />Diagrama adaptado de: <http://www.cqpub.co.jp/dwm/contents/0020/dwm002000420.pdf> <br /> Acesso em 17 abril 2010.<br />
  96. 96. Quando devo usar OO ??<br />
  97. 97. Introdução a POO em Java<br />Um paradigma de programação trata computacionalmente os problemas encontrados no<br />mundo real.<br />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)<br />A maioria dos projetos hoje são orientados a objetos<br />Alan Kayformulou a chamadaanalogia biológica: “COMO SERIA UM SISTEMA DE SOFTWARE QUEFUNCIONASSE COMO UM SER-VIVO?”.<br />
  98. 98. Introdução a POO em Java<br />Cada “célula” interagiria com outras através de envios de mensagenspara realizar um objetivo comum, cada qual comportar-se-ia como unidade autônoma. <br />Alan Kay pensou em como construir um sistema de software a partir de agentes autônomos que interagem entre si.<br />Com isso nascem os princípios da orientação a objetos.<br />Eu sei que é emocionante, mas contenham as lágrimas!<br />
  99. 99. Tangíveis<br />Automóvel<br />Livro<br />Pessoas<br />Incidente<br />Competição<br />Projeto<br />Conserto<br />Interação<br />Transação<br />Saque<br />Venda<br />Objetos<br />Um objeto é uma extensão do conceito de objeto no mundo real, onde podem-se ter coisas<br />tangíveis, um incidente (evento ou ocorrência) ou uma interação (transação ou contrato).<br />Os atributos representam os estados armazenados e realizam troca de mensagens.<br />
  100. 100. Classe<br />Uma classe é uma coleção de objetos que podem ser descritos por um conjunto básico de<br />atributos e possuem operações semelhantes. <br />Generalização<br />Especialização<br />Veículos<br />Utilitário<br />Passeio<br />Tração animal<br />Esportivo<br />
  101. 101. Instâncias de Objetos<br />Quando se fala em classes de objetos, considera-se que podem ser incluidos objetos nelas.<br />Veículos<br />Passeio<br />Sedan<br />Minivan<br />Para cada novo veículo, será criado uma nova instância de<br />objeto de uma determinada classe, ex:Fiat idea -> Minivan <br />
  102. 102. Herança<br />Herança nada mais é do que a implementação da generalização. É o compartilhamento<br />de atributos e operações entre classes com base em um relacionamento hierárquico.<br />Quando é criado uma nova instância de um objeto, dizemos, em orientação a objeto, <br />que esse novo objeto herda os atributos e as operações de sua classe.<br />Ah, fala logo que uma classe (sub-classe) pode estender outra classe (superclasse), estendendo seus comportamentos e atributos !<br />
  103. 103. PAI<br />FILHO<br />FILHO<br />FILHO<br />PAI<br />PAI<br />Herança simples Herança múltipla<br />(Java)<br />(C++)<br />
  104. 104. Polimorfismo<br />Associado ao conceito de Herança, ele permite que o objeto assuma um<br />comportamento diferente daquele definido em sua classe. <br />Polimorfismo: vem do grego poli =“muitas” e morphos=“formas”, é a capacidade de<br />assumir muitas formas.<br />Operação darPartida();<br />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.<br />
  105. 105. Encapsulamento<br />O encapsulamento, também chamado de ocultamento de informações, consiste na<br />separaçã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;<br />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.<br />Permite que o membro público seja acessado por qualquer outrocódigo do programa. (+ responsabilidade ao usar)<br />Public<br />Determina que o membro privado seja acessado apenas por <br />métodos de dentro da própria classe. (usar sempre que possível)<br />Private<br />O membro protegido está disponível a todas as classes do mesmo<br />pacote, incluindo todas as subclasses da classe que possui o recurso protegido. Somente os métodos e atributos devem ser declarados. <br />Protected<br />Default<br />O modificador de acesso padrão é adotado quando nenhum outro tipo de moderador é declarado.<br />
  106. 106. Certificações<br />A 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.<br />
  107. 107. Certificações<br /> * Sun Certified Java Associate (SCJA)<br /> * Sun Certified Java Programmer (SCJP) + “popular”<br /> * Sun Certified Java Developer (SCJD)<br /> * Sun Certified Web ComponentDeveloper (SCWCD)<br /> * Sun Certified Business ComponentDeveloper (SCBCD)<br /> * Sun CertifiedDeveloper For Java Web Services (SCDJWS)<br /> * Sun CertifiedMobile Application Developer (SCMAD)<br /> * Sun Certified Enterprise Architect (SCEA) - “popular”<br />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<br />
  108. 108. Certificações<br />Eventualmente, 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 .<br />
  109. 109. Certificações<br />Outra 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 profissionaiscertificados como arquitetos Java.<br />A “caçula” das certificações Java é a de Sun CertifiedAssociate e é voltada para estudantes ou profissionais que estejam iniciando seus estudos e/ou atividades na tecnologia.<br />
  110. 110.  A própria Sun divide em 5 passos o caminho para se obter uma certificação Java:<br /> 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.<br />Contate os Serviços Educacionais Sun para adquirir um voucher de testes ligando para 0800-55-78-63.<br />De posse dos vouchers, marque seu teste em um local que seja mais conveniente contactando um APTC - AuthorizedPrometricTesting Center. Visite www.prometric.com para obter uma relação de APTCs.<br /> Faça o teste Prometric.<br />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.<br />
  111. 111. Certificações<br /><ul><li> Benefícios ao profissional
  112. 112. Solidificação e aumento de conhecimento
  113. 113. Mais chances de conseguir emprego
  114. 114. Mostra o interesse do profissional na atualização de seus conhecimentos
  115. 115. Adquire respeito dos demais colegas
  116. 116. Adquire mais segurança em si
  117. 117. Selo de qualidade importante para uma profissão que é não regulamentada
  118. 118. Benefícios às empresas</li></ul>Os clientes se sentem mais seguros ao investir em projetos que estarão sendo feitos por profissionais certificados.<br /><ul><li>Questão salarial
  119. 119. Depende da empresa na qual você trabalha
  120. 120. Em alguns casos o aumento de salário é significativo
  121. 121. Algumas empresas possuem plano de cargos </li></li></ul><li>Certificações<br />O príncipe Charles nasceu para ser rei, foi preparado para ser rei, e todo<br />mundo fica o tempo todo dizendo que ele vai ser rei, que é só uma questão<br />de paciência... <br />Bom, quando ele era jovem, alguém disse que a mãe dele, <br />Sua Majestade a Rainha, renunciaria quando ele fizesse 25 anos. <br />E lá está o príncipe Charles, viúvo e casado pela segunda vez, aos 56 anos,<br /> esperando a mãe renunciar para que ele, finalmente, se torne rei. <br />Nem sempre o título é sinal de poder.<br /><ul><li> Bons programadores e arquitetos não necessariamente possuem certificações
  122. 122. Certificação não significa que você é “o(a) especialista”. Comprova que você se esforçou, estudou e tem conhecimento sobre o assunto
  123. 123. Existem excelentes programadores e arquitetos que não possuem certificações e são reconhecidos</li></li></ul><li>Java e o dragão<br />Há uma linda princesa, prisioneira na maior torre de um castelo, guardada por um poderoso dragão e um destemido cavaleiro deverá salvá-la...<br />Isto descreve como cada linguagem gerenciaria o resgate da princesa das mãos do dragão:<br />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.<br />.NET - Chega, olha a idéia do Javanês e a copia, tenta matar o dragão, mas é comido pelo réptil.<br />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.<br />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.<br />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.<br />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.<br />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…<br />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.<br />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.<br /> <br />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. <br />
  124. 124. Java e o dragão<br />JavaScript: 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.<br />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…<br />RubyonRails 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.<br />Smalltalk Chega, analisa o dragão e a princesa, vira as costas e vai embora, pois eles são muito inferiores.<br />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.<br />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.<br />Python Desenvolve uma arma mortal. Mata o dragão, a princesa e a si mesmo.<br />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.<br />Adaptado de:http://mindthoughts-leela.blogspot.com/2007/10/how-to-kill-dragon-with-various.htmlhttp://arcano.castelodotempo.com/node/20http://www.colherdesopa.com.br/2009/08/como-matar-um-dragao-programadores.html<br />
  125. 125. Considerações finais<br /><ul><li> Os cavaleiros agem de diferentes formas e na história não desempenharam o papel correto (de ficar com a princesa);
  126. 126. Se você ainda não speak, é melhor começar a “spekar”;
  127. 127. Posso inventar 1000 motivos para não começar, mas uma longa jornada começa com o primeiro passo;</li></li></ul><li>Considerações finais<br /><ul><li> Tornar-se um bom programador não é fácil, exige prática e experiência.
  128. 128. É bom utilizarmos convenções certas para o bom funcionamento (e legibilidade) do código e não apenas “achismos e/ou remendos”.
  129. 129. Aprender inglês é uma longa jornada, não se iluda pensando que aprenderá em 2 semanas...</li></li></ul><li>Considerações finais<br />Esse trabalho não poderia terminar sem a seguinte citação:<br />“Se você não falha em pelo menos 90% das vezes, <br />seus objetivos não foram ambiciosos o suficiente.”<br />Alan Kay<br />System.out.println(“Obrigado!”);<br />
  130. 130. Vídeo sobre Java<br />Para a apresentação:<br />Utilizar o mesmo reprodutor, a legenda deve estar no mesmo diretório do vídeo...<br />Tempo do vídeo<br />Link do youtube para o vídeo:<br />http://www.youtube.com/watch?v=guXCmQDy9Es<br />
  131. 131. Bibliografia<br />SIMON, 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.<br />DEITEL, Harvey M.; DEITEL, Paul J. Java – Como Programar – 6a Edição. São Paulo: Makron Books, 2005.<br />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.<br />MURDOCCA, Miles J.; HEURING, Vicent P. Introdução à Arquitetura de Computadores. Rio de Janeiro: Campus, 2001. ISBN: 85-352-0684-1<br />TUCKER, Alllen B. / NOONAN, Robert e.- Linguagens de programação – princípios e paradigmas<br />ELLIS, Graham. Whenshould 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. <br />APPLE. Java FrequentlyAskedQuestions. Mac OS X Java FAQ. Disponível em: <http://developer.apple.com/java/faq/#bundle>. Acesso em: 03 maio 2010. <br />http://www.slideshare.net/joellobo/curso-java-basico-1455829<br />http://www.phph.com.br/JAVA/programacao-orientada-objetos.html <br />http://www.slideshare.net/fgsouza/JavaUnipac2 <br />
  132. 132. Bibliografia<br />http://www.dcc.unesc.net/sulcomp/05/Art110SulComp2005.pdf <- comparação das 3 linguagens<br />http://www.inf.unisinos.br/~barbosa/paradigmas/consipa3/53/s27/javac.htm<br />http://www.coladaweb.com/informatica/comparativo-entre-c-e-java<br />http://www.dcc.ufrj.br/~comp2/TextosJava/Comparando%20C%20com%20Java.pdf<br />http://en.wikipedia.org/wiki/Comparison_of_programming_languages<br />http://java.com/en/javahistory/timeline.jsp<br />http://www.linhadecodigo.com.br/Artigo.aspx?id=745<br />http://inventors.about.com/od/gstartinventors/a/James_Gosling.htm<br />http://falandodejava.blogspot.com/2007/02/histria-do-java.html<br />http://java.com/pt_BR/about/<br />http://www.scriptbrasil.com.br/forum/index.php?showtopic=129724<br />http://distritos.telepolis.com/java/lib/documentos/historia.htm<br />http://www.cad.com.mx/historia_del_lenguaje_java.htm<br />http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/I_2.htm<br />http://www.infoq.com/news/2010/04/gosling_leaves_oracle<br />http://g1.globo.com/Noticias/Tecnologia/0,,MUL1566487-6174,00-CRIADOR+DA+LINGUAGEM+DE+PROGRAMACAO+JAVA+DEIXA+A+ORACLE.html<br />http://pt.wikipedia.org/wiki/James_Gosling<br />http://nighthacks.com/roller/jag/entry/time_to_move_on<br />http://pt.wikipedia.org/wiki/Licen%C3%A7as_BSD_e_GPL<br />http://www.ronaud.com/frases-pensamentos-citacoes-de/jean-jacques-rousseau<br />http://www.citador.pt/pensar.php?op=7&author=26<br />http://www.imotion.com.br/frases/?cat=513<br />http://info.abril.com.br/aberto/infonews/052007/09052007-14.shl<br />http://pt.wikipedia.org/wiki/Gnu<br />http://www.viamais.net/blog/?p=895<br />https://users.cs.jmu.edu/bernstdh/web/common/lectures/slides_cpp_dynamic-memory.php<br />http://en.wikipedia.org/wiki/Dynamic_memory_allocation<br />http://homepages.dcc.ufmg.br/~camarao/ipcj/ambientes-java.html<br />http://mindprod.com/jgloss/midlet.html<br />http://www.slideshare.net/sgvargas/introduccion-a-java-presentation – slide 20<br />http://www.dm.ufscar.br/~waldeck/curso/java/introd.html<br />http://javafree.uol.com.br/noticia/3604/Vulnerabilidades-no-Ambiente-de-Execucao-do-Java-JRE-da-Sun-AL20070071.html<br />http://imasters.uol.com.br/faq/420 <br />http://www.java-tips.org/java-se-tips/java.lang/what-is-java-just-in-time-compiler.html <br />http://www.glaucoreis.com.br/developers/2000/novembro2000-artigo.jpg<br />http://www.arquiteturajava.com.br/livro/java-como-plataforma-nao-como-linguagem.pdf<br />
  133. 133. Bibliografia<br />http://paginas.fe.up.pt/~ee94168/trabalhos/AC_picoJava.pdf<br />http://www.inf.ufrgs.br/gppd/disc/cmp135/trabs/992/picoJava/node6.html<br />http://www.inf.ufrgs.br/gppd/disc/cmp157/trabalhos/sem2000-2/tf/lisboa/index.html<br />http://www.inf.ufrgs.br/gppd/disc/cmp135/trabs/992/picoJava/node6.html<br />http://www.webgoal.com.br/desenvolvimento/origem-da-orientacao-a-objetos/<br />http://www.infnet.edu.br/desktopmodules/tipoevento/slides/Orientação%20a%20Objetos%20na%20Prática.pdf<br />http://www.csse.monash.edu.au/~jonmc/CSE2305/Topics/01.01.OverviewAbsEnc/html/text.html<br />http://www.slideshare.net/jjfeitosa/curso-java-basico-1108760<br />http://luishenrique.org/blog/posts/paradigmas-de-programacao<br />http://www.guj.com.br/posts/list/66878.java<br />http://www.hwn.com.br/pej/tij2pej/PEJ306.htm<br />http://www.inf.puc-rio.br/~java/progjava/protected/apostilas/oo1.pdf<br />http://www.vivaolinux.com.br/artigo/Programacao-orientada-a-objetos-e-o-Java-%28Parte-6%29/?pagina=2<br />http://www.infowester.com/lingjava.php<br />http://www.rodflash.com/en/2007/07<br />http://teamkings.forumeiros.com/java-e-javascript-f60/ola-mundo-java-javascript-t780.htm<br />http://amsterdaintelligence.blogspot.com/2009/10/java-vs-javascript.html<br />http://antigo.qi.com.br/professor/downloads/download8785.pdf<br />http://www.joomreem.com/joomla-articles/20-generaltopics/26-javavsjavascript.html<br />http://www.sislands.com/coin70/week1/javajs.htm<br />http://www.dannyg.com/ref/javavsjavascript.html<br />http://www.guiadohardware.net/artigos/programacao-orientada-objetos/ <br />http://www.casodepolicia.com/2007/09/25/conheca-te-a-ti-mesmo-atraves-da-historia/<br />http://www.ibm.com/developerworks/br/java/library/j-noaccent/<br />http://www.slideshare.net/rafaelcarneiro/certificaes-java http://www.ronaud.com/frases-pensamentos-citacoes-de/alan-kay<br />http://www.yurimalheiros.com/2009/12/apresentacoes-sem-slides.html  <br />http://www.scribd.com/doc/3360383/Choosing-the-Right-Speaker<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×