Artigo - TECNOLOGIAS PARA DESENVOLVIMENTO WEB
Artigo - TECNOLOGIAS PARA DESENVOLVIMENTO WEB
RESUMO
Esta pesquisa tem como objetivo apresentar uma gama de tecnologias presentes na plataforma web que serão
utilizadas no projeto prático, fazendo comparativos entre outras semelhantes no mercado, apresentando suas
demandas. Será tratado o aglomerado de tecnologias focadas no front-end, desde a estilização de páginas ao
dinamismo das mesmas. Além das tecnologias, será abordado o conceito de arquitetura em 3 camadas que fornece
uma divisão de funções de uma aplicação, distribuindo-se em apresentação (tela), regra de negócio (fluxo de dados,
manipulação e controle), que por sua vez será aplicada ao projeto prático complementar a esta pesquisa.
ABSTRACT
This research aims to present a range of technologies present on the web platform that will be used at the end of
practical project, making comparisons between similar market, presenting their demands. It will be treated the
agglomerate of technologies focused on the front end, from the stylization of pages to the dynamism of the same.
In addition to the technologies, it will address the concept of architecture in 3 layers that provides a division of an
application functions, distributing up in presentation (display), business rule (data flow, manipulation and control),
which in turn is applied to the practical complement to this research project.
INTRODUÇÃO
O principal objetivo da Web em seu surgimento, era manter uma troca de informações
e de conteúdos estáticos entre postos militares, estas primeiras páginas continham apenas textos,
imagens e animações, ambos descritos em uma estrutura da tecnologia HTML (HyperText
Markup Language), um formato de arquivo textual que deveria ser armazenado em uma
máquina servidora, e acessado por navegadores web para sua visualização. Contudo, depois de
sua popularização provocada por Tim Berners-Lee nos anos 90, a Web passou ter outras
características, com um imenso potencial de comunicação e interação entre usuários de diversas
partes. O ecossistema que engloba a Web é extremamente vasto, compreendido por diversas
metodologias e tecnologias semelhantes, desde sua estruturação básica, ao dinamismo de
conteúdo que é possível se criar, utilizando métodos atuais. Com o crescente aumento de
pessoas tendo acesso à internet, seja por computadores, celulares, tabletes ou TV’s, a web
tomou proporções grandiosas, mas para manter essas páginas funcionando em perfeito estado,
devemos projetar uma página ou sistema, considerando as melhores tecnologias disponíveis
para tal, estudando as arquiteturas e técnicas para um bom desenvolvimento e garantir um
projeto final de qualidade. Este projeto foi elaborado através de pesquisas bibliográficas em
diversos livros, artigos, apostilas, buscando por atualizações em tutorias e aprofundado através
de cursos especializados nas tecnologias aplicadas no projeto prático.
Ao acessar qualquer página web, o que nos é mostrado são telas bem desenhadas,
diversos conteúdos bem agrupados e subdivididos, onde todos os recursos presentes na página
são bem redimensionados e bem-dispostos, com cada imagem e texto colocados em seus
devidos lugares. Em uma página simples da web ou em um sistema de pequeno/grande porte, a
parte visual trata-se da camada de apresentação da arquitetura de 3 camadas, conhecida como
front-end. Segundo Mazza (2010, p.2)
Seja um sistema interno de um banco, uma rede social, um grande portal de notícias
ou sites para campanhas de publicidade, o meio comum hoje em dia é a web, e é
bastante interessante ter uma ótima base de conhecimento sobre desenvolvimento
front-end (um dos termos usados para se referenciar a interface de uma aplicação)
para contribuir para o sucesso dos projetos que você estiver participando.
1. <!DOCTYPE html>
2. <html lang="pt-br">
3. <head>
4. <title>Título da página</title>
5. <meta charset="utf-8">
6. </head>
7. <body>
8. Aqui vai o código HTML que fará seu site aparecer.
9. </body>
10. </html>
5
O DOCTYPE não se trata de um elemento, mas sim uma instrução que diz ao navegador
que abaixo estão escritos códigos de marcação HTML e em qual versão será escrito, sendo
declarado obrigatoriamente no início de todas as páginas. Na marcação do HEAD, o cabeçalho
da página recebe configurações de controle do documento, criação de scripts e vinculação com
outros arquivos. Única configuração neste trecho que se torna visível para o usuário, é o
conteúdo demarcado entre as TAG <title> </title>, que exibe o nome da página na aba do
navegador.
No desenvolvimento front-end, a área mais trabalhada pelo codificador se encontra
demarcada entre a TAG <body> </body>, ou seja, o corpo da página no qual se encontra todo
o conteúdo que os usuários têm acesso. Compondo toda a interface visual do sistema, mostrando
informações legíveis para o leitor do documento, não se limitando apenas em textos, podendo
ser composto por imagens, áudios, vídeos, jogos e até mini aplicativos embutidos neste trecho.
Ao se tratar de um sistema web, entradas e saídas de dados informadas ou não pelos usuários,
são exibidos no corpo da página.
Contudo, o corpo é composto por diversas outras marcações, umas que permaneceram
de versões anteriores ao HTML5, e novas que surgiram nesta última versão, as quais compõe o
conceito de web semântica. Evitando a escrita repetitiva de divisões (TAG <div> </div>),
passando a receber nomes com significados não para o usuário final, mas sim, para sistemas
avançados de busca, que analisam toda a estrutura do documento. As marcações semânticas
surgiram para delimitar e distinguir cada parte do conteúdo escrito em um website, deixando a
codificação mais legível e de fácil interpretação. Adicionando à estrutura básica as seguintes
marcações dentro do corpo (<body> </body>):
1. <header> </header>
2. <aside>
3. <nav> </nav>
4. </aside>
5. <main>
6. <article>
7. <section> </section>
8. </article>
9. </main>
10. <footer> </footer>
6
Trata-se de uma plataforma criada pelo W3C, que serve para representar as estruturas
de marcações de arquivos HTML, XTML e XML, mostrando como estas estruturas são
interpretadas pelos navegadores. No entanto, DOM serve de base para o que realmente o
navegador monta na tela, a Árvore de Renderização. Segue uma representação da árvore DOM:
Esta estrutura é composta por propriedades, eventos e métodos que compõe as páginas
web, que no processo de interpretação feito pelo navegador, cria-se esta árvore de hierarquias
7
dos elementos, as quais podem ser manipuladas por linguagens de scripts, como é o caso do
JavaScript, que manipulam os comportamentos destes elementos.
Numa visão mais ampla, o DOM possui um nó principal chamado Node.h que é a base
deste modelo, contudo, ainda existem outros três nodos relevantes para a renderização das
páginas web, o document, element e text. No qual document é o nó mais importante abaixo do
node.h, responsável pelo documento em si. Enquanto o element trata todas as marcações do
documento, que são transformadas em elementos a serem manipulados. E o text, responsável
pelo conteúdo das TAGS, como por exemplo, um texto entre a marcação de parágrafo <p>
</p>. Estes elementos são manipulados por métodos que retornam seus respectivos valores, no
código a seguir, nota-se que o método .getElementsByTagName(“P”) aplicado ao documento
em si, retornará todas as TAGS de parágrafo, que serão mostradas no método alert().
1. paragraphs = document.getElementsByTagName("P");
2. // paragraphs[0] é o primeiro elemento <p>
3. // paragraphs[1] é o segundo elemento <p>, etc.
4. alert(paragraphs[0].nodeName);
O princípio inicial dos documentos HTML era apenas publicar textos tornando-os
públicos, sem qualquer tipo de formatação e sem mídias. Mas, devido a crescente popularização
desta tecnologia, foram surgindo algumas ideias para incrementar os documentos mais simples,
como mudar a cor da fonte, seu tamanho, colocar alguma cor de fundo da página ou inserir uma
imagem. Para fazer essa estilização básica, foram criadas novas TAGS e alguns atributos para
elas, contudo, se tornou um problema para os desenvolvedores front-end por não manter uma
padronização de conteúdos em todas as páginas, pois cada navegador da época interpretava de
uma forma, sendo necessário fazer as modificações manualmente em cada uma, tornando o
HTML mais complexo e difícil de manter.
Diante deste problema, em 1994 Håkon Wium Lie e Bert Bos começaram a desenvolver
o projeto da linguagem CSS (Cascading Style Sheets – Folha de Estilo em Cascata) para
formatação e estilização de informações. No ano seguinte, o projeto chamou a atenção do grupo
8
W3C que criou uma equipe dando continuidade ao projeto que, por conseguinte, em 1996 a
associação lançou a recomendação oficial do CSS Level 1 (CSS1).
Esta primeira versão veio parar separar o conteúdo de sua estilização, permitindo
adicionar cores, diferentes estilos de fontes e modelo de layout. Com isso, o HTML voltou a ter
sentido apenas de marcação e delimitador de conteúdo, deixando os estilos concentrados em
arquivos CSS. Por se tratar de um arquivo a parte, ele precisa ser referenciado dentro do
documento em que se deseja aplicar os estilos, dentro da TAG de cabeçalho é inserida a
marcação <link rel=”stylesheet” type=”text/css” href=”estilos.css”>, onde link trata-se do
nome da TAG, o atributo rel informação a relação entre a página atual com a qual está criando
o link, já o type define que tipo de arquivo se trata e por último o atributo href que informa o
caminho e o arquivo que se deseja aplica na página.
A segunda versão lançada em 1998, passou a ser suportada por quase todos os
navegadores da época, fornecendo meios mais poderosos para associar os estilos aos elementos.
Permitindo a utilização de espaços para definir mais de um elemento na regra, foram criadas
pseudo-classes para definir estados especiais aos elementos, passou a permitir a seleção de
elemento através da combinação atributo e valor entre diversas outras possibilidades (vide
documentação da W3C).
Atualmente esta tecnologia está em sua terceira versão, a qual ainda passa por processo
de estruturação final, e até o momento, todos os navegadores não são 100% compatíveis com
todas as regras CSS. Sendo possível selecionar os primeiros e últimos elementos, aplicar efeito
gradiente nos textos e elementos, as bordas passaram a suportar arredondamento, manipulação
da opacidade, aplicar rotação nos objetos, trabalhar com perspectiva e animações, entre outros
tipos de regras presentes nesta atual versão.
CSS é um aglomerado de regras, sendo estas aplicadas aos elementos (TAG) do HTML,
que podem receber diversas definições, como aplicação de cores de fonte, cor de background,
estilos de fonte, bordas e seus estilos, definir sombreamentos, efeitos de transição usado na
versão 3, transformar um elemento em outro, redimensionar imagens, trabalhar a adaptação das
páginas para diversos tamanhos de tela (conceito de responsividade) e diversas outras regras
presentes nesta tecnologia que estão em prol da estilização dos documentos. Por tratar as regras
de estilo, esta tecnologia é considerada a mais poderosa para designers web.
As regras possuem um padrão de escrita, onde é definido o seletor (elemento HTML),
entre chaves ({ }) tem-se as declarações de propriedades e seus respectivos valores, finalizando
a linha com ponto e vírgula (;). Como pode-se notar no código a seguir:
9
1. seletor {
2. propriedade: valor;
3. }
4. seletor1, seletor2 {
5. propriedade: valor;
6. propriedade: valor;
7. }
8. seletor1 seletor2 {
9. propriedade: valor;
10. }
3. #header { #header {
4. color: @color; color: #4D926F;
5. } }
6. h2 { h2 {
7. color: @color; } color: #4D926F; }
10
Documentos HTML e suas estilizações com CSS são estáticos, não possuem
interatividade com o usuário final, ou seja, os navegadores apenas vão interpretando a
codificação e exibindo na tela uma interface simples e estática. Para que fosse possível elevar
os websites para um novo nível, Brendan Eich desenvolveu no ano de 1995 quando trabalhava
na NetScape, a linguagem de script mais utilizada na web (lado do cliente) até os dias atuais, a
conhecida JavaScript ou JS. Porém, no início do projeto, a linguagem se chamava Mocha, que
posteriormente passou a se chamar de LiveScript, e finalmente levou o nome de JavaScript por
uma jogada de marketing da época com o tradicional Java. Mas, a verdadeira nomenclatura
desta tecnologia é ECMAScript, pois JavaScript é mantida por esta associação que padroniza
sistemas de informação e detém toda sua documentação. Segundo Douglas Crockford [2001],
citado por Plínio Balduino [2014]:
Vale ressaltar que JS e Java não são complementares, e muito menos diretamente
relacionadas, ou seja, Java é Java e JavaScript é JavaScript, ambas com suas particularidades e
11
Por mais que JavaScript seja simples, escrever diversas funções para manipular toda
uma estrutura de um website ou até um sistema, se torna cansativo e estressante. E como
existem diversos projetos que visam facilitar a vida dos desenvolvedores, eis que surge uma
nova ferramenta, a biblioteca jQuery, que por ironia, toda escrita na linguagem a qual veio para
facilitar. Vih Damarques (2012) diz, “jQuery é apenas JavaScript, e não é capaz de fazer nada
que o JavaScript não possa fazer”.
jQuery simplifica toda e qualquer manipulação de documentos HTML, assim como seus
eventos, interações com outras tecnologias, como o AJAX por exemplo, manipulação de
estilização, ainda traz diversas animações e graças a toda sua simplicidade, essa biblioteca
passou ser a mais utilizada no desenvolvimento front-end.
Por ser JS, os códigos devem ser escritos seguindo a mesma marcação para scripts em
HTM e todos os comandos utilizando esta biblioteca, devem iniciar com o nome da mesma, ou
utilizando o alias $(“elemento”). Para se ter certeza que todo documento (DOM) esteja
carregado, para então iniciar o processamento do jQuery, devemos selecionar o segundo nó –
document - principal da estrutura de modelo de objetos do documento, utilizando o seguinte
exemplo:
1. $(document).ready(function){}
Em conjunto com o jQuery básico, surge outra ferramenta muito utilizada criada sob o
núcleo da própria jQuery, a jQueryUI. Permitindo um maior nível de interação com o usuário,
adicionando diversas animações ao front-end, repleta de elementos gráficos para maximizar o
poder de sua antecessora. Permitindo ao desenvolvedor baixar componentes prontos para
incrementar a interface de sua página, alterando cores de fonte e de fundo, estilos de fonte,
bordas e ícones para menus por exemplo.
Possibilita trabalhar com efeitos de clicar com o mouse sobre um objeto e arrastá-lo pra
outro local, conhecido como Drag and Drop. Permite a criação de caixas de diálogos flutuantes,
chamadas de Modal Dialog, exibindo título, conteúdo, botões, alças para arrastar e soltar, etc.
Portanto, unindo estas duas tecnologias, desenvolver um front-end intuitivo e bem
interativo se torna mais fácil, pois já foram criados por outros desenvolvedores que passaram
pela mesma necessidade e não existir algo que o fazia.
2. O TRABALHO DO BACK-END
Dente as tecnologias, temos o PHP, Java, JSP, ASP, Ruby, dentre outras presentes neste
vasto ambiente de desenvolvimento. Tecnologias estas que tratam o dinamismo das páginas
que antes eram estáticas, retornando valores quando se faz uma busca e preenchendo uma tabela
com informações vindas do banco de dados, por exemplo.
Entre as tecnologias citadas anteriormente, a que possui maior índice de procura e está
sendo utilizada em maior escala no mercado de trabalho, é o Java, linguagem criada pela Sun
MicroSystems e pertencente a Oracle atualmente. Sendo considerada além de uma linguagem
de programação, como uma plataforma de desenvolvimento, graças a sua característica
multiplataforma é possível desenvolver para TV’s, desktop, celulares, trabalhar o back-end de
um site, entre outras.
A grande sacada desta tecnologia é suportar outras linguagens sem ser JAVA, como
Phyton, RUBY e Groovy sendo compatível ainda com qualquer sistema operacional existente,
que se torna tão compatível através do uso de sua máquina virtual para compilação dos
bytecodes.
Esta tecnologia é considerada como uma plataforma de desenvolvimento por seguir
algumas linhas de aplicabilidade, como o JSE (Java Standard Edition) sendo voltara para
aplicações desktop, o JME (Java Micro Edition) para sistemas embarcados e móveis, JEE (Java
Enterprise Edition) usada para aplicações web, JSP (Java Server Pages) que trabalha a dinâmica
dos dados dentro do HTML, JSF (Java Server Faces) é um framework designado para
desenvolver a cama de visão de um sistema e o Java Card que é voltado para desenvolvimento
de cartões inteligentes. Perante estas características, é possível notar o poder de fogo desta
16
plataforma. Três plataformas são voltadas para o desenvolvimento web, porém, o enfoque deste
trabalho será designado para o JEE e JSP.
JSP surgiu para contornar alguns problemas apresentados nos Servlets, evitando a
criação de diversas Servlets para trabalhar o dinamismo das páginas, com ele a programação
fica separada da tela, permitindo uma mistura de marcações HTML com códigos de Java,
assemelhando-se as tecnologias ASP e PHP. Nos permite aplicar condicionais, laços de
repetição e criação de varáveis, todo código Java inserido no documento deve vir dentro da
TAG <% %>, formando os códigos conhecidos como scriptlet (código pequeno). Mark
Szolkowski (2003, pag. 36) diz:
A JSP em si deve ser escrita por um desenvolvedor. Uma JSP desse tipo é uma mistura
de tags HTML estáticas, tags JSP e código Java, todos os quais são textos e, portanto,
podem ser escritos em qualquer editor de textos que você escolher.
1. <body>
2. Meu endereço IP é: "<%= request.getRemoteAddr() %>"
3. </body>
posterior manutenção. Para suprir este outro problema, a Sun desenvolveu outra metodologia
para reduzir códigos JSP, as conhecidas Expression Language, que são interpretados pelo
módulo de servlets container dos servidores web, dando um certo aspecto elegante a página
JSP.
Sua base é composta por três bibliotecas especializadas para auxiliar o desenvolvimento,
como a Active Record que faz o trabalho com o banco de dados, a Action View gera documentos
dinâmicos HTML e a Action Controller, manipulando as duas anteriores.
Yukihiro Matsumoto (2011), criador da linguagem Ruby descreve sua tecnologia como:
“O Ruby é simples na aparência, mas muito complexo no interior, tal como o corpo humano”.
Sua analogia condiz com o poder apresentado por essa linguagem multiplataforma, originando-
se através do que há de melhor de outras cinco linguagens (Smalltalk, Perl, Eiffel, Ada e Lisp),
seu criador buscava algo simples, mas poderoso. Sendo interpretada e totalmente orientada a
objetos, pois, tudo em Ruby é tratado como um objeto recebendo suas próprias ações e
características.
Ruby é visto como uma tecnologia bem flexível, deixando de lado certas restrições aos
programadores, permitindo que seja alterada ou removida partes essenciais da linguagem.
Possui uma sintaxe extremamente simples, dispensando o uso de ponto e vírgulas (;), de chave
({}) ou colchetes ([]) e um dos atrativos a mais desta tecnologia é a ferramenta para instalação
e atualização de bibliotecas desejadas em seu projeto, através do Ruby Gems.
CONSIDERAÇÕES FINAIS
mais espaço, e nos dias atuais tem se tornado um grande requisito mercadológico, graças a
evolução e tendências que nos é apresentada. Para ambas as áreas das tecnologias, seja front-
end ou back-end, existem dedicação e bastante estudo por parte do pessoal, levando em
consideração que não se deve conhecer de tudo um pouco, mas sim, se tornar excelente em
algo. Para iniciantes na web, é necessário ter pelo menos um projeto em seu portfólio, para que
se ganhe espaço neste nicho de tecnologias.
A gama de possibilidades é vasta, mas o codificador ou programador web deve saber
“falar a linguagem da web”, estar sempre atualizado com as melhores práticas, ferramentas e
tendências de mercado. Todas as tecnologias aqui apresentadas, deste o layout de tela até a
regra de negócio, possuem um grande histórico de usabilidade, e ainda estão presentes em
grandes projetos.
Desenvolver para a web não é obrigatoriamente ser codificador e desenvolvedor, podem
ser trabalhadas separadamente, contudo, saber front-end e conhecer back-end ou vice-versa, se
torna um diferencial a mais no currículo. Empresas já consolidadas, possuem seus sistemas já
em funcionamento e com equipe para garantir tal, cabendo aos novatos uma adaptação aos
padrões estabelecidos nos projetos, não bastando apenas conhecer a/as tecnologias, por trás
dessas linguagens e ferramentas, existem convenções de utilização que garantem maior chance
de sucesso quando aplicadas que devem ser estudadas.
REFERÊNCIAS
ADRIEL, Wendell. Sass vs. LESS vs. Stylus: Batalha dos Pré-processadores. Disponível
em: <http://tableless.com.br/sass-vs-less-vs-stylus-batalha-dos-pre-processadores/>. Acesso
em: 1 de outubro de 2016.
BALDUÍNO, Plínio. Dominando JavaScript com jQuery. São Paulo: Casa do Código,
2014.
CAVALCANTI, Lucas. VRaptor Desenvolvimento ágil para web com Java. São Paulo:
Casa do Código, 2013.
EIS, Diego. Guia Front-End: O caminho das pedras para ser um dev Front-End. São
Paulo: Casa do Código, 2015.
FERREIRA, Elcio; EIS, Diego. HTML5 Curso W3C Escritório Brasil. Disponível em:
<http://www.w3c.br/pub/Cursos/CursoHTML5/html5-web.pdf>. Acesso em: 16 setembro de
2016.
LOPES, Sérgio. CSS fácil, flexível e dinâmico com LESS. Disponivel em: <http://blog.caelu
m.com.br/css-facil-flexivel-e-dinamico-com-less/>. Acesso em: 2 de outubro de 2016.
NIEDERAUER, Juliano. Web interativa com Ajax e PHP. São Paulo: Novatec Editora,
2007.
MAZZA, Lucas. HTML5 e CSS3 Domine a web do futuro. São Paulo: Casa do Código,
2014.
SOUZA, Natan. CSS menos sofrido com Sass. Disponivel em: <http://blog.caelum.com.br
/css-menos-sofrido-com-sass/>. Acesso em: 2 de outubro de 2016.
SOUSA, Jailton. O que é Back-End ? - 05 Tudo que você precisa saber antes de estudar
programação. Dispoível em: <https://www.youtube.com/watch?v=JWUfoTARCtI>. Acesso
em: 18 de outubro de 2016.
SOUZA, Alberto. Java EE: Aproveite toda a plataforma para construir aplicações. São
Paulo: Casa do Código, 2015.
TEMPLE, André et al. Programação Web com Jsp, Servlets e J2EE. Disponível em:
<http://conteudo.icmc.usp.br/pessoas/mello/livro-j2ee.pdf>. Acesso em: 25 de outubro de
2016.
W3schools. The HTML DOM (Document Object Model). Disponível em: <http://www.
w3schools.com/js/js_htmldom.asp>. Acesso em: 23 de setembro de 2016.
ZEMEL, Tárcio. CSS Eficiente: Técnicas e ferramentas que fazem a diferença nos seus
estilos. São Paulo: Casa do Código, 2014.