O que é o JAVA

Propaganda
Programação
Na Web
Visão geral sobre Java
António Gonçalves
1
Agenda
•
•
•
•
•
•
2
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 !)
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
1
Dispositivo Rube Goldberg
3
Introdução ao Java
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
4
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
2
Plataforma Java 2
http://java.sun.com/java2/
5
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Tecnologias J2EE
•
•
•
•
•
•
•
•
•
•
•
6
Java Servlets
JSP
EJB
JMS
JDBC
JNDI
JTA / JTS
JavaMail
JAAS
XML
…
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
3
Componentes J2EE
http://java.sun.com/j2ee/overview3.html
7
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Plataforma Java 2
8
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
4
O que é o JAVA ?
• OOPL - Linguagem de programação OO
– Portável, Segura, Simples, “Eficiente” e Concorrente.
• JVM - Máquina virtual integrada em:
– Browsers
– Sistemas Operativos
– Aplicações.
(NetScape, Explorer, HotJava)
(Linux, JavaOS)
(java ...)
• API - Conjunto de bibliotecas de classes que
suportam:
–
–
–
–
9
Interfaces gráficas
Imagem e Som
Redes de comunicação
Etc.
(AWT, Swing)
(wav, jpeg, gif, zip, jar)
(Socket, URL, RMI)
(Stream, Beans, JDBC, ...)
Introdução ao Java
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.
10
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
5
Herança nas OOPL
• Uma classe, para além de poder implementar interfaces,
pode herdar atributos e métodos de outras classes.
<<Interface>>
Fiat127 é também um Automóvel
Conduzível
Automóvel é a super-classe ou a classe base de Fiat127
virar
Fiat127 é sub-classe ou classe derivada de Automóvel
acelerar
travar
• Uma classe derivada pode:
– Acrescentar atributos e/ou métodos
– Re-implementar métodos herdados
• Uma classe é abstracta se
não implementar todos
os métodos definidos.
Automóvel
Fiat127
meu carro
motor = 1300
11
Introdução ao Java
motor
virar
acelerar
travar
atestar
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Java é Multi-Plataforma
• Compila para código máquina independente
dos sistemas operativos (bytecode)
Java
Código Fonte
Compilador
(javac)
Java Bytecode
Java Bytecode
JIT Compilador
or Interpretador
Execution
• Windows, MacOS, OS/2, Solaris, …
• Java possui uma biblioteca gráfica propria
• Java avoids hard-to-port constructs
12
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
6
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++
13
Introdução ao Java
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
–
–
–
–
14
Modelo de objectos (herança simples)
Acesso aos objectos apenas por referência
Código intermédio
Alojamento dinâmico com garbage collection
Introdução ao Java
(Eficiência)
(Segurança)
(Portabilidade)
(Simplicidade)
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
7
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 …
15
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Packages
•
16
No JAVA
existem 23
packages com
classes e
interfaces
Introdução ao Java
Applets
java.applet
Graphics, window, GUI
java.awt
java.awt.datatransfer Data transfer (copy,paste)
Events
java.awt.event
Image (jpg, gif)
java.awt.image
GUI for platform independence
java.awt.peer
JavaBeans
java.beans
input output
java.io
Core language
java.lang
Reflection
java.lang.reflect
Arithmetic
java.math
Networking
java.net
Remote Method Invocation
java.rmi +3
Security
java.security +2
JDBC Sql for Databases
java.sql
Internationalization
java.text
Data types
java.util
Compression
java.util.zip
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
8
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
•
17
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Como começar
1. 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
•
18
http://java.sun.com/products/hotjava/
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
9
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
–
–
–
19
Criar o ficheiro
Compilar
Executar
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Como começar : Detalhes
1. 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
20
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
10
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
21
Introdução ao Java
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.");
}
}
22
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
11
Aplicação básica Hello World,
cont.
• Compiar:
– javac HelloWorld.java
• Executar:
– java HelloWorld
• Saída:
– Hello, world.
23
Introdução ao Java
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
Hello.java
public class Hello {
public static void main(String[ ] args) {
System.out.println(“Hello World!”);
}
}
24
Introdução ao Java
Hello.class
...
javac
getstatic #7
ldc #1
invokevirtual #8
return
...
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
12
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.
Hello.class
...
getstatic #7
ldc #1
invokevirtual #8
return
...
25
java.exe
Verifier
API
Introdução ao Java
Class
Loader
Classes
Security
Manager
Hello world!
Recursos
do
Sistema
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]);
}
}
}
26
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
13
Argumentos da Linha de
Comando, Resultados
• Compilar e Executar:
> javac ShowArgs.java
> java ShowArgs fee fie foe fum
Arg
Arg
Arg
Arg
27
0
1
2
3
=
=
=
=
fee
fie
foe
fum
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Uma aplicação standalone em JAVA
Point.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);
}
}
28
Introdução ao Java
C:>edit Point.java
…
C:>javac Point.java
C:>dir
Point.java
Point.class
C:>java Point
distance = 9.219544
C:>_
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
14
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);
}
}
29
Introdução ao Java
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>
30
</BODY>
</HTML>
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
15
Applet Básica, cont.
• Compilar:
javac HelloWWW.java
• Executar:
Load HelloWWW.html in a Java-enabled browser
31
Introdução ao Java
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);
}
32
}
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
16
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>
33
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Parametrizar uma Applets com
PARAM, Resultado
34
Introdução ao Java
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
17
Download