32
Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Embed Size (px)

Citation preview

Page 1: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Analisando o Java: principais conceitos, apresentados

em um enfoque comparativo com o C++.

Eng. Luciano Santos DriemeierCOMET DPM/FEM UNICAMP

Page 2: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Estrutura da Apresentação

1. Motivação2. Introdução 3. Compilando e Executando em Java4. Estrutura de Dados e Gerenciamento de Memória5. Classes, Objetos e Herança6. Applets: o Java e a Internet7. Ferramentas Úteis8. Dicas para Design no Rose9. Projeto BIA10.Tendências11. Referências

Conteúdo

Page 3: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Objetivos e público alvo

- Descrever e acabar com eventuais mitos a respeito do Java.

- Apresentação direcionada a comparação das linguagens CONCEITUAL.

- Apresentação de recursos que podem ser destacados pela eficiência ou utilidade no Java.

- Não é objetivo apresentar conceitos de OOP ou OOD.

Motivação

Page 4: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Histórico: Projeto Green

- Histórico baseado na entrevista dos criadores do Java a revista online SunWorld’s (jul/95).

- Antes de 91 - Motivação - criação de uma linguagem compacta para ser usada em equipamentos domésticos.

- Pela aplicação o produto deveria:- usar pouca memória;- executar em diferentes CPU’s.

- O projeto recebeu o nome Green.

Introdução

Page 5: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Histórico: Viabilizando a Idéia

Conceito: gerar um código intermediário para máquinas hipotéticas.

- Máquinas hipotéticas Virtual MachinesJVM Java Virtual Machine

- O código poderia ser lido em toda máquina que tivesse o interpretador adequado.

- Como o background dos programadores da Sun é UNIX, o Java foi baseado em C++.

Introdução

Page 6: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Histórico: Do Primeiro Produto ao Sucesso

- *7 - primeiro produto. Não despertou interesse dentro da Sun e o departamento comercial não conseguiu clientes para o produto.

- Mudança de nome. (First Person)

- Paralelamente ao desenvolvimento do produto, a WWW (93/94) crescia muito.

- Navegador Mosaic escrito, em parte, por Marc Andreessen (em sua graduação a US$ 6,80 por h).

Introdução

Page 7: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Histórico: Do Primeiro Produto ao Sucesso

- Dentro da Sun, surgiu a idéia da aplicação na WWW.

- As motivações do projeto se encaixavam nos maiores desafios da rede.

- O grande salto do Java foi quando a Netscape lançou sua versão Java Enabled.

- Após a Netscape, os demais navegadores também lançaram suas versões Java Enabled.

Introdução

Page 8: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

O que é o Java?

- O Java é uma linguagem de programação:

- simples;

- orientada a objetos;

- de arquitetura neutra;

- portável;

- interpretada.

Introdução

Page 9: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Inverdades sobre o Java.

- O Java é uma extensão do HTML.

- Todos os programas em Java são executados em uma página da Web.

- O Java é uma linguagem fácil de programar.

- O Java será uma linguagem de programação universal.

- O Java é interpretado, portanto muito lento para aplicações “sérias”.

Introdução

Page 10: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Compilando em Java

- O Java não faz distinção entre arquivos de:Interface (declaração)Implementação (definição)

- Toda a classe Java está definida e declarada em um arquivo de extensão .java com o mesmo nome da classe.

- Existem, atualmente, muitos compiladores para o Java (inclusive o Visual J++).

- O compilador padrão JDK, fornecido pela Sun, é gratuito.

Compilando e Executando

Page 11: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Compilando em Java

- Utilizando o JDK fornecido pela Sun:

c:\>javac MyClass.java

- O compilador vai gerar um arquivo interpretável chamado MyClass.class.

- Para interpretar o arquivo deve-se executar o seguinte comando:

c:\>java MyClass

- Todos os .class necessários devem ser fornecidos.

Compilando e Executando

Page 12: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

O Compilador Java

- Os compiladores em Java são muito mais rígidos que os compiladores em C++.

- Esta característica do compilador facilita portar o código entre as linguagens.

- O compilador JDK é case sensitive para interpretar mas não para compilar.

- O JDK é um compilador de console, portanto tem algumas limitações.

Compilando e Executando

Page 13: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Diferenças entre Java e C++

- O Java não define as funções de pré-processador #.

- As diretivas de #if e #ifdef são menos necessárias em Java. Em geral, servem para marcar código em linguagem específica.

Compilando e Executando

A diretiva #

Page 14: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Diferenças entre Java e C++

- Como ficam os #includes ?

- Os compiladores do Java e C++ trabalham de maneira muito diferente nesta questão.

- Organizar as classes Java em packages, para tornar o projeto mais organizado.

- Importar os packages necessários para cada uma de suas classes.

Compilando e Executando

Page 15: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Diferenças entre Java e C++

- O import do Java é absolutamente diferente do #include do C++.

- O compilador do C++ somente abrirá os arquivos especificados por completo no include.

- O compilador Java abrirá o arquivo que for necessário, bastando indicar onde procurar.

- O import é apenas uma questão de conveniência. Pode- se evitar por completo o import (o include não).

Compilando e Executando

Page 16: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

As maiores diferenças

- Neste ponto estão as grandes diferenças:

JAVA NÃO TEM PONTEIROS.JAVA NÃO POSSUI DESTRUTORES.

- Comentar as principais diferenças e abordar com maior profundidade as frases acima.

ED e GM

Page 17: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Tipos Inexistente

- O Java não define o tipo enumerado

- Solução: declarar variáveis public static final byte (solução não segura).

- Pois, infelizmente, o Java não define o const.

- Declarar classes do tipo enumerado.

- Única maneira de conseguir dados seguros: declará-los em classes constantes.

ED e GM

Page 18: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Ponteiros

- Os dados em Java se comportam mais como ponteiros que como valores.

- Um outro ponto de vista: tudo no Java é ponteiro.

- O argumentação para afirmação anterior é consistente.

ED e GM

Ponteiros

Page 19: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Destrutores

- Os dados em Java não precisam ser destruídos. NÃO É NECESSÁRIO se preocupar com vazamentos de memória.

- Sistema garbage-collection implementado evita que o programador tenha que desalocar seus dados.

- Fazendo uma variável igual a null o programador pode forçar o dado a ser recolhido antes do fim do escopo.

ED e GM

Page 20: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Definições: Modificadores

- Como no C++ os dados e métodos podem ser declarados como public, protected e private.

- O processo de dynamic cast permanece inalterado.

- O modificador static permanece inalterado.

- Criando classes estáticas: variáveis e funções pertencem a classe e não a uma instância desta.

Objetos e Classes

Page 21: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Definições: Modificadores

- O Java não define o modificador friend.Java has no friends.

- Uma solução para o problema, sem ter de declarar os dados como públicos, é fazer os dados e métodos package private.

Objetos e Classes

Classe friend.

Page 22: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Definições: Herança

- Polimorfismo: os conceitos de orientação a objetos mais fortes no Java.

- Diferença quando um método é chamado no C++ e no Java.

- Conceito de late binding:

late binding - o compilador não gera o código a ser executado por um método emtempo de compilação.

Objetos e Classes

Page 23: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Definições: Herança

- Não é necessário declarar um método em Java como virtual. Este é seu comportamento padrão.

- Pode-se prevenir a herança declarando métodos e classes como final.

- Classes finais não podem gerar herdeiras.

- Métodos finais não podem ser sobrecarregados pela herança.

Objetos e Classes

Page 24: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Definições: Múltipla Herança

- O Java não permite a múltipla herança.

- Em Java uma classe pode ter uma única classe mãe.

- Esta exclusão foi proposital pois a múltipla herança torna os compiladores muito complexos (C++) ou ineficientes (Eiffel).

- Para contornar o problema da herança múltipla foram criadas as interfaces.

Class X extends Y implements Z Objetos e Classes

Page 25: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Facilidades do Java

- Supõe-se ser o Java a melhor ferramenta para conectar computadores a Internet.

- Um programador C\C++ ficará surpreso ao descobrir quão fácil é implementar códigos em Java.

- Java permite a criação de Applets

- Applets são programas escritos em Java e executados em uma página da Web via um navegador como o Netscape.

Applets: o Java e a Internet.

Page 26: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Applets: Funcionamento

- Existem três formas de visualizar o funcionamentode um applet:

- usando o AppletViewer da Sun; - carregando uma página local no navegador; - dando uma URL para o navegador carregar o arquivo.

Applets: o Java e a Internet.

Applets

Page 27: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Native Methods e Multithread

- É possível importar um método escrito em C para um código em Java.

- É possível que um código em C chame um método em Java.

- O Java tem implementação fácil de multithreads

Ferramentas Úteis

Multithread.

Page 28: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Rose

- A interface para design no Rose para Java é muito parecida com a do C++.

- A geração de código é mais simples tanto nas opções de o que gerar quanto na questão das áreas de preserve.

- Criar uma variável de projeto para não ter problemas com componentes.

Dicas para Design no Rose

Page 29: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Descrição do Programa

- O programa resolve os problemas de viga, barra e eixos da Resistência dos Materiais.

- Tem como ferramenta matemática as funções singularidade.

- As funções de singularidade são capazes de representar esforços. Uma vez construída a equação de carregamento apropriada , basta integrá-la.

- A versão sem interface visual recebe um arquivo texto com os dados do problema e devolve um arquivo html de solução . Projeto BIA

Page 30: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Classes e Funcionamento

- O programa está estruturado em 8 pacotes e 28 classes (sem as classes de interface visual).

Projeto BIA

Problem

Equations

MaterialCrossSection BoundaryCond

Maths

Loads

Auxiliar

Page 31: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

O Java Hoje

- O Java, como outras linguagens de programação, tem pontos positivos e negativos em sua aplicação.

- Sua principal aplicação ainda está na Internet.

- Há muita especulação sobre o Java. O que se pode afirmar é que até mesmo o C++ não tem uma aplicação universal.

- Microsoft's next IE browser, quite likely to continue to dominate the browser universe, will supposedly not even have Java included at all.

Tendências

Page 32: Analisando o Java: principais conceitos, apresentados em um enfoque comparativo com o C++. Eng. Luciano Santos Driemeier COMET DPM/FEM UNICAMP

Referências

Core Java - second editionGary Cornell & Cay Horstmann Sun Microsystems

Java CookBookPorting C++ to JavaTaligent White Papers - http:\\www.taligent.com

Rational Rose 98i - Using JavaManual

Aprenda em 24 horas C++ Editora CampusJesse Liberty

Referências