Upload
internet
View
104
Download
0
Embed Size (px)
Citation preview
Analisando o Java: principais conceitos, apresentados
em um enfoque comparativo com o C++.
Eng. Luciano Santos DriemeierCOMET 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
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
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
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
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
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
O que é o Java?
- O Java é uma linguagem de programação:
- simples;
- orientada a objetos;
- de arquitetura neutra;
- portável;
- interpretada.
Introdução
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
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
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
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
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 #
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
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
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
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
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
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
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
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.
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
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
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
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.
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
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.
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
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
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
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
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