JAVA Professor: Bruno Toledo Histórico A linguagem JAVA foi projetada e implementada por um pequeno grupo de pessoas, coordenado por James Gosling, na Sun Microsystems em Mountain View, Califórnia, em 1991. James Gosling Histórico 1a TENTATIVA Ideia de um protótipo de dispositivo para comunicação, tipo controle remoto, para o controle de aparelhos eletrodomésticos. Sugestão inicial: C++ Orientada a objetos. Extremamente popular. Tentativa de desenvolver o sistema operacional Star7 em C++. Histórico O que é o Java? Java é... Um software? Uma tecnologia? Uma linguagem de programação? Uma plataforma de desenvolvimento? Uma marca de café? Uma ilha da Indonésia? Ou tudo isso? Histórico Problema com LP´s existentes C++ (e outras linguagens) não estava desempenhando a tarefa satisfatoriamente. Java tem ênfase do C++ está na velocidade. O que se buscava ? Mínimo uso de memória; Baixo custo; Confiabilidade; Compatibilidade. Histórico Requisitos para a nova linguagem Pequena Eficiente Facilmente portável Desenvolvimento de software para diferentes plataformas. Confiável Se o software embutido falhar, o fabricante terá que substituir todo o aparelho. Simples Donas de casa teriam que se adaptar sem transtornos aos novos aparelhos. Perspectiva de vida útil longa Toda vez que novos programas fossem desenvolvidos, os mesmos teriam que ter compatibilidade retroativa. Histórico Equipe trabalhava no projeto de software para produtos eletrônicos de consumo (software para eletrodomésticos). A ideia era criar um interpretador para pequenos dispositivos, facilitando a reescrita de software para aparelhos eletrônicos. TVs interativas, torradeiras interativas, lâmpadas interativas, etc. Todos interconectados e com mesma interface. PROJETO GREEN Histórico 2a TENTATIVA PROJETO GREEN - 1992 Propósito de testar um novo tipo de interface do usuário para controlar um ambiente doméstico (casa inteligente). Videocassete,TV, luzes, telefone, etc. *7 (Star Seven) Computador experimental portátil, tipo controle remoto, com interface gráfica e interativa. Nova linguagem de programação: OAK. Histórico 2a TENTATIVA PROJETO GREEN *7 (Star Seven) *7 utilizava uma interface gráfica bastante atraente para controlar os eletrodomésticos. DUKE – figura animada do protótipo *7 Histórico Protótipo do Gream Team Dispositivo portátil, sem teclado, botões e com uma pequena tela. Controle se dava por toques na tela. Interface gráfica - uma casa animada com um guia de turismo, o mascote DUKE. Histórico James Gosling (Sun) e equipe projetou uma nova linguagem para manipular o Star7. Linguagem denominada de OAK. (Precursora de Java) OAK significa CARVALHO em inglês, nome que surgiu pois dava pra ver um pé de carvalho da janela do escritório onde estava sendo desenvolvido um equipamento chamado *7 (Star Seven). Histórico Por problemas de copyrigth (já existia uma linguagem chamada OAK) a Sun altera o nome da linguagem. Em 23 de maio de 1995 lançam oficialmente a nova linguagem com nome: Java Por que o nome Java? Java é o nome de uma ilha do Pacífico, onde se produz uma certa variedade de café homônimo. A inspiração bateu à equipe de desenvolvimento ao saborear esse café em uma lanchonete local. Era extremamente apreciado por profissionais da área de software (ainda o é). Por que o nome Java? Café da Ilha de Java Linguagem Java E depois do Projeto Green? Projeto para demonstração de vídeo-sob-demanda. Foi demonstrada que a interface animada do *7 também era adequada para TVs interativas. Linguagem Java 1994: Mosaic revoluciona a cara da Internet. WWW (World Wide Web). Criação do HotJava Navegador da Web que podia executar applets Java. Feito totalmente em Java. Java mostrou-se ideal para ser usada na Internet. Linguagem Java 1995: Netscape Navigator 2.0 suporta Java. A Sun amplia esforços para o desenvolvimento de Java. Criação da JavaSoft. 1996: Lançamento oficial de Java 1.02 Disponibilizado Download gratuito pela Internet. 1997: Java toma conta da Internet Netscape, Internet Explorer, HotJava, etc. Linguagem Java De 1998 até hoje a tecnologia evoluiu muito possuindo um dos maiores repositórios de projetos livres do mundo, o java.net. Em 1999 surgiu a plataforma para desenvolvimento e distribuição corporativa batizado de Java 2 Enterprise Edition (J2EE) e a plataforma Java 2 Mobile Edition (J2ME) para dispositivos móveis, celulares, PDAs, etc. Linguagem Java Java EE Plataforma voltada a aplicações coorporativas, no lado do servidor. Java SE Plataforma para aplicações voltadas para o lado cliente e demais aplicativos para computadores pessoais. do Java ME Plataforma voltada para desenvolvimento de aplicações executadas em dispositivos com limitados recursos de hardware. Linguagem Java Atualmente São milhões de desenvolvedores. Mais de 10.000 livros escritos. Contagem recente da Java World Magazine. Linguagem Java Linguagem Java Linguagem Java Linguagem Java Linguagem Java Quem está usando Java? Quem está usando Java? Serviços financeiros Home Banking, comércio seguro. Marketing e propaganda Loja interativa, animações, multimídia. Diversão e entretenimento Jogos multiusuário, chat. Educação Ensino à distância, simulações interativas. Outros Astronomia (telescópios orbitais); Telefonia; Aparelhos eletroeletrônicos. Quem está usando Java? British Telecom ServiceView. (Empresa de telefonia inglesa) – MountSinai (Hospital de Nova York) emite certificados de óbitos usando JAVA. VISA Internacional substituiu as tarjas magnéticas de seus cartões por chips com tecnologia JAVA. American Express (Serviços financeiros). CSX (Maior companhia ferroviária dos EUA) montou rede JAVA. Dow Jones, IBM, NASA, MAM de NY. Quem está usando Java? J.P. Morgan (Banco de investimentos). American Airlines. Hong Kong Telecom (Operações de rede de TV iterativa). Fannie Mac (Maior empresa americana de hipotecas). Banco Itaú usando JAVA em sua Intranet. Banco do Brasil. Brasil Telecom. Universidades (No Brasil: UNB, UNICAMP, UFPE, entre outras). Objetivos do Java Eliminar exigências de programação que tradicionalmente afetam a robusteza de um código de computador; Aritmética de ponteiros (Comum em ANSI C/C++); Controle de alocação/liberação de memória (Comum em Pascal, C, C++, Basic, ...); Permitir a programação multitarefa (Threads); Permitir que um programa seja dinamicamente modificado; Prover um modo de checar a integridade de um programa. Arquitetura Base do Java Coletor de lixo (Garbage Collector) Possui um mecanismo automático de gerenciamento de memória. Verifica e libera automaticamente memória que não está sendo utilizada. Multithreading Recursos que permite o desenvolvimento de aplicações capazes de executar múltiplas rotinas concorrentemente. Tratamento de exceções Permite o tratamento de situações excepcionais. Arquitetura Base do Java Sem Ponteiros Java não possui ponteiros, isto é, não permite a manipulação direta de endereços de memória. Orientada a Objetos Java é uma linguagem orientada a objetos, tudo são classes ou instâncias de classes, com exceção de seus tipos primitivos de dados. Por que Java? Prós Escreva uma vez, execute em qualquer lugar Escrever somente para a plataforma JAVA; Suporte nos browsers da Web, TVs, PDAs e celulares. Segurança Permite que usuários descarreguem código não confiável em uma rede e o executem em um ambiente seguro: • Não pode infectar o sistema host com vírus; • Não consegue ler ou gravar arquivos a partir do disco rígido, etc. Ainda não é 100%, mas é considerada por especialistas a melhor para “qualquer lugar”. Por que Java? Prós Programação centrada em rede Slogan corporativo da Sun: “A rede é o computador”; Suporte a arquitetura cliente/servidor e multicamadas. Programas dinâmicos e extensíveis Código Java organizado em unidades modulares orientadas por objeto chamadas classes; Cada classe é armazenada em um arquivo separado e somente descarregadas para o interpretador Java quando necessárias; O código torna-se uma coleção interativa de componentes independentes de software. Por que Java? Prós Internacionalização Única linguagem de programação que suporta Unicode. Eficiência do programador e tempo de comercialização Conjunto de APIs (Application Programming Interface) poderoso e bem projetado. Nova plataforma Pode-se criar uma grande variedade de aplicações; Planilhas eletrônicas, processadores de texto, jogos, salas de bate-papo, programas financeiros, etc. Torna as páginas da Web mais interessantes Som, vídeo, animações, relógios, contadores. Por que Java? Prós Portabilidade (Independente de plataforma). Familiaridade (Similar ao C, C++ e C#). Simplicidade (Especificação simples - LP e JVM). Distribuição (Biblioteca poderosa programação distribuída e concorrente). recursos para Orientada a objetos (Baseada no modelo de Smalltalk e Simula67), onde permite a herança e a reutilização de códigos de forma dinâmica e estática. Robustez: Os recursos da linguagem e do ambiente em tempo de execução. Por que Java? Prós Facilidade: a linguagem é derivada da linguagem C e C++, sendo assim familiar. Recursos de Rede - Possui extensa biblioteca de rotinas que facilitam a cooperação com protocolos TCP/IP, como HTTP e FTP. Possui facilidades para criação de programas distribuídos e multitarefa (Múltiplas linhas de execução num mesmo programa). Desalocação de memória automática por processo de coletor de lixo (Garbage Collector). Carga Dinâmica de Código - Programas em Java são formados por uma coleção de classes armazenadas independentemente e que podem ser carregadas no momento de utilização. Por que Java? Contras Desempenho Eficiência (Código interpretado: bytecode); Necessidade de uma máquina virtual; Por ser interpretada, torna-se mais lenta. Engenharia Reversa Bytecodes traduzidos facilmente para fonte java; Bytecodes (Programa-fonte praticamente completo - sem comentários). Instabilidade Algumas APIs (Bibliotecas) ainda instáveis. (In)segurança Restrições pesadas ou ainda bem passíveis de serem violadas. Por que Java? Mitos Java é lenta! As primeiras versões eram lentas, mas as mais novas são, muitas vezes, mais rápidas que C++. Compilador JIT (Just in Time). Não possui um Ambiente RAD! Há muitas ferramentas de alta produtividade disponíveis, inclusive free. Exemplo: Netbeans, JCreator, JDeveloper, Eclipse (com plugins). JavaScript é uma derivação de Java? Não. Em comum elas só tem o nome e a sintaxe. São duas linguagens diferentes. Ferramentas para desenvolvimento JRE: Java Runtime Environment significa Ambiente de Tempo de Execução Java, e é utilizado para executar as aplicações da plataforma Java. É composto por bibliotecas (APIs) e pela Máquina Virtual Java (JVM). O JRE contém as ferramentas necessárias para a execução de aplicativos desenvolvidos com tecnologia e linguagem Java em seu computador. O JRE não é um ambiente de desenvolvimento, aqui não estão contidas as ferramentas para tal função. Para isso é necessário ter instalado em seu computador o Java SE Development Kit (JDK). Ferramentas para desenvolvimento Application Programming Interface ou simplesmente API é um conjunto de rotinas e padrões estabelecidos por um software para utilização de suas funcionalidades. De modo geral, a API é composta por uma série de funções acessíveis somente por programação, e que permitem utilizar características do software menos evidentes ao usuário tradicional. JavaDoc - Documentação das APIs. Ferramentas para desenvolvimento A Sun, ao lançar a linguagem Java, pôs à disposição gratuitamente o pacote JDK - Java Developer's Kit, que inclui, entre outros: Javac - o compilador de arquivos .java para bytecodes .class; Java - a JVM específica para a plataforma; Appletviewer - visualizador de applets, sem a necessidade de execução das mesmas num browser. Ferramentas para desenvolvimento Máquina virtual Java (do inglês Java Virtual Machine JVM) é um programa que carrega e executa os aplicativos Java, convertendo os bytecodes em código executável de máquina. Graças à máquina virtual Java, os programas escritos em Java podem funcionar em qualquer plataforma de hardware e software que possua uma versão da JVM, tornando assim essas aplicações independentes da plataforma onde funcionam. Ferramentas para desenvolvimento Applets são pequenos aplicativos escritos em Java que utilizam-se da JVM (Java Virtual Machine) que se transferem com as páginas web e que o navegador executa no espaço da página. JAVA com Suporte a Banco de Dados O JDBC, que é uma biblioteca de classes para acesso a banco de dados, permite uma conexão remota a servidores SQL que possuam driver OBDC ou compatível. Exemplos: Transações no estilo de Compras, Vendas, Cadastramentos, Alteração de dados pessoais controlada por senha via Internet, são exemplos do que o JDBC permite que seja realizado. Oracle compra a SUN Ranking das Linguagens de Programação Fonte: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html Download Fonte: http://netbeans.org/downloads/ Revistas Nacionais http://www.devmedia.com.br http://www.mundoj.com.br/default.jsp Mercado de Trabalho Mercado de Trabalho Mercado de Trabalho Mercado de Trabalho Mercado de Trabalho Sites Disponíveis http://javafree.uol.com.br/index.jf http://www.guj.com.br http://br.sun.com/