Você está na página 1de 40

Introduo Programao para Web

Carlos Bazilio
Depto de Cincia e Tecnologia Plo Universitrio de Rio das Ostras Universidade Federal Fluminense

Objetivo
Apresentar aos participantes alguns conceitos bsicos atuais relacionados programao e programao para web Introduzir algumas tecnologias, suas vantagens e desvantagens

Lio para um Profissional de Computao


Prostituam-se! Prostituam-se quando o assunto for linguagem de programao, IDE, metodologia, arquitetura, ou qualquer outro tipo de escolha!

Arquitetura

Execuo no Cliente (Browser)


HTML CSS Javascript XML XSLT Tableless ...

HTML
<html> <head> <title>Ttulo da Pgina</title> </head> <body> Esta minha primeira pgina. </body> </html>

CSS
<html> <head> <link href="pagina.css" rel="stylesheet" type="text/css" /> <title>Ttulo da Pgina</title> </head> <body> Esta minha primeira pgina. </body> </html>

CSS pagina.css
body { background-color : #ffffff; color : #000000; }
Demonstrao: http://www.csszengarden.com/

Tableless
Padro que vem sendo adotado na web para uso massivo de html+css Alm, no utilizar tabelas html para construo de contedo diferente de tabela (origem do nome) Naturalmente, este uso no deveria ser evitado se o que se deseja construir uma tabela Exemplo: http://www.stopdesign.com/present/2004/ddwseattle/tables/?no=15

JavaScript
<html> <body> <script type="text/javascript"> for (i = 0; i < 5; i++) { document.write("Alo voc !!!") document.write("<br />") } </script> </body> </html>

JavaScript
<html> <head> <script type="text/javascript"> function alo(k) { var s = ""; for (i = 0; i < k; i++) { s = s + "Alo voc !!!" s = s + "<br />" } return s } </script> <title>Alouuuuuu</title> </head> <body> <script type="text/javascript"> document.write(alo(4)) </script> </body> </html>

XML
<?xml version="1.0" encoding="UTF-8"?> <livros> <livro isbn=0001> <titulo>JavaServer Pages</titulo> <autor>Nick Todd</autor> <editora>Campus</editora> <assunto>JSP</assunto> </livro> <livro isbn=0002> <titulo>Meu p de laranja lima</titulo> <editora>Vozes</editora> <autor>Brilhante</autor> </livro> </livros>

XSLT
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions"> <xsl:output method="xml" version="1.0" encoding="ISO-8859-1" indent="yes"/> <xsl:template match="/"> <html><head><title>Meus livros</title></head> <body> <table border="1"> <tr><th>Ttulo</th><th>Autor</th></tr> <xsl:for-each select="//livro"> <tr> <td><xsl:value-of select="titulo"/></td> <td><xsl:value-of select="autor"/></td> </tr> </xsl:for-each> </table></body></html> </xsl:template> </xsl:stylesheet>

Execuo no Cliente (Browser)


Inferno dos web-designers: compatibilidade entre browsers!
Firefox Opera Internet Explorer (IECA) Konqueror

Execuo no Servidor
Necessidade dos websites oferecerem contedos dinmicos e atualizados Ciclo de vida da informaes trafegadas entre servidor e cliente (escopo) Linguagens de script
JSP ASP PHP Perl

Execuo no Servidor
_ General supported language(s) specifications functionality security PHP PHP Hypertext Preprocessor own script language runs on almost any platform functionality by modules complex code -> complex security; open source interpreted language MySQL-drivers included ASP Active Server Pages JScript, VBScript or 5 different webserver extension (IIS) modularly built of COM-objects complex code -> complex security; no open source precompiled code(?) ActiveX data objects(ADO) JSP Java Server Pages Java no platform restrictions reusable components and tags complex code -> complex security; open source compiled to Servlets in bytecode (interpreted) by "JDBC" (MSQL, Oracle, Sybase)

performance database connectivity

Execuo no Servidor
Servidores Web
IIS Apache Tomcat

IIS
Internet Information Server Microsoft Famoso por apresentar diversos problemas de segurana no passado

Apache
Servidor web mais utilizado no mundo atualmente (Fonte: Netcraft) Software Livre Escrito em C Executa diversas linguagens script: PhP, Perl, ASP, etc. Possui suporte nativo ao MySQL Permite definio de mdulos para extenso do servidor
Exemplo: suporte para JSP

Tomcat
Implementao de referncia para JSP/Servlets (Java) Escrito em Java Devido sua simplicidade e fcil instalao, comumente utilizado em cursos para desenvolvimento web

Servidores de Aplicao
Estes servidores oferecem recursos comuns a diferentes aplicaes (autenticao, conexo BDs, suporte a transao, etc) Pensando-se numa arquitetura em camadas, um servidor de aplicao um servidor que hospeda e oferece servios para outras aplicaes Com isso, espera-se que os desenvolvedores poupem tempo para implementao da lgica do negcio

Servidores de Aplicao

Exemplos:
Java: JBoss (Red Hat), WebLogic (BEA), WebSphere (IBM), Geronimo (Apache), Sun Application Server (SUN), Glassfish (baseado no da SUN) Microsoft: .NET Framework

Afins
RSS Web Services AJAX

RSS
Really Simple Syndication Formato padro, baseado em XML Tem sido adotado por websites que disponibilizam informaes na rede, como sites de jornais, blogs, sites institucionais, etc. Hoje existem diversos leitores (agregadores) de RSS: browsers, programas de e-mail, softwares, etc ..

RSS

Web Services
Proposta:
Integrao de sistemas atravs do uso de XML sobre HTTP

Tecnologias:
XML WSDL (Web Service Description Language) SOAP (Simple Object Access Protocol)

Vantagens:
Integrao com baixo acoplamento Independe das linguagens de implementao

Web Services

Web Services

AJAX
Asynchronous Javascript And XML Construo de pginas mais dinmicas atravs de chamadas assncronas ao servidor No uma tecnologia, mas sim uma combinao de tecnologias
XHTML + CSS + XML + XSLT + XMLHttpRequest e JavaScript

AJAX

AJAX

AJAX

Padres de Projeto
Um padro de projeto uma soluo comum para um problema comum encontrado no desenvolvimento de software (Sun); Sedimentao do conceito com o lanamento do livro: Design Patterns: Elements of Reusable Object-Oriented Software; No est amarrado a nenhuma linguagem OO.

Padres de Projeto (GoF Gang of Four)

Padres de Projeto
A utilizao desses padres usualmente implica em algumas vantagens:
Facilidade de comunicao: padres possuem nomes, os quais resumem uma soluo que deve ser de conhecimento comum entre equipes de desenvolvimento; Credibilidade: sua implementao estar utilizando solues amplamente testadas e aprovadas; Facilidade de manuteno: padres tendem a reduzir o acoplamento entre componentes, o que implica num sistema de fcil manuteno

Padres de Projeto Exemplo: Faade

import java.util.*; /** "Faade" */ class UserfriendlyDate { GregorianCalendar gcal; public UserfriendlyDate(String isodate_ymd) { String[] a = isodate_ymd.split("-"); gcal = new GregorianCalendar(Integer.valueOf(a[0]).intValue(), Integer.valueOf(a[1]).intValue()-1 /* !!! */, Integer.valueOf(a[2]).intValue()); } public void addDays(int days) { gcal.add(Calendar.DAY_OF_MONTH, days); } public String toString() { return new Formatter().format("%1$tY-%1$tm-%1$td", gcal).toString();} } /** "Client" */ class FacadePattern { public static void main(String[] args) { UserfriendlyDate d = new UserfriendlyDate("1980-08-20"); System.out.println("Date: "+d); d.addDays(20); System.out.println("20 days after: "+d); } }

MVC (Model-ViewController)

http://java.sun.com/blueprints/patterns/MVC-detailed.html

Nosso Plano

Links Interessantes
http://www.w3schools.com/
Site com tutoriais on-line rpidos e com muita qualidade

http://del.icio.us/carlosbazilio
Meus links favoritos disponibilizados on-line

http://en.wikipedia.org/wiki/Design_Patterns
Wikipedia sobre Design Patterns

http://www.hideout.com.br/usp/semacomp2005/s lides/minicurso.html
Slides de um minicurso sobre programao em web 2.0

Você também pode gostar