RedFoot J Dukes Uma Visão Geral Sobre Plataforma Java Marco Aurélio [email protected] Uma Visão Geral Sobre Plataforma Java 1 Roteiro • Objetivos • Plataforma Java – Linguagem de Programação – Maquina Virtual – Tecnologias • Conclusão 2 Uma Visão Geral Sobre Plataforma Java Objetivos • Geral – oferecer uma visão ampla sobre plataforma java. • Específicos – Compreensão dos mecanismos que permitem que java seja uma realidade – Expressão das caractéristicas da linguagem de programação java que se destacam frente a outras linguagens – Visão sobre as capacidades e tecnologias que envolvem o fenômeno da plataforma java 3 Uma Visão Geral Sobre Plataforma Java Plataforma Java • Java inicialmente fazia parte de um projeto que procurava desenvolver software para uma variedade de dispositivos portáteis e sistemas embarcados. • C++ foi tomado como a linguagem de desenvolvimento inicial, devido a várias dificuldades encontradas, uma nova linguagem precisou ser criada. 4 Uma Visão Geral Sobre Plataforma Java Plataforma Java • Java foi desenvolvida para vencer os desafios presentes no desenvolvimento e distribuição de aplicações em sistemas distribuídos e redes heterogêneas. Aplicações deste tipo devem ser independentes de plataformas de hardware e software, seguras e dinamicamente extensíveis. 5 Uma Visão Geral Sobre Plataforma Java Características • • • • • Simples, Orientada Objetos, Familiar Robusta e Segura Arquitetura Neutra e Segura Alto Desempenho Interpretada, Multithreaded e Dinâmica 6 Uma Visão Geral Sobre Plataforma Java Simples, Orientada Objetos, Familiar • Familiar – Java é muito semelhante a C++ • Simples – Número pequeno de construções – Características de utilidade duvidosas foram removidas. • Typedef, defines, pre-processador, structures, unions, enum, funções, herança multipla, goto, sobrecarga de operadores, coerção automática, ponteiros, templates – Obs.: Java2 1.5 inseriu tipo enumeração e a idéia de genéricos (templates) 7 Uma Visão Geral Sobre Plataforma Java Principais características da Linguagem • Tipo primitivo de dado: numérico, caractere, lógico, string, referência, array • Multi-Level Break test: for (int i = fromIndex; i + max1 <= max2; i++) { if (charAt(i) == c0) { for (int k = 1; k<max1; k++) { if (charAt(i+k) != str.charAt(k)) { continue test; } } /* final do loop interno */ } } /* final do loop externo */ • Gerenciamento de memória e Coletor de Lixo • Threads Uma Visão Geral Sobre Plataforma Java 8 Arquitetura Neutra, Portabilidade Robusta • Arquitetura Neutra – A solução para o problema de distribuição de código binário é resolvido através de um código binário independente de plataforma de hardware/software chamado de byte code. • Portabilidade – Definição fixa dos tipos primitivos da linguagem byte 8 bits – complemento de 2 short 16 bits – complemento de 2 int 32 bits – complemento de 2 long 64 bits – complemento de 2 float 32 bits – ponto flutuante IEEE 754 double 64 bits – ponto flutuante IEEE 754 char 16 bits – caractere unicode 9 Uma Visão Geral Sobre Plataforma Java Arquitetura Neutra, Portabilidade Robusta • Robusta – Checagem de erros durante a fase de compilação, de linkagem e de execução – O modelo de memória impede que haja sobreescrita – Não existe aritmética de ponteiros – Os limites de arrays e strings são chegados durante a execução 10 Uma Visão Geral Sobre Plataforma Java Interpretada e Dinâmica • Problema: o processo de desenvolvimento comumente usado é custoso. Saber o que precisa ser recompilado após uma modificação em arquivo não é simples. • Carga e Acoplamento Dinâmico (Dynamic Loading and Binding) – O problema da fragilidade da super classe – Solução: criação de ligações simbólicas que são resolvidas durante a carga e execução – O processo de prototipação e teste se torna mais rápido 11 Uma Visão Geral Sobre Plataforma Java Segurança • Alocação e Layout de memória – O layout de memória não é definido pelo compilador, mas sim pelo ambiente de execução – Não existe ponteiros, java referencia a memória através de handles que são resolvidos para endereços de memória real durante a execução • Segurança implantada nos Class Loaders • Verificação dos byte codes. 12 Uma Visão Geral Sobre Plataforma Java Threads • A API java é thread-safe • Thread é definido na linguagem – As threads são pre-emptivas, e podem ser limitadas pelo tempo de execução (dependendo da plataforma) • Sincronização – Feita através de monitores e variáveis de condição – Palavra reservada synchronized 13 Uma Visão Geral Sobre Plataforma Java Alto Desempenho • Coletor de Lixo – Processo que executa com baixa prioridade • Se necessário, é possível escrever trechos de código em outra linguagem • Compiladores JIT (Just in Time) 14 Uma Visão Geral Sobre Plataforma Java Máquina Virtual Java (JVM) • O que permite a portabilidade dos programas java é a máquina virtual e o ambiente de execução – Mais especificamente a definição de um formato binário para uma máquina hipotética – É possível ter outras linguagens que gerem código para máquina virtual java (é isso que acontece com a máquina virtual .NET) 15 Uma Visão Geral Sobre Plataforma Java JVM – Características • A máquina virtual java foi especificada de levando em consideração o desenvolvimento do hardware atual, facilitando a implementação • Já existem implementações da JVM em hardware • JVM é uma máquina a pilha • Todas as operações são feitas sobre os elementos que estão sobre a pilha. 16 Uma Visão Geral Sobre Plataforma Java Componentes da JVM • Colocar uma foto aqui! 17 Uma Visão Geral Sobre Plataforma Java Tecnologias • Java 2 Platform, Stantard Edition (J2SE) – Core : • • • • • • • • Internationalization Java Remote Method Invocation (RMI) Java Naming and Directory Interface (JNDI) Java Authentication and Authorization Service (JAAS) Java Cryptography Extension (JCE) Java Secure Socket Extension (JSSE) Java Communications API Java Telephony API – Desktop: • • • • • • • Accessibility Java 2D API Java Media Framework (JMF) Java 3D API Java Advanced Imaging API (JAI) Java Speech API Java Help System Uma Visão Geral Sobre Plataforma Java 18 Tecnologias • Java 2 Platform, Enterprise Edition (J2EE) – – – – – – – – – – JDBC Java Data Objects (JDO) JavaMail Transactions Java Servlet JavaServer Pages JavaServer Faces Enterprise JavaBeans Java Message Service J2EE Connector Architecture 19 Uma Visão Geral Sobre Plataforma Java Tecnologias • Java Web Services – – – – – Java Architecture for XML Binding (JAXB) Java API for XML Processing (JAXP) Java API for XML Registries (JAXR) Java API for XML-based RPC (JAX-RPC) SOAP with Attachments API for Java (SAAJ) 20 Uma Visão Geral Sobre Plataforma Java Tecnologias • Java 2 Platform, Micro Edition (J2ME) • Java Card Technology (Smart Cards) 21 Uma Visão Geral Sobre Plataforma Java Conclusão • Java foi criada para resolver problemas concretos e atuais. Para tanto uma plataforma de desenvolvimento robusta e durável foi criada • Como uma linguagem de propósito geral, java é uma ótima escolha, não só pela portabilidade mas também longa lista de bibliotecas (API’s) • Existem muitas tecnologias e conceitos novos que giram em torno do desenvolvimento com java, a criação de um grupo de usuários se mostra adequada mediante tanta informação 22 Uma Visão Geral Sobre Plataforma Java