Escolar Documentos
Profissional Documentos
Cultura Documentos
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
Arquitetura
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 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)
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
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
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