4 java plataformas - ipsltodi.est.ips.pt/leonardo/ci/pdf/4 java plataformas.pdf · 7 13...
TRANSCRIPT
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 !)
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
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• …
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
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.
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
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)
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
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/
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
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.");
}}
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
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]);
}}
}
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
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>
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);
}}
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