Olá desenvolvedores, como está seu conhecimento sobre arquitetura de computadores, conceitos e fundamentos da programação? Tem interesse em aprender sobre estruturas de sistemas web e desktop? Então esta séria de artigos sobre programação e carreira é para você. Além de tudo que foi mencionado, vamos falar sobre a jornada do programador, sobre as etapas que compõem este processo.
Que tal saber mais sobre a mentalidade de programador? Sobre a mentalidade que você deve desenvolver para ter sucesso na carreira. Iremos abordar ainda a importância de se ter foco. Apontaremos um dos muitos caminhos que o levarão a se tornar um desenvolvedor web bem sucedido. Por onde começar? E quais objetivos estabelecer? São perguntas que permeiam o pensamento do programador iniciante e que causam muitas dúvidas. Antes de falarms sobre programação e carreira vamos começar aprendendo sobre alguns conceitos.
SISTEMA DESKTOP vs SISTEMA WEB
No ecossistema de programação é importante distinguir sistemas desktops de sistemas web.Aplicações desktop são aquelas que rodam diretamente na máquina do usuário, sendo necessária a instalação prévia do programa para que possam ser executadas. Neste cenário, suponha três usuários em três estações de trabalho distintas. Assim para que todos os usuários possam acessar o sistema, o mesmo deverá ser instalado em cada uma das estações.
Se a empresa tem dez funcionários e o seu sistema de trabalho é desktop, o sistema deverá ser instalado em cada uma das máquinas, ou seja, dez instalações serão feitas. Neste contexto, é comum acontecer de ter o banco de dados instalado na própria máquina do usuário, principalmente quando se trata de pequenos negócios.
No entanto em empresas de médio e grande porte, o mais comum é a existência de uma máquina dedicada para ser o servidor de banco de dados. Dessa forma, os funcionários, mesmo tendo o sistema instalado em loco, ou seja, individualmente em cada máquina, acessarão os dados no servidor de banco de dados.
O acesso ao servidor de banco de dados se dará pelo IP – Internet Protocol (Protocolo de Internet), configurado em cada máquina, tornando possível a comunicação entre ambas as máquinas. Este compartilhamento é necessário porque os dados gerados em cada máquina precisam ser compartilhados e atualizados em único local para evitar redundância e inconsistência de dados.
A desvantagem de um sistema desktop reside na necessidade de constante reinstalação do sistema. Visto que sempre que houver um problema com a máquina, seja um HD – Hard Disk que precisa ser substituído, formatação entre outros, o sistema deverá ser reinstalado e novamente configurado.
CAMADAS DE UM SISTEMA DESKTOP
Como se dá a divisão de um sistema desktop desenvolvida com a linguagem de programação Java? Bem, podemos entender essa divisão como sendo em duas camadas. Onde a camada um refere-se ao desenvolvimento com Java. E a camada dois é destinada ao banco de dados, o SGBD hospedado em outra máquina (servidor), com qual o sistema se comunica.
O sistema desktop é desenvolvido utilizando a API Swing que é a principal biblioteca para criação de aplicações desktop com Java. Com o swing é possível desenvolver aplicações com uma interface amigável e interativa.
É na camada um que encontraremos as classes, os models, serviços e ainda um pouco de código SQL, por onde serão feitas as requisições ao banco de dados. Dessa forma cabe a camada dois gerir toda essa comunicação por meio do Sistema de Gerenciamento de Banco de Dados – o SGBD, por onde serão feitas a partir das orientações via servidor, a inserção, atualização, seleção e exclusão dos dados. Ou como é comumente conhecido o CRUD.
SISTEMA WEB
Aqui, em sistemas web ao contrário de como é com os sistemas desktops não importa quantas máquinas terão acesso a ele. O sistema será instalado em apenas uma única máquina, ou seja, em um servidor dedicado que poderá estar em qualquer lugar do mundo. Entretanto, sistema e banco de dados poderão compartilhar este mesmo servidor a partir do qual trocarão informações.
Este servidor poderá estar em qualquer lugar do mundo, é verdade, mas também poderá estar no ambiente da própria empresa. E via de regra trata-se de uma máquina mais robusta do que as usualmente utilizadas pelos funcionários da empresa. E isso se justifica pelo fato de que este sistema poderá ser acessado por dezenas, centenas ou até milhares de pessoas.
Quanto a estação de trabalho dos funcionários, a única condição de acesso ao sistema é ter um navegador web instalado na máquina. Obviamente, abstraímos neste momento as questões de segurança e permissões de acesso. Questões que serão resolvidas no próprio sistema, quando da sua configuração no servidor.
Ao sistema será atribuído um domínio (endereço web) a partir do qual poderá ser acessado de qualquer lugar do mundo. É claro, desde que o servidor que o hospeda não esteja em uma intranet (rede local). Outra forma de acessar o sistema é por meio do endereço IP – Internet Protocol do servidor que o hospeda, por exemplo, 198.100.50.10/nome_sistema. Entre os muitos exemplos de sistemas/plataformas web que você acessa podemos citar o Facebook, o Youtube, Evernote. O Evernote é um sistema/app onde você pode armazenar e anotar tudo desde momentos pessoais até projetos de negócios.
E esta é a grande vantagem de um sistema web, que além da praticidade possibilidade a sincronização dos dados por meio do servidor. Tudo instalado em uma única máquina.
CAMADAS DE UM SISTEMA WEB
E a cereja do bolo é que um sistema web pode ser acessado por qualquer plataforma conectada ao World Wide Web, seja um computador desktop, um laptop, smartphone ou tablet.
O sistema web é composto por duas camadas, é importante ressaltar que estamos avaliando tais camadas em um alto nível de abstração. Assim, grosso modo, a camada um de um sistema web, tal como um sistema desktop, é a camada do lado do usuário. É o famoso Front-end, a parte com a qual o usuário interage com o sistema, por meio do navegador web, que pode ser o Google Chrome, Mozilla Firefox, Opera, Safari entre outros.
Essa camada é composta pelo HTML – HyperText Markup Language (linguagem de marcação de texto), CSS – Cascading Style Sheets, que é mecanismo responsável por adicionar estilo as páginas web. E por fim, a linguagem de programação interpretada e estruturada JavaScript, que aliás é considerada uma das três principais linguagens da web.
Assim, a camada dois, que está do lado do servidor é o back-end, o que está por traz do sistema, a parte que o usuário não enxerga, mas que é a responsável pelo perfeito (ou não) funcionamento de todas as engrenagens que compõem o sistema. Porém, neste caso é no lado do servidor que iremos encontrar o sistema propriamente dito, o banco de dados, toda a infraestrutura web no entorno do sistema, estão deste lado.
Ao usuário, cabe apenas acessar por meio do seu navegador preferido. Alguns, sistemas, vale ressaltar, são projetados para funcionar melhor em dado browser, mas este é um detalhe a parte.
EM POUCAS PALAVRAS
Quando estiver desenvolvendo um sistema web, você observará que a própria estrutura do projeto já é dividida em duas partes. Isto é, em Front-end, páginas web, e Back-end onde além do banco de dados se encontra todo o ecossistema referente ao Java. E a lógica de funcionamento é bem simples, o cliente faz a requisição via Front-End e o Back-end processa esta requisição para então enviar a resposta.
Ter esta divisão e o modo como as coisas acontecem bem definidas na mente, será de extrema importância na hora de programar. Até mesmo para que você possa se orientar e saber quais decisões tomar, a partir do entendimento de como a estrutura funciona, e como se dá a comunicação entre Front e Back-end. Eu fico por aqui e nos vemos em um próximo tutorial, onde falaremos um pouco mais sobre programação e carreira.