Breve história da Web
Last updated
Last updated
No final dos anos 80, Tim Berners-Lee, um developer da CERN, uma agência europeia de pesquisa nuclear, decide explorar um tipo de documento em uma arquitetura cliente-servidor TCP/IP da época.
A este documento, é trazida uma ideia até antiga da década de 30, de conter textos que podem conter apontamentos para outros textos, através de links. Esta capacidade de fazer link de um texto a outro é chamada de hyperlink, e o texto que contêm hyperlinks é chamado de hypertexto.
O objetivo desta exploração era que esses documentos pudessem conter informação pública, através de uma rede global de computadores descentralizada, favorecendo a pesquisa e partilha de conhecimento.
Buscava-se então uma forma de padronizar a comunicação destes documentos através da internet, estabelecendo protocolos e convenções para que diferentes aplicações pudessem utilizar a mesma interface.
Com isto em mente, foi estabelecido um conjunto de regras, através de um protocolo bem definido:
era necessário que a informação trafegasse pela internet, através de TCP/IP
era também preciso garantir a entrega da mensagem na ordem, portanto para transporte, seria necessário utilizar o protocolo TCP
a comunicação teria 2 tipos de mensagens: request e response
a mensagem iria ter um padrão rigoroso de formato, com introdução, cabeçalhos e corpo (conteúdo)
o conteúdo da mensagem precisaria ser hypertexto
por ser um protocolo por cima do TCP, no conjunto TCP/IP este protocolo estaria na camada de Aplicação
Este protocolo tem um nome, Hypertext Transfer Protocol, ou simplesmente HTTP. Nasce, então, a World Wide Web.
O primeiro web browser criado por Tim Berners-Lee e que deu início à Web era chamado WorldWideWeb, mas posteriormente foi renomeado para Nexus.
O tipo de conteúdo na mensagem HTTP precisava ter alguma garantia semântica, ou seja, os elementos da página no web browser tinham de serem marcados para que o browser pudesse colocar a formatação devida.
Com isto, como parte do projeto, surge o HTML, ou Hypertext Markup Language, que é uma linguagem de marcação para documentos Web.
Mas os elementos HTML não definem apresentação, posicionamento e estilo. Para isto é necessário uma ferramenta adicional ao HTML, para que os elementos sejam apresentados de forma adequada e que a plataforma Web pudesse evoluir ao longo do tempo.
Cascading Stylesheet, ou CSS, é uma linguagem de stylesheet utilizada no projeto para que os elementos HTML possam ser apresentados de acordo com a necessidade do website.
Com isto, os elementos podem ser posicionados à esquerda, ao topo, terem cores variadas etc, dando assim uma característica mais amigável para usuários da Web.
HTML e CSS foi um grande avanço para a partilha de documentos hypertexto, mas as páginas eram estáticas e não traziam funcionalidades dinâmicas.
Esta época foi marcada pela batalha de web browsers.
Um notório browser, chamado Mosaic, possuía interface gráfica e permitia renderização de imagens no HTML e submissão de formulários.
Os developers do Mosaic, atuando na Netscape, criaram depois o Navigator, que tinha uma melhor aparência que o Mosaic, o que o fez se tornar o principal web browser na época.
Com a necessidade de trazer mais dinamismo para as páginas Web, os developers do Navigator decidiram criar rapidamente um protótipo de uma linguagem de programação para a web. Temos, então a linguagem LiveScript, que pouco tempo depois foi renomeada para Javascript.
Em paralelo, a Microsoft entrou na onda e criou o Internet Explorer, e após fazer uma engenharia reversa do Navigator, criaram a própria linguagem de programação, chamada de JScript.
Esta batalha entre IE e Navigator deixou os developers da Web com o trabalho de terem que optar por suportar um dos browsers, já que utilizavam motores de renderização diferentes, bem como uma linguagem de programação diferente. No pior dos casos, developers tinham de suportar ambos browsers.
Era preciso padronizar.
European Computer Manufacturers Association, ou ECMA, é uma organização sem fins-lucrativos criada nos anos 60 que tem por intuito criar padrões e estabelecer convenções de nomes para serviços de comunicações, engenharia e tecnologia.
Em 1997, Netscape submete Javascript à ECMA, pelo que é aceito e ganha o nome ECMA-262, ou ECMAScript.
Apesar da Netscape ter padronizado o ECMAScript, a Microsoft conseguiu uma grande fatia do mercado e dominou o mercado web até 2004.
Em 2004 a Mozilla, sucessora do Netscape, lança o Firefox, que consegue buscar uma grande parte do mercado.
Um ano mais tarde, em 2005, Mozilla se junta à ECMA International e começa a dar mais atenção ao desenvolvimento do ECMAScript, que estava estagnado.
Conforme os anos foram se passando, o trabalho feito na especificação do ECMAScript foi evoluindo, passando por ECMAScript 4 (ou ES4), depois ES5 e assim por diante. E com isso, a Web foi ficando mais padronizada, encerrando uma década de batalha de browsers.
Google também trouxe em meados dos anos 2000 o Chrome, contando com um runtime sofisticado com Just-In-Time compilation (JIT), chamado de V8, e que interpreta ECMAScript.
Não obstante, o IE chegou ao fim mas a Microsoft continuou desenvolvimento criando o Edge, um web browser que utiliza um motor baseado no Google Chrome, o Chromium.
A Web estava mais dinâmica mas faltava uma melhor interação entre browsers e servers, mas a exigência de interfaces ricas, ou rich interfaces, fez com que novos desenvolvimentos em volta da Web fossem feitos.
A página era servida e, a cada vez que o usuário precisava de novas informações na mesma página, era feito outro pedido ao server, causando um recarregamento completo da página novamente. Isto trazia alguns problemas de usabilidade e a Web precisava evoluir.
Em paralelo, havia uma API criada pela Microsoft nos anos 2000 chamada XMLHttpRequest, ou XHR, que permitia fazer chamadas assíncronas ao servidor, trazendo como resposta uma informação com formato XML, que posteriormente foi incorporado também suporte a JSON e outros formatos.
Ainda em meados dos anos 2000, Jesse James Garrett, um web designer e desenvolvedor web, traz a ideia de um conjunto de ferramentas em volta da Web que permitem que o browser possa fazer um pedido assíncrono ao server e renderizar apenas uma parte da página, melhorando a usabilidade dos usuários de websites.
Então, esta ideia busca unificar Javascript e XHR para resolver o problema de carregamento completo da página.
Surge então o Asynchronous Javascript and XML, ou AJAX.
Após isto, o mercado e comunidade web começam a trabalhar em ferramentas para abstrair complexidade em volta do AJAX e assim, permitir uma melhor experiência ao developer (DX) bem como compatibilidade com diversos browsers à medida que ECMAScript ia sendo evoluída.
Criam-se então ferramentas que abstraem complexidade, também chamadas de bibliotecas ou frameworks, sendo as pioneiras JQuery, Prototype a MooTools.
Por volta de 2010, o desenvolvimento do ECMAScript vai amadurecendo, trazendo compatibilidade com diversos browsers bem como uma API mais rica e versátil. Assim, surge o ES6, que revoluciona a indústria Web.
Apesar da maturidade do ES6, a indústria fez um movimento em direção à ideia de, ao invés de carregar páginas à medida que o usuário clica nos links, carregar todo o site (páginas HTML, CSS e Javascript) no primeiro request, trazendo para o usuário uma experiência "nativa" no web browser, como se estivesse navegando em uma aplicação sem carregamento de páginas.
Isto foi possível graças ao AJAX.
Então, frameworks SPA como Backbone são criados. Mais tarde, Ember, AngularJS, React, Vue etc. Bom, o resto é história.