4 java plataformas - ipsltodi.est.ips.pt/leonardo/ci/pdf/4 java plataformas.pdf · 7 13...

17
1 António Gonçalves Programação Na Web Visão geral sobre Java Introdução ao Java 2 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm Agenda Vantagens em usar o Java Versões do Java Instalar e executar programas em Java Aplicações básicas (Ola Java !) Argumentos da linha de comando Aplicações básica tipo Applet (Ola Java !)

Upload: others

Post on 03-Jun-2020

71 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

1

1 António Gonçalves

ProgramaçãoNa Web

Visão geral sobre Java

Introdução ao Java2 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Agenda• Vantagens em usar o Java• Versões do Java • Instalar e executar programas em Java • Aplicações básicas (Ola Java !)• Argumentos da linha de comando • Aplicações básica tipo Applet (Ola Java !)

Page 2: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

2

Introdução ao Java3 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Dispositivo Rube Goldberg

Introdução ao Java4 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Plataforma Java 2

• J2SE – Java 2 Standard Edition– Java para desktop / workstation– http://java.sun.com/j2se

• J2ME – Java 2 Micro Edition– Java para PalTop e Telemóveis– http://java.sun.com/j2me

• J2EE - Java 2 Enterprise Edition– Java para servidores– http://java.sun.com/j2ee

Page 3: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

3

Introdução ao Java5 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Plataforma Java 2

http://java.sun.com/java2/

Introdução ao Java6 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Tecnologias J2EE• Java Servlets• JSP• EJB• JMS• JDBC• JNDI• JTA / JTS• JavaMail• JAAS• XML• …

Page 4: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

4

Introdução ao Java7 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Componentes J2EE

http://java.sun.com/j2ee/overview3.html

Introdução ao Java8 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Plataforma Java 2

Page 5: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

5

Introdução ao Java9 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

O que é o JAVA ?• OOPL - Linguagem de programação OO

– Portável, Segura, Simples, “Eficiente” e Concorrente.

• JVM - Máquina virtual integrada em:– Browsers (NetScape, Explorer, HotJava)– Sistemas Operativos (Linux, JavaOS)– Aplicações. (java ...)

• API - Conjunto de bibliotecas de classes que suportam: – Interfaces gráficas (AWT, Swing)– Imagem e Som (wav, jpeg, gif, zip, jar) – Redes de comunicação (Socket, URL, RMI)– Etc. (Stream, Beans, JDBC, ...)

Introdução ao Java10 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Entidades principais das OOPL• Interface Conduzível { virar, acelerar, tarvar }

– Define as acções (métodos) que devem ser implementadas para um determinado objectivo.

• Classe Automóvel { motor, Conduzivel, atestar }– Define as características (atributos) e as acções (métodos) de um

tipo de objectos.– Implementa os métodos.– Pode Implementar uma ou mais Interfaces.

• Objecto o meu carro { motor = 1300 }– É uma instância de uma Classe concreta.– Podem existir um ou mais objectos da mesma classe.– Cada objecto mantém os valores dos seus atributos.

Page 6: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

6

Introdução ao Java11 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Herança nas OOPL

• Uma classe, para além de poder implementar interfaces, pode herdar atributos e métodos de outras classes.Fiat127 é também um AutomóvelAutomóvel é a super-classe ou a classe base de Fiat127Fiat127 é sub-classe ou classe derivada de Automóvel

• Uma classe derivada pode:– Acrescentar atributos e/ou métodos– Re-implementar métodos herdados

• Uma classe é abstracta senão implementar todosos métodos definidos. meu carro

<<Interface>>Conduzível

viraracelerartravar

Automóvelmotorvirar

acelerartravaratestar

Fiat127

motor = 1300

Introdução ao Java12 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Java é Multi-Plataforma• Compila para código máquina independente

dos sistemas operativos (bytecode)

• Windows, MacOS, OS/2, Solaris, …• Java possui uma biblioteca gráfica propria• Java avoids hard-to-port constructs

JavaCódigo Fonte

Java Bytecode

Compilador(javac)

Java Bytecode

Execution

JIT Compiladoror Interpretador

Page 7: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

7

Introdução ao Java13 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Java é Simples• Java possui gestor de memória

– Não existe ponteiros soltos – Não é criado “lixo”

• Java simplifique a gestão de ponteiros – Não existe operações de referencia ou deferencia

• Não existe “makefiles” e ficheiros de include

• sintaxe identica ao C++

Introdução ao Java14 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Caracteristicas da Linguagem JAVA

• Reúne as características das linguagens Object Oriented

• C++ ( Sintaxe compacta e já muito divulgada)– Sintaxe das instruções, expressões

• for(i=0;i<10;++i), break, w.x%10==0, a>>=2.– Estrutura sintáctica Object Oriented

• classes, visibilidade, construtores, declaração de métodos, etc.

• Smalltalk– Modelo de objectos (herança simples) (Eficiência)– Acesso aos objectos apenas por referência (Segurança)– Código intermédio (Portabilidade)– Alojamento dinâmico com garbage collection (Simplicidade)

Page 8: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

8

Introdução ao Java15 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Bibliotecas Standard• Threads (processos leves)• ADTs – “Java Foundation Classes”• Processamento de strings/streams

– JDK 1.4 suporto Expressões Regulares • Inteiros com precisão arbritária e aritmética

de ponto fixo • Serialização (armazenamento de objecto no

disco ou envio através de socket)• Invocar objectos remotos – RMI• Interface com DBA – JDBC• ETC …

Introdução ao Java16 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

java.applet Appletsjava.awt Graphics, window, GUIjava.awt.datatransfer Data transfer (copy,paste)java.awt.event Eventsjava.awt.image Image (jpg, gif)java.awt.peer GUI for platform independencejava.beans JavaBeansjava.io input outputjava.lang Core languagejava.lang.reflect Reflectionjava.math Arithmeticjava.net Networkingjava.rmi +3 Remote Method Invocationjava.security +2 Securityjava.sql JDBC Sql for Databasesjava.text Internationalizationjava.util Data typesjava.util.zip Compression

Packages

• No JAVA existem 23 packages com classes e interfaces

Page 9: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

9

Introdução ao Java17 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Versões do Java • Java 1.0 disponibilizado em 1995

• Java 1.1 disponibilizado em 1997

• Java Standard Edition (JDK 1.2) disponibilizado em 1998

• JDK 1.3 disponibilizado em 2000

Introdução ao Java18 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Como começar1. Instalar Java

– JDK 1.4• http://java.sun.com/j2se/1.4/

– JDK 1.3• http://java.sun.com/j2se/1.3/

2. Instalar um Browser que suporta Java– Netscape Navigator

• http://home.netscape.com/download/– Microsoft Internet Explorer

• http://www.microsoft.com/ie/download/– Sun HotJava

• http://java.sun.com/products/hotjava/

Page 10: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

10

Introdução ao Java19 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Como começar, cont.3. Marcar ou instalar a API do Java

– Java 2 SDK, Version 1.4 (JDK 1.4)• API Specification, http://java.sun.com/j2se/1.4/docs/api/• API Download, http://java.sun.com/j2se/1.4/docs.html

– Java 2 SDK, Version 1.3 (JDK 1.3)• API Specification,

http://java.sun.com/products/jdk/1.3/docs/api/• API Download,

http://java.sun.com/products/jdk/1.3/download-docs.html

4. Criar e executar um programa em Java– Criar o ficheiro– Compilar– Executar

Introdução ao Java20 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Como começar : Detalhes1. Criar o Ficheiro

– Escrever e guardar o ficheiro (exp Test.java) que define a classe Test

– O Nome da classe e do ficherio devem ser o mesmo (Atenção com maisculas e minusculas !)

2. Compilar o programa– Compilar Test.java pelo comando

javac Test.java

– Este passo cria o ficheiro Test.class

Page 11: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

11

Introdução ao Java21 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Como começar : Detalhes, cont.3. Executar o programa

– Para executar um programa : java Test

– Nota O comando é java, e não javac, e deve ser feita referencia a Test, e não Test.class

– Para executar uma applet deve ser usado um browser e ser feito o carregamento da página na qual é referenciada

Introdução ao Java22 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Aplicação básica Hello World • “Aplicação” em Java significa uma

programa “ stand-alone” – Nota o nome da classe e o nome do ficheiro são idênticos – Cada ficheiro pode conter várias classes mas só uma pode

ser declarada publica e o nome desta deve ser idêntico ao nome do ficheiro

• Ficheiro HelloWorld.java:

public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, world.");

}}

Page 12: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

12

Introdução ao Java23 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Aplicação básica Hello World, cont.

• Compiar:– javac HelloWorld.java

• Executar:– java HelloWorld

• Saída:– Hello, world.

Introdução ao Java24 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Compilador de JAVA• Um programa em JAVA é compilado para código

intermédio.– O compilador tem como entrada um ficheiro de texto

• normalmente com extensão .java• em UNICODE ou ASCII.

– Por cada classe ou interface compilada é gerado um ficheiro com o código intermédio (byte-codes).

• normalmente com extensão .class• que podem ser transportados para qualquer plataforma onde exista

uma máquina virtual para os executar

public class Hello {public static void main(String[ ] args) {System.out.println(“Hello World!”);

}}

... getstatic #7ldc #1invokevirtual #8return...

javac

Hello.java Hello.class

Page 13: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

13

Introdução ao Java25 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Máquina virtual JAVA

• A VM interpreta os byte-codes do código intermédio – A máquina virtual é uma máquina de stack.– A VM tem uma implementação para cada plataforma (arquitectura/SO).

• O ambiente de execução dos byte-codes é seguro (sandbox model).– Os byte-codes são verificados (tipos, visibilidade, overflow, underflow, ...)– A classe é carregada para a memória– Os acessos aos recursos do sistema (ficheiros, portos da rede, etc.) passam pela

verificação de um controlador de acessos.• A eficiencia é melhorada com o “Just In Time” compiler.

... getstatic #7ldc #1invokevirtual #8return

...

Hello.classHello world!

java.exe

RecursosRecursosdodo

SistemaSistemaAPIAPI

Verifier ClassLoader

Classes

SecurityManager

Introdução ao Java26 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Argumentos da Linha de Comando

• Diferenças do C– Em Java uma String é um tipo– Em Java as tabelas sabem qual é o número de elementos

guardados (length)– O nome do ficheiro não faz parte dos argumentos da linha

de comando

• ShowArgs.java:public class ShowArgs {

public static void main(String[] args) {for(int i=0; i<args.length; i++) {System.out.println("Arg " + i + " = " + args[i]);

}}

}

Page 14: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

14

Introdução ao Java27 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Argumentos da Linha de Comando, Resultados

• Compilar e Executar:> javac ShowArgs.java> java ShowArgs fee fie foe fum

Arg 0 = feeArg 1 = fieArg 2 = foeArg 3 = fum

Introdução ao Java28 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

C:>edit Point.java…C:>javac Point.javaC:>dirPoint.javaPoint.classC:>java Pointdistance = 9.219544

C:>_

Uma aplicação standalone em JAVA

public class Point extends Object {private float x, y;public Point( float xVal, float yVal ) {

x = xVal; y = yVal;}public float distanceFrom( Point from ) {

double dx = x - from.x;double dy = y - from.y;return (float)Math.sqrt( dx*dx + dy*dy );

}public static void main( String[] args ) {

Point a = new Point( 1 , 10 );Point b = new Point( 3 , 1 );float d = a.distanceFrom( b );System.out.println(" distance = " + d);

}}

Point.java

Page 15: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

15

Introdução ao Java29 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Applet Básica• HelloWWW.java:import java.applet.Applet;import java.awt.*;

public class HelloWWW extends JApplet {public void init() {setBackground(Color.gray);setForeground(Color.white);setFont(new Font("SansSerif", Font.BOLD, 30));

}

public void paint(Graphics g) {g.drawString("Hello, World Wide Web.", 5, 35);

}}

Introdução ao Java30 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Applet Básica, cont.• HelloWWW.html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0

Transitional//EN"><HTML><HEAD>

<TITLE>HelloWWW: Simple Applet Test.</TITLE></HEAD>

<BODY><H1>HelloWWW: Simple Applet Test.</H1>

<APPLET CODE="HelloWWW.class" WIDTH=400 HEIGHT=40><B>Error! You must use a Java enabled browser.</B>

</APPLET>

</BODY></HTML>

Page 16: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

16

Introdução ao Java31 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Applet Básica, cont.• Compilar:

javac HelloWWW.java

• Executar:Load HelloWWW.html in a Java-enabled browser

Introdução ao Java32 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Parametrizar uma Applets com PARAM

import java.applet.Applet;import java.awt.*;

public class Message extends JApplet {private int fontSize;private String message;

public void init() {setBackground(Color.black);setForeground(Color.white);fontSize = getSize().height - 10; setFont(new Font("SansSerif", Font.BOLD, fontSize));// Read heading message from PARAM entry in HTML.message = getParameter("MESSAGE");

}

public void paint(Graphics g) {if (message != null)g.drawString(message, 5, fontSize+5);

}}

Page 17: 4 Java Plataformas - IPSltodi.est.ips.pt/leonardo/ci/pdf/4 Java Plataformas.pdf · 7 13 Introdução ao Java Java é Simples • Java possui gestor de memória – Não existe ponteiros

17

Introdução ao Java33 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Parametrizar uma Applets com PARAM, cont.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD>

<TITLE>The Message Applet</TITLE></HEAD><BODY BGCOLOR="WHITE"><H1>The <CODE>Message</CODE> Applet</H1><P><APPLET CODE="Message.class" WIDTH=325 HEIGHT=25>

<PARAM NAME="MESSAGE" VALUE="Tiny"><B>Sorry, these examples require Java</B>

</APPLET><P><APPLET CODE="Message.class" WIDTH=325 HEIGHT=50>

<PARAM NAME="MESSAGE" VALUE="Small"><B>Sorry, these examples require Java</B>

</APPLET>...</BODY></HTML>

Introdução ao Java34 http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm

Parametrizar uma Applets com PARAM, Resultado