Baixe o app para aproveitar ainda mais
Prévia do material em texto
Linguagem de Programação II CCE0234 Prof. Carlos Henrique Odenique Jardim Roteiro • Introdução a Linguagem Java 2 Problemas na Programação • Ponteiros? • Liberar memória? • Organização do código? • Falta de bibliotecas adequadas? • Reescrever parte do código ao mudar de sistema operacional? • Custo de usar a tecnologia? • Outros... 3 Histórico • O Java é desenvolvido e mantido pela Oracle – http://java.oracle.com – A Sun foi adquirida pela Oracle em 2009 • The History of Java Technology – http://www.oracle.com/technetwork/java/javase/o verview/javahistory-index-198355.html 4 Código Compilado • Linguagem de programação como C e Pascal – O código fonte é compilado para uma plataforma de sistema operacional específico 5 Código Compilado • O código binário deve ser executado pelo sistema operacional – Logo, deve saber “conversar” com o SO utilizado • E se a aplicação utiliza bibliotecas do sistema operacional? – Exemplo, APIs para interface gráfica • Diferentes SOs podem ter diferentes APIs gráficas – Necessário reescrever o mesmo pedaço da aplicação para SOs diferentes 6 Máquina Virtual • Java utiliza o conceito de máquina virtual – Há uma camada entre o sistema operacional e a aplicação – Camada determina as chamadas para o sistema operacional Bytecode Java Bytecode Java Máquina Virtual Java para Windows Máquina Virtual Java para Linux Windows Linux 7 Máquina Virtual 8 Máquina Virtual • Máquina virtual é um computador virtual – Gerência de memória – Gerência de threads – Pilha de execução – Entre outros... • JVM pode – Obter métricas – Decidir onde é melhor alocar memória – Fazer otimizações – Entre outros... 9 Bytecode • Bytecode é o termo dado ao código binário gerado pelo compilador Java – Origem do nome • Há menos de 256 códigos de operação • Cada “opcode” gasta um byte • O compilador gera o bytecode – Diferente das abordagens que não utilizam VM • JVM “interpreta/executa” o bytecode 10 Compilador Just in Time • Características – Traduz inicialmente para uma linguagem intermediária – Então compila a linguagem intermediária dos subprogramas em código de máquina quando eles são executados – Este código é mantido para execuções subsequentes 11 Compilador Just in Time 12 Programa Fonte Compilador Compilador Just in Time SaídaEntrada Bytecode Código de Máquina Hotspot e JIT • Hotspot – Tecnologia utilizada pela JVM – Detecta pontos importantes da aplicação • Código que é executado muito • JIT – Just in Time Compiler – Utilizado pela JVM para compilar código para instruções nativas da plataforma • Melhorar a performance da aplicação 13 Hotspot e JIT • Então porque a JVM não compila todo o código? • Compilar dinamicamente – Isto é, a medida que for necessário – Aplicar otimizações • Código binário executável – Otimizado com base em heurísticas – Compilador pode não acertar na decisão ou ela não ser tão boa 14 Hotspot e JIT • JVM compila em tempo de execução – Decide quando e como aplicar a otimização – Pode mudar a estratégia de otimização se a performance não está adequada • Java 6 (Mustang) – Pode ser mais rápido que códigos C compilados – Principalmente em casos nos quais o código é executado durante um certo tempo 15 16 Versões do Java • Java 1.0 e 1.1 – As primeiras versões do Java – O Java estava “engatinhando...” • Java 1.2 – Acréscimo considerável nas APIs – Nomenclatura foi mudada de Java para Java2 – Objetivo de amenizar a confusão entre Java e JavaScript – Não há versão Java 2.0 17 Versões do Java • Java2 1.3 e 1.4, e o Java 1.5 mudou para Java 5 – Questões de marketing – Mudanças significativas na linguagem – O “2” do nome Java desaparece – Para fins de desenvolvimento, o Java 5 é referenciado como Java 1.5 18 Versões do Java • Até a versão 1.4 existia uma terceira numeração – 1.3.1, 1.4.1, 1.4.2, etc... – Indicava correções de bug e melhorias • A partir do Java 5 existem apenas atualizações – Java 5 update 6, Java 5 update 7, etc... • Java 8 é a versão atual – Java 8 update 144 • Há compatibilidade retroativa em todas as versões 19 JVM, JRE e JDK • JVM – Apenas a máquina virtual • JRE – Java Runtime Environment – Ambiente de execução Java • Constituído pela JVM e bibliotecas • JDK – Java Development Kit – Constituído pela JRE e ferramentas de desenvolvimento • Compilador, depurador, etc... 20 Especificação x Implementação • Java Virtual Machine – Refere-se a especificação – Especifica como o bytecode deve ser interpretado pela JVM • Ao obter o JRE ou JDK, obtemos uma implementação particular – Exemplo, a Oracle JVM • Pode-se escolher o fornecedor – Existe uma certificação emitida pela Oracle para garantir a compatibilidade 21 Características • Orientada a objetos – Baseada no modelo de Simula 67 • Portabilidade – Independência de plataforma • “escreva uma vez, execute em qualquer lugar” • Recursos de Rede – Extensa biblioteca de rotinas que facilitam a cooperação com protocolos TCP/IP • Exemplo: HTTP e FTP 22 Características • Segurança – Pode executar programas via rede com restrições de execução • Sintaxe similar a C/C++ • Facilidades de Internacionalização – Suporta nativamente caracteres Unicode 23 Características • Simplicidade na especificação – Tanto da linguagem como do “ambiente” de execução (JVM) • É distribuída com um vasto conjunto de bibliotecas (ou APIs) • Possui facilidades para criação de programas distribuídos e multitarefa 24 Características • Liberação automática de memória por processo de coletor de lixo • Carga Dinâmica de Código – Classes armazenadas independentemente e que podem ser carregadas no momento de utilização • Software livre – Distribuição completamente liberada do código sob a GPL em maio de 2007 25 Plataforma • Java SE (Java Platform, Standard Edition) – É a base da plataforma – Inclui o ambiente de execução e as bibliotecas comuns • Java EE (Java Platform, Enterprise Edition) – A edição voltada para o desenvolvimento de aplicações corporativas e para Internet • Java ME (Java Platform, Micro Edition) – A edição para o desenvolvimento de aplicações para dispositivos móveis e embarcados 26 Plataforma • Duas plataformas Java mais específicas – Java Card • Voltada para dispositivos embarcados com limitações de processamento e armazenamento – Exemplo: smart cards e o Java Ring – JavaFX • Plataforma para desenvolvimento de – Aplicações multimídia em desktop/web (linguagem JavaFX Script) – Dispositivos móveis (sistema operacional JavaFX Mobile) 27 28 Documentação • Javadoc – Gerador de documentação de API em HTML de código fonte Java • Java SE APIs & Documentation – http://www.oracle.com/technetwork/java/javase/d ocumentation/api-jsp-136079.html 29 Exemplo 30 public class HelloWorldApp { public static void main(String[] args) { // Imprime "Hello World!" System.out.println("Hello World!"); } } Material Sugerido • DEITEL, H. M.; DEITEL, P. J.; LISBOA, C. A. L. Java: como programar. 8 ed. São Paulo: Pearson Prentice Hall, 2010. 1144p. • Code Conventions for the Java Programming Language – http://www.oracle.com/technetwork/java/codecon v-138413.html • Java SE Documentation at a Glance – http://www.oracle.com/technetwork/java/javase/d ocumentation/index.html 31 Material Sugerido • Java (programming language) – http://en.wikipedia.org/wiki/Java_(programming_l anguage) • Garbage collection (computer science) – http://en.wikipedia.org/wiki/Garbage_collection_(computer_science) • Just-in-time compilation – http://en.wikipedia.org/wiki/Just-in- time_compilation 32 Material Sugerido • Java virtual machine – http://en.wikipedia.org/wiki/Java_Virtual_Machin e_heap • Java bytecode – http://en.wikipedia.org/wiki/Java_bytecode • Machine code – http://en.wikipedia.org/wiki/Machine_code 33
Compartilhar