Javascript

O que é Javascript?

Javascript é uma linguagem de programação usada por donos de websites para escrever programas que rodam dentro do seu navegador de Internet quando você acessa as páginas do website, e que, hoje em dia, também é usada pra outros propósitos.

Tradicionalmente, uma linguagem de programação é chamada de linguagem de script se ela roda dentro de um outro programa. Como Javascript roda dentro do navegador, seria então uma linguagem de script. Outra linguagem de script seria Lua, que foi criada aqui no Brasil. Lua costuma ser usada para scripts de jogos de video-game, e não pode ser usada em um navegador.

O Javascript não tem nada haver com Java, que é uma outra linguagem de programação; é apenas o nome que é parecido.

Em uma página web, alguma interatividade é fornecida pelo navegador por padrão. Por exemplo, ao clicar em um link, o navegador vai para outra página. Porém, muita funcionalidade não é fornecida. Toda vez que você vai em um website e há uma barra de navegação com submenus que aparecem quando você flutua o cursor do mouse sobre a barra, essa funcionalidade estaria programada com Javascript. Tudo que "salva automaticamente" após um período de tempo é programado com Javascript. Se partes da página são carregadas assincronamente em vez da página inteira carregar de uma vez só, isso é Javascript. Toda rede social onde você tem um feed de posts, uma lista vertical, que é infinita para baixo, quando mais para baixo você vai, mais posts são carregados, isso é Javascript. Todo chat em um website é Javascript. Quase todo botão que faz algo acontecer, aparecer ou desaparecer, ou mudar de cor é Javascript.

Enfim, hoje em dia seria difícil achar um website que não tem Javascript rodando nele. Hoje em dia temos até aplicativos web, que seriam aplicativos programados inteiramente com Javascript, acessível em um website, como Discord e Spotify.

Embora que programas escritos com Javascript sejam tecnicamente programas, esses programas não possuem acesso aos seus arquivos diretamente como um aplicativo normal instalado no seu computador teria. Todo programa roda dentro de um ambiente que fornece ao programa funções que ele pode utilizar. No caso de aplicativos normais, o ambiente é o sistema operacional, e.g. o Windows. Para um programa acessar um arquivo no Windows, essa ação precisaria passar pelo Windows, o que significa que em alguns casos, como quando um programa tenta acessar arquivos protegidos do sistema, o Windows não permitira que o programa acesse tais arquivos sem permissão do administrador. No caso de programas em Javascript rodando no navegador, o ambiente é o navegador. A página só pode fazer o que o navegador permite, e o navegador não permite abrir ou salvar arquivos. É por isso que para abrir um arquivo em um aplicativo web, é necessário arrastá-lo para dentro da janela do navegador: o aplicativo web faria uso do mesmo método que existe para fazer o upload de arquivos, não existindo menu Arquivo -> Abrir... que faria aparecer uma caixa de diálogo. Para salvar, é necessário utilizar a função de "baixar" arquivos que o navegador fornece, e você só poderia escolher onde "baixar," não onde "salvar" como em um aplicativo comum. Também não é possível para um aplicativo web sobrescrever um arquivo já "baixado" da mesma forma que um aplicativo normal poderia sobrescrever um arquivo já salvo.

Isso tudo são medidas de segurança chamadas de sandbox ("caixa de area") do navegador. Milhões de dólares já foram investidos tornando navegadores seguros, com uma sandbox impossível de se escapar. Porém, segurança nunca é perfeita. É possível para um malware (um vírus) usar vulnerabilidades no navegador para escapar da sandbox, mas isso é bem raro e extremamente difícil de ocorrer. Se você conseguir programar algo em Javascript que saia da sandbox do Google Chrome, o Google lhe dará até 250 mil dólares1, equivalente a mais de um milhão de reais atualmente.

Referências

  1. https://bughunters.google.com/about/rules/chrome-friends/5745167867576320/chrome-vulnerability-reward-program-rules (acessado em 2024-08-28) ↩︎

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *