Prof. Marcelo Heitor Teixeira marceloheitor.com. Java Aula Introdutória. # História e Anatomia Java



Documentos relacionados
Programação de Computadores - I. Profª Beatriz Profº Israel

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Introdução à Linguagem Java

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

A Linguagem Algorítmica Estrutura de Repetição. Ex. 2

CURSO DE PROGRAMAÇÃO EM JAVA

PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA*

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Programação Orientada a Objetos

Prof. M.Sc. Fábio Procópio Prof. M.Sc. João Maria Criação: Fev/2010

FBV - Linguagem de Programação II. Um pouco sobre Java

Java - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br

AULA Uma linguagem de programação orientada a objetos

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Java & OpenJDK. Thiago S. Gonzaga. Sun Campus Ambassador thiago.gonzaga@sun.com

2 Orientação a objetos na prática

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Programação Orientada a Objetos (DPADF 0063)

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática

Linguagem Java. Arquitetura e Ambiente de Desenvolvimento. Arquitetura e Ambiente de Desenvolvimento Prof. Anderson Augustinho Uniandrade

Linguagens de. Aula 02. Profa Cristiane Koehler

Java para Desktop. Introdução à Plataforma Java JSE

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Java. Marcio de Carvalho Victorino

UNIVERSIDADE FEDERAL DO PARANÁ

Prof. Esp. Adriano Carvalho

JAVA. Introdução. Marcio de Carvalho Victorino. Page 1 1/40 2/40

Desenvolvimento Web TCC Turma A-1

Introdução a Linguagem

Curso de Extensão Programação Orientada a Objetos com Java. Última atualização: 25/05/2010

Orientação a Objetos em Java. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Universidade Federal de Uberlândia

Linguagem de Programação Introdução a Linguagem Java

PROGRAMAÇÃO JAVA. Parte 1

Um pouco do Java. Prof. Eduardo

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Instalando e configurando o Java Development Kit (JDK)

Programação de Computadores II TCC Turma A-1

Programação de Computadores - I. Profª Beatriz Profº Israel

insfcanceof new public switch transient while byte continue extends for int null

POO Programação Orientada a Objetos. Classes em Java

JAVA. Fabrício de Sousa

Sobre o Professor Dr. Sylvio Barbon Junior

Tutorial de instalação do Java 7 no Windows 7.

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Capítulo 1. Introdução ao Java. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Procedimentos para Configuração do Ambiente J2EE e J2SE em Ambiente Windows

A Linguagem Java. Alberto Costa Neto DComp - UFS

Programação por Objectos. Java

Instalando o J2SE 5.0 JDK no Windows 2000/XP

Programação por Objectos. Java

LINGUAGEM DE PROGRAMAÇÃO JAVA

Faculdade Latino Americana Programação Orientada a Objetos II - 4º Período Ciências da Computação. REVISÃO POO Parte 01

Sintaxe Básica de Java Parte 1

Orientação a Objetos com Java

Fundamentos de Java. Prof. Marcelo Cohen. 1. Histórico

JavaScript 2.0X X

Capítulo 4. Packages e interfaces

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Programação Orientada a Objetos

Lógica de Programação

Faculdade Instituto Educare - FIED Curso: Sistemas de Informação Disciplina: Linguagem de Programação I Prof.: Rhyan Ximenes rxbrito@gmail.

Curso de Pós-Graduação Desenvolvimento de Aplicativos Web

Organização de programas em Java. Vanessa Braganholo

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Java Básico. Aula 1 por Thalles Cezar

Programação Orientada a Objetos

Programação por Objectos

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

Java Linguagem de programação

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Orientação a Objetos

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Objetivos: Entender o funcionamento dos programas Java via linha de comando

Algoritmos e Programação Estruturada

Marco Aurélio Uma Visão Geral Sobre Plataforma Java

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

P n o t n ifíci c a a Un U i n ve v r e si s da d d a e d e C a C t a ól ó ica c a d o d o R i R o o d e d e J a J n a e n i e ro o PU P C U -Ri R o

Instalação e Configuração do Java (por Gilberto Irajá Müller)

Laboratório I Aula 2

Sistemas Distribuídos

Definições. Parte 02. Java Conceitos e. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

JSP - ORIENTADO A OBJETOS

Introdução a Java. Hélder Nunes

Introdução à Linguagem Java. Departamento de Informática Prof. Anselmo C. de Paiva

Daniel Wildt FACENSA Grupo de Estudos Java - FUJA Slide: 1

Java 2 Standard Edition Como criar classes e objetos

LINGUAGEM DE PROGRAMAÇÃO Material de apoio - Aula II (25/02/2008) - Profº Sidney Leal

INTRODUÇÃO AO JAVA PARA PROGRAMADORES C

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Transcrição:

Prof. Marcelo Heitor Teixeira marceloheitor.com Java Aula Introdutória # História e Anatomia Java

O Universo Java Model 1 Model 2 Data source API javac JAD Interface Websphere WEB.xml JME Eclipse Struts SCJA Maven Hibernate POO RFID SCJP Entity Manger CDC SCEA DAO Java Mobile e TV MIDP Netbeans JMX CLDC POJO Applet MVC Classe JEE E muito Card mais... Design Tomcat JPA Pattern FX Facelets RMIC SCWCD Midlet Web services SCBCD JSE Swing Desktop Servlet EJB Front Controller WEB JSP Weblogic Toplink JAR JDBC JNDI AWT Framework Glassfish Entity Bean JRE JDK JBOSS JSF JNI context.xml

Genealogia Java: Java Década de 1990 C++ Década 1980 C Década de 1970 BCPL e B Década 1960

O grande impacto na indústria de dispositivos eletrônicos pessoais foi causado pelo surgimento do micro-processador. Década de 1991, a Sun Microsystems (hoje da Oracle) resolveu financiar um projeto liderado por James Gosling. Nasce então a linguagem Java, baseada no C++, que seria executada de forma a convergir computadores e dispositivos eletrônicos criados por diferentes fabricantes. (tentativa de antecipar o mundo digital)

Entretanto, esse mercado não decolou da forma que a empresa esperava. Por isso os dias da java estavam contados. Atualmente java é usada como linguagem e plataforma nos mais variados tipos de computadores, como: Desktops, dispositivos móveis, cartões inteligentes, RFID e servidores de aplicações. Surge então a idéia de aproveitar a linguagem para agregar conteúdo dinâmico nos navegadores de internet da época. Em 1995, java é oficialmente apresentada para o mercado mundial.

Java é composta por uma grande biblioteca de classes que juntas formam a Java- API (Application Programing Interface) organizada em pacotes. A documentação da linguagem pode ser estudada em: java.sun.com/javase/downloads/ JAVA - API Pacote A Pacote B classe X { metodo1(){} metodo2(){} } classe Y { metodo1(){} metodo2(){} }

Evolução da Java-API: Veio em 3 versões: J2ME Java Micro Edition; J2SE Java Standard Edition; J2EE Java Enterprise Edition; A evolução da java é controlada pelo JCP Java Community Process (jcp.org) e pela própria Oracle e usuários java.

A Java-API é usada pelo SDK e pelo JRE. O SDK é o kit de desenvolvimento de software java, ou seja, o ambiente de desenvolvimento java. Nele, existe uma coleção de ferramentas de linha de comando que executam tarefas como compilar, executar e depurar aplicações escritas em java. Para que o SDK possa ser usado via linha de comando, é necessário configurar algumas variáveis de ambiente que serão vistas em breve. O JRE é o ambiente de execução, a API do JRE contém tudo que é necessário para executar aplicações java.

Um programa java passa por 5 fases: Edição Compilação Carregamento Verificação e Execução. Fase 1 Edição O class-loader lê os bytecodes do.class e carrega na memória. É criado em um editor um arquivo com a extensão.java Fase 2 Compilação O verificador confirma se os bytecodes não violam nenhuma restrição de segurança java O compilador cria os bytecodes a partir do.java gerando um arquivo.class JVM lê os bytecodes e os traduz para uma linguagem que a máquina entenda. Fase 3 Carregador de Classe Fase 4 Verificador de Bytecodes Execução pela JVM

E por falar em JVM Java Virtual Machine! É o mecanismo que recebe os créditos pela frase: escreva uma vez, rode em qualquer lugar! A JVM manipula os bytecodes gerados pelo compilador java e conversa com a máquina real. Isso permite à java ser multi-plataforma.

Compilador Java Bytecodes JVM Código executável de máquina Hardware

Código Java Executável Máquina Virtual Java - JVM Windows Linux

Enquanto isso, na JVM Bytecode PrimeiraClasse.class SIM JIT Just-In-Time é a parte da JVM usada para acelerar o tempo de execução compilando (traduzindo) partes dos bytecodes que tem algorítmos parecidos, ao mesmo tempo verificador de bytecodes class loader classe remota? NÃO interpretador Em tempo de execução tradutor JIT gera código nativo Hardware

O Class Loader ou Carregador de Classes é a primeira tarefa executada pela JVM e figura responsável por carregar as classes na hora da execução da aplicação. Além disso é o mecanismo que efetua a verificação se os bytecodes de classes remotas não ofendem as regras de segurança da API Java. A ordem de carregamento das classes obedece a seguinte sequência: 1 Carrega classes nativas do JRE (API); 2 Carrega extensões do JRE, por exemplo os arquivos.jar que estão mapeados em $JAVA_HOME/jre/lib/ext; e classes em $JAVA_HOME/jre/lib/classes; 3 Carrega classes do sistema local (a ordem dos caminhos no CLASSPATH indica a ordem); 4 Classes remotas se existirem;

Pilha e Heap! São o que os programadores java precisam saber diferenciar com relação a utilização de memória. Na pilha, ficam as chamadas de métodos e variáveis locais. Na heap é onde residem os objetos. Os valores literais dos primitivos são armazenados em bytes na pilha ao passo que uma variável de referência a um objeto contem os bytes que permitem o acesso ao objeto que está na heap. PILHA Ref. objeto A Primitivo int 010011 Ref. objeto B HEAP A B

Durante muito tempo o gerenciamento de memória, nas aplicações, era um grande problema pois os programadores eram os responsáveis por controlar sua alocação e a liberação. Hoje, com plataformas modernas como Java, o gerenciamento é automático e a alocação e liberação de memória é dinâmica por meio de algorítmos específicos. Garbage Collector (coletor de lixo) é a parte da JVM responsável por liberar a memória alocada por um objeto na heap. O GC é um dos principais componentes da jvm; O coletor de lixo não pode ser invocado diretamente pelo programador e sua execução é feita por um processo controlado pela própria JVM. Para que o GC libere memória, um objeto deve estar no status de elegível:

Código java hipotético! Objeto obj = new Objeto(); obj.fazalgo(); obj = null; Objeto tornando-se elegível para o coletor de lixo! Configurar uma referência para um objeto como null é uma boa prática de programação.

Tipos primitivos: originam outros tipos em java; em java existem 8; boolean true/false default false; char inteiro unicode 16 bits (sem sinal); byte inteiro 8 bits -128 a 127; short inteiro 16 bits -2^15 a 2^15-1; int inteiro 32 bits -2^31 a 2^31-1; long inteiro 64 bits -2^63 a 2^63-1; float flutuante 32 bits norma IEEE 754-1985; double flutuante 64 bits norma IEEE 754-1985;

PALAVRAS RESERVADAS: private: acesso apenas dentro da classe; protected: acesso por classes no mesmo pacote e subclasses; public: acesso de qualquer classe; abstract: classe que não pode ser instanciada ou método que precisa ser implementado por uma subclasse não abstrata; class: especifica uma classe; extends: indica a superclasse que a subclasse está estendendo; final: impossibilita que uma classe seja estendida, que um método seja sobrescrito ou que uma variável seja reinicializada; implements: indica as interfaces que uma classe irá implementar; interface: especifica uma interface; native: indica que um método está escrito em uma linguagem dependente de plataforma, como o C; new: instancia um novo objeto, chamando seu construtor; static: faz um método ou variável pertencer à classe ao invés de às instâncias; strictfp: usado em frente a um método ou classe para indicar que os números de ponto flutuante seguirão as regras de ponto flutuante em todas as expressões;

synchronized:indica que um método só pode ser acessado por uma thread de cada vez; transient: impede a serialização de campos; volatile:indica que uma variável pode ser alterada durante o uso de threads; break: sai do bloco de codigo em que está; case: executa um bloco de código dependendo do teste do switch; continue:pula a execução do código que viria após essa linha e vai para a próxima passagem do loop; default:executa esse bloco de codigo caso nenhum dos teste de switch-case seja verdadeiro; do:executa um bloco de código uma vez, e então realiza um teste em conjunto com o while para determinar se o bloco deverá ser executado novamente; else: executa um bloco de código alternativo caso o teste if seja falso; for:usado para realizar um loop condicional de um bloco de código; if: usado para realizar um teste lógico de verdadeiro o falso; instanceof: determina se um objeto é uma instância de determinada classe, superclasse ou interface;

return: retorna de um método sem executar qualquer código que venha depois desta linha (também pode retornar uma variável); switch:indica a variável a ser comparada nas expressões case; while: executa um bloco de código repetidamente até que uma certa condição seja verdadeira; assert: testa uma expressão condicional para verificar uma suposição; do programador; catch: declara o bloco de código usado para tratar uma exceção; finally:bloco de código, após um try-catch, que é executado; independentemente do fluxo de programa seguido ao lidar com uma exceção; throw:usado para passar uma exceção para o método que o chamou; throws: indica que um método pode passar uma exceção para o método que o chamou; try: bloco de código que tentará ser executado, mas que pode causar uma exceção; import:importa pacotes ou classes para dentro do código; package: especifica a que pacote todas as classes de um arquivo pertencem;

boolean:um valor indicando verdadeiro ou falso; byte: um inteiro de 8 bits (signed); char: um caracter unicode (16-bit unsigned); double: um número de ponto flutuante de 64 bits (signed); float: um número de ponto flutuante de 32 bits (signed); int: um inteiro de 32 bits (signed); long: um inteiro de 64 bits (signed); short: um inteiro de 16 bits (signed); super: refere-se a superclasse imediata; this: refere-se a instância atual do objeto; void: indica que o método não tem retorno; const: Não utilize para declarar constantes; use public static final; goto: não implementada na linguagem Java por ser considerada prejudicial; null, true e false são valores literais.

Instalar e configurar a java para ser usada em linha de comando é simples: Usaremos a versão 6 do Java que pode ser baixada em: java.sun.com/javase/downloads/ Em seguida basta seguir os seguinte passos: Após baixado o JDK ou Kit de Desenvolvimento Java, dispare o instalador e vá configurando de acordo com o que se pede. [bastante simples]. Após isso acesse as variáveis de ambiente no windows e proceda da forma que segue:

Nas variáveis de ambiente [windows] crie: JAVA_HOME C:\jdk6 CLASSPATH.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\jre\lib\rt.jar;%JAVA_HOME%\lib\t ools.jar; Em seguida edite: PATH %JAVA_HOME%\bin; Após isso, abra o editor de linha de comando e digite: java version você deve ver a versão do java instalado.

Alguns detalhes sobre o ambiente de desenvolvimento e execução java: Depois de instalado e devidamente configurado devemos observar 2 programas em especial. javac: Esse é o programa compilador da linguagem java: javac nome_da_classe.java Onde: Para ver mais opções do comando javac, digite javac e tecle enter (na linha de comando)

java: Esse é o programa que executa o programa java a partir do.class. java nome_da_classe Para ver mais opções do comando java, digite java e tecle enter (na linha de comando)

Anatomia de uma classe em java: Visibilidade Indica que é uma classe public class PrimeiraClasse { Nome da classe usando CamelCase public static void main(string [] args) { Chave de abertura da classe Abertura de método Fechamento de método } } Fechamento da classe! Não precisa de um objeto instanciado para ser usado. Tipo de retorno. Esse indica que não há valor de retorno Nome do método Argumentos

O primeiro programa em java!!! 1 crie [e salve] um arquivo com o nome PrimeiraClasse.java. Em seguida digite o seguinte código: public class PrimeiraClasse { public static void main(string[] args) { System.out.println( Primeira Classe Java! ); } } 2 abra o editor de linha de comando e entre no diretório onde salvou o arquivo. [windows = menu iniciar executar digite cmd] 3 - Em seguida digite o comando: javac PrimeiraClasse.java Se a sintaxe estiver correta será gerado um PrimeiraClasse.class

4 - em seguida digite: java PrimeiraClasse Observe o resultado na saída padrão!!!

Referências: [Lindholm-Yellin] Tim Lindholm, Frank Yellin. The Java Virtual Machine Specification - Second Edition. [Silveira-... et. al. 2012] Paulo Silveira,. Introdução à arquitetura e design de software; [Deitel-Deitel 2010] Paul Deitel, Harvey Deitel. Java Como Programar Oitava Edição. [Sierra-Bates 2005] Kathy Sierra, Bert Bates. Head First Java Second Edition.