O que é a Plataforma Java?
Transcrição
O que é a Plataforma Java?
A Plataforma Java Prof. Vinicius Rosalen A Plataforma Java Por que Java? Histórico Visão Geral A Linguagem Java Pacotes JDK Ferramentas do JDK Plataformas Java: Visão Geral • JSE • JEE Mercado de TI e Java E o Futuro? Referências Por que Java? Write once, run everywhere! Java abstrai alguns conceitos “baixo níveis” tais como aritmética de ponteiros e alocação de memória; Por que Java? Porque futuramente praticamente todos os aparelhos eletrônicos terão Java; (JME) Por que Java? Ei! Vê se diminui a temperatura para que a carne não me esquente!! Blz! Por que Java? Grandes empresas investindo.... Por que Java? “Grandes empresas” investindo.... • Big Brother Por que Java? Porque todos os concursos pedem Java! Por que Java? Principalmente: Porque é uma das linguagens OO mais usadas; • OK, mas por que Orientação a Objetos? Padrão para desenvolvimento de sistemas; Vantagens sobre paradigma estruturado: Abstração mais próxima do mundo real; Foco na reusabilidade; Maior manutenibilidade; Maior grau de qualidade da solução final. • Java vem dar suporte a isso... Por que Java? Características Gerais de Java: • Simples, Porém versátil, robusta e muito segura; • Portável Independente de sistema operacional; • Gratuita e com código disponível para consulta; • Dirigida por uma especificação aberta; • Popular, • • • - Rodeada por uma comunidade muito ativa; De alta aceitação e com suporte da indústria; Muitas ferramentas disponíveis; Muita documentação disponível. Permite multi-thread, Fácil programação para rede O que é Java? Uma tecnologia; Uma linguagem de programação; Uma plataforma de desenvolvimento; Um software distribuído pela Internet; Um ambiente de execução de programas; Uma marca de café; Uma ilha da Indonésia. É tudo isso!!! Antes vamos conversar um pouco sobre a sua história… Um pouco de História Em 1991, a Sun Microsystems patrocinou um projeto de pesquisa interna com o codinome Green. • O projeto resultou no desenvolvimento por James Gosling de uma linguagem baseada em C e C++ chamada Oak (carvalho). Beneficiou-se dos erros e acertos das linguagens OO anteriores. • Descobriu-se então que já havia uma linguagem com o nome Oak. Então, numa visita a cafeteira local pela equipe da Sun, foi sugerido o nome Java. Java é a cidade de origem de um tipo de café importado. A pretensão de se criar uma linguagem que funcionasse em diversos dispositivos eletrônicos sempre norteou a arquitetura do Java. • Um programa Java deveria “rodar” de forma idêntica em uma torradeira, uma máquina de lavar ou uma geladeira. Para isso procurou-se atender requisitos como.... Um pouco de História Os requisitos da linguagem Java: • Robustez e Segurança Capacidade de uma linguagem funcionar com baixa probabilidade de ocorrerem problemas. Java foi projetado para o programador tenha um melhor controle sobre os erros potenciais. Assim, erros de execução ocorrem no momento da compilação e erros de IO podem ser tratados pelo próprio programador. • Baixo Custo Torna-se necessário uma vez que cada um dos dispositivos conterá componentes Java, Caso contrário, o custo de produção e implementação seria impraticável. • A independência dos chips Garante que um programador Java se concentre na lógica e não em características específicas do hardware. Um pouco de História O projeto Green enfrenta algumas dificuldades. • O mercado para dispositivos eletrônicos inteligentes destinados ao consumidor final não estava se desenvolvendo tão rapidamente quanto a Sun havia previsto. Por exemplo, celulares, geladeiras com acesso Internet, palms. Por pura sorte, a World Wide Web explodiu em popularidade em 1993 • E o pessoal da Sun viu um imediato potencial de utilizar Java para adicionar conteúdo dinâmico as páginas Web. Em 1995 a Sun anunciou Java formalmente em uma importante conferência. • Nascem as Applets, Java é incluída no Netscape, disponibilizada ao público e deslancha; A Aplicabilidade de Java à Internet garantiu um interesse imediato a nova linguagem. A primeira versão de JDK foi lançada em janeiro de 96. Java fez 12 anos em 2007. Um pouco de História Em 20 Abril de 2009 a Oracle comprou a Sun Microsystems e com ela a plataforma Java. Alguns consideram que foi uma boa outros não… De qualquer forma a discussão ainda está aberta, esperando as decisões futuras… Java - Hoje A plataforma Java evoluiu bastante. • Versões atuais do JDK é a 1.6 ou Java 6 – http://java.sun.com/ www.java.sun.com Várias empresas investindo na tecnologia: • Apple, HP, Hitachi, IBM, Nasa, Novell, Oracle, SunSoft, SCO, Xerox... Há diversas ferramentas visuais (IDEs) para desenvolvimento em Java. • • • • Eclipse (http://www.eclipse.org); NetBeans (http://www.netbeans.org); IntelliJ IDEA (http://www.jetbrains.com/idea); JBuilder (http://www.borland.com/br/products/jbuilder/); Java - Hoje Recursos para aprendizado da plataforma Java • Comunidades virtuais: http://www.portaljava.com http://www.guj.com.br http://www.javafree.com.br • JUGs – Grupos de Usuários Java http://esjug.dev.java.net • Revistas: Mundo Java; Java Magazine. • Livros. Java: Visão Geral Bom, vocês devem ter observado que: • Quando me referi ao estado da linguagem nos dias atuais, utilizei o termo plataforma Java • Então por que plataforma e não somente linguagem? Primeiro: O que é Plataforma? • Plataforma = SO + Hardware: Windows + PC (Intel / AMD); Linux + PC; MacOS X + Macintosh. • Java situa-se um nível acima do SO, formando uma nova plataforma de computação Java: Visão Geral Java é considerado uma plataforma pelo fato de ser constituída de linguagem + arquitetura • Arquitetura Pelo fato de proporcionar uma estrutura que permite projetar sistemas complexos, de forma independente da arquitetura do hardware; • Linguagem Pelo poder de expressão que Java oferece para o desenvolvimento de software; Lembrar da linguagem natural: Se ela for pobre, como seria a nossa comunicação Propriedades desejáveis em LPs... Foco no programador e não no programa; Legibilidade; Escritabilidade; Confiabilidade; Eficiência; Facilidade de aprendizado; Reusabilidade de código; Flexibilidade; Harmonia com a metodologia de projeto. Java: Visão Geral Um programa compilado em Java... • Pode ser executado em qualquer arquitetura e sistema operacional Celulares, Java, Unix, Windows, Mac OS A filosofia/característica de que: • Um mesmo código possa ser executado nos mais diferente tipos de computadores é denominado: “Write once, run anywhere” Como isso é possível? • Antes temos que entender o funcionamento das linguagens de programação.... Java: Visão Geral Funcionamento das linguagens • O computador é um hardware que só entende operações muito básicas (zeros e uns); Programa executável = coleção de instruções em linguagem de máquina; • Criar programas em linguagem de máquina é extremamente difícil e improdutivo; Usamos linguagens de programação de alto nível; • Precisamos de um programa que transforme uma linguagem em outra: Um tradutor. Java: Visão Geral Tradução de programas • Existe duas maneiras de se traduzir um programa: Compilação e Interpretação. Java: Visão Geral Compilação x Interpretação • Compilação: Execução mais rápida; Somente o executável é carregado em memória. • Interpretação: Portabilidade. • Compilação + Interpretação = Tradução Híbrido Une as vantagens de ambos. Java: Visão Geral Bom, observando a figura do slide anterior, • Um primeiro elemento que podemos destacar na estrutura de execução do Java é o ByteCode Conceitos importantes da linguagem • Bytecode É o código de máquina da Máquina Virtual Java Formato bytecodes foi feito pensando na geração de código de máquina, de maneira otimizado Bytecode é interpretado: Código passado para máquina on-the-fly Lembra das opções de otimização de código em C??? Desempenho do código final (bytecodes transformados em binário) é praticamente o mesmo de código feito em C/C++. Uso da HotSpot, nova tecnologia de JVM: aos poucos um bytecode Java vai virando código em linguagem de máquina Em última instância, integra-se com códigos em C/C++. Java: Visão Geral Bom, observando a figura do slide anterior, • Um segundo elemento que podemos destacar na estrutura de execução do Java é a Maquina Virtual Java Conceitos importantes da linguagem • Java Virtual Machine (JVM) É o programa que executa/interpreta os bytecodes Java. Elemento que permite a portabilidade Um mesmo código compilado (bytecode) pode ser executado em diferentes JVMs sem qualquer modificação. Esconde as diferenças entre os diversos sistemas operacionais que executam código Java. “Arquiteturalmente Neutra” Para cada Sistema Operacional há uma JVM específica. O usuário deve instalar uma JVM para poder executar um programa Java. JVMs são gratuitas. Diagrama de criação e execução de código Java Código fonte .java compilação .class Bytecodes Um código Java é compilado para um código intermediário (bytecode), que é executado por uma Máquina Virtual Java (Java Virtual Machine) Execução/interpretado Máquina Virtual Java - JVM Sistema Operacional Java: Visão Geral Exemplo • Ao compilar o programa temos... Java: Visão Geral Ao executar o programa temos… • • • • O “JVM class loader” carrega todas as classes necessárias; O “JVM verifier” verifica os bytecodes ilegais; O bytecode é interpretado; Caso tenha o JIT, o código nativo da máquina é gerado. Ao terminar • O gestor de memória da JVM libera memória de volta ao sistema operacional. A Plataforma Java Programa Java Compilador Java bytecodes JVM UNIX JVM Windows JVM MacOS Para cada Sistema Operacional há uma JVM específica. O usuário deve instalar uma JVM para poder executar um programa Java. JVMs são gratuitas. JVM OS2 A Linguagem Java Bom, nós falamos que a plataforma Java é formada pela arquitetura e pela linguagem. • Até agora a gente viu questões relacionadas a arquitetura da plataforma, agora vamos estudar questões relacionadas a linguagem Java Características Gerais da LP Java • Linguagem simples, sem ambigüidades, com poder de abstração; Permite modelagem por objetos Java tomou o lugar de Pascal como linguagem para ensino; • Não é só uma linguagem pra fazer software, mas fazer software com qualidade, flexibilidade e robustez Essencial pra Engenharia de Software • Java fornece várias abstrações e ferramentas que abrem caminho para a adoção de excelentes práticas de programação. Aplicações de Padrões de Projetos Vamos agora falar de algumas características especiais de Java...... A Ling. Java é Orientada a Objetos Características • Paradigma bem conhecido que provê: Reutilização de código Poder de abstração e modelagem • Tudo são objetos, exceto os tipos primitivos (int, float, boolean, ...) Mesmo assim temos objetos que encapsulam esses tipos primitivos • Não implementa múltipla herança de classes, apenas de interface. Motivos: recurso pouco/mal usado, complexo, pode ser substituído por outras construções Ex: delegação Uso do conceito de Interface para implementação de herança múltipla de interface Determina apenas as assinaturas e não as implementações A Ling. Java possui Simplicidade Características • Sintaxe parecida com C/C++: Facilidade de aprendizado e construções familiares. • Pouquíssimas palavras reservadas Delphi (90 keywords) vs. Java (48 keywords) Evita redundância • Evitou-se o uso de conceitos mal compreendidos e pouco usados: Sobrecarga de operadores, múltipla herança, conversões automáticas A Ling. Java possui Robustez Características • Fortemente tipada (Compilador “chato” :-) Os tipos são respeitados, ou seja, não pode ocorrer atribuição de um valor X para um tipo Y • Sem conversões automáticas de um tipo numérico “menor para outro maior” (downcast) • Checagens estáticas e dinâmicas Ex:. limite de arrays A Ling. Java possui Robustez Características • “Ausência de ponteiros” São utilizados implicitamente na manipulação de objetos. (referência interna) • Programador não precisa se preocupar com a alocação e desalocação de espaço em memória. Alocação de memória está implícita na construção de objetos (construtores) Uso de heaps de memória A desalocação é feita por um componente da JVM chamado coletor de lixo (Garbage Collector) Quando um objeto em memória não é mais referenciado por nenhuma variável ele entra para a lista de objetos desalocáveis Sempre que possível o GC varre a memória, apagando objetos desalocáveis A Ling. Java possui Poder de Programação Características • Java possui suporte para: Exceções; Iteradores; Mecanismo de threads incorporado à linguagem; Excelente mecanismo de documentação de classes; Applets Internacionalização Suporte a redes de computadores e sistemas distribuídos Componentes Vamos falar um pouquinho sobre essas características... A Ling. Java possui Tratamento de Exceções Características • Exceções e tratadores de exceção Permitem a definição de situações de exceção no programa e o seu tratamento em tempo de execução. O usuário pode escrever um código no qual estão separados o algoritmo principal e o código que manipula as situações de exceção do programa. Este mecanismo é utilizado intensivamente em programas Java A Ling. Java possui Iteradores Características • Abstrações que encapsulam a navegação ou iteração sobre uma estrutura de dados Iteradores não são um conceito incorporado na própria linguagem mas uma particularidade da implementação da biblioteca de containeres (vetor, lista, árvore, tabela hash,...) • Permitem navegar (iterar) sobre uma estrutura de dados sem precisar saber a sua natureza Collection vetorStr = new Vector(); vetorStr.add(new String(“String 1”)); vetorStr.add(new String(“String 2”)); Iterator it = vetorStr.iterator(); while (it.hasNext()) { String str = (String) it.next(); String strClone = new String(str); } A Ling. Java possui Threads Características • Uma thread é um único fluxo de controle seqüencial num programa. Usamos threads para executar várias tarefas ao mesmo tempo Exemplo: browser recuperando texto e imagens em threads simultâneas. • Java trata com muita naturalidade a criação e sincronia de threads. A Ling. Java possui Documentação de Código Características • Simples mas excelente solução para documentação do código: Javadoc Comentários no código podem ser usados para gerar uma documentação rica e completa das classes /** Compara duas strings lexicograficamente * @param anotherString string a comparar * @return 0, se uma string.... * @throws NullPointerException se a string for nula */ public int compareTo(String anotherString){ A Ling. Java possui Documentação de Código A Ling. Java possui Boas Práticas de Programação Características • Implementação, divulgação e incentivo ao uso de padrões de projeto (design patterns). Alguns deles são específicos de arquitetura: J2EE • As convenções incluem: Nomes de arquivos Nomes de Classes getCustomerName(), setRentalItemPrice() Standard para variáveis Customer, RentalItem Nomes de Métodos Customer.java, RentalItem.java customerName, customerCreditLimit Standard para constantes MIN_WIDTH, MAX_NUMBER_OF_ITEMS • Testes de Unidade: JUnit A Ling. Java possui Applets Características • São pequenos programas em Java que são executados a partir de programas como: Appletviewer, Netscape Navigator, Internet Explorer ou FireFox • Utilizado para prover dinamismo em uma página HTML. Aplicação de Geoprocessamento via Internet; A Ling. Java possui Internacionalização Características • Java oferece facilidades para o uso de qualquer língua. Permite internacionalizar os diversos elementos de uma aplicação que têm representações regionais diferentes (moeda, data, ordem alfabética, etc.) • Além disso permite adequar as características da interface de acordo com o sistema. LookAndFeel – utilizado para definir o estilo de um programa. (Windows, Java, Motif/Sun) A Ling. Java possui suporte a Networking e Internet Características • A infraestrutura para desenvolver aplicações para uso na Internet e em intranets usando Java é simples e eficiente O mesmo código pode ser utilizado em ambos os ambientes J2EE • Suporte a Sockets em alto nível Não precisa se preocupar com as funções de baixo nível. Existem classes e funções que encapsulam certas características; “Baixarias” da programação Socket são substituídos por encapsulamento das funcionalidades e manipulação de objetos A Ling. Java possui suporte a Sistemas Distribuídos Características • Java oferece mecanismos para o desenvolvimento de aplicações distribuídas. RMI (Java Remote Method Invocation); invocação remota de métodos JNDI: (Java Naming and Directory Interface) acesso a servidores de nomes; • Inclui as especificações para desenvolvimento Web Servlets; JSP (JavaServer Pages); XML: (eXtensible Markup Language) processamento de XML e afins; Web Services; JSF (Java Server Faces); JavaServer Faces is a new framework for building Web applications using Java. SOA (Service-oriented architecture); SOA is an architectural style for building software applications that use services available in a network such as the web. Etc.... • Exemplo de aplicação distribuída: Projeto de codificação de sinais de rádio vindo do espaço A Ling. Java possui Componentes Características • Java pode ser usado com ferramentas visuais, da mesma maneira que outras linguagens como Delphi eVisual Basic. Utilização de JavaBeans => Componentes de Software Construção de sistema por meio de união de componentes. A Ling. Java possui Pacotes JDK Características • Pacotes em Java é um modo de organizar grupos de classes. Possuem uma estrutura hierárquica Reduz os problemas com conflitos de nomes Podem ser usados para identificar as classes de forma exclusiva Pode estar organizado de acordo com a estrutura da empresa br.ufmg.dcc.syerngia.implementacao.Interface Se a classe implementada não for declarada como parte de um pacote, ela será colocada no pacote default; Ou seja, no mesmo diretório de compilação; A Ling. Java possui Pacotes JDK Características • Exemplo de pacotes Java são: java.applet (applets) java.awt (interface (AWT - Abstract Windowing Toolkit ) java.io arquivos ( entrada e saída ) java.lang Pode-se usar as classe desse pacote diretamente. As classes java.lang estão disponíveis automaticamente em todos os programas java.lang.reflect java.math aritmética de números inteiros e fracionários de precisão arbitrária java.net java.text suporte à internacionalização java.util classes de utilidade genéricas (estruturas de dados, etc) java.util.zip compactação e descompactação de dados java.beans beans ( componentes configuráveis ) java.rmi.* java.sql remote method invocation conexão com banco de dados ( JDBC ) java.swing.* nova interface gráfica Algumas ferramentas do JDK appletviewer visualiza um applet jar cria arquivos jar javadoc cria documentação baseada em comentários especiais presentes no código java executa a máquina virtual Java javac compila arquivos .java Sumário de Vantagens e Desvantagens Vantagens • • • • • • • • • Portabilidade; Simplicidade; Manutenção; Robustez; Segurança; Orientação a Objetos; Multithreading; Networking; Padronização; Características sofisticadas incorporadas à linguagem Sumário de Vantagens e Desvantagens Desvantagens • Desempenho: relacionado com uso da JVM Hot Spot aumentou bastante o desempenho Geração de código compilado – JIT (Just-in Time) • Necessidade de uma JVM na máquina; • Uso de memória: Usuário não distingue a memória usada pelo programa da usada pela JVM e usualmente é iniciada uma JVM para cada aplicação; Plataformas Java Vocês já devem ter ouvido falar que tal empresa está usando procurando gente pra trabalhar com JME, JEE, etc.. • Mas não é tudo Java?? Qual a diferença?? Java é distribuída em três edições específicas para cada área de aplicação : • Java Standard Edition (Java SE); Também pertence as demais arquiteturas/plataformas: linguagem Java + conjunto de bibliotecas e tecnologias adicionais para computadores pessoais • Java Enterprise Edition (Java EE); Aplicações cliente-servidor, sobretudo baseada em Web (Web Services – Servlets/JSP) • Java Mobile Edition (Java ME). Aplicações para dispositivos portáteis: celulares, PDAs, eletrodomésticos, smart cards. Plataformas Java - SDK vs. JRE Todas elas possuem..... • SDK – Software Development Kit Contém todos os programas e utilitários necessários para criar, compilar e executar um programa Java (Somente para programadores;) Contém: Ferramentas de desenvolvimento; Ambiente de execução (JRE); API Java SE (compilada e código-fonte); Programas de demonstração; Utilitários, como: javadoc, debuggers, profilers Bibliotecas adicionais; Documentação (obtida separadamente). • JRE – Java Runtime Environment Conjunto mínimo de programas e bibliotecas necessários para executar um programa Java Necessária para rodar programas Java (bytecodes compilados); É a única parte da plataforma Java que os clientes precisam instalar; Em alguns SOs já vem instalada (ex.: MacOS X); A Sun provê suporte oficial às plataformas Windows, Solaris e Linux; Ex:. Plug-in para executar o teclado virtual dos bancos via Web Plataformas Java – Visão Geral Servidores + Computação Empresarial Servidores + Computadores Pessoais Java – Micro Edition (J2ME) PDAs + Celulares + Eletrodom. + PDAs Computação básicos Embutida Pacotes Opcionais Pacotes Opcionais Pacotes Opcionais Java Enterprise Edition (JEE) Java Standard Edition (JSE) Personal Profile JVM JVM Smart Cards Pacotes Opcionais Foundation Profile MIDP CDC CLDC JVM KVM Agora vamos falar mais um pouco sobre algumas características de cada plataforma..... Java Card Card VM Plataforma JSE Características da plataforma JSE • A API Java SE é composta pelos seguintes pacotes AWT/Swing: interfaces gráficas; Java2D: desenho; JDBC: acesso a bancos de dados; JNDI: acesso a servidores de nomes; RMI: invocação remota de métodos ; i18n: suporte à internacionalização; I/O: entrada e saída (arquivos); JNI: integração com linguagens nativas; Math: cálculos matemáticos; Networking: transmissão de dados via rede; Security: segurança; Serialization: persistência por serialização; XML: processamento de XML e afins; Lang & Util: núcleo da linguagem, utilitários; Concurrency: programação concorrente; Logging: funções de relatório (log); Reflection: RTTI (reflexão, introspecção). Plataforma JSE Plataforma JEE Características da plataforma JEE • O que está presente na plataforma JEE é basicamente Ferramentas e tecnologias voltada para serviços Web • Permite o desenvolvimento de aplicações corporativas: Multi-camadas, distribuídas, centradas em servidores, altamente robustas, estáveis e escaláveis. • Inclui as especificações para desenvolvimento Web: Servlets, JSP, Web Services, JSF, etc.; • Inclui especificações da plataforma Enterprise Java Beans (EJB): Componentes gerenciados integrados a outras tecnologias Java EE para prover acesso remoto, persistência e transações transparentes, etc. • Outras tecnologias relacionadas: RMI/IIOP e Java IDL: conectividade; JDNI: servidor de nomes; JAC e JNI: acesso a sistemas legados; JAAS: segurança; JTA: transações em bancos de dados; JMS e JavaMail: envio de mensagens; E tudo o mais que temos no Java SE... Plataforma JEE: JSP e Servlets Dentro da plataforma JEE, as duas principais tecnologias são: • Os Servlets e a JSP. Tecnologias que permitem: • A criação de paginas HTML dinâmicas, • Bem como a integração delas com aplicações, por meio de programas ou scripts escritos em Java. Novo conceito: Servidores de Aplicação • Não mantém meramente páginas HTML, mas aplicações capazes de realizar qualquer processamento e gerar código HTML Tipicamente servem aplicações Java e Visual Basic (ASP) em páginas HTML • Os servidores de aplicação tornam muito mais fácil a tarefa de criar/manter aplicações que interagem via Web e geram HTMLs. Servlets Mas, o que são servlets?? • Servlets são classes Java, compiladas previamente, e que são capazes de processar requisições Web; Facilitam a geração de páginas HTML dinamicamente, produzindo páginas que são alteradas em resposta à entrada e aos dados do usuário Instruções Java são usadas para gerar o texto HTML. • Para compilar um Servlet é necessário utilizar uma biblioteca Java JEE. Esta biblioteca não está incluída no JSDK. • Os servidores de aplicação costumam disponibilizar tal biblioteca. Servidores Tomcat e Apache Servlets - Ciclo de Vida Compilador Java Cliente Web .java Armazenagem .class Requisições Servidor de Aplicações Servidor Web JSP - Java Server Pages Bom, mas qual era o grande problema do Servlets => • Criação de conteúdo HTML estático dentro do código Java => Muito trabalhoso. Mas, o que são Java Server Pages?? • É uma tecnologia para criar documentos HTML que misturam: HTML estático, com a Saída de servlets e Elementos da linguagem Java (como expressões e instruções Java) • Ou seja, É uma tecnologia para criar e executar código Java dentro de código HTML Isso facilita a manutenção e construção de textos estáticos em HTML No servlets isso deveria ser feito dentro da classe em vez de ser no próprio .html O código Java é inserido na forma de scripts, chamados scriptlets. • Não é necessário preencher o código com out.println, (se preocupar com formatação). O próprio desenvolvedor da interface ou página Web pode fazê-lo. JSP – Ciclo de Vida .jsp 1. Envia dados e ações e cuida da formatação do texto Compilador Java .class 3. compila .java 4. executa 2. gera servlet Servidor de Aplicações Servidor Web Plataforma JME Permite o desenvolvimento de aplicações para dispositivos móveis: • Telefones celulares; Ex: TCC do curso que aplicou o Robocode no celular, possibilitando o controle de robôs virtuais via celular • PDAs (Palm, iPaq, etc.); • Dispositivos embarcados (embedded); • Etc. Java Card: • Aplicações para Smart Cards e outros dispositivos muito limitados. E o Futuro ? A utilização de Java nas aplicações desktops e não apenas servidores está em franca expansão, • Fato que deixou James Gosling muito feliz no último JavaOne. Celulares e PDA´s utilizando Java estão concretizando a idéia da Sun de 12 anos atrás, • Isto é, a utilização em dispositivos eletrônicos. A Sun mudou sutilmente a estratégia da plataforma de modo que esta se torne conhecida também do homem comum, e não apenas dos desenvolvedores. • Está ressaltando para o consumidor final que ele está usando um produto com tecnologia Java. É muito provável que em breve tenhamos uma Virtual Machine • Para nosso automóvel, nossa geladeira assim como temos para nossos celulares. E o futuro? A versão 1.5 (Java 5). do Java privilegia a facilidade de codificação para o programador, as novas características tornarão o desenvolvedor mais feliz. • Apresenta asserts e outras “coisitas” mais... • A impressão é que o consórcio que desenvolve o Java sabe que sua força vem principalmente do programador. Se souber respeitá-lo acredito que a meta de 10 milhões de desenvolvedores será alcançada. Versão 1.6 (Java 6) já está disponível Versão Java 7 já está no forno pronto para sair... (2010/2011) Referências Fontes básicas • http://java.sun.com : tutoriais, documentação completa, livros on-line, APIs, exemplos, download... Revistas • http://www.javaworld.com • http://www.ibm.com/developerworks/java/ Sites específicos • http://www.theserverside.com • http://jakarta.apache.org Referências No Brasil • Grupo de Usuários Java - http://www.guj.com.br/ • Sociedade de Usuários Java (responsável pelo evento JustJava) - http://www.soujava.com.br • DFJug (Brasilia Java User Group) - http://www.dfjug.org Referências Livros • Core Java: vol. 1 e 2 (iniciante avançado) • Java: Guia Prático de Programação (intermediário avançado) • Java: 1001 Dicas (iniciante) • Java: Como Programar - Deitel & Deitel (iniciante avançado): pobre em conceitos / confuso • Thinking in Java – Bruce Eckel (iniciante em OO intermediário em OO) • Patterns in Java – Grand (intermediário avançado) • Concurrent Programming in Java – Doug Lea - disponível na biblioteca Exercícios Pra fechar a conta… • Vamos ver o que ficou “guardado na cachola” hoje... Responda as perguntas abaixo: 1)Quais as características da OO? 2) Por que Java é uma Plataforma? 3) Qual a diferença entre compilado e interpretado? E o Java o que é? 4) O que é o byteCode? 5) Por que Java é portável e permite “escrever 1 vez e executar em vários lugares”? 6) Cite algumas características da linguagem Java. Pelo menos 5..... 7) Quais são as plataformas Java disponíveis para desenvolvimento? Exercícios Pra fechar a conta… • Vamos ver o que ficou “guardado na cachola” hoje... Responda as perguntas abaixo: 8)Qual a diferença entre o JRE e o SDK? O que significam estas siglas? 9) Que programas são necessários para que um desenvolvedor possa desenvolver com Java? É necessário ter o Eclipse ou NetBeans para desenvolver com Java? 10) O que é necessário instalar na máquina cliente para executar um programa Java? 11) Que tecnologias Java oferere para o desenvolvimento para Web? 12) Qual a sua expectativa em relação a Java?