Programação Na Web Visão geral sobre Java 1 António Gonçalves 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 Java
Dispositivo Rube Goldberg 3 Introdução ao Java 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
Plataforma Java 2 http://java.sun.com/java2/ 5 Introdução ao Java Tecnologias J2EE Java Servlets JSP EJB JMS JDBC JNDI JTA / JTS JavaMail JAAS XML 6 Introdução ao Java
Componentes J2EE http://java.sun.com/j2ee/overview3.html 7 Introdução ao Java Plataforma Java 2 8 Introdução ao Java
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,...) 9 Introdução ao Java 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
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óvel Automóvel é a super-classe ou a classe base de Fiat127 Fiat127 é 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 se não implementar todos os métodos definidos. Fiat127 meu carro motor = 1300 <<Interface>> Conduzível virar acelerar travar Automóvel motor virar acelerar travar atestar 11 Introdução ao Java 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
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 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) 14 Introdução ao Java
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 Packages No JAVA existem 23 packages com classes e interfaces java.applet Applets java.awt Graphics, window, GUI java.awt.datatransfer Data transfer (copy,paste) java.awt.event Events java.awt.image Image (jpg, gif) java.awt.peer GUI for platform independence java.beans JavaBeans java.io input output java.lang Core language java.lang.reflect Reflection java.math Arithmetic java.net Networking java.rmi +3 Remote Method Invocation java.security +2 Security java.sql JDBC Sql for Databases java.text Internationalization java.util Data types java.util.zip Compression 16 Introdução ao Java
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 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 http://java.sun.com/products/hotjava/ 18 Introdução ao Java
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 19 Introdução ao Java 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
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 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
Aplicação básica Hello World, cont. Compiar: javac HelloWorld.java Executar: java HelloWorld Saída: Hello, world. 23 Introdução ao Java 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! ); javac Hello.class... getstatic #7 ldc #1 invokevirtual #8 return... 24 Introdução ao Java
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... Verifier API java.exe Class Loader Classes Security Manager Recursos do Sistema Hello world! 25 Introdução ao Java 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
Argumentos da Linha de Comando, Resultados Compilar e Executar: > javac ShowArgs.java > java ShowArgs fee fie foe fum Arg 0 = fee Arg 1 = fie Arg 2 = foe Arg 3 = fum 27 Introdução ao Java 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); C:>edit Point.java C:>javac Point.java C:>dir Point.java Point.class C:>java Point distance = 9.219544 C:>_ 28 Introdução ao Java
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 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> 30 Introdução ao Java
Applet Básica, cont. Compilar: javac HelloWWW.java Executar: Load HelloWWW.html in a Java-enabled browser 31 Introdução ao Java 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
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 Parametrizar uma Applets com PARAM, Resultado 34 Introdução ao Java