SlideShare uma empresa Scribd logo
1 de 90
JAVA: Muito mais que uma linguagem Disciplina: Paradigmas de programação - UNIARARAS Enrico Nicoletto Fernando AlonsoIvan Lopes Alonso José Erinaldo de Jesus Martins
Licença CreativeCommons Trabalho sob licença CreativeCommons, alguns direitos reservados. Você pode transmitir, modificar ou transmitir a obra desde que citados os autores. CreativeCommons 3.0 Brasil, mais informações em:http://creativecommons.org/licenses/by/3.0/br/
TÓPICOS DESTA APRESENTAÇÃO : ,[object Object]
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),[object Object]
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)
Perdendo o sotaque Quem é esse poookémon ?
classTest  { publicstaticvoidmain(String argv[]) {   float F, C; floatmin_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%f", F, C);           F = F + x;         }      } privatestaticvoidprintf(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...
Why? ,[object Object]
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.
Anatomia básica Declaração de argumento           variável local: args           tipo: String[] Nome da classe Nome do método Comentário do bloco /* Aplicativo Anatomia Básica */ publicclassAnatomiaBasica { } publicstaticvoidmain(String[] args){ System.out.println(“Eu sou um programa Java!”);    }  Ponto-e-vírgula ao final de toda instrução Chamada do método println() via objeto out acessível através da classe System Definição do método main() Atribuição de argumento para o método println() Definição da classe AnatomiaBasica
A classe scanner Para ler entrada de dados, devemos utilizar a classe Scanner, veja o exemplo abaixo:
Explicação do código
Explicação do código
Explicação do código
Explicação do código
Explicação do código
Explicação do código
Explicação do código
Explicação do código - JavaDoc JavaDoc, show de bola!!!!
Histórico 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.
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)
Histórico Projeto Green *7 (Star Seven) Meu primeiro emprego: guia virtual do *7 Protótipo de dispositivo de comunicação entre aparelhos eletrodomésticos. (espécie de controle remoto)
Histórico C++ *7 (Star Seven) O grande desafio do projeto Linguagem de programação que tenha alta confiabilidade, compatibilidade e que operem dadas as limitações de hardware. E agora, quem poderá me defender ?????
Histórico Eu,o chapolin colorado! a linguagem Oak !!!  Em português Oak significa Carvalho.
Histórico Oak Java 1993 –  A internet torna-se mais popular e a Sun direciona o potencial da linguagem JAVApara conteúdo dinâmico na internet . 1995  – Java é anunciado em uma importante conferência.
E agora o que será do fluxo contínuo de espaço de tempo???? 27 Jan 2010 Notícia mais recente... Dia 02 de Abril de 2010 – James Gosling se demite da Oracle
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 PublicLicense (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. Refletir.... “O homem nasceu livre, e em todos os lugares ele está acorrentado.”Jean-Jacques Rousseau
Características da Linguagem Distribuída Simples Orientado a Objetos Robusta Segura Portável
Características da Linguagem Multi-tarefas(Multithreaded) Interpretada Alto Desempenho Muitas APIs Dinâmica
Características da Linguagem Alocação automática de memória Herança única Sem ponteiros Coleta de lixo (garbagecollector) Arquitetura neutra
Características da Linguagem Coerção de tipo implícita Verificação de faixa de índice implícita Imperativa Híbrida Destrutores diferentes: finalizadores.
Características da Linguagem Programação multi-plataforma Gratuita Popular Orientada a Eventos
Características da Linguagem Ortogonalidade Tratamento de excessões Carga dinâmica de Código Internacionalização
Javascriptvs 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 JVMJavascript é 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 Saber, decorar, nunca mais esquecer! Javascript é jamais Java!Java é jamais Javascript!
Javascriptvs Java Bandeira da República dos Estados Unidos do Brasil Porque será que Javascript tem o nome Java se são diferentes? 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. Saber, decorar, nunca mais esquecer! É 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 do queijo apesar do odor parecido – desculpem o exemplo fedorento!!!!!
A plataforma Java Disponível em: <https://meapplicationdevelopers.dev.java.net/fragmentation.html>, acesso em 26 abril 2010  “O homem nunca sabe do que é capaz, até que o tenta “.Charles  Dickens.
A plataforma Java Mais exemplos... Um applet Java Card(chip para celularese disp. móveis) Java ModelRailroad Interface, suíte de ferramentas para modelar ferrovias. Receitanet rodandono Mac Os X
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 J2ME J2SE Servidor não é a mamãe!!!! Oh!! J2EE
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 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. 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.
Conceitos de Gerenciamento de Memória (Heap) Vivem na Heap: ,[object Object]
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 garbagecollector libera a memória  destruindo os objetos da heap que estejam em desuso.
Conceitos de Gerenciamento de Memória (Stack) Vivem na Stack: ,[object Object]
 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).,[object Object]
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.
Ambiente de desenvolvimento Antes 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)
Java Development Kit Suportado em Solaris SPARC x86Solaris SPARC x64Windows x86Windows x64Linux x86Linux x64 Mac 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/
Ambiente de desenvolvimento jEdit - (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).
Ambiente de desenvolvimento Dados obtidos de: <http://forum.worldwindcentral.com/showthread.php?t=24462>, acesso em 15 abril de 2010
Netbeans, I LOVE YOU!!!
Este IDE foi desenvolvida pela empresa Oracle
Este é o Eclipse, num Linux...
Esse é o Jcreator da Xinox
E esse é o ... Vocês não enxergam lá em cima????
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.
Java não roda só Java... groovy.codehaus.org www.jython.org jruby.codehaus.org sun.com/javafx Rhino: JavaScript for Java www.beanshell.org 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.
[object Object]
Folha de estilos ...
Conteúdo multimídia ...
Jogos on-line ...JavaFX Código e componente MediaBox disponível em: http://javafx.com/samples/MediaBox/index.html
Ambiente de execução JRE = Biblioteca de classes + JVM Para que o programa Java seja executado precisamos da JRE, muito chique. Não concordam? Código java Ambiente de                                            meuarquivo.java Desenvolvimento Compilador Distribuição meuarquivo.class Byte Code Java Ambiente de execução VM Linux VM Celular VM Windows SO Windows SO Celular SO Linux
Ambiente de execução A JVM é uma máquina imaginária emulada em um hardware.  JVM Os bytecodes são a linguagem de máquina da JVM.  Sem bytecodes ? ADEUS, JVM. ADEUS portabilidade! James Gosling já afirmou que a linguagem Java não é   mais importante da plataforma, e sim a JVM.
Ambiente de execução Programa Java e arquivo .class compilado Arquitetura da Máquina Virtual Java. //  Este é o programa add.java publicclassadd { public staticvoid main(Stringargs[]) { int x=15, y=9, z=0;                     z = x + y;                     }           }
Ambiente de execução (100% segura?) Alerta AL-2007.0071 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.
Ambiente de execução (os 3 mosqueteiros) Podemos resumir em 3 formas de execução: 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) 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++)  Execução do bytecode diretamente em uma implementação da JVM emhardware. Observação: Arquivos interpretados, apesar de portáveis, rodam de 100x a 200x mais lentos que os compilados.
Ambiente de execução (JIT) 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 usadaespecialmente seo métodoexecutável é repetidamentereutilizado no código. O peso do bytecode triplica (+ memória) e perde-se portabilidade. Lembrarque: Sistema de produção Just-in-time: Fazer apenas o necessário, quando necessário e apenas na quantidade necessária. – KiichiroToyoda
Ambiente de execução (picoJava-II) 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.
Ambiente de execução (picoJava-II) ,[object Object]
 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)

Mais conteúdo relacionado

Mais procurados

Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVACristiano Almeida
 
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScriptTDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScriptRogério Moraes de Carvalho
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaRegis Magalhães
 
BDD: torne viva a documentação de seus sistemas
BDD: torne viva a documentação de seus sistemasBDD: torne viva a documentação de seus sistemas
BDD: torne viva a documentação de seus sistemasVitor Mattos
 
Curso de Shell Script 05/11
Curso de Shell Script 05/11Curso de Shell Script 05/11
Curso de Shell Script 05/11Rodrigo Silva
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Emerson Macedo
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Natanael Fonseca
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02Natanael Fonseca
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Natanael Fonseca
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Andre Nascimento
 
JavaScript: agora é sério
JavaScript: agora é sérioJavaScript: agora é sério
JavaScript: agora é sérioLuciano Ramalho
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e DjangoOsvaldo Santana Neto
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nívelIgor Sobreira
 

Mais procurados (20)

Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
 
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScriptTDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
 
Java1
Java1Java1
Java1
 
Java2
Java2Java2
Java2
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso Java
 
BDD: torne viva a documentação de seus sistemas
BDD: torne viva a documentação de seus sistemasBDD: torne viva a documentação de seus sistemas
BDD: torne viva a documentação de seus sistemas
 
Curso de Shell Script 05/11
Curso de Shell Script 05/11Curso de Shell Script 05/11
Curso de Shell Script 05/11
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
1707331929 ltp iv java original
1707331929 ltp iv   java original1707331929 ltp iv   java original
1707331929 ltp iv java original
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#
 
JavaScript: agora é sério
JavaScript: agora é sérioJavaScript: agora é sério
JavaScript: agora é sério
 
Introdução ao java
Introdução ao javaIntrodução ao java
Introdução ao java
 
OOP Java
OOP JavaOOP Java
OOP Java
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e Django
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
Conhecendo o Spring
Conhecendo o SpringConhecendo o Spring
Conhecendo o Spring
 

Semelhante a JAVA: Muito mais que uma linguagem

Interop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETInterop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETAlessandro Binhara
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Javathomasdacosta
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java FundamentosWilson Lima
 
Plataforma java: detalhes da JVM
Plataforma java: detalhes da JVMPlataforma java: detalhes da JVM
Plataforma java: detalhes da JVMCaelum
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVMWilliam Gouvea
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformMilfont Consulting
 
Poo slides01
Poo slides01Poo slides01
Poo slides01jmtofoli
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaCharles Jungbeck
 
Produtividade em Java com Grails
Produtividade em Java com GrailsProdutividade em Java com Grails
Produtividade em Java com GrailsWanderson Oliveira
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5Diego Pacheco
 

Semelhante a JAVA: Muito mais que uma linguagem (20)

Interop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETInterop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NET
 
Introducao logica2
Introducao logica2Introducao logica2
Introducao logica2
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Java
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
Plataforma java: detalhes da JVM
Plataforma java: detalhes da JVMPlataforma java: detalhes da JVM
Plataforma java: detalhes da JVM
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVM
 
Aula1
Aula1Aula1
Aula1
 
Introdução a tecnologia Java
Introdução a tecnologia JavaIntrodução a tecnologia Java
Introdução a tecnologia Java
 
Introdução a tecnologia Java
Introdução a tecnologia JavaIntrodução a tecnologia Java
Introdução a tecnologia Java
 
Java - Aprenda rápido
Java - Aprenda rápidoJava - Aprenda rápido
Java - Aprenda rápido
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java Platform
 
Poo slides01
Poo slides01Poo slides01
Poo slides01
 
1.introducao java
1.introducao java1.introducao java
1.introducao java
 
Imergindo na JVM
Imergindo na JVMImergindo na JVM
Imergindo na JVM
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
 
Produtividade em Java com Grails
Produtividade em Java com GrailsProdutividade em Java com Grails
Produtividade em Java com Grails
 
01 introducao ao java
01   introducao ao java01   introducao ao java
01 introducao ao java
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 

JAVA: Muito mais que uma linguagem

  • 1. JAVA: Muito mais que uma linguagem Disciplina: Paradigmas de programação - UNIARARAS Enrico Nicoletto Fernando AlonsoIvan Lopes Alonso José Erinaldo de Jesus Martins
  • 2. Licença CreativeCommons Trabalho sob licença CreativeCommons, alguns direitos reservados. Você pode transmitir, modificar ou transmitir a obra desde que citados os autores. CreativeCommons 3.0 Brasil, mais informações em:http://creativecommons.org/licenses/by/3.0/br/
  • 3.
  • 4.
  • 6. A HISTÓRIA DA LINGUAGEM
  • 16. JAVA E O DRAGÃO
  • 18.
  • 19. 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)
  • 20. Perdendo o sotaque Quem é esse poookémon ?
  • 21. classTest { publicstaticvoidmain(String argv[]) { float F, C; floatmin_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%f", F, C); F = F + x; } } privatestaticvoidprintf(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...
  • 22.
  • 23. Todas as variáveis são declaradas na parte de cima do método.
  • 24. A inicialização segue a declaração.
  • 25. É usado um loop while em vez de um loop for.
  • 26. É usado printf em vez de println.
  • 27. O argumento do método main() é nomeado argv.
  • 28. 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.
  • 29. Anatomia básica Declaração de argumento variável local: args tipo: String[] Nome da classe Nome do método Comentário do bloco /* Aplicativo Anatomia Básica */ publicclassAnatomiaBasica { } publicstaticvoidmain(String[] args){ System.out.println(“Eu sou um programa Java!”); } Ponto-e-vírgula ao final de toda instrução Chamada do método println() via objeto out acessível através da classe System Definição do método main() Atribuição de argumento para o método println() Definição da classe AnatomiaBasica
  • 30. A classe scanner Para ler entrada de dados, devemos utilizar a classe Scanner, veja o exemplo abaixo:
  • 38. Explicação do código - JavaDoc JavaDoc, show de bola!!!!
  • 39. Histórico 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.
  • 40. 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)
  • 41. Histórico Projeto Green *7 (Star Seven) Meu primeiro emprego: guia virtual do *7 Protótipo de dispositivo de comunicação entre aparelhos eletrodomésticos. (espécie de controle remoto)
  • 42. Histórico C++ *7 (Star Seven) O grande desafio do projeto Linguagem de programação que tenha alta confiabilidade, compatibilidade e que operem dadas as limitações de hardware. E agora, quem poderá me defender ?????
  • 43. Histórico Eu,o chapolin colorado! a linguagem Oak !!! Em português Oak significa Carvalho.
  • 44. Histórico Oak Java 1993 – A internet torna-se mais popular e a Sun direciona o potencial da linguagem JAVApara conteúdo dinâmico na internet . 1995 – Java é anunciado em uma importante conferência.
  • 45. E agora o que será do fluxo contínuo de espaço de tempo???? 27 Jan 2010 Notícia mais recente... Dia 02 de Abril de 2010 – James Gosling se demite da Oracle
  • 46. 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 PublicLicense (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. Refletir.... “O homem nasceu livre, e em todos os lugares ele está acorrentado.”Jean-Jacques Rousseau
  • 47. Características da Linguagem Distribuída Simples Orientado a Objetos Robusta Segura Portável
  • 48. Características da Linguagem Multi-tarefas(Multithreaded) Interpretada Alto Desempenho Muitas APIs Dinâmica
  • 49. Características da Linguagem Alocação automática de memória Herança única Sem ponteiros Coleta de lixo (garbagecollector) Arquitetura neutra
  • 50. Características da Linguagem Coerção de tipo implícita Verificação de faixa de índice implícita Imperativa Híbrida Destrutores diferentes: finalizadores.
  • 51. Características da Linguagem Programação multi-plataforma Gratuita Popular Orientada a Eventos
  • 52. Características da Linguagem Ortogonalidade Tratamento de excessões Carga dinâmica de Código Internacionalização
  • 53. Javascriptvs 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 JVMJavascript é 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 Saber, decorar, nunca mais esquecer! Javascript é jamais Java!Java é jamais Javascript!
  • 54. Javascriptvs Java Bandeira da República dos Estados Unidos do Brasil Porque será que Javascript tem o nome Java se são diferentes? 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. Saber, decorar, nunca mais esquecer! É 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 do queijo apesar do odor parecido – desculpem o exemplo fedorento!!!!!
  • 55. A plataforma Java Disponível em: <https://meapplicationdevelopers.dev.java.net/fragmentation.html>, acesso em 26 abril 2010 “O homem nunca sabe do que é capaz, até que o tenta “.Charles Dickens.
  • 56. A plataforma Java Mais exemplos... Um applet Java Card(chip para celularese disp. móveis) Java ModelRailroad Interface, suíte de ferramentas para modelar ferrovias. Receitanet rodandono Mac Os X
  • 57. 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 J2ME J2SE Servidor não é a mamãe!!!! Oh!! J2EE
  • 58. 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 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. 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.
  • 59.
  • 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. Objetos: Todos os objetos vivem na heap.O garbagecollector libera a memória destruindo os objetos da heap que estejam em desuso.
  • 62.
  • 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.
  • 65. 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.
  • 66. Ambiente de desenvolvimento Antes 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)
  • 67. Java Development Kit Suportado em Solaris SPARC x86Solaris SPARC x64Windows x86Windows x64Linux x86Linux x64 Mac 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/
  • 68. Ambiente de desenvolvimento jEdit - (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).
  • 69. Ambiente de desenvolvimento Dados obtidos de: <http://forum.worldwindcentral.com/showthread.php?t=24462>, acesso em 15 abril de 2010
  • 71. Este IDE foi desenvolvida pela empresa Oracle
  • 72. Este é o Eclipse, num Linux...
  • 73. Esse é o Jcreator da Xinox
  • 74. E esse é o ... Vocês não enxergam lá em cima????
  • 75. 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.
  • 76. Java não roda só Java... groovy.codehaus.org www.jython.org jruby.codehaus.org sun.com/javafx Rhino: JavaScript for Java www.beanshell.org 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.
  • 77.
  • 80. Jogos on-line ...JavaFX Código e componente MediaBox disponível em: http://javafx.com/samples/MediaBox/index.html
  • 81. Ambiente de execução JRE = Biblioteca de classes + JVM Para que o programa Java seja executado precisamos da JRE, muito chique. Não concordam? Código java Ambiente de meuarquivo.java Desenvolvimento Compilador Distribuição meuarquivo.class Byte Code Java Ambiente de execução VM Linux VM Celular VM Windows SO Windows SO Celular SO Linux
  • 82. Ambiente de execução A JVM é uma máquina imaginária emulada em um hardware. JVM Os bytecodes são a linguagem de máquina da JVM. Sem bytecodes ? ADEUS, JVM. ADEUS portabilidade! James Gosling já afirmou que a linguagem Java não é mais importante da plataforma, e sim a JVM.
  • 83. Ambiente de execução Programa Java e arquivo .class compilado Arquitetura da Máquina Virtual Java. // Este é o programa add.java publicclassadd { public staticvoid main(Stringargs[]) { int x=15, y=9, z=0; z = x + y; } }
  • 84. Ambiente de execução (100% segura?) Alerta AL-2007.0071 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.
  • 85. Ambiente de execução (os 3 mosqueteiros) Podemos resumir em 3 formas de execução: 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) 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++) Execução do bytecode diretamente em uma implementação da JVM emhardware. Observação: Arquivos interpretados, apesar de portáveis, rodam de 100x a 200x mais lentos que os compilados.
  • 86. Ambiente de execução (JIT) 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 usadaespecialmente seo métodoexecutável é repetidamentereutilizado no código. O peso do bytecode triplica (+ memória) e perde-se portabilidade. Lembrarque: Sistema de produção Just-in-time: Fazer apenas o necessário, quando necessário e apenas na quantidade necessária. – KiichiroToyoda
  • 87. Ambiente de execução (picoJava-II) 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.
  • 88.
  • 89. Executa diretamente parte das instruções do código Java
  • 90. Otimiza sincronização de pipeline (4 níveis no picoJava-I e 6 níveis no picoJava-II)
  • 91. Otimiza gestão das variaveis locais (obtendo menor numero de ciclos de clock por instrucao)
  • 92. Otimização na execução de instruções em C/C++
  • 93. Modos de configuração entre consumo, tamanho e velocidade.
  • 94. Pode-se usar barramento PCI para acessar periféricos/memória
  • 95.
  • 97. Introdução a POO em Java Um paradigma de programação trata computacionalmente os problemas encontrados no mundo 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 Kayformulou a chamadaanalogia biológica: “COMO SERIA UM SISTEMA DE SOFTWARE QUEFUNCIONASSE COMO UM SER-VIVO?”.
  • 98. Introdução a POO em Java 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. 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!
  • 99. Tangíveis Automóvel Livro Pessoas Incidente Competição Projeto Conserto Interação Transação Saque Venda Objetos Um objeto é uma extensão do conceito de objeto no mundo real, onde podem-se ter coisas tangí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.
  • 100. Classe Uma classe é uma coleção de objetos que podem ser descritos por um conjunto básico de atributos e possuem operações semelhantes. Generalização Especialização Veículos Utilitário Passeio Tração animal Esportivo
  • 101. Instâncias de Objetos Quando se fala em classes de objetos, considera-se que podem ser incluidos objetos nelas. Veículos Passeio Sedan Minivan Para cada novo veículo, será criado uma nova instância de objeto de uma determinada classe, ex:Fiat idea -> Minivan
  • 102. Herança Herança nada mais é do que a implementação da generalização. É o compartilhamento de 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 !
  • 103. PAI FILHO FILHO FILHO PAI PAI Herança simples Herança múltipla (Java) (C++)
  • 104. Polimorfismo Associado ao conceito de Herança, ele permite que o objeto assuma um comportamento diferente daquele definido em sua classe. Polimorfismo: vem do grego poli =“muitas” e morphos=“formas”, é a capacidade de assumir 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.
  • 105. Encapsulamento O encapsulamento, também chamado de ocultamento de informações, consiste na 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; 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. Permite que o membro público seja acessado por qualquer outrocódigo do programa. (+ responsabilidade ao usar) Public Determina que o membro privado seja acessado apenas por métodos de dentro da própria classe. (usar sempre que possível) Private O membro protegido está disponível a todas as classes do mesmo pacote, incluindo todas as subclasses da classe que possui o recurso protegido. Somente os métodos e atributos devem ser declarados. Protected Default O modificador de acesso padrão é adotado quando nenhum outro tipo de moderador é declarado.
  • 106. Certificações 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.
  • 107. Certificações * Sun Certified Java Associate (SCJA) * Sun Certified Java Programmer (SCJP) + “popular” * Sun Certified Java Developer (SCJD) * Sun Certified Web ComponentDeveloper (SCWCD) * Sun Certified Business ComponentDeveloper (SCBCD) * Sun CertifiedDeveloper For Java Web Services (SCDJWS) * Sun CertifiedMobile Application Developer (SCMAD) * Sun Certified Enterprise Architect (SCEA) - “popular” 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
  • 108. Certificações 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 .
  • 109. Certificações 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. 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.
  • 110.  A própria Sun divide em 5 passos o caminho para se obter uma certificação Java:  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. Contate os Serviços Educacionais Sun para adquirir um voucher de testes ligando para 0800-55-78-63. 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.  Faça o teste Prometric. 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.
  • 111.
  • 112. Solidificação e aumento de conhecimento
  • 113. Mais chances de conseguir emprego
  • 114. Mostra o interesse do profissional na atualização de seus conhecimentos
  • 115. Adquire respeito dos demais colegas
  • 116. Adquire mais segurança em si
  • 117. Selo de qualidade importante para uma profissão que é não regulamentada
  • 118.
  • 119. Depende da empresa na qual você trabalha
  • 120. Em alguns casos o aumento de salário é significativo
  • 121.
  • 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.
  • 124. Java e o dragão 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. 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… 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. 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.htmlhttp://arcano.castelodotempo.com/node/20http://www.colherdesopa.com.br/2009/08/como-matar-um-dragao-programadores.html
  • 125.
  • 126. Se você ainda não speak, é melhor começar a “spekar”;
  • 127.
  • 128. É bom utilizarmos convenções certas para o bom funcionamento (e legibilidade) do código e não apenas “achismos e/ou remendos”.
  • 129.
  • 130. Vídeo sobre Java Para a apresentação: Utilizar o mesmo reprodutor, a legenda deve estar no mesmo diretório do vídeo... Tempo do vídeo Link do youtube para o vídeo: http://www.youtube.com/watch?v=guXCmQDy9Es
  • 131. Bibliografia 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. 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. 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. APPLE. Java FrequentlyAskedQuestions. 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-1455829 http://www.phph.com.br/JAVA/programacao-orientada-objetos.html http://www.slideshare.net/fgsouza/JavaUnipac2
  • 132. Bibliografia http://www.dcc.unesc.net/sulcomp/05/Art110SulComp2005.pdf <- comparação das 3 linguagens http://www.inf.unisinos.br/~barbosa/paradigmas/consipa3/53/s27/javac.htm http://www.coladaweb.com/informatica/comparativo-entre-c-e-java http://www.dcc.ufrj.br/~comp2/TextosJava/Comparando%20C%20com%20Java.pdf http://en.wikipedia.org/wiki/Comparison_of_programming_languages http://java.com/en/javahistory/timeline.jsp http://www.linhadecodigo.com.br/Artigo.aspx?id=745 http://inventors.about.com/od/gstartinventors/a/James_Gosling.htm http://falandodejava.blogspot.com/2007/02/histria-do-java.html http://java.com/pt_BR/about/ http://www.scriptbrasil.com.br/forum/index.php?showtopic=129724 http://distritos.telepolis.com/java/lib/documentos/historia.htm http://www.cad.com.mx/historia_del_lenguaje_java.htm http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/I_2.htm http://www.infoq.com/news/2010/04/gosling_leaves_oracle http://g1.globo.com/Noticias/Tecnologia/0,,MUL1566487-6174,00-CRIADOR+DA+LINGUAGEM+DE+PROGRAMACAO+JAVA+DEIXA+A+ORACLE.html http://pt.wikipedia.org/wiki/James_Gosling http://nighthacks.com/roller/jag/entry/time_to_move_on http://pt.wikipedia.org/wiki/Licen%C3%A7as_BSD_e_GPL http://www.ronaud.com/frases-pensamentos-citacoes-de/jean-jacques-rousseau http://www.citador.pt/pensar.php?op=7&author=26 http://www.imotion.com.br/frases/?cat=513 http://info.abril.com.br/aberto/infonews/052007/09052007-14.shl http://pt.wikipedia.org/wiki/Gnu http://www.viamais.net/blog/?p=895 https://users.cs.jmu.edu/bernstdh/web/common/lectures/slides_cpp_dynamic-memory.php http://en.wikipedia.org/wiki/Dynamic_memory_allocation http://homepages.dcc.ufmg.br/~camarao/ipcj/ambientes-java.html http://mindprod.com/jgloss/midlet.html http://www.slideshare.net/sgvargas/introduccion-a-java-presentation – slide 20 http://www.dm.ufscar.br/~waldeck/curso/java/introd.html http://javafree.uol.com.br/noticia/3604/Vulnerabilidades-no-Ambiente-de-Execucao-do-Java-JRE-da-Sun-AL20070071.html http://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.jpg http://www.arquiteturajava.com.br/livro/java-como-plataforma-nao-como-linguagem.pdf
  • 133. Bibliografia http://paginas.fe.up.pt/~ee94168/trabalhos/AC_picoJava.pdf http://www.inf.ufrgs.br/gppd/disc/cmp135/trabs/992/picoJava/node6.html http://www.inf.ufrgs.br/gppd/disc/cmp157/trabalhos/sem2000-2/tf/lisboa/index.html http://www.inf.ufrgs.br/gppd/disc/cmp135/trabs/992/picoJava/node6.html http://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.pdf http://www.csse.monash.edu.au/~jonmc/CSE2305/Topics/01.01.OverviewAbsEnc/html/text.html http://www.slideshare.net/jjfeitosa/curso-java-basico-1108760 http://luishenrique.org/blog/posts/paradigmas-de-programacao http://www.guj.com.br/posts/list/66878.java http://www.hwn.com.br/pej/tij2pej/PEJ306.htm http://www.inf.puc-rio.br/~java/progjava/protected/apostilas/oo1.pdf http://www.vivaolinux.com.br/artigo/Programacao-orientada-a-objetos-e-o-Java-%28Parte-6%29/?pagina=2 http://www.infowester.com/lingjava.php http://www.rodflash.com/en/2007/07 http://teamkings.forumeiros.com/java-e-javascript-f60/ola-mundo-java-javascript-t780.htm http://amsterdaintelligence.blogspot.com/2009/10/java-vs-javascript.html http://antigo.qi.com.br/professor/downloads/download8785.pdf http://www.joomreem.com/joomla-articles/20-generaltopics/26-javavsjavascript.html http://www.sislands.com/coin70/week1/javajs.htm http://www.dannyg.com/ref/javavsjavascript.html http://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-kay http://www.yurimalheiros.com/2009/12/apresentacoes-sem-slides.html   http://www.scribd.com/doc/3360383/Choosing-the-Right-Speaker