JavaRush /Blogue Java /Random-PT /Parte 1. O que você precisa saber antes de aprender Sprin...

Parte 1. O que você precisa saber antes de aprender Spring e JavaEE

Publicado no grupo Random-PT
Se você já concluiu os estudos de Java SE ou está próximo disso, é hora de pensar nos próximos passos para conquistar a profissão de desenvolvedor Java. Parte 1. O que você precisa saber antes de aprender Spring e JavaEE - 1Por um lado, você já tem um bom conhecimento de Java: sabe trabalhar com o IDE, escrever programas e muito mais. Mas o que devemos fazer a seguir com eles, os programas? Como torná-los mais legais e “liberá-los para o mundo”? Torna-se óbvio que é hora de começar a estudar tecnologias empresariais. E é aqui que a diversão começa. Não importa com qual pilha de tecnologia você decida começar. Seja JavaEE ou Spring, você provavelmente encontrará muitas coisas que ainda estão além da sua compreensão. Entre o básico do Java e as tecnologias avançadas, ainda existe um nível intermediário de conhecimento que o ajudará a não perder os resquícios de autocontrole e autoconfiança ao ler documentação volumosa. Portanto, o objetivo desta série de artigos é fornecer o conhecimento teórico mínimo necessário para um estudo mais aprofundado de JavaEE ou Spring. Todo o material está dividido em 7 partes:
  1. Vamos falar um pouco sobre a rede.
  2. Consideremos a estrutura da arquitetura cliente-servidor e de três níveis.
  3. Vejamos os protocolos HTTP/HTTPS.
  4. Vamos aprender tudo o que você precisa saber sobre o Maven.
  5. Vamos falar sobre servlets.
  6. Contêineres de servlets.
  7. E finalmente - sobre MVC.

Parte 1. Vamos falar um pouco sobre a rede

Vamos começar com o mais importante e falar sobre a base sobre a qual são construídas todas as redes sociais, serviços e aplicativos web, mensageiros instantâneos e sites simples - sobre a rede ( no contexto desta série de artigos, o termo “rede” significa a Internet Global ). A rede consiste em um grande número de computadores: eles estão interligados e são capazes de se comunicar. É importante entender como eles fazem isso, porque as aplicações web são exatamente o que fazem para transferir informações de um computador para outro.

Modelo de rede OSI

O modelo OSI (Open Systems Interconnection) cria uma abordagem em camadas para construir uma rede. Mostra claramente como e em que nível os membros da mesma rede podem interagir entre si. No total, este modelo contém 7 níveis:
7 Aplicado
6 Representação
5 Sessão
4 Transporte
3 Rede
2 Duto
1 Físico
A divisão em camadas de abstração permite que especialistas que trabalham, por exemplo, na camada de transporte, não pensem nos detalhes da implementação da rede nas camadas de rede e de sessão. Essa abordagem também é usada na programação. Vamos dar uma olhada em todas as camadas do modelo OSI e descobrir quais delas são interessantes para nós:
  1. 1. Nível físico - aqui as leis da física fazem o seu trabalho, e a tarefa do homem é usar e direcionar isso para seus próprios propósitos. Por exemplo, criar cabos e colocá-los nos membros da rede.

    Não estamos interessados.

  2. Camada de enlace de dados - responsável por transmitir dados aos nós da rede e criar canais de transmissão de dados em objetos físicos.

    Нам не интересен, если только нет желания писать прошивку для каналообразующей аппаратуры.

  3. Сетевой уровень — для определения addressов отдельных пользователей сети и маршрутов к ним. На этом уровне стоит остановиться подробнее, а именно — на addressе пользователя в сети.

    Он определяется специальным протоколом: самый распространённый — IPv4 (Internet Protocol version 4). Именно его нужно использовать веб-программисту для обращения к другому абоненту сети.

    IPv4 состоит из четырех byteовых значений, разделенных точкой, например: 192.0.2.235. Стоит помнить, что значения byteовые, а значит, они лежат в пределах 0..255.

    IP-address, в свою очередь, делятся на классы, и просто так присвоить себе красивую комбинацию циферок не получится, но так сильно углубляться мы не станем. Достаточно понимать, что IP-address — это уникальный идентификатор абонента в сети, по которому мы сможем к нему обратиться.

  4. Транспортный уровень — занимается доставкой информации addressту. Для этого используются разные протоколы, которые нам пока не интересны. Гораздо больше нас интересует понятие, которое появляется на этом уровне, — port.

    Порты отвечают за идентификацию конкретного applications на компьютере. Например, ты написал чат на Java, установил на 2 компа и хочешь отправить своему собеседнику. Твое сообщение упаковывается, отправляется по конкретному IP-addressу, доставляется твоему собеседнику, но его ПК не знает, что делать с полученной информацией, так How не понимает, Howое приложение должно обработать твое сообщение. Для этого и указываются порты при общении абонентов в сети.

    Порт представляет собой число от 0 до 65535. Он добавляется к IP-addressу после двоеточия: 192.0.2.235:8080. Но нельзя использовать все порты из указанного диапазона: часть из них зарезервирована под операционную систему, еще часть принято использовать с конкретно оговоренной целью. В преднаmeaning разных портов углубляться не будем, пока достаточно понимать их роль в процессе общения в сети.

  5. Сеансовый уровень — создает и управляет сеансами связи приложений. На этом уровне становится возможным взаимодействие приложений, отправка requestов служебного уровня. Для нас важно знать, что на этом уровне между двумя абонентами открывается сессия (session), с которой нам часто придется работать.

    Сессия — сущность, которая создается при установке связи между двумя пользователями. В ней можно сохранять нужную нам информацию о юзере, об истории их взаимодействия. Важной деталью является то, что при остановке обмена информацией сессия не пропадает, а сохраняет свое состояние на протяжении установленного промежутка времени, поэтому пользователи могут продолжить обмен информацией после перерыва.

    Se uma aplicação se comunicar com vários usuários simultaneamente, será estabelecido um número apropriado de conexões e, portanto, de sessões. Cada sessão possui um identificador (ID) único , que permite à aplicação distinguir entre os usuários com os quais ocorre a comunicação.

  6. Camada de apresentação - responsável pela codificação/decodificação dos dados. Obviamente, se precisarmos enviar a string “Hello web” para outro usuário, ela primeiro é convertida (codificada) em código binário, e só depois enviada. Ao chegar ao destino, a mensagem é convertida novamente (decodificada) e o destinatário pode ver a string original. Essas ações ocorrem no nível da apresentação.

  7. A camada de aplicação é a camada mais interessante para nós. Ele permite que os aplicativos interajam com a rede. Neste nível iremos receber, enviar mensagens, fazer solicitações a serviços e bases de dados remotas.

    Existem muitos protocolos usados ​​neste nível: POP3, FTP, SMTP, XMPP, RDP, SIP, TELNET e, claro, HTTP/HTTPS. Um protocolo é um acordo universal ao qual aderimos ao redigir mensagens. Definitivamente falaremos sobre os protocolos HTTP/HTTPS separadamente e com mais detalhes.

Parte 1. O que você precisa saber antes de aprender Spring e JavaEE - 2 Não precisamos saber como funciona cada nível deste modelo. O principal é compreender os princípios de funcionamento dos elementos com os quais teremos que lidar ao escrever aplicações web, nomeadamente:
  • Endereço IP – o endereço do assinante na rede;
  • Porta — endereço do aplicativo de um assinante específico;
  • Sessão é uma entidade que existe durante toda a comunicação entre dois assinantes;
  • Os protocolos de aplicação (HTTP/HTTPS) são as regras que nos guiarão na hora de redigir e enviar mensagens.
Quando vamos, digamos, a uma loja online, indicamos a sua localização, endereço e porto. Na sua primeira visita é criada uma sessão na qual a loja pode registrar informações. Por exemplo, sobre as mercadorias que deixamos no carrinho. Se fecharmos a aba da loja online e depois voltarmos a ela, nossos produtos permanecerão no carrinho porque estão salvos na sessão. Bem, é claro, recebemos todas as informações que recebemos da loja através do protocolo HTTP/HTTPS, e nosso navegador pode processá-las. Você pode contestar e dizer que nunca inseriu o endereço e a porta no navegador, e estará parcialmente certo, porque inseriu o nome de domínio, que foi convertido no servidor DNS. Mas aqui, vamos dar uma olhada melhor no que é o quê.

DNS (sistema de nomes de domínio)

Como já descobrimos, cada assinante da rede possui um endereço único. Se estivermos falando de uma aplicação, seu endereço exclusivo será IPv4:port . Conhecendo este endereço, você pode acessar diretamente o aplicativo. Vamos imaginar que escrevemos uma aplicação web que exibe a temperatura média do ar em todos os países em tempo real. Implantamos em um servidor com endereço 226.69.237.119 e na porta 8080. Para que o usuário receba nossas informações, ele precisa inserir 5 números no navegador: 226.69.237.119:8080. As pessoas realmente não gostam de lembrar conjuntos de números: nem todos nós lembramos de mais de dois números de telefone. É por isso que o sistema de nomes de domínio foi inventado . Podemos criar um “alias” para nosso endereço – por exemplo, world-temperature.com – e em vez de nos procurar usando um endereço de cinco dígitos, o usuário pode digitar nosso nome de domínio na barra de endereço do navegador. Para combinar nomes de domínio e endereços reais, existem servidores DNS . Quando um usuário insere, por exemplo, javarush.ru no navegador, sua solicitação é enviada ao servidor DNS, onde se transforma em um endereço real. Parte 1. O que você precisa saber antes de aprender Spring e JavaEE - 4É importante entendermos isso, pois em nossas aplicações chamaremos serviços remotos tanto por nome de domínio quanto por endereço real, e serão os mesmos serviços. Isso é tudo! Neste artigo, examinamos os fundamentos do design de redes, que serão úteis antes de você começar a aprender programação web. Na próxima vez, veremos o que é arquitetura cliente-servidor e por que entendê-la é tão importante. Parte 2. Vamos falar um pouco sobre arquitetura de software. Parte 3. Protocolos HTTP/HTTPS Parte 4. Noções básicas do Maven Parte 5. Servlets. Escrevendo um aplicativo Web simples Parte 6. Contêineres de servlet Parte 7. Apresentando o padrão MVC (Model-View-Controller) Parte 8. Escrevendo um pequeno aplicativo Spring-Boot
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION