Os browsers são os softwares mais utilizados hoje em dia, sua principal função é apresentar os recursos da web selecionados pelo usuário trazendo as informações solicitadas de um servidor e apresentando elas na janela do navegador. Os principais recursos são documentos HTML, mas nem somente a HTML se resume o navegador, podemos ter arquivos em PDF, imagem e outros diversos tipos de conteúdo.
A forma como o navegador apresenta esses arquivos HTML é definida pela estrutura HTML e CSS definidas no documento, as principais especificações são definidas pela W3C, que padroniza a organização da web. Apesar de por anos os navegadores acatarem apenas uma parte das especificações e acabarem produzindo suas próprias, causando milhares de erros entre as páginas web, atualmente a maioria dos navegadores está em conformidade com essas especificações. Uma curiosidade é que apesar de não termos especificações para os browsers é comum perceber que há um padrão entre a interface dos navegadores e que eles seguem um padrão entre os elementos que foi aceito e que desde então vem sendo replicado pelos concorrentes.
Estrutura de alto nível
Os navegadores são formados por diversos elementos e cada um possui níveis de complexidade que podem ser definidos da seguinte forma:
User Interface: A interface do usuário é a parte visual que já conhecemos bem e que persistem na maioria dos navegadores, quando usamos um browser podemos facilmente identificar a barra de pesquisa, o botão para avançar e retroceder a página atual, o botão de favoritos e até mesmo um botão próprio para recarregar a página.
Browser Engine: Responsável por coordenar as ações entre a interface do usuário e as engrenagens que movem o motor de buscas do navegador.
Rendering Engine: É quem apresenta o conteúdo solicitado, como por exemplo, se o conteúdo for um HTML o renderizador analisa conteúdo HTML e CSS e apresenta esse conteúdo devidamente analisado na sua tela.
Networking: a rede de chamados, como por exemplo as requisições HTML, usando diferentes soluções para plataformas distintas mesmo que por trás de uma interface de plataforma independente.
User Interface Back-end: usado para construir componentes básicos, como caixas e janelas. Essa interface apresenta um modelo genérico que não é especifico de uma plataforma apenas. Por baixo dos panos ela utiliza métodos do sistema operacional do usuário.
JavaScript Interpreter: É literalmente quem traduz e executa código javascript para que o navegador possa utilizá-lo.
Data Storage: É uma camada onde o navegador retem os dados locais como os cookies. O browser também suporta mecanismos de armazenamento como o LocalStorage e o WebSQL por exemplo.
O navegador é bem mais complexo e possui diversas outras funcionalidades e componentes, mas esse assunto fica para outro artigo, hoje o mais importante é entender o que é um browser, para que ele serve e como funciona. E isso já conseguimos compreender, afinal vivemos em um mundo onde eles são tão essenciais ao ponto de não podermos nos imaginar sem eles.