Escolar Documentos
Profissional Documentos
Cultura Documentos
Hibernate
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
HIBERNATE
O Hibernate é uma tecnologia já consolidada para trabalho com bancos de dados. A sua
função básica é permitir a comunicação entre um programa Java e um banco de dados de
uma maneira mais simples, isso por meio de uma visão orientada a objetos, que trabalha com
banco de dados relacional e abstrair muitas das operações feitas nele. Assim, o Hibernate
será o responsável por fazer a tradução dos comandos da alto nível oriundos da linguagem
Java e o banco de dados relacional.
Bibliografia
ANOTAÇÕES
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O que é Hibernate?
É um serviço de consulta e persistência Objeto/Relacional de alto desempenho, de
código-fonte aberto.
5m
Nesse sentido, o usuário poderá fazer consultas em seu banco de dados, ou seja, recu-
perar entidades que estão nesse banco de dados. Ele transforma objetos em comandos rela-
cionais e vice-versa.
O Hibernate não apenas cuida do mapeamento de classes Java para tabelas de banco
de dados (e de tipos de dados Java para tipos de dados SQL), mas também fornece recursos
de consulta e recuperação de dados.
ANOTAÇÕES
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O que é JDBC?
JDBC significa Java Database Connectivity. Ele fornece um conjunto de APIs Java para
acessar os bancos de dados relacionais a partir de um programa Java. Essas APIs Java per-
mitem que programas Java executem instruções SQL e interajam com qualquer banco de
dados compatível com SQL.
O JDBC é considerado a forma mais simples de acessar um banco de dados. Assim,
quando não se está trabalhando com o Hibernate, se está trabalhando diretamente sobre o
JDBC. Na realidade, o Hibernate será uma abstração sobre o JDBC.
10m
O JDBC fornece uma arquitetura flexível para escrever um aplicativo independente de
banco de dados que pode ser executado em diferentes plataformas e interagir com diferentes
DBMS sem qualquer modificação (desde que não sejam utilizados comandos SQL que são
específicos de um determinado banco de dados).
Vantagens do JDBC
Desvantagens do JDBC
• Complexo se for usado em grandes projetos (isso porque será necessário escrever
muitas SQLs diferentes);
• Grande sobrecarga de programação;
• Sem encapsulamento;
• Difícil de implementar o conceito MVC;
• A consulta é específica do DBMS.
Ao utilizar o Hibernate, o programador possui menos controle sobre o SQL que está sendo
gerado. Assim, existem casos em que pode ocorrer algum tipo de queda de performance se o
Hibernate não for bem utilizado, pois ele pode começar a fazer algumas consultas um pouco
bagunçadas ou corrigidas. No entanto, é possível corrigir esses problemas.
ANOTAÇÕES
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Exemplos
Java:
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
CONFLITOS
Granularidade: pode existir um modelo de objeto, que tem mais classes do que o número
de tabelas correspondentes no banco de dados.
Herança: os RDBMSs não definem nada semelhante a herança, que é um paradigma
natural em linguagens de programação orientadas a objeto.
Identidade: um RDBMS define exatamente uma noção de 'igualdade': a chave primária.
Java, no entanto, define tanto a identidade do objeto (a == b) quanto a igualdade do objeto
(a.equals(b)).
Associações: linguagens orientadas a objetos representam associações usando refe-
rências de objetos, enquanto um RDBMS representa uma associação como uma coluna de
chave estrangeira.
20m
Navegação: as formas de acessar objetos em Java e em RDBMS são fundamentalmente
diferentes.
O Object-Relational Mapping (ORM) é a solução para lidar com as incompatibilidades
descritas. O ORM não existe apenas para o Java. Há várias linguagens que possuem o seu
ORM definido.
O que é ORM?
ORM significa Object-Relational Mapping (ORM) é uma técnica de programação para
converter dados entre bancos de dados relacionais e linguagens de programação orientada
a objetos, como Java, C# etc.
ANOTAÇÕES
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Vantagens de um ORM
• Permite que o código de negócio acesse objetos em vez das tabelas do banco de dados;
• Oculta detalhes de consultas SQL da lógica OO;
• Baseado no JDBC;
• Elimina a necessidade de lidar com a implementação do banco de dados;
• Entidades baseadas em conceitos de negócios em vez de estrutura de banco de dados;
• Gerenciamento de transações e geração automática de chaves;
• Desenvolvimento rápido da aplicação.
Composição de um ORM
Uma API para executar operações CRUD (Create/Retrieve/Update/Delete) básicas em
objetos de classes persistentes. Uma linguagem ou API para especificar consultas que se
25m
referem a classes e propriedades de classes. Um recurso configurável para especificar meta-
dados de mapeamento. Uma técnica para interagir com objetos transacionais para execu-
tar dirty checking, lazy fetching, e outras funções de otimização. O dirty checking verifica a
necessidade de fazer a atualização de um objeto no banco de dados após alguma alteração.
Já o lazy fetching permite que a busca de endereços no SLQ não seja feita de forma prévia,
isso para não sobrecarregar demais a memória do sistema.
ANOTAÇÕES
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Hibernate
Hibernate é uma solução Object-Relational Mapping (ORM) para JAVA.
O Hibernate mapeia classes Java para tabelas de banco de dados e de tipos de dados
Java para tipos de dados SQL, liberando o desenvolvedor da maioria das tarefas comuns de
programação relacionadas à persistência de dados.
O Hibernate localiza-se entre os objetos Java e o servidor de banco de dados para lidar
com todos os trabalhos de persistir esses objetos com base nos mecanismos e padrões de
O/R apropriados.
30m
Vantagens do Hibernate
• Cuida do mapeamento de classes Java para tabelas de banco de dados usando arqui-
vos XML e/ou anotações;
• Fornece APIs simples para armazenar e recuperar objetos Java diretamente para e do
banco de dados;
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (2010/FCC/TRT – 22ª REGIÃO (PI)/TÉCNICO JUDICIÁRIO – TECNOLOGIA DA IN-
FORMAÇÃO) Hibernate é um framework
35m
a. que separa as funções que envolvem a construção de aplicações Web, através da
associação dos eventos do lado cliente com os manipuladores dos eventos do lado
do servidor.
b. pelo qual o programador utiliza a infraestrutura do servidor de aplicação voltada
para o desenvolvimento de aplicações de missão crítica e de aplicações empresa-
riais em geral.
ANOTAÇÕES
8 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
O objetivo do Hibernate é diminuir a complexidade entre os programas Java que precisam
trabalhar com um banco de dados do modelo relacional.
GABARITO
1. e
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
9 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
HIBERNATE II
Arquitetura
O Hibernate possui uma arquitetura em camadas que ajuda o usuário a operar sem pre-
cisar conhecer as APIs profundamente.
O Hibernate faz uso do banco de dados e dados de configuração para fornecer serviços
de persistência (e objetos persistentes) para o aplicativo.
Obs.: essas camadas irão refletir na própria API do Hibernate e na forma como serão feitos
os acionamentos. Além disso, o Hibernate precisa de alguns metadados (ou informa-
ções adicionais) para saber como realizar os mapeamentos.
5m
Objeto Configuration
É o primeiro objeto do Hibernate que se cria e, geralmente, é criado apenas uma vez
durante a inicialização do aplicativo. Representa um arquivo de configuração ou proprieda-
des requerido pelo Hibernate.
O objeto Configuration fornece dois componentes de chaves:
ANOTAÇÕES
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Objeto SessionFactory
O objeto Configuration é usado para criar um objeto SessionFactory que, por sua vez,
configura o Hibernate para o aplicativo usando o arquivo de configuração fornecido e permite
que um objeto Session seja instanciado. O SessionFactory é um objeto seguro para threads
e usado por todas as threads de um aplicativo.
O SessionFactory é um objeto pesado; geralmente é criado durante o início do aplicativo
e mantido para uso posterior. É necessário um objeto SessionFactory por banco de dados
usando um arquivo de configuração separado. Portanto, se forem usados vários bancos de
dados, será necessário criar vários objetos SessionFactory.
Objeto Session
É utilizado para obter uma conexão física com um banco de dados. O objeto Session é
leve e projetado para ser instanciado toda vez que uma interação é necessária com o banco
de dados. Objetos persistentes são salvos e recuperados através de um objeto Session.
Não devem ser mantidos por um longo tempo, pois eles geralmente não são seguros
para threads e devem ser criados e destruídos conforme necessário.
10m
Objeto Transaction
Representa uma unidade de trabalho com o banco de dados e a maior parte do RDBMS
suporta a funcionalidade de transação. As transações no Hibernate são tratadas por um
gerenciador de transações (de JDBC ou JTA).
Este é um objeto opcional e os aplicativos do Hibernate podem optar por não usar essa
interface, em vez de gerenciar transações em seu próprio código de aplicativo.
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
volta ao estado original. Exemplo: uma pessoa faz uma compra e, após isso, o sis-
tema dá baixa no estoque, faz o pagamento e gera o pedido. Caso se esteja dentro
de uma transaction, se alguma dessas operações falhar, o sistema automaticamente
desfaz as demais operações dentro do banco de dados ou não persiste com essas
operações.
Objeto Query
Usam SQL ou Hibernate Query Language (HQL) para recuperar dados do banco de
dados e criar objetos.
Uma instância de Query é usada para vincular parâmetros de consulta, limitar o número
de resultados retornados pela consulta e, finalmente, executar a consulta.
Configuration
O Hibernate precisa conhecer antecipadamente onde encontrar as informações de mape-
amento que definem como as classes Java se relacionam com as tabelas do banco de dados.
O Hibernate também requer um conjunto de configurações relacionadas ao banco de
dados e outros parâmetros relacionados.
Todas essas informações são geralmente fornecidas como um arquivo de propriedades
padrão do Java chamado hibernate.properties ou como um arquivo XML denominado hiber-
nate.cfg.xml.
A maioria das propriedades recebe seus valores padrão e não é necessário especificá-los
no arquivo de propriedades, a menos que seja realmente necessário. Esse arquivo é mantido
no diretório raiz do caminho de classe do aplicativo.
15m
ANOTAÇÕES
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Principais propriedades:
Sessions
É a principal interface de runtime entre um aplicativo Java e o Hibernate. Essa é a classe
de API central que abstrai a noção de um serviço de persistência.
O ciclo de vida de uma sessão é limitado pelo início e final de uma transação lógica.
(Transações longas podem abranger várias transações do banco de dados.).
A principal função da Sessão é oferecer operações de criação, leitura e exclusão para
instâncias de classes de entidades mapeadas.
Instâncias podem existir em um dos três estados a seguir em um determinado momento:
• transient – Uma nova instância de uma classe persistente, que não está associada a
uma Sessão e não possui representação no banco de dados, e nenhum valor de iden-
tificador é considerado transitório pelo Hibernate;
• persistent – Uma instância transiente pode se tornar persistente, associando-a a uma
sessão. Uma instância persistente tem uma representação no banco de dados, um
valor identificador e está associada a uma sessão;
• detached – Assim que é fechada a sessão do Hibernate, a instância persistente se
tornará uma instância desanexada.
20m
Obs.: é muito importante conhecer esses três estados de uma instância, pois são cobra-
dos em prova. Assim, vale lembrar que o estado transient é aquele que não possui
nenhum tipo de ligação, o estado persistent é quando está ligado a alguma sessão e
que o estado detached ocorre quando está ligada, mas a sessão já encerrou.
ANOTAÇÕES
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Exemplo:
Classe Persistente
O objetivo principal do Hibernate é pegar os valores dos atributos de classe Java e per-
sisti-los em uma tabela de banco de dados. Um documento de mapeamento ajuda o Hiber-
nate a determinar como extrair os valores das classes e mapeá-los com a tabela e os campos
associados.
As classes Java cujos objetos ou instâncias serão armazenados em tabelas de banco de
dados são chamadas de classes persistentes no Hibernate. O Hibernate funciona melhor se
essas classes seguirem algumas regras simples, também conhecidas como modelo de pro-
gramação Plain Old Java Object (POJO).
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: nesse sentido, o Hibernate cria uma espécie de “envelope” ao redor da classe e é
importante que essa classe não seja declarada como final, pois, caso isso aconteça,
o Hibernate não conseguirá fazer o seu trabalho.
Exemplo:
DIRETO DO CONCURSO
25m
1. (CESPE/TCE-PA/AUDITOR DE CONTROLE EXTERNO–ÁREA INFORMÁTICA–ANA-
LISTA DE SISTEMA/2016) No que se refere ao desenvolvimento de sistemas e às lin-
guagens de programação Java e JavaScript, julgue o item a seguir.
Empresa de desenvolvimento que opte pela utilização do Hibernate em seus sistemas
enfrentará dificuldades à medida que seus projetos forem crescendo, devido ao fato de
o Hibernate ser considerado inapropriado para a execução de trabalhos em uma arqui-
tetura altamente escalável.
ANOTAÇÕES
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
Quanto maior é o projeto, mais recomendado é utilizar o Hibernate, pois, dessa forma, é
possível fazer correções de código de uma forma muito mais simples e sem a necessidade
de manipular uma grande quantidade de instruções SQL.
COMENTÁRIO
Caso o objeto já tenha persistido, na realidade, ele estará em outro estado. Um objeto tran-
sient é aquele que ainda não foi persistido.
GABARITO
1. E
2. E
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
HIBERNATE III
Configurações do Hibernate
Para fazer isso, haverá um arquivo no projeto chamado hibernate.cfg.xml no diretório src/
main/java.
Exemplo de código:
5m
Nesse sentido, são duas as configurações principais:
• hibernate.cfg.xml, que será a configuração do banco de dados; e
• Configurações de cada classe: a forma mais simples é mapear uma classe para uma
tabela do banco de dados. Por padrão, uma classe estará relacionada a uma tabela no
banco de dados que foi configurado.
Existem duas formas de fazer essa configuração. A mais antiga é a que utiliza arquivos
XML, que é suportada até hoje. A outra forma é via anotation, que será estudada mais adiante.
ANOTAÇÕES
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Arquivos de Mapeamento
Exemplo:
Empregado.java
Empregado.hbm.xml
10m
ANOTAÇÕES
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
SQL:
Exemplo.java
ANOTAÇÕES
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
SQL
Com base nesse código, percebe-se que o Hibernate cuidou de toda a parte de persistên-
cia do projeto, montando o SQL e criando as tabelas dentro da estrutura do banco de dados.
Detalhando:
Empregado.hbm.xm
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: é comum que o próprio banco de dados tenha um mecanismo de geração de ID.
O elemento <property>é usado para mapear uma propriedade de classe Java para uma
coluna na tabela do banco de dados. O atributo "name" do elemento refere-se à propriedade
na classe e o atributo "column" refere-se à coluna na tabela do banco de dados. O atributo
"type" contém o tipo de mapeamento do Hibernate. Esses tipos de mapeamento converterão
do tipo de dados Java para SQL.
Obs.: atualmente, não é mais recomendado utilizar a estratégia de mapeamento por XML.
A preferência é para o mapeamento via anotações. Isso porque os arquivos XML
são criados como arquivos separados, o que gera bastante verbosidade e pode ocor-
rer algum desencontro entre os arquivos. Já no caso das anotações, não será criado
esse arquivo de mapeamento para todas as classes, sendo que na própria classe
serão utilizadas várias anotações, que serão os metadados do Hibernate.
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Exemplo:
Empregado.java
Anotação @Entity
20m
As anotações padrão do EJB 3 estão contidas no pacote javax.persistence, portanto
importamos este pacote como a primeira etapa.
Segundo, usamos a anotação @Entity para a classe Empregado, que marca essa classe
como um bean de entidade, portanto ela deve ter um construtor sem argumento que seja
visível com pelo menos escopo protegido.
Anotação @Table
A anotação @Table permite que se especifique os detalhes da tabela que será usada
para persistir a entidade no banco de dados.
A anotação @Table fornece quatro atributos, permitindo que se substitua o nome da
tabela, seu catálogo e seu esquema e imponha restrições exclusivas às colunas na tabela.
Por simplicidade, no exemplo consta apenas o nome da tabela, que é empregado.
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Anotação @Column
A anotação @Column é usada para especificar os detalhes da coluna na qual um campo
ou propriedade será mapeado. Pode-se usar a anotação de coluna com os seguintes atributos:
• name: permite que o nome da coluna seja explicitamente especificado;
• length: permite definir o tamanho da coluna usada para mapear um valor particular-
mente para um valor String;
• nullable: permite que a coluna seja marcada como NOT NULL quando o
esquema é gerado;
• unique: permite que a coluna seja marcada como contendo apenas valores únicos.
25m
Tipos de Mapeamento
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
É importante saber que o mapeamento tenta converter um tipo de dado do Java para um
tipo de dado do banco de dados, sendo que esses tipos não se “casam” diretamente, sendo
necessário realizar alguns tipos de conversões.
8 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (2013/CESPE/TCE-RO/AUDITOR DE CONTROLE EXTERNO – TECNOLOGIA DA IN-
FORMAÇÃO) A seguir, é apresentada parte de um arquivo XML de mapeamento (map-
ping), correspondente às linhas de 21 a 32, cuja numeração não compõe o arquivo.
30m
De acordo com os padrões do Hibernate 4.2, nas linhas 25, 26 e 27, o correto seria
utilizar attribute em vez de property.
COMENTÁRIO
Item errado, pois deve-se utilizar property e não attribute.
9 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Hibernate III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
c. @Identifier
d. @Person
e. @Key
COMENTÁRIO
A propriedade que permite marcar uma propriedade como identificador é @Id.
GABARITO
1. E
2. b
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
10 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Ado.Net
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ADO.NET
REFERÊNCIAS
Assim, esta aula irá se basear nessa documentação. Qualquer dúvida ou necessidade de
aprofundamento, o material citado pode ser livremente consultado.
INTRODUÇÃO
Obs.: o ADO.NET pode ser utilizado tanto para acessar um banco de dados relacional,
quanto para fazer acesso a algum arquivo XML. Assim, o ADO.NET é uma abstra-
ção para manipulação de dados independente da fonte e do fornecedor do ban-
co de dados.
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
Ado.Net
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: o Entity Framework pode ser comparado ao Hibernate do Java ou a outras tecnolo-
gias de ORM em outras linguagens.
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
Ado.Net
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• O DataAdapter faz a ponte entre o objeto DataSet e a fonte de dados usa os objetos
Command para executar comandos SQL, a fim de carregar o DataSet com dados e
reconciliar as alterações que foram feitas nos dados no DataSet com a fonte de dados;
Command
• Connection
– O objeto SqlConnection que é usado pelo objeto command para executar comandos
SQL ou Stored Procedure;
• CommandText
– Representa a instrução T-SQL ou o nome do Stored Procedure;
ANOTAÇÕES
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
Ado.Net
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• CommandType
– Indica como a propriedade CommandText deve ser interpretada. Os valores pos-
síveis são:
1. Text
2. StoredProcedure
3. TableDirect
• CommandTimeout
– Esta propriedade indica o tempo de espera ao executar um comando específico;
15m
– O tempo padrão para a execução do comando é 30 segundos;
– O comando é abortado após expirar o tempo e uma exceção é lançada.
• ExecuteNonQuery
– Este método executa o comando especificado e retorna o número de linhas afetadas;
• ExecuteReader
– O método ExecuteReader executa o comando especificado e retorna uma instância
da classe SqlDataReader;
• ExecuteScalar
– Este método executa o comando especificado e retorna a primeira coluna da pri-
meira linha do conjunto de resultados. As linhas e colunas restantes são ignoradas;
• ExecuteXMLReader
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
Ado.Net
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: dependendo da resposta desejada do ADO, um comando diferente deve ser execu-
tado. Alguns exemplos desses comandos podem ser consultados abaixo:
ExecuteNonQuery
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings[“connString”].Con-
nectionString;
try
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = “DELETE FROM EMP WHERE DEPTNO = 40”;
cmd.CommandType = CommandType.Text;
conn.Open();
Int32 RowsAffected = cmd.ExecuteNonQuery();
MessageBox.Show(RowsAffected + “ linhas afetadas”, “Mensagem”);
cmd.Dispose();
conn.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
App.config
<?xml version=”1.0” enconding=”utf”-8”?>
<configuration>
<connectionStrings>
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
Ado.Net
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ExecuteReader
20m
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
Ado.Net
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ExecuteScalar
Obs.: assim, o ExecuteScalar serve não retornar uma lista de resultados após a utiliza-
ção de um comando Sql. Nesse caso, o comando irá retornar um resultado único
que representa o comando feito, como uma soma de valores, uma contagem ou
uma média.
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
Ado.Net
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
cmd.CommandType = CommandType.Text;
conn.Open(); Int32 TotalSalary = Convert.ToInt32(cmd.ExecuteScalar());
MessageBox.Show(“O total de salários é: “ + TotalSalary.ToString());
cmd.Dispose();
conn.Dispose();
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
Assim, o ExecuteScalar é utilizado para quando se obtiver uma resposta única, geral-
mente cálculos de operações, médias e afins.
25m
ExecuteXmlReader
Obs.: em geral, este comando é utilizado ao trabalhar com XMLs ou quando o resultado
persiste em XML.
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
Ado.Net
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
}
xdoc.Save(“C:\\Empregados.xml”);
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
Essa situação é útil ao trabalhar com exportação de dados.
DIRETO DO CONCURSO
1. (2016/CESPE/TCE-PA/INFORMÁTICA – ANALISTA DE SISTEMA) Com relação ao de-
senvolvimento de aplicações que utilizam o.NET Framework, julgue o item subsequente.
O ADO.NET é uma linguagem de scripts que fornece funcionalidades similares ao Ja-
vaScript para os desenvolvedores do.NET Framework.
COMENTÁRIO
O ADO está relacionado ao banco de dados e não tem relação com o JavaScript.
Além disso, o ADO não é uma linguagem.
COMENTÁRIO
O ADO é bastante expansível, sendo constituído por uma série de classes e interfaces
feitas para serem adaptadas a novas fontes de dados que podem surgir.
GABARITO
1. E
2. E
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO WEB
Ado.Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ADO.NET II
Como foi visto anteriormente, o ADO.NET fornece dois métodos de acesso aos dados: o
DataReader e o DataSet. Como o DataReader foi estudado na aula anterior, esta aula partirá
do estudo do DataSet:
DataSet
Obs.: assim, o DataSet pode ser utilizado para gerenciar os dados locais de um aplicativo,
de uma aplicação web ou fazer acesso a tabelas. Apesar disso, o DataSet tem a ca-
racterística de fazer todo o carregamento do modelo de dados de uma só vez, o que
pode ser danoso em termos de performance.
Obs.: o DataTable carrega as tabelas do banco de dados para dentro do DataSet, criando
um clone desse banco de dados, mas com características específicas de lógica de
programação.
Diante disso, é importante entender que existe toda uma hierarquia de classes, com algu-
mas delas representadas abaixo:
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
Ado.Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
É possível observar o objeto Dataset, que pode ter uma DataTableCollection, por exem-
plo, onde cada uma das DataTables pode ter uma DataView, elencando uma PrimaryKey,
além de ter Constraints, Coleções e Relações. Há, ainda, uma DataRowCollection e a Data-
Row, que representa cada uma das linhas.
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
Ado.Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Ele pode ser usado com várias e diferentes fontes de dados, com dados XML ou para
gerenciar dados locais do aplicativo.
• Ele representa um conjunto completo de dados, incluindo tabelas relacionadas, restri-
ções e relacionamentos entre as tabelas.
Obs.: mesmo as restrições das informações entre as tabelas também são aplicadas
ao DataSet.
Obs.: o ADO.NET tem um suporte intrínseco com o XML. Assim, tanto o DataReader quanto
o DataSet podem ser utilizados para iterar com o XML.
• Para decidir se um aplicativo deve usar um DataReader ou uma DataSet, deve-se con-
siderar o tipo de funcionalidade que o aplicativo requer. Use um DataSet para fazer
o seguinte:
Obs.: é a melhor opção manter dados que mudam pouco ao longo do tempo em cache
dentro do DataSet, de modo a manipulá-los dentro do DataSet. Caso o objetivo seja
apenas ler o resultado de uma resposta, o DataReader é uma opção melhor, pois ele
gasta menos memória do que o DataSet.
• Estabelecer a comunicação remota dos dados entre camadas ou em um serviço Web XML.
• Interagir com os dados dinamicamente, por exemplo, fazendo a associação a um con-
trole do Windows Forms ou combinando e relacionando dados de várias fontes.
10m
ANOTAÇÕES
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
Ado.Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: o DataSet pode ser utilizado para carregar dados de várias fontes e exibi-los em tela.
• Executar um processamento extensivo nos dados sem precisar de uma conexão aberta
com a fonte de dados, o que libera a conexão a ser usada por outros clientes.
• Usando o DataReader, pode-se melhorar o desempenho porque economiza-se a
memória que poderia ser consumido pela DataSet e evitar o processamento que é
necessário para criar e preencher o conteúdo do DataSet.
DataTableCollection
• ADO.NET DataSet contém uma coleção de zero ou mais tabelas representadas por
DataTable objetos.
• O DataTableCollection contém todos os objetos DataTable em um conjunto de dados.
• Um DataTable é definido no namespace System.Data e representa uma única tabela de
dados residentes na memória.
• Ele contém uma coleção de colunas representadas por DataColumnCollection e restrições
representadas por ConstraintCollection, que definem em conjunto o esquema da tabela.
• Um DataTable também contém uma coleção de linhas representadas pelo DataRow-
Collection, que contém os dados na tabela.
• Juntamente com seu estado atual, um DataRow retém sua versão atual e sua versão
original para identificar alterações em valores armazenados na linha.
DataView
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
Ado.Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: ou seja, o DataView define uma restrição sobre os dados que foram colecionados para
que eles possam ser exibidos de uma forma diferente.
DataRelationCollection
XML
ExtendedProperties
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
Ado.Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: o ExtendedProperties vai representar metadados opcionais para que possam eventu-
almente ser utilizados ou persistidos.
Eventos do DataSet
O mais importante desses eventos é o MergeFailed, que ocorre quando há uma falha na
tentativa de fazer o Merge entre o DataSet com alterações com o banco de dados original.
20m
Abaixo há um exemplo de código que usa o DataSet:
string sConnectionString;
sConnectionString = “Password=myPassword;User ID=myUserID;Initial Catalog=pubs;-
Data Source=(local)”;
SqlConnection objConn = new SqlConnection(sConnectionString);
objConn.Open();
SqlDataAdapter daAuthors = new SqlDataAdapter(“Select * From Authors”, objConn);
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
Ado.Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (FCC/DPE-SP/PROGRAMADOR DE COMPUTADOR/2013) O ADO.NET é um conjunto de
classes que fazem parte do.NET Framework e que expõem serviços de acesso a dados
para programadores da plataforma.NET. Sobre o componente DataSet do ADO.NET
no.NET Framework 4.5 é correto afirmar:
a. É possível criar uma instância de um DataSet chamando o construtor da classe Data-
Set, porém, não é possível criar um novo DataSet baseado em um DataSet existente.
b. A única maneira de se trabalhar com um DataSet é preenchendo o DataSet com tabe-
las de dados de uma fonte de dados relacional existente usando um DataAdapter.
c. Para permitir a navegação de um DataSet para outro dentro de um DataTable utiliza-
-se um objeto DataRelation.
d. Um DataSet pode conter uma coleção de um ou mais objetos DataTable que consis-
tem em linhas e colunas de dados, e também chave primária, chave estrangeira, e
informações sobre as relações dos dados nos objetos DataTable.
e. Um objeto DataSet fornece apenas os eventos Disposed e Initialized. O evento Dis-
posed é usado para executar algum código quando o método Dispose for chamado.
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
Ado.Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
a) Existem várias opções para criar um DataSet a partir de uma cópia dele. Essa cópia
pode ser uma clonagem completa, pode ser uma cópia só do conteúdo, ou, ainda, uma
cópia do esquema apenas.
25m
b) Um fluxo XML não é uma base relacional, de modo que ele não precisa ser obrigatoria-
mente a partir de uma base relacional.
c) O DataRelationCollection permite a navegação de uma tabela para a outra em um DataSet.
d) Um DataTableCollection contém uma coleção de colunas representadas por DataCo-
lumnCollection e restrições representadas por ConstraintCollection. Além disso, ele con-
tém também uma coleção de linhas representadas pelo DataRowCollection.
e) São três os eventos do objeto DataSet: Disposed, Initialized e MergeFailed.
GABARITO
1. d
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO DE SISTEMAS
Desenvolvimento Web
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DESENVOLVIMENTO WEB
.NET – CONCEITOS
Bibliografia
https://docs.microsoft.com/pt-br/dotnet/
O que é.NET
• Todo e qualquer código gerado para.NET pode ser executado em qualquer dispositivo
que possua um framework de tal plataforma.
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO DE SISTEMAS
Desenvolvimento Web
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A título de exemplo, o.NET é muito semelhante ao Java, ou seja, tem o objetivo de escre-
ver o código uma vez e compilá-lo para, depois, ser utilizado em plataformas com runtime ou
“tempo de execução”, como traduzido por algumas bancas.
5m
Logo, em qualquer lugar que houver runtime do.NET será possível executá-lo.
Não obstante, é muito comum o.NET estar associado à plataforma da Microsoft do Win-
dows, mas nada impede de rodar em outras plataformas.
Fazendo paralelos, o Java tem um conceito muito mais multiplataforma que o .NET, pois
seu software, basicamente, roda em qualquer plataforma. Já o software .NET terá algumas
implementações específicas, mas em sua maior parte, funciona em qualquer ambiente,
apesar de haver funções que só servirão para o Windows e outras funções que só servirão
para outras plataformas.
Exemplos: jogos, desktop, site ou qualquer coisa que se deseja fazer com programação.
É muito comum trabalhar com o Java, mas surgiram outras linguagens posteriormente,
como é o caso do .NET, que já iniciou com foco muito maior em ter outras linguagens.
O .NET permite um modelo de programação assíncrono e simultâneo, que só chegou no
Java recentemente.
Da mesma forma que é possível desenvolver vários tipos de aplicativos pelo .NET,
também é possível desenvolver para vários tipos de dispositivos como celular, televisão etc.
O conceito do .NET é muito mais próximo do Java. Porém, no Java, confunde-se a pró-
pria linguagem com o runtime, enquanto no .NET isso é um pouco mais separado, pois o
.NET é a plataforma, enquanto a linguagem poderá ser diversificada.
ANOTAÇÕES
www.grancursosonline.com.br 2
DESENVOLVIMENTO DE SISTEMAS
Desenvolvimento Web
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
LINGUAGENS
O .NET possui mais um conceito como plataforma, mas existem implementações volta-
das para diversos outros dispositivos, como para o celular, para multiplataformas ou para o
Windows. Essas implementações conseguem executar a mesma base de código, mudando
apenas o suporte de algumas bibliotecas.
Esse fator é bastante parecido com o Java: ao escrever o código, será gerado um código
intermediário. O código intermediário não é o código-fonte que foi escrito na linguagem e nem
é o código de máquina para poder ser compreendida pelo processador.
10m
Quando o código for executado numa máquina, sofrerá um segundo processo de com-
pilação para que seja executado corretamente na máquina. Deste modo, o mesmo código
escrito para rodar no Windows ou no Linux poderá rodar também numa implementação de
celular, que tem um outro tipo de processador, ou numa televisão, por exemplo.
C#
F#
– VB (Visual Basic).
A listagem de linguagens suportadas pelo .NET é muito grande, de 10 a 20, mas a Micro-
soft o desenvolveu para dar suporte principalmente a essas três linguagens.
ANOTAÇÕES
www.grancursosonline.com.br 3
DESENVOLVIMENTO DE SISTEMAS
Desenvolvimento Web
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
C#
Esta é a linguagem que é mais parecida com Java, com cerca de 80% de semelhança.
Neste sentido, consegue-se uma performance muito boa para utilizar o C#, mas não há
o objetivo de competir com linguagens do tipo mais baixo, como C ou Assembly, que são lin-
guagens mais performáticas.
Isso não é um defeito do C#, pois foi planejado para ter outras features e não ser focado
tanto na performance.
A performance do.NET é muito parecida com a do Java.
Na atualidade, com os computadores mais rápidos, a diferença para rodar programas
comuns será muito baixa, programas comuns do dia a dia, mas para programas muito espe-
cíficos, pode ser que haja a necessidade de, a depender de cada caso, não se utilizar o C#,
mas sim a linguagem C ou Assembly.
Observe o seguinte código em C#:
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO DE SISTEMAS
Desenvolvimento Web
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
F#
Essa já é uma linguagem com viés mais acadêmico e vem trazer uma tendência atual de
mercado, que é a utilização de linguagens funcionais.
As linguagens funcionais são fortemente baseadas em algumas estruturas da matemá-
tica que são as funções.
No entanto, o F# não é uma linguagem puramente funcional como, por exemplo, o RASP.
O F# é um meio termo entre a linguagem interativa e dentro do objeto com características
muito fortes de uma linguagem funcional.
Observe o seguinte código em F#:
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO DE SISTEMAS
Desenvolvimento Web
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Trata-se de um código bem diferente. Possui “open System” para a função do console,
além do let, main, argv e print.
15m
É uma sintaxe bem diferente, nada parecida com o Java ou C#, justamente por que essa
linguagem deriva do ML, que é mais antiga e funcional. Porém, possui características bem
modernas e também orientadas ao objeto.
Este código é apenas um modelo de demonstração.
Visual Basic
• Visual Basic é uma linguagem fácil de aprender, utilizada para criar uma variedade de
aplicativos executados no .NET.
• Entre as linguagens de .NET, a sintaxe da VB é a mais próxima da linguagem humana
comum, geralmente sendo mais fácil para pessoas iniciantes no desenvolvimento
de software.
O VB é uma linguagem que tem o foco e o viés de ser fácil, no entanto, não dá tanta per-
formance, pela simplicidade, permitindo que pessoas sem tanto conhecimento de programa-
ção e de desenvolvimento de software possam desenvolver algum programa.
Observe o seguinte código em Visual Basic:
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO DE SISTEMAS
Desenvolvimento Web
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Há uma estrutura de módulos, uma sub-rotina que chama o console. Após, termina a sub
rotina e termina o módulo de linguagem.
Este código é apenas um modelo de demonstração.
Multiplataforma
Deste modo, .NET Core é voltado para máquinas desktop, sendo multiplataforma e open-
source para qualquer sistema operacional, o .NET Framework é voltado exclusivamente para
o Windows, e o Mono ou Xamarin é a versão para sistemas operacionais móveis.
API Consistente
www.grancursosonline.com.br 7
DESENVOLVIMENTO DE SISTEMAS
Desenvolvimento Web
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Além das três implementações principais, existe um padrão que é chamado de .NET
Standard, que declara uma série de bibliotecas ou de funcionalidades que são básicas.
20m
Deste modo, se utilizar os recursos básicos, o programa funcionará em qualquer das três
implementações.
• Cada implementação também pode expor APIs adicionais específicas dos sistemas
operacionais em que é executada. Por exemplo, o .NET Framework é uma implemen-
tação .NET somente do Windows que inclui APIs para acessar o registro do Windows.
O registro é uma estrutura de dados que só existe no Windows, não existindo no Linux
ou no MacOS.
Bibliotecas
Ferramentas
• O Visual Studio é a IDE oficial de desenvolvimento em .NET e tem versões para Win-
dows, Linux e macOS.
• Também é possível utilizar outros editores em conjunto com ferramentas e plugins de
linha de comando .NET.
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO DE SISTEMAS
Desenvolvimento Web
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• O .NET usa a (GC) coleta de lixo para fornecer gerenciamento automático de memória
para os programas.
• A GC opera em uma abordagem lenta no gerenciamento de memória, dando priori-
dade à taxa de transferência do aplicativo em relação à coleta imediata da memória.
O garbage collector é uma estratégia de colégio que ficou muito famosa depois do
Java, que era muito trabalhoso e muito propenso aos bugs relacionados ao gerenciamento
de memória.
Ao utilizar um objeto, o programador tinha que desalocar aquela memória e, geralmente,
quando se esquecia deste procedimento, ocorria o chamado vazamento de memória, de
modo que o programa entrava em colapso.
Isso não acontece quando o programa é desenvolvido pelo .NET, pois o gerenciamento
dessa memória é automático: ao terminar de utilizar uma variável – lista ou string ou bloco de
memória, por exemplo – automaticamente o garbage collector libera essa memória.
Há, portanto, uma priorização da performance do sistema em detrimento ao consumo
de memória.
A lógica do sistema seria o programa funcionar mais rápido do que consumir pouca
memória, pois a memória seria para ser usada mesmo.
25m
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO DE SISTEMAS
Desenvolvimento Web
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Exemplo em C#:
No caso, o último índice era o índice 41. O sistema não permitiu que fosse feito um
acesso no local que estava fora dos limites daquela lista.
ANOTAÇÕES
www.grancursosonline.com.br 10
DESENVOLVIMENTO DE SISTEMAS
Desenvolvimento Web
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Existem alguns recursos que possuem tempo, como abrir um arquivo e depois ter que
liberar o mesmo arquivo, caso em que o próprio.NET vai ajudar a fazer este procedimento.
Exemplo em C#:
Ao fazer a abertura de um arquivo para leitura, por exemplo, haverá operações no fluxo.
ANOTAÇÕES
www.grancursosonline.com.br 11
DESENVOLVIMENTO DE SISTEMAS
Desenvolvimento Web
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Uma vez que o bloco “using” é concluído, o runtime do.NET automaticamente chama o
método Dispose() do objeto stream, que libera o identificador de arquivo.
Isto também ocorre se uma exceção fizer com que o controle deixe o bloco.
Quando terminar o bloco, portanto, será liberado o arquivo automaticamente.
Se ocorrer um erro no programa, chamado de exceção, por exemplo durante a leitura do
arquivo, este também será liberado, ou seja, tenta-se evitar que o arquivo fique travado fora
do momento que deveria ser aberto no computador. É o exemplo de haver a mensagem de
que o arquivo já está sendo utilizado por um outro processo, caso que, automaticamente,
o.NET fará o processo ajudando ao framework, ajudando a tornar a programação mais fácil
e menos propensa a erros.
30m
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 12
DESENVOLVIMENTO WEB
Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
NET II
O Dot. Net tem o foco em orientação a objetos, trazendo a segurança dos tipos. Só é per-
mitido que os métodos sejam acionados se forem métodos específicos do objeto. As únicas
ações permitidas são as que o objeto contém.
No Java é comum começar os métodos com letra minúscula. No Dot. Net é comum come-
çar os métodos com letra maiúscula.
Quando é chamado um método que não existe em uma classe, é gerado um erro em
tempo de compilação, ou seja, enquanto se está desenvolvendo. Existem estratégias para
acionar dinamicamente métodos em objetos, e esse acionamento dinâmico ocorre em tempos
de execução. Porém, mesmo em tempos de execução, se for acionado um método que não
existe no objeto é lançado uma exceção específica estabelecendo isso.
No Java há alguns tipos de dados que não são da hierarquia do Object, sendo os tipos
primitivos. No C# todos os tipos herdam de uma classe base chamada Object. Além disso,
possui hierarquias de classe, com herança, polimorfismo, e outros elementos da orienta-
ção a objeto.
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Se tentar converter um objeto de um tipo para outro tipo será verificado se o tipo está na
hierarquia do objeto, e garantirá que isso ocorra de forma correta.
5m
É feita uma conversão de ‘dog’ para ‘pet’, visto que o cachorro é um tipo de animal. O
método é o ActCute.
Car car = (Car)dog; // Erro será lançado – não há relação entre um Car e um Dog.
object temp = (object)dog; // Legal - um Dog é um object.
Na conversão de ‘dog’ para ‘car’ ocorrerá um erro, pois não há relação entre eles. A con-
versão de ‘dog’ para object é permitida, pois toda classe é do tipo Object.
VISIBILIDADE DE MEMBROS
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Exemplo:
// C#
private Dog _nextDogToBeAdopted = AnimalShelter.AdoptDog()
Existem métodos do objeto públicos, que podem ser acionados de fora da classe, e pri-
vados, que só podem ser acionados pela própria classe.
INFERÊNCIA DE TIPOS
Exemplo:
DELEGADOS E LAMBDAS
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Os delegados são como ponteiros de função do C++, exceto pelo fato de que eles são
fortemente tipados. Eles são um tipo de método desconectado dentro do sistema de tipos
CLR. Os métodos regulares são anexados a uma classe e só podem ser chamados direta-
mente por meio de convenções de chamada estáticas ou de instância;
Exemplo:
// C#
// Declara um delegado.
public delegate void Del(string message);
...
// Cria um método para um delegado
public static void DelegateMethod(string message)
{
System.Console.WriteLine(message);
}
...
// Instancia um delegado.
Del handler = DelegateMethod;
// Aciona o delegado.
handler(“Hello World”);
Como o ‘DelegateMethod’ possui a mesma assinatura do delegado que foi declarado em
‘Del(string message)’, a operação é aceita. É possível passar uma função para outra função.
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
GENÉRICOS
using System;
using System.Collections.Generic;
namespace GenericsSampleShort
{
public static void Main(string[] args)
{
List listOfStrings = new List { “First”, “Second”, “Third” };
listOfStrings.Add(“Fourth”);
listOfStrings.Add(1); // Erro de compilação, a lista contém apenas strings
}
Se for adicionado um número, ocorre um erro, pois a lista contém apenas strings.
PROGRAMAÇÃO ASSÍNCRONA
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Internamente, elas são baseadas em objetos (como Task) que aproveitam o sis-
tema operacional para realizar trabalhos associados a E/S de modo tão eficiente
quanto possível.
O código assíncrono é um código que quando executado pode liberar a thread principal
para executar outras tarefas enquanto a outra tarefa assíncrona pode demorar mais tempo
para ser executada. Exemplos de código assíncronos: Java Script e Node. js.
Em geral, no Java e no Dot. Net, o padrão são códigos síncronos, mas o Dot. Net também
tem suporte para funções assíncronas.
INTEROPERABILIDADE NATIVA
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Exemplo:
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
}
unsafe static void Main()
{
int i = 5;
// Método inseguro, usa o operador de endereço (&):
SquarePtrParam(&i);
Console.WriteLine(i);
}
} // Saída: 25
O código não seguro, por um lado adiciona performance, e por outro lado não a segu-
rança do ambiente do Dot. Net.
O .NET Framework é mais voltado para o Windows, o .NET Core para multi, e o Mono
para Mobile.
25m
.NET STANDARD
• É uma especificação das APIs do .NET que compõem um conjunto uniforme de con-
tratos nos quais o código é compilado;
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
IMPLEMENTAÇÕES DO.NET
MONO
www.grancursosonline.com.br 9
DESENVOLVIMENTO WEB
Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• A UWP é uma implementação do.NET que é usada para criar aplicativos do Windows
modernos e sensíveis ao toque, bem como software para a IoT (Internet das Coisas);
30m
• Ela foi projetada para unificar os diferentes tipos de dispositivos incluindo PCs, tablets,
phablets, telefones e Xbox;
• A UWP fornece serviços como um repositório centralizado de aplicativos, um ambiente
de execução (AppContainer) e um conjunto de APIs do Windows;
• Os aplicativos podem ser escritos em C++, C#, VB.NET e JavaScript;
• Ao usar o C# e VB.NET, as APIs do.NET são fornecidas pelo.NET Core.
RUNTIMES DO .NET
www.grancursosonline.com.br 10
DESENVOLVIMENTO WEB
Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Cada uma das implementações do Dot.Net fornece um runtime, que é o tempo de execu-
ção, quando o programa for executado precisará desse complemento, e, por isso, não é um
programa nativo.
.NET STANDARD
• É uma especificação formal de APIs do .NET que devem estar disponíveis em todas
as implementações do .NET;
• A motivação por trás do .NET Standard é estabelecer maior uniformidade no ecossis-
tema do .NET;
• O .NET Standard permite os seguintes principais cenários:
– Define um conjunto uniforme de APIs de BCL (Bibliotecas de Classe Base) para
todas as implementações do .NET a serem implementadas;
– Permite que os desenvolvedores criem bibliotecas portáteis, utilizáveis entre imple-
mentações do .NET, usando esse mesmo conjunto de APIs;
– Reduz ou até elimina a compilação condicional de origem compartilhada em razão
das APIs do .NET, apenas para APIs do sistema operacional.
O .NET Standard traz um padrão de código, em que podem ser desenvolvidas bibliote-
cas, que podem ser compartilhadas. A biblioteca funciona tanto no celular quanto no desktop.
www.grancursosonline.com.br 11
DESENVOLVIMENTO WEB
Net II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O código não gerenciado é um código que o desenvolvedor deve ter mais cuidado com
todas as partes do sistema, como gerenciamento de memória, invasão e tamanho de lista.
35m
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conte-
údo ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura
exclusiva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 12
DESENVOLVIMENTO WEB
.Net III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
.NET III
• Linguagem Intermediária
O código gerenciado é escrito em uma das linguagens de alto nível que podem ser exe-
cutadas sobre o.NET, como C#, Visual Basic, F# e outras.
O código gerenciado é aquele compilado no.NET.
Quando o código gravado é compilado nessas linguagens com seu respectivo compila-
dor, não obtém o código do computador, se obtém o código de Linguagem Intermediária
(IL) que o runtime compila e executa (C++ é a única exceção a essa regra, já que também
pode produzir binários nativos e não gerenciados que são executados no Windows).
A CLR assume e inicia o processo de compilação Just-In-Time ou colocando em compila-
ção JIT seu código da IL (código em linguagem intermediária) no código do computador, que
pode ser executado em uma CPU. Dessa forma, a CLR sabe exatamente o que o código está
fazendo e pode, efetivamente, gerenciá-lo.
A Linguagem intermediária também é chamada CIL (Common Intermediate Language) ou
MSIL (Microsoft Intermediate Language).
Quando o código é compilado no.NET, principalmente C#, Visual Basic, F#, o código
resultante não é um código nativo, e sim um código intermediário. No Java é chamado de
Bytecode. É um código que não é o final, mas é bem próximo ao código de máquina.
O Runtime utiliza o código intermediário, executa, faz uma compilação (Just In Time) e
executa o código na CPU. Além disso, o código é gerenciado, por exemplo, com relação a
invasão de memória e conversões de tipos.
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
.Net III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
É permitido trabalhar com o código não gerenciado, que não é monitorado pelo Runtime,
podendo ter uma performance melhor, mas são inseguras em relação ao tipo.
Semelhante a isso, C# é uma linguagem que permite que você use construções não
gerenciadas como ponteiros diretamente no código, utilizando o que é conhecido como
contexto inseguro, que designa um trecho de código para o qual a execução não é geren-
ciada pela CLR.
O código é marcado como Unsafe, não seguro, e esse código pode realizar algumas ope-
rações a mais.
5m
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
.Net III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O.NET Core é uma plataforma de desenvolvimento aberta de uso geral mantida pela
Microsoft e pela comunidade.NET no GitHub.
Ele é multiplataforma e oferece suporte ao Windows, macOS e Linux, e pode ser usado
em dispositivos, na nuvem e em aplicativos de IoT.
Como é multiplataforma, possui menos recursos, só tendo os recursos que podem ser
executados em cada plataforma.
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
.Net III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
As linguagens C#, Visual Basic e F# podem ser usadas para escrever aplicativos e biblio-
tecas para o.NET Core.
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
.Net III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O.NET Framework é uma plataforma de desenvolvimento para criar aplicativos para web,
Windows, Windows Phone, Windows Server e Microsoft Azure (Cloud da Microsoft).
Ele consiste no Common Language Runtime (CLR) e na biblioteca de classes do.NET
Framework, que inclui uma ampla gama de recursos e suporte para muitos padrões do setor.
Para desenvolver um aplicativo para desktop é utilizado o.NET Framework. O.NET Core
é para aplicativos mais simples.
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
.Net III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
.Net III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A biblioteca de classes possui as funcionalidades mais comuns para não ficar sendo
repetida entre os programas.
20m
Estruturas e tecnologias de desenvolvimento: o.NET Framework inclui bibliotecas para
áreas específicas do desenvolvimento de aplicativos, como o ASP.NET para aplicativos Web,
o ADO.NET para acesso a dados e o Windows Communication Foundation para aplicativos
orientados a serviços e Windows Presentation Foundation para aplicativos de área de traba-
lho Windows.
O.NET Framework é mais voltado para o Windows, possuindo mais frameworks e estru-
turas para desenvolver aplicativos específicos para o Windows.
Interoperabilidade da linguagem: compiladores de linguagens, que direcionam o.NET
Framework, emitem um código intermediário chamado de CIL (Common Intermediate Lan-
guage), que, por sua vez, é compilado no tempo de execução pelo Common Language Run-
time. Com esse recurso, as rotinas gravadas em uma linguagem são acessíveis a outras
linguagens.
Uma biblioteca criada em uma linguagem pode ser utilizada em outra linguagem.
Compatibilidade de versões: os aplicativos desenvolvidos usando uma versão específica
do.NET Framework, em geral, são executados sem modificação em uma versão posterior.
Em geral, o que é escrito na versão 1.0 vai rodar na versão 2.0 sem nenhuma modifica-
ção. A compatibilidade para a frente sempre ocorre.
Execução lado a lado: o.NET Framework permite que várias versões do CLR existam no
mesmo computador. Isso significa que várias versões dos aplicativos podem coexistir e que
um aplicativo pode ser executado na versão do.NET Framework com a qual foi compilada.
Para não haver problema de compatibilidade, cria-se um programa.NET Framework na
versão 1.0 e outro programa na versão 2.0. Cada programa utiliza um Runtime diferente. É
permitido ter vários Runtimes instalados ao mesmo tempo, e cada programa quando for exe-
cutado usa seu Runtime mais específico.
Multiplataforma: Bibliotecas de classes funcionam em várias plataformas do.NET
Framework.
As bibliotecas podem ser utilizadas e compartilhadas entre as implementações do.NET.
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
.Net III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula prepa-
rada e ministrada pelo professor Tiago Lage Payne de Pádua.
ANOTAÇÕES
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo minis-
trado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclusiva deste
material.
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
ASP.NET – CONCEITOS E WEB FORMS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Bibliografia
A maior parte do conteúdo desta aula foi baseado nessa bibliografia, que é da própria
Microsoft: https://docs.microsoft.com/pt-br/aspnet/overview
Obs.: esse documento possui tradução automática para o português, portanto, nem todos
os termos são exatos.
O Que é ASP.NET
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
ASP.NET – CONCEITOS E WEB FORMS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ASP.NET Core é uma alternativa open-source ao ASP.NET, da mesma forma que existe
o.NET Framework e o.NET Core, alternativas open-source do.NET.
5m
Como citado anteriormente, o ASP.NET não é uma linguagem de programação e nem um
servidor Web. As linguagens utilizadas no ASP.NET são as linguagens do.NET Framework,
como F#, C# e Visual Basic.NET, sendo o C# o mais utilizado. O servidor, por outro lado, é
onde será hospedado um programa ou aplicativo já programado, onde será também execu-
tado. Como o ASP.NET não é um servidor, o servidor, geralmente, utilizado para a execução
é o IIS da Microsoft, porém existem outras opções a serem utilizadas, principalmente para
o.NET Core.
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
ASP.NET – CONCEITOS E WEB FORMS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Uma aplicação desenvolvida em ASP.NET pode reutilizar código de qualquer outro pro-
jeto escrito para a plataforma.NET, mesmo que em linguagem diferente. Uma página ASP.
NET escrita em VB.NET pode chamar componentes escritos em C# ou Web Services escri-
tos em C++, por exemplo.
Ao contrário da tecnologia ASP, as aplicações ASP.NET são compiladas antes da execu-
ção, trazendo sensível ganho de desempenho. Dessa forma, quando uma página ASP.NET é
acessada pela primeira vez, ela é compilada para um código de mais baixo nível e os próxi-
mos acessos a essa mesma página são realizados de maneira mais eficiente.
Portanto, além da migração da linguagem, o ASP.NET também ganha em performance.
Opções de Framework
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
ASP.NET – CONCEITOS E WEB FORMS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Desenvolvimento
É utilizado para criar páginas que usuários solicitam usando o navegador, como os sites,
cujos endereços podem ser digitados na barra de pesquisa. Essas páginas podem ser cria-
das usando uma combinação de HTML, CSS, JavaScript e código do servidor, mas com um
foco menor em HTML e JavaScript. Dessa forma, o ASP.NET Web Forms exige um maior
conhecimento das tecnologias HTML e JavaScript por parte do desenvolvedor.
Quando os usuários solicitam uma página, ela é compilada e executada no servidor pelo
framework e, em seguida, o framework gera a marcação HTML que o navegador pode rende-
rizar. Os navegadores não são capazes de entender ASP.net, eles entendem apenas HTML,
CSS e JavaScript. O que ocorre é que, quando é criada uma página no servidor usando
outras linguagens, como o C# do.NET, essa página deve ser renderizada no servidor, ou
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
ASP.NET – CONCEITOS E WEB FORMS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
seja, transformar o código fonte em HTML, CSS e JavaScript para que o navegador entenda
a página e mostre-a para o usuário, que irá interagir com a página e submetê-la ao servidor
novamente.
20m
Uma página ASP.NET Web Forms apresenta informações para o usuário em qualquer
navegador ou dispositivo cliente.
Os Web Forms são criados utilizando o Visual Studio com a extensão ASPX. É apresen-
tada para o desenvolvedor uma paleta de componentes, a toolbox, então, o componente
escolhido deve ser arrastado para a página na qual irá funcionar.
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
ASP.NET – CONCEITOS E WEB FORMS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Sempre que ocorrer algum evento, como Page Load (carregamento de página) e Button
Click (clique no botão), o código associado ao bloco será executado. A linguagem utilizada
no caso do exemplo foi a C#.
O Web Forms possui um ciclo de vida, que começa com o usuário requisitando uma
página, que invocará um código chamado de code behind. O código invocado contará com
uma série de eventos e execuções, é o ciclo de vida da própria página, e será devolvido um
resultado para o usuário, renderizado para que ele possa acessar pelo navegador.
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
ASP.NET – CONCEITOS E WEB FORMS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Web Forms
Código ASPX:
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
ASP.NET – CONCEITOS E WEB FORMS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Web Forms
À primeira vista, o Web Forms se parece com uma página HTML: é um arquivo de texto
que contém tags, que podem ser editadas em qualquer editor de texto, apesar da preferência
pelo Visual Studio.
Ao ser observada com mais atenção, tem-se que o Web Forms possui diversos elemen-
tos que o diferencia de uma simples página HTML, dentre eles:
• Web Forms contém blocos de código que são processados no servidor (HelloWorldLa-
bel.Text = “Hello, world!”);
• Na primeira vez que o Web Forms é requisitado a página inteira é compilada. Requisi-
ções posteriores são atendidas por essa página compilada;
• Web Forms podem conter inclusões do lado do servidor (server-side include), que per-
mitem a inclusão dinâmica do conteúdo de um arquivo e controles de usuário;
• Web Forms podem conter diretivas de páginas que são definições globais para a página;
• Web Forms podem conter script, HTML e JavaScript.
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
ASP.NET – CONCEITOS E WEB FORMS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Para definir métodos para tratar eventos, são necessárias duas informações:
Logo abaixo, no código C#, há um método com o mesmo nome, o Button1_Click, que
receberá quem acionou o chamado (sender) e os argumentos associados (e). Com isso, será
executada uma ação.
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO WEB
ASP.NET – CONCEITOS E WEB FORMS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O Web Forms está relacionado aos eventos, que são disparados e executados. Existem
dois tipos de eventos: o dos componentes e o da página. Os eventos da página são chama-
dos de ciclo de vida da página.
30m
O Web Forms também dispara eventos padrão, como Init, Load e Unload, que definem o
ciclo de vida da página.
Primeiro, o evento Init configura a página para seu estado inicial, como descrito nas
tags do arquivo ASPX. Se a página está postando para ela mesma (post back), o evento Init
também restaura qualquer estado da página que pode ser armazenado em viewstate.
Obs.: existe o evento inicial da página, quando o usuário ainda não fez nada, mas depois
o usuário pode realizar uma série de interações na página. A página guarda os seus
estados, antes das alterações, e pode ser restaurada pelo servidor.
A seguir, o evento Load é disparado. Nesse evento, pode-se verificar se essa é a primeira
vez que a página foi carregada ou se essa é uma postagem de volta de uma interação do
usuário com algum controle da página.
Na sequência, a página é renderizada para o navegador, algumas informações de estado
(viewstate) são incluídas em um campo oculto da página de maneira que, quando ela for
chamada novamente, através de um post back, seu estado anterior poderá ser restaurado
pelo ASP.NET.
Logo após, e somente se a página estiver sendo postada de volta, o evento de controle
que causou o post back da página é disparado. Exemplos de eventos que geram post back
são: clicar em botões ou a alteração de eventos, como a alteração do evento CheckedChan-
ged em um check box, por exemplo.
Existe um último evento que seu código pode tratar antes da página ser descarregada:
Unload. Como a página já está renderizada, esse evento é usado para realizar tarefas lógicas
e limpeza. Em seguida, a classe que representa a página que está carregada é destruída e
a página é descarregada da memória do servidor.
O diagrama a seguir apresenta o ciclo de vida no caso do acesso inicial à página (HTTP
GET) e o ciclo de vida no caso de uma interação na página por parte do usuário (HTTP
POST) quando ocorre um post back:
ANOTAÇÕES
www.grancursosonline.com.br 10
DESENVOLVIMENTO WEB
ASP.NET – CONCEITOS E WEB FORMS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O Web Forms pode ser visto como sendo constituído de dois componentes: o código e os
elementos visuais. Os elementos visuais são criados em um arquivo.aspx que atua como um
container para os elementos HTML e controles Web Forms. O código pode ser armazenado
em um arquivo de classe separado ou pode residir no mesmo arquivo.aspx. O recomendado
é que o código seja armazenado em um arquivo separado para uma melhor organização.
Quando o Web Forms é compilado, o ASP.NET traduz a página e seu código, gera uma
nova classe dinamicamente e compila a nova classe. Essa classe é derivada da classe Page,
mas é estendida com controles, seu código e texto HTML estático no arquivo.aspx. Essa nova
página, derivada da classe Page, torna-se um único arquivo executável no servidor sempre
ANOTAÇÕES
www.grancursosonline.com.br 11
DESENVOLVIMENTO WEB
ASP.NET – CONCEITOS E WEB FORMS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
que uma página Web Forms é requisitada. Em tempo de execução, a classe Page processa
as requisições e respostas criando dinamicamente HTML e retornando-o ao navegador.
Se a página contém Web Controls, a página derivada da classe Page atua como um con-
tainer para os controles e instâncias de controles são criadas em tempo de execução.
35m
Em síntese, a página tem o seu código ASPX e C# (recomenda-se que sejam separados
em dois artigos distintos). Será gerado, então, um arquivo compilado, que será executado
em todo novo acesso à página. Além disso, a página gera um conteúdo de forma dinâmica
para cada usuário.
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 12
DESENVOLVIMENTO WEB
ASP.NET
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ASP.NET
MVC
RELEMBRANDO
O ASP.NET é uma estrutura base para desenvolvimento de soluções Web, tanto de pági-
nas Web quanto de serviços API Web. Ele conta com várias formas de desenvolver, pois a
Microsoft oferece uma série de frameworks para desenvolvimento, sendo uma delas o Web
Forms. O Web Forms pode ser associado ao JavaServer Faces (JSF).
ASP.NET MVC
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
ASP.NET
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Os componentes Model, View e Controller interagem entre si. O View e o Controller aces-
sam os dados do Model, e o Controller acessa os dados do View, ele é o controlador da View.
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
ASP.NET
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Portanto, a View é um arquivo ASP ou ASPX que gera um HTML, mas também envolve
CSS e JavaScript para melhorar a interação com o usuário. A View coloca os dados do
modelo em uma tabela, que listará e permitirá os controles de edição, inclusão e alteração.
ASP.NET MVC: Controllers
Os controladores (Controllers) são os componentes que lidam com a interação do usu-
ário, trabalham com o modelo e, finalmente, selecionam uma exibição de renderização que
mostra essa UI.
Em um aplicativo MVC, a exibição só mostra informações. O controlador manipula e res-
ponde à entrada e interação do usuário. Por exemplo, quando um usuário clica em um botão
que aparece na tela, e que foi construído com base em uma View, ocorrerá uma lógica pelo
lado do servidor, um arquivo C#, que estará localizado no controlador da tela.
Por exemplo, o controlador manipula valores da consulta e passa esses valores ao
modelo, que, por sua vez, pode usar esses valores para consultar o banco de dados.
10m
Esse padrão de MVC não é uma exclusividade da Microsoft e nem foi inventado por ela,
esse é um padrão que existe em vários frameworks, como Ruby on Rails, Java e Spring.
Essa separação ajuda a administrar a complexidade de um aplicativo, pois permite que
o desenvolvedor se concentre em um aspecto da implementação por vez. A organização é
importante, porque toda aplicação sofrerá manutenção, o que pode prejudicar a organização
do código, um problema do Web Forms que é melhorado no padrão MVC.
ANOTAÇÕES
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
ASP.NET
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Repassando os passos:
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
ASP.NET
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O mecanismo de roteamento é a chave para como o ASP.NET Core decide lidar com
suas solicitações.
15m
Ele pode ser configurado para rotear qualquer solicitação para qualquer ação do controla-
dor. Nesse caso, a ação está sendo direcionada para um controlador e não para uma página.
A configuração de roteamento padrão usa uma combinação dos nomes de controlador e
ação: /<nome do controlador>/<nome da ação>
Portanto, uma solicitação para /staff/index seria encaminhada para a ação chamada
Index no StaffController. Esse é um padrão popularizado pelo Ruby on Rails, o conven-
tion over configuration (convenção acima da configuração).
Existe uma estrutura de pastas que pode ser seguida, sendo assim, automaticamente, ao
ser feita uma solicitação, o framework ASP.NET MVC buscará um controle de mesmo nome
e encontrará um método relacionado. Essa convenção de pastas diminui a necessidade de
realizar muitas configurações.
Em diagrama:
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
ASP.NET
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Localização do Código
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
ASP.NET
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O HttpGet indica qual é o verbo, ou método, do HTTP, que são vários. Dentre eles: Get,
Put, Post, Delete, Options e outros. O código acima significa que, se o usuário fizer um Get
na página Index, o código será executado.
View
As ações do MVC não precisam retornar uma View, mas, normalmente, retornam. Nessas
Views são colocadas as marcações HTML.
Quando uma View é retornada, o MVC precisa localizar a View usando algumas conven-
ções padrão (convention over configuration). A menos que seja dito o contrário, ele procurará
em uma pasta Views por uma pasta com o mesmo nome que o controlador e, em seguida,
uma View com o mesmo nome da ação. Por exemplo: Views\Staff\Index.cshtml.
20m
Continuação do diagrama:
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
ASP.NET
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O método encontrado, Index ou Profile, é um retorno de View (return View). Com isso, o
ASP.NET buscará, na pasta (Folder) Views/Staff, o arquivo Index.cshtml ou Profile.cshtml e
vai renderizá-lo.
A principal coisa a se observar é que as solicitações do MVC são roteadas para a ação
do controlador e cabe à ação determinar se uma exibição é retornada (e, em caso afirmativo,
qual visualização).
As ações do MVC podem facilmente substituir as convenções padrão e retornar uma
visualização específica (com um nome que difere do nome da ação):
Obs.: esse exemplo fará com que o MVC procure uma exibição chamada AnotherPage.
cshtml na pasta Views\Staff.
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
ASP.NET
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Dados na View
É possível criar um ViewModel para colocar os dados na View. Essa é uma classe que
vive em um arquivo.cs e possui propriedades para os dados que você deseja exibir em sua
visualização:
www.grancursosonline.com.br 9
DESENVOLVIMENTO WEB
ASP.NET
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Estrutura de Pastas
As pastas possuem uma série de convenções. Geralmente, os aplicativos MVC têm uma
convenção padrão, baseada em pastas, com pastas separadas para controladores, exibi-
ções e modelos de exibição:
www.grancursosonline.com.br 10
DESENVOLVIMENTO WEB
ASP.NET
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O Web Forms suporta um modelo de evento que preserva o estado sobre HTTP, o que
beneficia o desenvolvimento de aplicativos Web de linha de negócios.
Ele usa um padrão Page Controller que adiciona funcionalidade em páginas individuais,
ou seja, uma página sem controlador, visto que a página vem antes dele.
Também utiliza o estado de exibição em formulários baseados no servidor, o que pode
facilitar o gerenciamento de informações de estado. No Web Forms, trabalha-se mais com
a linguagem do servidor do que com a linguagem do front engine, diferente do que acon-
tece no MVC.
Funciona bem para pequenas equipes de desenvolvedores e que desejam tirar pro-
veito do grande número de componentes disponíveis para um rápido desenvolvimento do
aplicativo.
30m
Além disso, é menos complexo para o desenvolvimento de aplicativos, pois os com-
ponentes estão extremamente integrados e, normalmente, exigem menos código do que o
modelo MVC.
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 11
DESENVOLVIMENTO WEB
ASP.NET – Web Page
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O Web Page é outra opção de framework trabalhada no ASP.NET, assim como o Web
Forms e o MVC. O Web Page pode ser utilizado para criar páginas da Web dinâmicas.
Uma simples página HTML é estática, seu conteúdo é determinado pela marcação HTML
fixa que está na página, ou por interação via JavaScript, o AJAX. Páginas dinâmicas permi-
tem criar o conteúdo da página na hora, usando código. Dessa forma, toda vez que houver
uma solicitação, a página será reprocessada e exibirá um novo conteúdo. Um exemplo de
dinamicidade de páginas é o acesso ao banco de dados: uma página é acessada e o servidor
coleta dados e informações do banco dados, leva para a página HTML, adiciona no conteúdo
e gera uma saída dinâmica para o usuário.
O esquema abaixo ilustra o fluxo do Web Pages:
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
ASP.NET – Web Page
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• A saída dessas tags processadas serão um arquivo html renderizado (terceiro quadro
do ASP.NET);
• A saída gera uma resposta, que será exibida ao cliente.
RELEMBRANDO
Navegadores não compreendem as linguagens ASP,.NET, Phyton ou Java, eles entendem
apenas html, CSS e JavaScript. Assim, qualquer framework que for utilizado realizará um
processamento sob a linguagem de marcação, processos como recuperar informações
no banco de dados e executar lógicas, mas devolverá para o navegador um html, CSS ou
JavaScript.
Obs.: o framework Web Page pode ser comparado ao PHP ou ao ASP antigo, porém com
uma linguagem e estrutura mais simples e moderna.
ANOTAÇÕES
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
ASP.NET – Web Page
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: atualmente, o ASP tradicional não é utilizado para trabalhar com códigos novos.
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
ASP.NET – Web Page
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Em comparação aos outros padrões, como o Web Forms, que não possui uma estru-
tura bem demarcada de separação de códigos, o padrão MVC, com uma estrutura de códi-
gos bem demarcada em Model, View e Controller, o Web Page possui o código no mesmo
arquivo da página.cshtml.
De maneira hierarquizada, tem-se a seguinte ordem de padrões:
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
ASP.NET – Web Page
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
É possível tirar trechos de html de blocos de código. O operador @: gera uma única linha
de conteúdo que contém o texto sem formatação ou marcas HTML sem correspondência:
Então, com a colocação do @:, o texto The time is: será renderizado no HTML. O @Date-
Time.Now exibe o horário atual e pode aparecer tanto no final da linha quanto no começo. A
imagem acima exemplifica como ocorrem as aparições dos trechos no meio de um bloco de
código e como é a saída de código que será renderizada na página.
O elemento <text> abrange várias linhas de saída:
O <text> aparece no início e no final do bloco, e tudo que não for marcado com a @, que
indica que trata-se de uma variável, será renderizado na página.
15m
Comentários
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
ASP.NET – Web Page
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: pode-se também usar a sintaxe de comentário do próprio C#, que é o //.
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
ASP.NET – Web Page
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Com o Razor Pages, é feita uma solicitação (por exemplo, /contato), e a configuração
padrão do roteamento ASP.NET tenta localizar uma página Razor para essa solicitação na
pasta Pages. Diferente do padrão MVC, que tenta localizar controles.
O Razor Pages procura uma página com o nome usado na solicitação (para uma solicita-
ção /contato que seria Contato.cshtml) e direciona diretamente para ela. A página da Razor,
então, age como se fosse uma ação do controlador.
Para que um arquivo.cshtml seja qualificado como uma página Razor, ele deve estar na
pasta Pages (usando as convenções padrão) e incluir @page em sua marcação.
Localização do Código
Cada Razor Page pode ter um modelo de página correspondente. Se mantidas as con-
venções padrão, o ASP.NET esperará que o modelo tenha o mesmo nome da página Razor
correspondente, mas com um.cs anexado:
View
Como a solicitação é encaminhada diretamente para a página Razor específica que pode
manipulá-la, não há necessidade de localizar uma View, a View é a mesma para a qual a
solicitação foi encaminhada: Contato.cshtml. Já no MVC, sempre é retornada uma View.
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
ASP.NET – Web Page
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
No caso do Razor, não há necessidade de retornar uma View, pois o nome da requisição já
indica a página a ser renderizada.
O roteamento padrão para o Razor Pages é bastante simples e respeita as subpas-
tas, portanto \Pages\Staff\Profile.cshtml seria acessível por meio de uma solicitação para /
staff/profile:
A pasta staff (Staff Folder), tem alguns arquivos dentro de si. Por exemplo, se houver
requisição para /index (/staff/index), a pasta staff deve ter um arquivo index (index.cshtml) e,
eventualmente, o arquivo index.cshtml.cs. O mesmo acontece para a requisição /profile. A
página será renderizada de acordo com a requisição, no caso do /index será renderizada a
página de boas vindas (welcome), e no caso do /profile será renderizada da página de perfil
do usuário (your profile).
Vale notar que pode-se omitir Index, pois é a página padrão. Nesse exemplo, ambos /staff
e /staff/index levariam para o Pages\Staff\Index.cshtml.
O convention over configuration utilizado nas páginas ajuda na organização e manuten-
ção das páginas.
Dados na View
Ao invés de ter ViewModels separados, como no caso do MVC, basta adicionar proprie-
dades ao Modelo de Página. Pode-se definir tais propriedades diretamente nos métodos do
Modelo de página (por exemplo, OnGet) e renderizar esses dados na própria página:
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
ASP.NET – Web Page
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Estrutura de Pastas
Por padrão, tudo fica na pasta Pages. Cada Razor Page consiste no modelo View
(.cshtml) e um arquivo.cs correspondente, que efetivamente atua como uma ação do contro-
lador, especificamente para essa visualização.
25m
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO WEB
ASP.NET – Web Page
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (IESES/2016/BAHIAGÁS/TECNOLOGIA DA INFORMAÇÃO/SISTEMAS) No contexto
da programação para a Web ASP.NET, Razor refere-se à/ao:
a. Um compilador que otimiza o código para execução em aplicações baseadas em Web.
b. Uma linguagem de programação que roda no cliente, similar à JavaScript.
c. Uma interface para o desenvolvimento de Web Services de arquitetura aberta.
d. Uma linguagem de programação interpretada pelo browser e que pode conter instru-
ções dinâmicas.
e. Uma linguagem de marcação que permite a execução de código em páginas Web.
COMENTÁRIO
a. O Razor não é um compilador.
b. Em termos de linguagem, o navegador entende apenas o JavaScript e não o Razor.
Além disso, o Razor não roda no cliente.
c. O Razor não se relaciona com Web Services.
d. O Razor não é interpretado pelo Browser.
e. A linguagem de programação utilizada no Razor é o C# ou F#. O Razor é uma linguagem
de marcação que determina os trechos de página onde será executado um código no lado
do servidor.
GABARITO
1. e
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 10
DESENVOLVIMENTO WEB
ASP.Net – Web Api e Signalr
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
HTTP não serve apenas para as páginas da Web, HTTP também é uma plataforma para
a criação de APIs que expõem serviços e dados. Na atualidade, existem muitas tecnologias
que usam o HTTP para conectarem-se com o servidor, como os celulares, que não solicitam
uma página html pois já possuem uma aplicação instalada que comunica-se com o servidor,
através de uma API.
O HTTP é um protocolo simples e flexível, desse modo, os serviços HTTP podem alcan-
çar uma ampla gama de clientes, incluindo navegadores, dispositivos móveis e aplicativos de
desktop tradicionais.
A ASP.NET Web API é um framework para a criação de APIs Web sobre o.NET Framework.
Atualmente, existem aplicações Web com interfaces realmente ricas, como Google Docs,
Gmail, entre outras. Essas aplicações são conhecidas como SPA – Single Page Applications,
que possuem uma única página para a aplicação, com o objetivo de melhorar a experiência
do usuário, sem reloads de toda a página levando a uma responsividade como de aplica-
ções desktop.
O Web Forms é um tipo de framework que possibilita um desenvolvimento de forma
visual, com a visualização de componentes no lado do servidor nas páginas ASP, que serão
renderizados no lado do cliente. Por outro lado, uma estratégia mais atual, a das SPAS, pos-
sibilita todo o desenvolvimento da View somente em html, JavaScript e CSS, sem nenhum
outro tipo de linguagem de marcação. Além de todo o processamento da View ser realizado
no browser. Entretanto, o acesso ao banco de dados é feito no lado dos servidores.
5m
No caso das SPAS, é comum que o servidor Web forneça os arquivos estáticos (html,
JavaScript e CSS), o front engine execute uma lógica de JavaScript, o próprio front engine
requisite os dados para o servidor e eles sejam populados no front engine. Exemplos de apli-
cações que usam essa estrutura são Twitter, Facebook e Gmail. Esse tipo de estrutura gasta
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
ASP.Net – Web Api e Signalr
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
menos recursos do lado do servidor, pois a maior parte do processamento da View é feita do
lado do cliente.
Os SPAS têm por característica um maior processamento de informações no próprio
browser e utilização de AJAX para atualização pontual de partes da aplicação. Esse cenário
se contrapõe ao de processar toda (ou a grande maioria) da informação no servidor, e só
enviar ao cliente o HTML gerado, ou seja, o browser começa a ter uma importância maior,
pois parte do processamento agora é realizado no lado cliente.
Por isso as SPAS são mais vantajosas para aplicativos de larga escala.
Ao acessar o lado do servidor através das SPAS, o servidor fornece uma API, geralmente
chamada de API REST. Esse tipo de API combina o endereço do navegador com os verbos
do HTTP (Get, Put, Post e Delete). Cada tipo de combinação possui um efeito diferente na
tela do servidor.
Sobre isso, observe a tabela abaixo:
10m
Obs.: o {id} é utilizado para indicar um item específico, por exemplo, o GET /api/tarefa{id}
serve para recuperar apenas uma tarefa ao invés de uma lista completa.
Com o API, ao invés de criar um servidor que retorna uma lista de páginas com uma lista
de itens, criam-se uma endpoints REST que serão acionados por uma aplicação do celu-
lar ou por uma aplicação JavaScript e realizarão operações sobre as entidades criar, listar,
incluir ou alterar. Tem-se, então, um API ou um Web Service de comunicação.
ANOTAÇÕES
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
ASP.Net – Web Api e Signalr
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O cliente, ou client, faz uma requisição que bate no controle (controller), que, por sua vez,
terá uma interação com a base de dados, criará um objeto com base no modelo (model) e o
vai serializar. O padrão de serialização, ao invés de ser uma página HTML ou uma View, é
JSON ou XML.
O client é quem consome a Web API (pode ser um navegador, um aplicativo para celular
e etc). Um model é um objeto que representa os dados em seu aplicativo. Os modelos são
representados como classes C# simples. Um controller é um objeto que manipula solicita-
ções HTTP e cria a resposta HTTP.
Esse modelo não tem View associada.
Trecho de código do controller:
15m
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
ASP.Net – Web Api e Signalr
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ASP.NET SignaIR
O SignaIR fornece uma API simples para criar chamadas de procedimento remoto, ou
Remote Procedure Call (RPC), do servidor para o cliente que chamam funções JavaScript
em navegadores a partir do código.NET do lado do servidor.
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
ASP.Net – Web Api e Signalr
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
No primeiro caso, o servidor vai até a lista de clientes e seleciona um usando o id e cha-
mando uma função JavaScript no navegador do cliente. No segundo caso, é o contrário, pois
a comunicação fica ativa e o cliente aciona uma função do servidor, por exemplo, para con-
firmar que recebeu uma mensagem.
20m
Em comparação com o HTTP, os dois modos são bem diferentes, pois no caso do HTTP,
quando a requisição termina a comunicação é cortada.
O SignalR lida com o gerenciamento de conexões e permite transmitir mensagens para
todos os clientes conectados (broadcast) simultaneamente ou enviar mensagens para clien-
tes específicos. Os placares já mencionados são exemplos de conexão broadcast, já os
chats são exemplos de conexão específica para determinado usuário.
A conexão entre o cliente e o servidor é persistente, ao contrário de uma conexão HTTP
clássica, que é restabelecida para cada comunicação.
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
ASP.Net – Web Api e Signalr
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (CETAP/2015/MPCM/ANALISTA DE SISTEMAS/DESENVOLVIMENTO) O framework
ASP.NET Web API facilita a construção de serviços REST HTTP que alcançam uma
grande variedade de clientes incluindo smartphones, tablets, browsers e aplicações
locais. É, hoje, a plataforma ideal para construção de serviços REST baseados em.NET.
Analise o código Seguinte e identifique qual o retorno em JSON que esse serviço vai
gerar de acordo com a chamada http://localhost/api/aluno/2?
a. {“ID”:2,”Nome”:”João Silva”,”Matriculado”:true}
b. <Aluno><ID>2</ID><Nome>João Moraes</><Matriculado>true</Matricu-
lado></Aluno>
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
ASP.Net – Web Api e Signalr
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
c. {[“ID”]<2>,[“Nome”]<”João Silva”>,[“Matriculado”]<true>}
d. <Aluno><ID>2</ID><Nome>”JoãoSilva”</><Matriculado>true</Matricu-
lado></Aluno>
e. <”aluno”> <”ID”> 2 </”ID”> <”Nome”>João Silva</> <”Matriculado”> true </”Matri-
cülado”> </”Aluno” >
COMENTÁRIO
A classe do código é chamada de “aluno”, e ela possui as características “id”, “nome” e
“matriculado”, com seus correspondentes getters e setters. O “ApiController” cria uma lista
de alunos.
Ao final do código são expostos alguns métodos.
A questão indica que o código escolhido dentre as alternativas deve ser um JSON.
b, d e e. Os códigos das alternativas são XML.
25m
c. Essa sintaxe não existe.
GABARITO
1. a
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
Spring
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
SPRING
CONCEITOS
INTRODUÇÃO
O Spring framework é uma plataforma Java de código aberto que fornece suporte abran-
gente à infraestrutura para o desenvolvimento de aplicativos Java robustos com muita faci-
lidade e rapidez;
O spring, portanto, foca na facilidade e na rapidez de desenvolvimento, fornecendo solu-
ções prontas para fazer certas estruturas, como segurança e troca de mensagens de uma
forma bem integrada.
O framework Spring foi inicialmente escrito por Rod Johnson e foi lançado pela primeira
vez sob a licença Apache 2.0 em junho de 2003.
Spring é o framework de desenvolvimento de aplicativos mais popular para o desenvol-
vimento Java corporativo.
Os principais recursos do Spring Framework podem ser usados no desenvolvimento de
qualquer aplicativo Java, mas há extensões para a criação de aplicativos da Web sobre a
plataforma Java EE.
ANOTAÇÕES
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Spring
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: o spring, na verdade, é uma série de módulos separados que são feitos de forma a
conversar um com o outro muito bem. Então, para qualquer tipo de aplicativo que
se trabalhe, é possível utilizar as tecnologias do spring. Além disso, o spring é muito
voltado para as aplicações web.
5m
O framework Spring tem como objetivo tornar o desenvolvimento de JEE mais fácil de
usar, além de promover boas práticas de programação, permitindo um modelo de programa-
ção baseado em POJO.
O Spring une boas práticas de programação com ferramentas e boas estratégias. Ele
prova que um sistema bem arquitetado possui grandes chances de ser bem sucedido. Todos
os módulos são baseados tanto tecnicamente quanto filosoficamente em ótimos padrões de
mercado. Com isso, o usuário ganha uma série de benefícios no desenvolvimento de software.
Benefícios
Obs.: ORM significa: Object Relational Mapping. É um framework que vai mapear o banco
de dados para classes ou objetos no Java.
ANOTAÇÕES
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Spring
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O Spring fornece uma API conveniente para traduzir exceções específicas da tecnolo-
gia (lançadas por JDBC, Hibernate ou JDO, por exemplo) em exceções consistentes e não
verificadas.
Utiliza contêineres leves de IoC, especialmente quando comparados aos contêineres
EJB, por exemplo. Isso é benéfico para o desenvolvimento e a implantação de aplicativos em
computadores com memória limitada e recursos da CPU.
O Spring fornece uma interface consistente de gerenciamento de transações que pode
ser redimensionada para uma transação local (usando um único banco de dados, por exem-
plo) e escalonar para transações globais (usando o JTA, por exemplo).
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Spring
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Arquitetura
O Spring pode ser a tecnologia central para todos os seus aplicativos corporativos.
No entanto, o Spring é modular, permitindo que se escolha quais módulos são aplicáveis,
sem ter que trazer o restante.
ANOTAÇÕES
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Spring
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O Spring Framework fornece cerca de 20 módulos que podem ser usados com base nos
requisitos do aplicativo.
Estes são os módulos presentes no spring e todos conversam muito bem entre si. Além
disso, o desenvolvedor pode, no momento da programação, escolher algumas partes e
outras não.
Core Container
O Core Container consiste nos módulos Core, Beans, Context e Expression Language.
O módulo Core fornece as partes fundamentais do framework, incluindo os recursos IoC
e Dependency Injection;
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Spring
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O módulo Context baseia-se na base sólida fornecida pelos módulos Core e Beans e é
um meio de acessar qualquer objeto definido e configurado. Ademais, a interface Application-
Context é o ponto focal do módulo de Contexto.
O módulo SpEL (Spring Expression Language) fornece uma poderosa linguagem de
expressão para consultar e manipular objetos em tempo de execução.
Obs.: ele possui uma linguagem de expressão em que é possível colocar algum tipo de
meta programação para que ela seja avaliada em tempo de execução.
Data Access/Integration
A camada Data Access / Integration é composta pelos módulos JDBC, ORM, OXM, JMS
e Transaction.
O módulo JDBC fornece uma camada de abstração de JDBC que elimina a necessidade
de codificação repetitiva relacionada ao JDBC.
O módulo ORM fornece camadas de integração para APIs de mapeamento objeto-rela-
cional populares, incluindo JPA, JDO, Hibernate e iBatis.
O módulo OXM fornece uma camada de abstração que suporta implementações de
mapeamento de objeto/XML para JAXB, Castor, XMLBeans, JiBX e Xstream.
O módulo JMS do Java Messaging Service contém recursos para produzir e consumir
mensagens.
O módulo Transaction suporta o gerenciamento de transações programáticas e declarati-
vas para classes que implementam interfaces especiais e para todos os seus POJOs.
25m
Web
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Spring
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Módulos Diversos
Existem alguns outros módulos importantes, como os módulos AOP, Aspects, Instrumen-
tation, Web e Test.
O módulo AOP fornece uma implementação de programação orientada a aspectos, per-
mitindo que você defina interceptores de métodos e pontos de corte para separar de forma
simples o código que implementa a funcionalidade que deve ser separada.
O módulo Aspects fornece integração com AspectJ, que é novamente uma estrutura
AOP poderosa e madura.
O módulo Instrumentation fornece suporte de instrumentação de classe e implementa-
ções de class loaders a serem usadas em determinados servidores de aplicativos.
O módulo Messaging fornece suporte para STOMP como subprotocolo WebSocket para
uso em aplicativos.
O módulo Test suporta o teste de componentes Spring com frameworks JUnit ou TestNG.
DIRETO DO CONCURSO
1. (2014/FUNCAB/PRODAM-AM/PROGRAMADOR-DESENVOLVEDOR ESPECIALISTA)
O framework Spring permite a troca de mensagens entre clientes através do suporte
nativo ao:
a. SpringMessaging Service(SMS).
b. JavaMessaging Service(JMS).
c. SpringChat Service(SCS).
d. JavaChat Service(SCS).
e. Chat andMessaging Service(CMS).
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Spring
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
30m
O módulo JMS do Java Messaging Service contém recursos para produzir e consumir
mensagens.
GABARITO
1. b
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
8 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
SPRING CLOUD
Antes de abordar o Spring Cloud, falar-se-á os requisitos necessários para aprender o
Spring Cloud. O primeiro requisito é ter noções de programação, desenvolvimento, progra-
mação estruturada, e depois Java. Após o Java, é aconselhável estudar Spring e Boot. Com
esses conhecimentos, é possível compreender melhor o Spring Cloud.
Nesta aula, será demonstrado como o Spring Cloud é utilizado para desenvolver aplica-
ções Spring na Cloud.
Na primeira página do projeto, ele traz um ótimo resumo das funções do produto. Dentro
do guarda-chuva de projetos do Spring, existem vários projetos separados.
Primeiro, o Spring Boot. Em termos de estrutura, o primeiro é o Spring Framework. Ele
mostra como desenvolver aplicações Spring conceito de Spring MVC. Depois, há o Spring
Data. Ele fala a respeito de como é feita a comunicação com banco de dados, a estratégia de
JPA, ORM, utilizadas com o Spring Framework. O Spring Framework é uma aplicação web e
esta se comunica com o banco de dados.
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Depois vem o Spring Boot. O Spring Boot aciona a característica da aplicação web, se
comunica com a base de dados e aciona a característica que a aplicação pode trabalhar de
uma forma isolada. O Spring Boot pode embutir um servidor dentro dela. Pode-se colocar um
pequeno tomcat dentro da aplicação e ela vai toda empacotada com um JAR autoexecutável
e torna muito mais fácil a execução da aplicação.
O Spring Cloud provê ferramentas para desenvolvedores, a fim de construir rapidamente
alguns padrões comuns em sistemas distribuídos.
Primeiramente, o Spring Cloud não é um framework, um servidor específico, não é um
produto específico. Ele é um conjunto de ferramentas da Spring. Existem várias ferramentas
independentes que conversam muito bem e formam o Spring Cloud.
Isso permite que se construa rapidamente alguns padrões, os padrões mais comuns, em
aplicações distribuídas. No caso de aplicações monolito, que são aplicações inteiras, dentro
de um pacote só. Essa aplicação, digamos, monolítica, funciona de uma maneira, ela tem
suas particularidades. Por exemplo, a barra de comunicação de uma aplicação monolítica
e o barramento de memória. Ela comunica de memória em memória, de maneira síncrona.
A aplicação distribuída tem uma série de características diferentes porque deve lidar com
falhas. É possível ter uma configuração que vai ser distribuída para vários servidores, então
existe uma série de partners, de desenvolvimento.
5m
No Service discovery, quando há muitos serviços sendo disponibilizados por meio de
microsserviços, é preciso descobrir qual o IP do servidor que fornece isso, qual é a máquina
que fornece. Então o Service Discovery permitirá a descoberta de qual máquina esses
serviços vêm.
Nesse contexto, existe o Circuit Breaker ou disjuntor. No caso de um Circuit Breaker,
suponhamos que exista uma aplicação e ela tem uma série de componentes e um dos com-
ponentes pode começar a demorar muito, começar a falhar. Isso pode derrubar todo o sis-
tema. O Circuit Breaker é como o disjuntor. Esse disjuntor evitará que aquela máquina fique
sobrecarregada e desenvolverá uma resposta padrão ou desativará o serviço completamente
até que ele seja restaurado. A ação do disjuntor evita o acúmulo de requisições pendentes
dentro da infraestrutura.
Depois, roteamento inteligente, inclusive baseado em distribuição geográfica, proxy,
micro proxy para a comunicação. Controle de barramento, tokens, global locks para opera-
ções que não podem ser feitas por dois operadores ao mesmo tempo, leadership election,
seções distribuídas, estado do cluster.
ANOTAÇÕES
www.grancursosonline.com.br 2
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 3
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Esse conjunto de projetos Spring Cloud contém muitos padrões necessários para que se
desenvolvam em nuvem. Ele é muito utilizado por várias empresas, em especial pela Netflix,
como dito anteriormente, que foi uma das grandes desenvolvedoras de Spring Cloud. Ele permite
que os desenvolvedores foquem muito mais em resolver um problema de negócios do que ficar
descobrindo padrões de comunicação de serviço.
Ele é muito útil para o desenvolvimento de aplicativos que exigem alta escalabilidade,
desempenho e disponibilidade. Um exemplo de uma arquitetura que utiliza o Spring Cloud.
Haverá uma série de microsserviços. Suponhamos que fosse uma escola. Existe a parte
de matrícula, do cadastro de alunos, do cadastro de professores. Os microsserviços têm
vários cards porque eles estão escalados. Em geral, o primeiro microsserviço será desenvol-
vido em Spring Boot com Spring.
Os microsserviços devem se comunicar com um banco de dados e é preciso saber o IP
ou a URL do banco de dados. Para não se colocar em cada um dos microsserviços e se a
URL mudar e der problema, levanta-se o elemento Config. Server. O Config. Server terá a
URL do Data Base.
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Cada microsserviço que levanta, ao invés de ele ter a URL do banco de dados dentro
dele, ele vai perguntar para o Config. Server. A URL do banco de dados é uma das configu-
rações, mas podem existir muitas outras.
Do lado esquerdo, há a internet das coisas, os celulares e o browser. São os clientes
que consumirão os microsserviços. O cliente até poderia se comunicar diretamente com os
microsserviços, mas como iria saber quais das três máquinas se comunicaria? Dificilmente,
ele saberia algo assim.
Os clientes finais, ao invés de comunicar diretamente com os microsserviços, se comuni-
cam com uma instância chamada API Gateway, que é um portão. Ele pode ter alguma ques-
tão de segurança, alguma coisa nesse sentido, e vai ser o papel dele distribuir os serviços.
15m
O API Gateway distribui os serviços com algoritmos, algum tipo de balanceamento de
carga para as máquinas. O API Gateway sabe da existência de cada microsserviço. Esses
microsserviços, quando se levantam, se comunicam com o Service registry, um registrador
de serviços. O API Gateway, quando ele levanta, ele consulta o Service registry sobre qual
microsserviço está disponível. O Service registry passa essa informação ao API Gateway.
Além disso, há outro serviço adicional, o Distributed tracing, que faz o rastreamento da
comunicação, de bugs, entre outros pontos.
Os microsserviços são Spring Boot tradicionais. Eles terão alguns plug-ins para se comu-
nicar. O Config. Server, o API Gateway, o Service registry e o Distributed tracing são com-
ponentes do Spring Cloud. Além disso, o Spring Cloud tem outros componentes para outros
tipos de uso.
• Spring Cloud
Spring Cloud é uma coleção de componentes prontos para uso que são úteis na constru-
ção de aplicativos distribuídos em uma empresa.
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Arquitetura de Microsserviços
www.grancursosonline.com.br 6
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Também há solução de log distribuído como Kipkin e também o Spring Boot Admin Server
para administrar os servidores. O API Gateway, por meio de uma estratégia de Load Balan-
ced, pode bater em uma das máquinas diferentes. Depende da estratégia. A máquina, quando
liga, ela se registra no Eureka e obtém as configurações do Spring Cloud Config Server, que
mantém as configurações num repositório git.
Quando o Spring Cloud lê um repositório git, ele lê do git e quando uma aplicação levanta
ela, vem no Spring Cloud Config Server e lê a sua própria configuração. Os serviços são
pequenos e independentes e podem se comunicar até mesmo entre eles também.
Na base de tudo isso, está uma ferramenta chamada Spring Boot.
O Spring Boot é baseado em Java, que é utilizado para criar esses microsserviços. Além
disso, ele reduz bastante o tempo para desenvolver aplicações Spring. Ele tem um esqueleto
de aplicação pronta e ele permite o tomcat.
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Esses padrões de clouds estão prontos para serem fornecidos. Cada um dos itens serão
caixas colocadas no diagrama.
• Benefícios
– Os desenvolvedores se concentram na lógica de negócios;
Como o Spring Cloud fornece o código padrão para implementar os designers de nuvem,
o desenvolvedor pode se concentrar mais na lógica de negócios e a necessidade de desen-
volver e manter os códigos.
– Fácil de usar;
– Projeto Ativo.
www.grancursosonline.com.br 8
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A arquitetura de serviço tem várias vantagens, mas uma das desvantagens mais críticas
é que desenvolver um aplicativo distribuído é difícil. Por exemplo, como um serviço sabe-
ria o IP de outro serviço? E se o serviço cair, agora o balanceador de carga não pode mais
jogar naquela máquina. Como monitorar vários serviços, distribuir uma configuração entre
várias máquinas? Como depurar um serviço que esteja com problema? São esses impasses
e outros.
25m
Esses são problemas que o Spring Cloud tentará resolver, fornecer algum tipo de solu-
ção. Ele vem, em geral, com o Spring Boot.
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
SPRING CLOUD II
Componentes
Dependência Principal
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 2
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A ilustração acima exibe um exemplo de estrutura de um projeto java. Ele tem o spring
cloud eureka client. Por simplicidade, o customer service e o serviço de restaurante estão no
mesmo servidor.
Há necessidade da instância do servidor e de um feign client (imagem abaixo), o qual
permite a comunicação entre os microsserviços, além da necessidade de um gateway. Nas
duas imagens, identificam-se 4 bases de código java.
ANOTAÇÕES
www.grancursosonline.com.br 3
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
POM
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Eureka
O eureka é usado para fazer a descoberta e catalogação do serviço, parte crítica que
acontece quando o microsserviço é implantado no microsserviço em nuvem. Em qualquer
operação de uso, é possível criar microsserviços e estabelecer a comunicação entre eles.
10m
A descoberta do serviço ajuda a rastrear o endereço do serviço e as portas pelas quais
ele está se comunicando.
Componentes:
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Em geral, os projetos do spring cloud são java. Eles precisam da criação de um pacote
para subir, pois não são autônomos.
Na imagem acima, está como dependência o spring started netflix eureka service, que é
um servidor. Também há um spring boot.
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A porta é a 8900 e não há registro em outro servidor eureka. Não ocorre fetch do service.
Com o projeto estruturado e com as dependências inclusas, faz-se a compilação e executa-
-se o java - jar.
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Após a execução do java - jar, ele levanta, como vê-se na imagem acima.
Não há nenhuma instância avaliável, pois ninguém registrou-se nele. Não há réplicas,
pois trata-se de uma instância em stand alone.
www.grancursosonline.com.br 8
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 9
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 10
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Na imagem acima, observam-se duas instâncias, além do local host 81 e 82, que são as
duas portas levantadas.
Quando se entra no eureka e perguntam-se as instâncias, nota-se que ele possui uma
API, evidenciando-as.
ANOTAÇÕES
www.grancursosonline.com.br 11
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
http://localhost:8081/customer_service_instances
ANOTAÇÕES
www.grancursosonline.com.br 12
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ANOTAÇÕES
www.grancursosonline.com.br 13
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ANOTAÇÕES
www.grancursosonline.com.br 14
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
APIs do Eureka
http://localhost:8900/eureka/apps/customer-service
www.grancursosonline.com.br 15
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Alta Disponibilidade
O eureka é um ponto de falha perigoso do sistema. Por ser um ponto único, caso ele
saia do ar, o mesmo ocorre com a aplicação. Para evitar isso, é possível subir várias instân-
cias do eureka, para que seja possível se comunicar através de outra instância, em caso da
queda de uma.
É possível levantar um eureka na 8900 e outro na 8901. Cada um aponta para outro. Os
dois são executados na configuração de alta disponibilidade, pois, se uma máquina cair, a
outra assume, evitando-se a chance de que o sistema fique fora do ar.
ANOTAÇÕES
www.grancursosonline.com.br 16
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br

ANOTAÇÕES
www.grancursosonline.com.br 17
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Zone Awareness
www.grancursosonline.com.br 18
DESENVOLVIMENTO DE SISTEMAS
Spring Cloud II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 19
DESENVOLVIMENTO WEB
Desenvolvimento WEB - Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
https://spring.io/projects/spring-boot
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
Desenvolvimento WEB - Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Ele fornece uma maneira mais fácil e rápida de configurar e executar aplicativos sim-
ples e baseados na web;
• Ele é usado para criar um aplicativo independente baseado em Spring que se pode
simplesmente executar com configuração mínima do Spring;
• Ele é “opinativo”, pois induz a um determinado modelo a ser desenvolvido.
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
Desenvolvimento WEB - Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
https://start.spring.io/
Características
10m
Projetos Relacionados
• Spring Data: Simplifica o acesso aos dados dos bancos de dados relacionais e NoSQL;
ANOTAÇÕES
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
Desenvolvimento WEB - Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Vantagens
• Criação de aplicativos Spring independentes que podem ser iniciados usando Java -jar;
• Teste de aplicativos da web facilmente com a ajuda de diferentes servidores HTTP
incorporados, como Tomcat, Jetty, etc;
• Não é necessário implantar arquivos WAR (Web Archives);
• Fornece POMs ‘iniciais’ opinativos para simplificar nossa configuração Maven;
• Fornece recursos prontos para produção, como métricas, verificações de integridade
e configuração externa;
• Não há necessidade de configuração XML;
• Oferece uma ferramenta CLI para desenvolver e testar o aplicativo Spring Boot;
• Minimiza a gravação de vários códigos repetitivos (o código que deve ser incluído em
muitos lugares com pouca ou nenhuma alteração), configuração XML e anotações;
• Aumenta a produtividade e reduz o tempo de desenvolvimento.
Objetivos
Recursos
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
Desenvolvimento WEB - Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• SpringApplication;
15m
• Events e Listeners do aplicativo;
• Recursos administrativos;
• Configuração externalizada;
• Arquivos de propriedades;
• Suporte YAML;
• Configuração com segurança de tipos;
• Logging;
• Segurança.
SpringApplication
Trata-se de uma classe que fornece uma maneira conveniente de inicializar o projeto,
sendo possível usar o método main (principalmente por ter sido iniciado como Java -jar).
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
Desenvolvimento WEB - Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Events e Listeners
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
Desenvolvimento WEB - Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Em resumo, cria-se um evento, que será publicado por alguém e poderá ser ouvido em
qualquer outro lugar da publicação.
Recursos administrativos
Os recursos administrativos podem ser ativados como uma forma de verificação, uma
vez que o servidor é embutido.
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
Desenvolvimento WEB - Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Configuração externalizada
20m
O Config Server pode ser usado de forma que a aplicação lerá as propriedades do servi-
dor de configuração.
Arquivos de propriedades
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
Desenvolvimento WEB - Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Suporte YAML
Logging
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO WEB
Desenvolvimento WEB - Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Segurança
DIRETO DO CONCURSO
1. (FUNCAB/PRODAM-AM/PROGRAMADOR/2014) O projeto Spring que tem como um
dos objetivos facilitar a criação de aplicações stand-alone é chamado:
a. Spring Separate
b. Spring Isolate
c. SpringApp
d. Spring Boot
e. Spring AWT
ANOTAÇÕES
www.grancursosonline.com.br 10
DESENVOLVIMENTO WEB
Desenvolvimento WEB - Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
O principal objetivo do Spring Boot é reduzir o tempo de desenvolvimento, teste de unidade
e teste de integração.
COMENTÁRIO
a. a configuração básica necessária para configurar a aplicação com base nos frameworks
disponíveis no CLASSPATH (local onde são disponibilizadas as bibliotecas).
b. uma maneira desacoplada de desenvolver aplicativos web com conceitos como Dispat-
cher Servlet, ModelAndView e View Resolver → Spring
c. uma maneira de automatizar a criação dos repositórios de dados (DAOs) utilizando JPA
→ Spring Data.
d. a configuração básica para o desenvolvimento orientado por eventos, onde listeners são
carregados quando a aplicação é iniciada → não é a principal.
e. Spring Boot não tem configurações pesadas de XML.
ANOTAÇÕES
www.grancursosonline.com.br 11
DESENVOLVIMENTO WEB
Desenvolvimento WEB - Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
GABARITO
1. d
2. a
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conte-
údo ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura
exclusiva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 12
DESENVOLVIMENTO WEB
Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
SPRING BOOT
O frame para desenvolvimento java, é baseado no spring, embute o servidor, tem uma
série de configurações default no corpo dele para então, simplificar o desenvolvimento.O
objetivo dele é simplificar o desenvolvimento. O spring boot é um conjunto do spring, utilizado
para criar aplicativos. Segue uma arquitetura de camadas. Cada camada vai se comunicar
com a camada abaixo.
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Para desenvolver Spring Boot é preciso: versão do Java compatível, mais comum 11, tem
1.8,17 e 18. Além do Java é necessário o MVN - V (“maiver”), versão 3.5.4. já vem embutido
no spring tools. Cria-se um arquivo pom.xml descritor padrão que descreve as
características básicas de um projeto.
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O spring boot tem várias dependências (starter), que permite adicionar jar no classpath.
Nas dependências pode-se colocar outros starters. Starter-Web traz uma série de configura-
ções e dependências para se executar como uma aplicação web.
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Nesse caso trata-se de uma aplicação com apenas uma classe. A aplicação rest é muito
comum hoje em dia em spring, vai desenvolver uma aplicação sem front end. Mapeia url. @
RestController – anotação de estereótipo, fornece várias dicas para leitura do código e para o
spring que a classe representa. A requisição do cliente vai chegar no controller, que vai definir
qual o mapeamento de url e fará o retorno, conteúdo. No JSF cria-se as pastas x-html e apon-
ta-se diretamente para essas páginas. No spring o código java que vai receber. Tem que colo-
car o mesmo nome da aplicação a ser executada. O Servidor será inicializado, por default
será embutido um servidor tomcat. Pode-se usar argumentos na linha de comando também.
15m
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O spring boot já tem um comando vinculado ao maven, o aplicativo só com a classe java
já consegue executar o projeto. Acessa-se a pasta do projeto e executa-se o comando spring
boot run, esse comando faz a compilação/execução.
Uma das coisas que faz o spring boot se destacar é a capacidade de criar java executá-
vel, independente de servidor.
Jar em geral é um arquivo que contém uma biblioteca, mas no caso do spring boot, as
dependências ficam dentro desse jar, e um servidor tomcat, um arquivo zip basicamente.
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (2018/CPCON/UEPB - ANALISTA DE SISTEMAS) Sobre as características não fun-
cionais do Spring Boot, julgue os itens a seguir:
I – A funcionalidade spring-boot-starter-actuator serve para funcionalidades avança-
das tais como monitoramento e rastreamento para aplicações em configuração fora
da caixa.
20m
II – As funcionalidades spring-boot-starter-undertow, spring-boot-starter-jetty, spring-
-boot-starter-tomcat servem para escolher sua opção específica de Embedded Servlet
Container.
III – A funcionalidade spring-boot-starter-logging serve para logging usando o Logback.
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Muitas aplicações incluem servidores embutidos, o spring boot inclui o tomcat com depen-
dência, pode usar o jetty e o undertow.
O spring boot não tem uma mandatória de log, exceto pelo dialoguem Piai, que é tipica-
mente promovida pelo spring framework, pelo módulo para usar o logback é preciso incluir
o spring-jc1. A maneira mais simples de fazer isso é depender do spring-boot-starter-logging
(que utiliza o logback). Para uma aplicação web é preciso o spring-boot-starter-web uma vez
que ele depende transitivamente do logging starter.
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
Spring Boot
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
GABARITO
1. b
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO DE SISTEMAS
Django
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DJANGO
www.grancursosonline.com.br 1
DESENVOLVIMENTO DE SISTEMAS
Django
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Seu propósito é tornar mais fácil construir aplicações web, de forma mais rápida e com
menos código.
É um framework de alto nível.
A linguagem é a python.
Foi feito para desenvolver web, de forma rápida.
Permite que muitas das dificuldades de desenvolvimento sejam retiradas.
Tem foco na performance, na velocidade.
Tem foco na parte de segurança.
Permite a escala da aplicação.
Em geral, o Django é usado para desenvolvimento de aplicações rápidas.
É um framework de altíssima qualidade.
https://www.djangoproject.com
O Django foi desenvolvido em ambiente acelerado, e foi projetado para facilitar.
O Django já vem com o mapeador objeto relacional, com um ORM embutido. Na maioria
dos frameworks, se quiser colocar relacionamento automático, é preciso instalar uma biblio-
teca adicional. O Django já vem com isso.
ORM: é uma biblioteca que permite a definição das entidades, em termos da linguagem
de programação subjacente. Ele cria e atualiza o banco de dados.
Desenhe seu modelo:
ANOTAÇÕES
www.grancursosonline.com.br 2
DESENVOLVIMENTO DE SISTEMAS
Django
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Faz relacionamentos
Ele vem com ferramenta de migrations também. É uma ferramenta que permite evoluir o
banco de dados. Consegue dar updates nas estruturas de tabela.
O makemigrations cria as migrações de tabelas que ainda não existem.
Migrate: esse comando faz a alteração nas tabelas dos bancos de dados.
Utilização da API:
www.grancursosonline.com.br 3
DESENVOLVIMENTO DE SISTEMAS
Django
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Importar os modelos;
Lista as entidades que estão lá;
A partir da definição de modelo, cria a tabela dos bancos de dados, faz o SQL, permite
comandos de alto nível (por exemplo, listar todos os reporteres).
Salvar no banco de dados.
Id; sincroniza o modelo
Pode pegar pelo ID-1, pelo nome completo, procura no SQL (gera no SQL).
.save: salva o artigo
10m
r.article_set.all: ele é uma relação de um para muitos. Um reporter tem um conjunto
de artigos.
É possível filtrar os artigos em que o nome do reporter começa com John.
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO DE SISTEMAS
Django
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Interface Dinâmica:
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO DE SISTEMAS
Django
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Só criamos o modelo, como ele já vem com ORM pronto, ele vai criar toda a api, todas as
operações de SQL já vêm prontas.
Uma vez que o modelo está definido, o Django pode criar, automaticamente, a interface
para fazer a edição. As interfaces mais “bobas” serão automaticamente criadas.
www.grancursosonline.com.br 6
DESENVOLVIMENTO DE SISTEMAS
Django
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Crie as URLs:
www.grancursosonline.com.br 7
DESENVOLVIMENTO DE SISTEMAS
Django
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Esse arquivo é um arquivo de template, numa linguagem especial que o próprio django utiliza.
Essa sintaxe lembra o JSP.
Esse padrão tem linguagem de template base.
Ele determina os blocos.
O primeiro bloco é o título.
O “context” tem uma variável chamada “year”. Quando ele renderizar, ele tem acesso a
variáveis. Year, por exemplo, é a variável, que veio na URL.
Ele faz uma sintaxe para repetição, para cada artigo em article list. Dentro do contexto
tem o article list, que está associado à variável a_list.
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO DE SISTEMAS
Django
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Para cada artigo que estiver na lista, ele vai colocar um elemento desses.
20m
DIRETO DO CONCURSO
1. (2017/IF-PE/Técnico de laboratório – Informática para Internet) No que diz respeito ao
Django (framework), analise as proposições a seguir:
I – É possível definir seus modelos de dados com classes em Python, porém não pode-
mos gerar automaticamente o SQL correspondente e executá-lo no banco de dados
a ser utilizado.
II – O Django necessita de ferramentas auxiliares para realizar a administração, só assim
é possível atualizar o conteúdo do seu sistema.
III – Com o Django é possível projetar URLs sem nenhuma limitação estrutural.
IV – O Django contém um sistema de templates que separa o html do código em Python.
V – O framework tem suporte a aplicações multilinguagem.
COMENTÁRIO
I – Ele gera o SQL automaticamente (pelo ORM)
II – referência à página admin. Não precisa de ferramentas adicionais
III – é possível
IV – sim, ele separa o código html do código python.
V – tradução, multilinguagem. Tem esse suporte.
No histórico de questões, existem poucas questões sobre Django.
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO DE SISTEMAS
Django
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
I – É possível definir seus modelos de dados com classes em Python, porém não pode-
mos gerar automaticamente o SQL correspondente e executá-lo no banco de dados
a ser utilizado.
II – O único banco de dados que o Django suporta é o SQLite, que vem incluído no Python.
III – O Django contém um sistema de templates que busca separar o html do código em Python.
IV – O framework tem suporte à internacionalização.
COMENTÁRIO
I – pode gerar SQL
II – o DJANGO suporta vários bancos de dados
25m
DJANGO:
• É um framework de backend;
• Linguagem python;
• É pragmático;
• Vem com ferramentas de ORM;
• Permite criar URLs dinâmicas;
• Separa o código python do html.
GABARITO
1. b
2. d
�Este material foi elaborado pela equipe pedagógica do Gran Concursos, de acordo com a aula pre-
parada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
www.grancursosonline.com.br 10
DESENVOLVIMENTO WEB
NODE.JS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
NODE.JS
BIBLIOGRAFIA
Livro:
Site:
http://nodejs.org/en/docs/
O site tem um conteúdo resumido sobre essa tecnologia.
Ambos estão disponíveis originalmente apenas em inglês.
INTRODUÇÃO
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
É ideal para aplicativos da Web que são acessados com frequência, mas são computa-
cionalmente simples, como as redes sociais.
Vem para dar a possibilidade de o JavaScript ser usado ao lado do servidor.
THREADS
Se você estiver usando um servidor da Web tradicional, como o Apache, sempre que um
recurso da Web for solicitado, o Apache criará um thread separado ou chamará um novo pro-
cesso para manipular a solicitação.
Mesmo que o Apache responda rapidamente às solicitações e limpe a memória após a
solicitação ter sido atendida, essa abordagem ainda pode consumir muitos recursos.
Um aplicativo Web popular (que pode ter milhões de acessos) poderá ter sérios proble-
mas de desempenho, pois as threads podem ir se abrindo, gerando um gasto computacional.
O Node, por outro lado, não cria uma nova thread ou processo para cada solicitação.
Em vez disso, ele ouve eventos específicos e, quando o evento acontece, responde
de acordo.
O Node não bloqueia nenhuma outra solicitação enquanto aguarda a conclusão da fun-
cionalidade do evento, e os eventos são tratados em um loop de eventos relativamente sim-
ples: o primeiro a chegar será o primeiro a ser servido. Tem solução diferente dos outros
servidores. Em vez de trabalhar com várias threads, ele trabalha com uma thread, que vai se
conectar com o cliente e fazer a requisição para o banco de dados de forma assíncrona e não
blocante, pois a thread continua sem esperar o banco de dados responder.
10m
JAVASCRIPT
Aplicativos Node são criados com JavaScript (ou uma linguagem alternativa que compila
para JavaScript). O Node só funciona com o JS.
O JavaScript é o mesmo que você usaria nos aplicativos do lado do cliente. No entanto, ao
contrário do JavaScript em um navegador, com o Node você precisa configurar um ambiente
de desenvolvimento.
O Node pode ser instalado em um ambiente Unix/Linux, MacOS ou Windows. A versão
que roda em Linux é uma adaptação.
ANOTAÇÕES
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
OLÁ MUNDO
É um código de aplicação web. Será levantada uma aplicação web que, quando for conec-
tada com um cliente em uma determinada, irá responder “olá mundo”.
// olamundo.js
// carrega o módulo http
var http = require(“http”);
// cria o servidor http
http
.createServer(function(req, res) {
// cabecalho do conteúdo
15m
res.writeHead(200, { “content-type”: “text/plain” });
// escreve mensagem e sinaliza que a comunicação está completa.
res.end (“Ola mundo!\n”);
})
.listen(8124);
console.log(“Servidor rodando na porta 8124”);
Note que em apenas 9 linhas de código é possível levantar um servidor web servindo
requisições.
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Nesta linha de código, um novo servidor é criado com createServer e uma função anô-
nima é passada como o parâmetro para a chamada de função.
Essa função anônima é a função requestListener e possui dois parâmetros: uma solicita-
ção do servidor (http.Server Request; na linha de código, “req”) e uma resposta do servidor
(http.ServerResponse; na linha de código, “res”).
ANOTAÇÕES
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• res.end("Ola Mundo!\n");
• }).listen(8124);
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O design fundamental por trás do Node é que um aplicativo é executado em uma única
thread (ou processo) e todos os eventos são tratados de forma assíncrona. Assincronismo
é a chave do node.
Considere como o servidor da Web típico, como o Apache funciona.
O Apache tem duas abordagens diferentes para lidar com as solicitações recebidas.
A primeira é atribuir cada solicitação a um processo separado até que a solicitação seja
satisfeita; o segundo é gerar um thread separado para cada solicitação.
A primeira abordagem pode criar quantos processos filhos forem especificados em um
arquivo de configuração do Apache.
A vantagem de criar um processo separado é que os aplicativos acessados por meio da
solicitação, como um aplicativo PHP, não precisam ser thread-safe (para não ter problemas
de concorrência de programação).
A desvantagem é que cada processo consome muita memória e não é muito escalável.
A segunda abordagem implementa uma abordagem híbrida de processamento de
processos.
Cada solicitação recebida é manipulada por meio de uma nova thread.
É mais eficiente do ponto de vista da memória, mas também exige que todos os aplicati-
vos sejam “thread safe”.
ANOTAÇÕES
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
25m
O node faz as coisas de maneira diferente. Quando se inicia um aplicativo Node, ele é
criado em um único thread de execução. Ele fica esperando que um aplicativo apareça e faça
um pedido. Quando o Node recebe uma solicitação, nenhuma outra solicitação pode ser pro-
cessada até que ela termine de processar o código da atual.
Pode-se pensar que isso não parece muito eficiente e não seria possível, exceto por
uma coisa: o Node opera de maneira assíncrona, por meio de um loop de eventos e funções
de callback.
Um loop de eventos nada mais é do que funcionalidade que basicamente pesquisa even-
tos específicos e invoca manipuladores de eventos no momento apropriado. No Node, uma
função de callback é esse manipulador de eventos.
Ao contrário de outros aplicativos single thread, quando se faz uma solicitação a um
aplicativo Node e ele deve fazer alguma solicitação de recursos (como uma solicitação de
banco de dados ou acesso a arquivos), o Node inicia a solicitação, mas não espera até que o
pedido receba uma resposta. Em vez disso, ele anexa um callback de chamada à solicitação.
Quando tudo o que foi solicitado está pronto (ou concluído), um evento é emitido, acionando
o callback associado para fazer algo com os resultados da ação solicitada ou com os recur-
sos solicitados.
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O processamento de CPU não pode ser muito intensivo para esses programas, porque
pode travar o loop de eventos. Se isso acontecer, ninguém será mais atendido, já que só é
executado um loop por vez.
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
8 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
NODE.JS II
RELEMBRANDO
As maioria das operações, sendo principalmente rede, consulta a banco de dados ou leitura
de arquivo, no NODE.JS são realizadas de formas assíncronas.
• Um novo módulo, File System (fs), é usado neste exemplo. O módulo File System
envolve a funcionalidade padrão do arquivo POSIX, incluindo a abertura e o acesso ao
conteúdo de um arquivo;
– POSIX é um padrão de sistema operacional, utilizado pelo Linux e MAC OS. O
Windowns não é exatamente nesse padrão, todavia, o NODE.JS funciona
nesse sistema.
• O método usado é readFile. Neste exemplo, é passado o nome do arquivo para abrir,
5m
a codificação e uma função anônima;
ANOTAÇÕES
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• O método listen informa ao objeto do servidor HTTP para começar a escutar conexões
na porta especificada;
– listen (8124, function () {
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
VANTAGENS DO NODE
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Executando o aplicativo PHP no Apache, cada vez que o aplicativo fosse solicitado,
ele teria que ser tratado em um processo filho separado. É possível que, só poderão
ser executados, no máximo, algumas centenas de processos filhos em paralelo.
Mais do que esse número de solicitações significa que um cliente precisa aguardar
uma resposta;
– Como já dito, o PHP pode atingir o máximo do sistema e apresentar problemas de
usabilidade.
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
GLOBAL
• Existem vários objetos disponíveis para todos os aplicativos do Node sem que o
usuário tenha que incorporar qualquer módulo. O Node agrupa esses itens sob o rótulo
descritivo de globais.
• São exemplos: 'console' e 'require'.
20m
• Se você definir uma variável global no JavaScript do lado do cliente, ela poderá ser
acessada pela página da Web e por todas as bibliotecas;
• No entanto, se você criar uma variável no escopo de nível superior em um módulo
Node (uma variável fora de uma função), ela se tornará global apenas para o módulo,
não para todos os módulos.
ANOTAÇÕES
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
PROCESS
• Cada aplicativo Node é uma instância de um objeto de processo Node e, como tal, vem
com certas funcionalidades internas. Muitos dos métodos e propriedades do objeto de
processo fornecem identificação ou informações sobre o aplicativo e seu ambiente;
– No browser, existem alguns objetos que são comuns, já no Node, existem outros
objetos que são globais. Por exemplo, há um elemento chamado Process, que
fornecerá informações sobre aplicativo executado.
BUFFER
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
8 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
NODE.JS III
O Node fornece suporte para uma ampla gama de operações de comunicação, tanto
TCP, HTTP, como TLS etc., sendo que surgiu para realizar comunicações na Web. Atual-
mente, seu uso é muito intenso para desktop de comando.
A camada do TCP normalmente é a base, acima está o HTTP etc. Em geral, por simplici-
dade, se trabalha com o HTTP por estar numa camada mais superior. Todavia, aplicativos de
chat, por exemplo, utilizam TCP.
• A criação do servidor TCP é um pouco diferente da criação do servidor HTTP. Cria-
mos o servidor, passando uma função de retorno de chamada. O servidor TCP difere
ANOTAÇÕES
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Assim, o servidor TCP é mais simples que o HTTP, fornecendo menos recursos.
Trata-se de uma conexão persistente, ou seja, irá perdurar, diferente do que ocorre no
HTTP, em que uma conexão é aberta, processada, e encerrada. No TCP ela ficará aberta por
mais tempo.
• Observe como um callback é anexado aos dois eventos por meio do método on;
• Muitos objetos no Node que emitem eventos fornecem uma maneira de anexar uma
função como ouvinte de evento usando o método on;
ANOTAÇÕES
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Esse método usa o nome do evento como primeiro parâmetro e o ouvinte da função
como o segundo;
• O cliente TCP é tão simples de criar como o servidor.
Em regra, o servidor é quem aguarda as funções, ao passo que o cliente é aquele que
se conecta.
10m
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
15m
ANOTAÇÕES
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Qualquer socket que ainda esteja aberto recebe um evento de fechamento que é
impresso no console;
• O servidor também pode servir mais de uma conexão de mais de um cliente, já que
todas as funções relevantes são assíncronas;
• O TCP é o mecanismo de transporte subjacente para grande parte das funcionalida-
des que usamos hoje na Internet, incluindo HTTP.
Por mais simples que seja, o TCP já suportaria uma série de conexões simultâneas, pois
tudo o que realiza é assíncrono.
HTTP
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Esse tipo de codificação é útil quando você está processando uma solicitação, como
uma saída de consulta de banco de dados grande para uma tabela HTML: a gravação
dos dados pode começar antes que o restante dos dados da consulta sejam recebidos.
20m
No TCP, para uma comunicação curta, era enviado um pacote de comunicação de uma
só vez para o cliente, sem uma forma padronizada para enviar partes. Já no HTTP, esse
envio de partes pode gerar uma resposta bem mais rápida para o cliente.
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
No dia a dia, não se escrevem tantos clientes HTTP, visto que já existe famoso: o brow-
ser, logo, o navegador é um cliente.
Streams
• O fluxo de comunicação entre os sockets, que vimos anteriormente, é uma implemen-
tação da interface da interface de fluxo abstrata (abstract stream interface);
• Os streams podem ser legíveis, graváveis ou ambos, e todos os fluxos são instâncias
do EventEmitter;
• Todos os fluxos de comunicação, incluindo process.stdin e process.stdout, são imple-
mentações da interface de fluxo abstrata;
• Devido a essa interface abstrata, todos os streams do Node possuem algumas funcio-
nalidades básicas.
Como os streams são uma interface genérica no Node, o funcionamento será bem pare-
cido. Além disso, outro elemento importante são os eventos, que serão emitidos pelos fluxos.
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Events e EventEmitter
• Muitos dos objetos centrais do Node baseiam-se no EventEmitter;
• Sempre que um objeto emitir um evento e for um evento tratado com "on", trata-se do
EventEmitter em ação;
• Entender como o EventEmitter funciona e como usá-lo são dois dos componentes
mais importantes do desenvolvimento do Node;
• O objeto EventEmitter é o que fornece o tratamento assíncrono de eventos para obje-
tos no Node.
Se algum callback for emitido, ele será enfileirado no núcleo de eventos para que seja
executado no futuro.
8 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
NODE.JS III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
9 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JAVA EE
O Java EE é uma plataforma de desenvolvimento corporativo para aplicações na lin-
guagem Java.
O PULO DO GATO
No mundo empresarial, o Java EE é muito utilizado e, por isso, é muito requisitado nas
provas de concurso.
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: recomenda-se o acesso do conteúdo do link, uma vez que é mais atualizado e oficial.
Essa documentação começa em um nível um pouco mais raso e depois é aprofunda-
da.
Introdução
Os desenvolvedores reconhecem cada vez mais a necessidade de aplicativos distribuí-
dos, transacionais e portáteis que aproveitam a velocidade, a segurança e a confiabilidade
da tecnologia de um servidor. O desenvolvimento de aplicações ficou mais complexo e com
mais requisitos com o passar dos anos, sendo mais difícil para o desenvolvedor tomar con-
trole de todos os aspectos da aplicação, principalmente em relação à segurança, acesso a
banco de dados etc.
5m
Hoje, os desenvolvedores gostam de pautar seus trabalhos em bibliotecas e framebox
que dão garantia para o desenvolvimento de uma estrutura confiável. O Java EE é base-
ado no servidor. Portanto, há um servidor altamente instrumentado com um monte de recur-
sos que vão proporcionar, por exemplo, acesso a banco de dados e recursos de segurança
embutidos no servidor. Esse tipo de detalhe técnico é apoiado em um servidor altamente
municiado de ferramentas no Java EE.
Os aplicativos corporativos fornecem a lógica de negócios para uma empresa. Eles são
gerenciados centralmente e frequentemente interagem com outros softwares corporativos.
No mundo da tecnologia da informação, os aplicativos corporativos devem ser projetados,
construídos e produzidos com maior velocidade e menos recursos.
ANOTAÇÕES
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JCP
Com a plataforma Java Enterprise Edition (Java EE), o desenvolvimento de aplicativos
corporativos Java é mais fácil e mais rápido. O objetivo da plataforma Java EE é fornecer aos
desenvolvedores um poderoso conjunto de APIs, reduzindo o tempo de desenvolvimento, a
complexidade do aplicativo e melhorando o desempenho.
10m
A plataforma Java EE é desenvolvida por meio do Java Community Process (JCP), res-
ponsável por todas as tecnologias Java. Grupos de especialistas compostos de partes inte-
ressadas criaram JSRs (Java Specification Requests) para definir as várias tecnologias Java
EE. O trabalho da Comunidade Java no programa JCP ajuda a garantir os padrões de esta-
bilidade e compatibilidade entre plataformas da tecnologia Java.
O JCP e JSRs vão ser documentos formais de funcionalidades para funcionar dentro de
um servidor JEE. A implementação pode ser usada por outras empresas e, quando alguém
for fazê-la, é preciso ater-se às especificidades da implementação usada. Geralmente, para
cada especificação há 2 ou 3 implementações diferentes e 1 implementação de referência.
Exemplo:
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
É importante que exista uma documentação formal de como que a biblioteca deve fun-
cionar, porque há vários servidores Java EE diferentes e aplicação vai pautar-se no recurso
fornecido pelo servidor. A priori, pode-se pegar a aplicação e implantá-la em outro servidor
que também seja homologado para Java EE.
O JEE não é uma biblioteca sozinha ou um flamer, mas uma plataforma de desenvolvi-
mento. O JEE é um conjunto de especificações que vão estar dentro de um servidor homo-
logado, que permite o desenvolvimento de aplicações sem que se coloque bibliotecas direta-
mente e apoiadas pelas funcionalidades disponíveis no servidor.
Anotações
A plataforma Java EE usa um modelo de programação simplificado. Os descritores de
implantação XML são opcionais. Em vez disso, um desenvolvedor pode simplesmente inserir
as informações como uma anotação diretamente em um arquivo de origem Java, e o servidor
Java EE configurará o componente na implementação e no runtime.
Essas anotações geralmente são usadas para incorporar dados de um programa que
seriam fornecidos em um descritor de implantação. Com anotações, colocam-se as informa-
ções de especificação diretamente no código ao lado do elemento do programa afetado.
Essas anotações são os recursos que têm sido mais utilizados nas últimas versões do
JEE e elas são uma alternativa aos descritores em xml.
15m
Exemplo: uso do JPA para acessar banco de dados a partir da aplicação Java. Nas ver-
sões iniciais do JEE, era preciso criar um grande conjunto de arquivos descritores em xml.
Nas últimas versões, os descritores continuam sendo suportados, no entanto tem se dado
mais enfoque à utilização de anotações. Essas anotações permitem que se coloquem as
configurações do sistema diretamente no arquivo de código fonte.
Servlet – web.xml
<?xmlversion="1.0"encoding="UTF-8"?>
<web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/
javaee/web-app_3_1.xsd"
version="3.1">
<display-name>ServletwithAnnotationsApplication</display-name>
ANOTAÇÕES
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
<servlet>
<servlet-name>simpleServlet</servlet-name>
<servlet-class>net.javatutorial.tutorials.ServletWithAnnotations</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>simpleServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
Nota para a edição: foi tirado o PRTSC, pois, ao copiar e colar ou digitar o código, o word
modifica a sintaxe do código para: Servlet with Annotations Application simpleServlet net.
javatutorial.tutorials.ServletWithAnnotations 1 simpleServlet /hello.
Nas versões anteriores, apesar de ser suportado, para se ter uma classe Java que res-
pondesse a uma determinada url, era preciso colocar no descritor de xml. Hoje, a maneira
preferível é usando as annotations.
Servlet – Annotation
packagenet.javatutorial.tutorials;
importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
@WebServlet("/hello")
publicclassServletWithAnnotationsextendsHttpServlet{
privatestaticfinallongserialVersionUID= -3462096228274971485L;
@Override
protectedvoiddoGet(HttpServletRequestreqest, HttpServletResponseresponse)
throwsServletException, IOException{
response.getWriter().println("HelloWorld!");
}
}
ANOTAÇÕES
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Injeção de Dependências
Na plataforma Java EE, a injeção de dependência pode ser aplicada a todos os recursos
de que um componente precisa, ocultando efetivamente a criação e a pesquisa de recursos
do código do aplicativo.
A injeção de dependência pode ser usada em contêineres Enterprise JavaBeans (EJB),
contêineres da Web e clientes de aplicativos.
A injeção de dependência permite que o contêiner Java EE insira automaticamente refe-
rências a outros componentes ou recursos necessários, usando anotações.
Há na aplicação uma série de recursos que têm um ciclo de vida. Eles são criados,
usados e destruídos. Por meio da injeção de dependências, é possível que o desenvolvedor
pauta-se diretamente na plataforma Java EE para que ela crie os objetos, instancie, dispo-
nibilize no momento necessário e depois destrua-os, reduzindo a quantidade de códigos e
erros no software.
20m
@Path(“/helps”)
public class HelpsResource {
@Inject HelpCDIService helpCDIService;
@Inject HelpEJBService helpEJBService;
@GET
@Path(“/ping”)
public String ping() {
return helpEJBService.ping();
}
}
Em nenhum momento o objeto é instanciado, já que terá seu ciclo de vida gerenciado
pela injeção de dependências. Outra vantagem da injeção de dependências é poder compar-
tilhar o objeto.
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O Java EE foi projetado para suportar aplicativos que implementam serviços corporativos
para clientes, funcionários, fornecedores, parceiros e outros que demandam ou contribuem
para a empresa. Tais aplicativos são inerentemente complexos, potencialmente acessando
dados de várias fontes e distribuindo aplicativos para uma variedade de clientes.
Para controlar e gerenciar melhor esses aplicativos, as funções de negócios para dar
suporte a esses vários usuários são realizadas na camada intermediária. A camada inter-
mediária representa um ambiente controlado de perto pelo departamento de tecnologia da
informação de uma empresa. A camada intermediária geralmente é executada em hardware
de servidor dedicado e tem acesso aos serviços completos da empresa.
O modelo de aplicativo Java EE define uma arquitetura para implementar serviços como
aplicativos de várias camadas que fornecem a escalabilidade, acessibilidade e capacidade
de gerenciamento necessárias para aplicativos de nível corporativo.
25m
Este modelo particiona o trabalho necessário para implementar um serviço de várias
camadas nas seguintes partes:
• A lógica de negócios e apresentação a ser implementada pelo desenvolvedor;
• Os serviços de sistema padrão fornecidos pela plataforma Java EE.
O desenvolvedor pode confiar na plataforma para fornecer soluções para os problemas
difíceis no nível de sistema de um serviço de várias camadas.
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
�A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JAVA EE II
O Java EE fornece um design arquitetural de como será o sistema, que, em geral, atende
as necessidades. Essas aplicações terão várias camadas e cada uma terá suas finalidades
e responsabilidades.
• A lógica do aplicativo é dividida em componentes de acordo com a função, e os com-
ponentes do aplicativo que compõem um aplicativo Java EE são instalados em várias
máquinas, dependendo da camada à qual o componente do aplicativo pertence:
– Os componentes da camada do cliente são executados na máquina do cliente;
– Os componentes da camada da Web são executados no servidor Java EE;
– Os componentes da camada de negócios são executados no servidor Java EE;
– O software da camada Enterprise Information System (EIS) é executado no
servidor EIS;
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
SEGURANÇA
DIRETO DO CONCURSO
1. (2013/FCC/TRT/5ª REGIÃO-BA/TÉCNICO JUDICIÁRIO/TECNOLOGIA DA INFORMA-
ÇÃO) Na plataforma Java EE, a injeção de dependência permite que o container Java
EE possa inserir automaticamente as referências a outros componentes ou recursos
necessários usando
a. funções e procedures.
b. descritores de implantação, obrigatoriamente.
c. requisições a servlets.
ANOTAÇÕES
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
Geralmente, a palavra “obrigatoriamente” torna o item suspeito.
Injeção de Dependências: na plataforma Java EE, a injeção de dependência pode ser
aplicada a todos os recursos de que um componente precisa, ocultando efetivamente a
criação e a pesquisa de recursos do código do aplicativo. A injeção de dependência pode
ser usada em contêineres Enterprise JavaBeans (EJB), contêineres da Web e clientes de
aplicativos.
A injeção de dependência permite que o contêiner Java EE insira automaticamente refe-
rências a outros componentes ou recursos necessários, usando anotações.
Exemplo:
@Path(“/helps”)
public class HelpsResource {
@Inject HelpCDIService helpCDIService;
@Inject HelpEJBService helpEJBService;
@GET
@Path(“/ping”)
public String ping() {
return helpEJBService.ping();
}
}
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
O Netbeans é uma ferramenta bastante usada para desenvolvimento JAVA, assim como o
Eclipse:
10m

ANOTAÇÕES
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMPONENTES JAVA EE
CLIENTES JAVA EE
Clientes da Web
15m
• Um cliente da Web consiste em duas partes:
– Páginas da web dinâmicas que contêm vários tipos de linguagem de marcação
(HTML, XML e assim por diante), geradas por componentes da web em execução
na camada da web;
– Um navegador da web, que renderiza as páginas recebidas do servidor.
• Um cliente da Web às vezes é chamado de thin cliente (cliente magro).
ANOTAÇÕES
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Os thin clients geralmente não consultam bancos de dados, executam regras de negó-
cio complexas ou se conectam a aplicativos legados. O navegador em si e a página
rodada não acessam diretamente o banco de dados, mas uma aplicação, fazendo uma
requisição do tipo http, e o servidor faz a requisição para o banco de dados. Isso ocorre
porque tudo que está na mão do cliente pode ser adulterado.
• Essas operações pesadas são passadas para beans corporativos em execução no
servidor Java EE, no qual podem aproveitar a segurança, velocidade, serviços e con-
fiabilidade das tecnologias do lado do servidor Java EE. Quando se trabalha no brow-
ser do usuário, sabe-se que ele não é um ambiente controlado e que o usuário pode
fazer alterações. Por isso, é importante fazer isso do lado do servidor JEE.
• Apresentação para o usuário:
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Applets
• Uma página da web inclui um applet escrito na linguagem de programação Java. Um
applet é um pequeno aplicativo cliente que é executado na máquina virtual Java insta-
lada no navegador da web;
• Os componentes da web são a API preferida para criar um programa de cliente da
web, porque não são necessários plug-ins ou arquivos de política de segurança nos
sistemas do cliente. O applet funciona como um plug-in. Hoje, ele é pouco utilizado,
mas funciona por flash.
• Além disso, os componentes da Web permitem um design de aplicativo mais limpo e
mais modular, pois fornecem uma maneira de separar a programação de aplicativos
do design de páginas da Web.
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
25m
8 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
this.name = name;
}
public String getName() {
return name;
}
}
setName: recebe o nome e altera o valor do bean.
getName: retorna ao valor que estiver salvo no bean.
O PULO DO GATO
As bancas gostam muito de cobrar os detalhes e os formalismos sobre o Java EE.
GABARITO
1. e
2. c
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
ANOTAÇÕES
9 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JAVA EE III
COMPONENTES DA WEB
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
// Lógica de negócio.
PrintWriter out = response.getWriter();
out.println(“ <h1> + message + “< /h1>”);
}
public void destroy() {
// não faz nada.
}
}
Cada vez que há uma requisição para a servet, cai-se nesse método. A “response” é a
resposta para o usuário final.
<servlet>
<servlet-name>HelloWorld </servlet-name>
<servlet-class>HelloWorld </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
O nível de abstração é pequeno e serve para tarefas simples e úteis, que não dependem
de uma resposta visual para o usuário.
JSP
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
<head>
<title>SimpleJSP Application</title>
</head>
<body>
<h1>Helloworld!</h1>
<h2>Currenttime is<%= LocalDateTime.now() %></h2>
</body>
</html>
Nota para a edição: foi tirado um PrtSc da tela do código, pois ele desaparece quando
copiado e colado para o Word.
Os Servel é o nível mais primitivo. Depois, vieram os JSPs, que tornou viável e mais fácil
o desenvolvimento Web. Por fim, o nível mais alto de abstração é o JSF.
JSF
<?xmlversion='1.0' encoding='UTF-8' ?>
<!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/
TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:head>
<title>UserForm</title>
</h:head>
<h:body>
<h:form>
<h:outputLabelfor="username">UserName</h:outputLabel>
<h:inputTextid="username" value="#{user.name}" required="true"
requiredMessage="UserNameisrequired" />
<br/>
<h:commandButtonid="submit-button" value="Submit"
action="response.xhtml"/>
</h:form>
</h:body>
</html>
ANOTAÇÕES
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Nota para a edição: foi tirado um PrtSc da tela do código, pois ele desaparece quando
copiado e colado para o Word.
Componentes da Web
10m
Componentes de Negócios
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
@Entity
@Table(name=”farmer”)
public class Farmer {
@Id @Column(name=”id”)
private int id;
@Column(name=”name”)
private String name;
@Column(name=”village”)
private String village;
public int getId() {
return id;
}
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
}
public static EntityManager getEntityManager(){
return emFactory.createEntityManager();
}
15m
ANOTAÇÕES
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (2015/CESPE/MEC/DESENVOLVEDOR) No que se refere à arquitetura Java EE 7, jul-
gue o próximo item.
A plataforma Java EE realiza tarefas comuns de infraestrutura para que os desenvol-
vedores possam se concentrar no desenvolvimento da lógica de negócios de suas
aplicações.
COMENTÁRIO
A definição básica do Java EE é permitir que o desenvolvedor se concentre na lógica de
negócio e deixe que a plataforma cuide das questões de infraestrutura de mais baixo nível.
8 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
O JavaScript e jQuery são executados do lado do navegador do cliente. O Java EE roda do
lado do servidor. A base de dados tem uma URL de conexão, nome de usuário, senha de
usuário. Caso isso seja mandado para o usuário final, ele terá as informações e, eventual-
mente, poderia comprometer as informações salvas na base de dadas.
As informações ficam salvas na base de dados em segurança. Via Java Script o navegador
faz uma requisição para o servidor JEE e esse servidor faz a conexão com a base de dados
e depois devolve a resposta para o usuário final.
Contêineres Java EE
20m
O PULO DO GATO
As bancas costumam cobrar muito o tópico sobre os contêineres do Java EE.
Serviços de Contêiner
• Os contêineres são a interface entre um componente e a funcionalidade específica de
plataforma e de baixo nível que suporta o componente;
• Antes de poder ser executado, um componente da Web, enterprise bean ou aplicativo
cliente deve ser construído em um módulo Java EE e implantado em seu contêiner;
ANOTAÇÕES
9 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
10 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Tipos de Contêiner
Serviços de Contêiner
• Servidor Java EE: O runtime de um produto Java EE. Um servidor Java EE fornece
EJB e contêineres da web;
• Contêiner EJB: gerencia a execução de beans corporativos para aplicativos Java EE.
Os beans corporativos e seu contêiner são executados no servidor Java EE;
• Contêiner da Web: gerencia a execução de páginas da Web, servlets e alguns com-
ponentes EJB para aplicativos Java EE. Os componentes da Web e seu contêiner são
executados no servidor Java EE;
• Contêiner do cliente do aplicativo: gerencia a execução dos componentes do aplicativo
cliente. Os aplicativos clientes e seus contêineres são executados no cliente;
• Contêiner de applet: gerencia a execução de applets. Consiste em um navegador da
web e um plug-in Java em execução no cliente juntos;
ANOTAÇÕES
11 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
30m
GABARITO
1. c
2. c
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
�A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
12 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JAVA EE IV
• Os Web Services são aplicativos corporativos baseados na Web que usam padrões
abertos, XML e protocolos de transporte para trocar dados com clientes que estão cha-
mando. Nesse caso, é permitido que várias ferramentas e aplicações com diferentes
linguagens possam comunicar-se.
• A plataforma Java EE fornece as APIs e ferramentas XML necessárias para projetar,
desenvolver, testar e implantar rapidamente serviços e clientes da Web que interope-
ram totalmente com outros serviços e clientes da Web em execução em plataformas
baseadas em Java ou não. A palavra-chave é interoperabilidade.
• Para escrever Web services e clientes com as APIs Java EE XML, basta passar dados
de parâmetros para as chamadas de método e processar os dados retornados; para
serviços da Web orientados a documentos, envia-se documentos contendo os dados
do serviço. Através de configurações, o servidor devolve em XML, caso seja solicitado,
e a própria plataforma Java cuida de fazer as conversões.
• Nenhuma programação de baixo nível é necessária porque as implementações da
API XML fazem o trabalho de converter os dados do aplicativo de e para um fluxo de
dados baseado em XML enviado pelos protocolos de transporte padronizados basea-
dos em XML.
5m
• A conversão de dados em um fluxo de dados padronizado baseado em XML é o que
torna os serviços e clientes da Web escritos com as APIs XML do Java EE totalmente
interoperáveis.
• Isso não significa necessariamente que os dados que estão sendo transportados
incluem tags XML, porque os próprios dados transportados podem ser texto sem for-
matação, dados XML ou qualquer tipo de dados binários.
XML
O XML é usado para guardar metadados, configuração do servidor do Java EE, para
definir estruturas visuais de comunicação ou para a comunicação entre máquinas através do
Web service.
• XML (Extensible Markup Language) é um padrão baseado em texto, extensível em
várias plataformas, para representar dados. As partes que trocam dados XML podem
criar suas próprias tags para descrever os dados, configurar esquemas para especi-
ficar quais tags podem ser usadas em um tipo específico de documento XML e usar
folhas de estilo XML para gerenciar a exibição e o manuseio dos dados.
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Por exemplo, um serviço da Web pode usar XML e um esquema para produzir listas
de preços, e as empresas que recebem as listas e o esquema podem ter suas próprias
folhas de estilo para manipular os dados da maneira que melhor se adapte às suas
necessidades.
• Uma empresa pode colocar informações de preços XML por meio de um programa
para converter o XML em HTML, para que possa publicar as listas de preços em
sua intranet.
• Uma empresa parceira pode colocar as informações de preços XML por meio de uma
ferramenta para criar uma apresentação de marketing.
• Outra empresa pode ler as informações de preços XML em um aplicativo para pro-
cessamento.
Uma aplicação JEE vai facilitar tanto a comunicação dentro da empresa, como da empresa
com empresas de fora. Isso é feito através de um protocolo de aplicação, chamado SOAP.
10m
ANOTAÇÕES
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br

ANOTAÇÕES
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (CCV/UFC/ANALISTA DE TECNOLOGIA DA INFORMAÇÃO – ENGENHARIA DE SOF-
TWARE/2013) Componentes de aplicação do Java EE executam em ambientes conhe-
cidos como containers, que são parte da plataforma Java EE. Além do “application client
container”, o Java EE suporta outros três tipos de containers, são eles:
15m
a. “JSP and Servlet container”, “Swing container” e “applet container”.
b. “Enterprise JavaBeans (EJB) container”, “web container” e “applet container”.
c. “GlassFish container”, “Enterprise JavaBeans (EJB) container” e “applet container”.
d. “JavaScript containers”, “Web containers for HTML and JSP pages” e “JSF container”.
e. “Web container”, “Enterprise JavaBeans (EJB) container” e “Web containers for HTML
and JSP pages”.
COMENTÁRIO
O GlassFish é um servidor específico.
ANOTAÇÕES
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
Serviços de contêiner
Um contêiner Java EE contém três componentes essenciais: um contêiner da Web (ou
seja, servlet), um contêiner EJB e um provedor de persistência:
COMENTÁRIO
Há uma discussão sobre se o Java EE suporta a HTML5. No entanto, ele suporta vários
dos atributos e das características do HTML5, não existindo uma restrição forte para que
ele não o rode.
ANOTAÇÕES
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
APIS JAVA EE
20m
O PULO DO GATO
Algumas bancas costumam cobrar os números de versões, o que torna as questões com-
plicadas. No entanto, geralmente, são cobradas as especificações mais famosas ou mais
utilizadas.
ANOTAÇÕES
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
@Stateful
@TransactionAttribute(NEVER)
@Remote({ examples.Account.class })
@Interceptors({ examples.AuditInterceptor.class })
public class AccountBean implements Account {
private int balance = 0;
@EJB(beanName = “ServiceBean”)
private Service service;
@ExcludeClassInterceptors
public void sayHelloFromAccountBean() {
service.sayHelloFromServiceBean();
}
@PreDestroy
public void preDestroy() {
System.out.println(“Invoking method: preDestroy()”);
}
O EJB é parte importante do JEE. Ele ficará como se fosse um bloco de código de negó-
cio e será implantado dentro de um contêiner do JEE. Em geral, ele não é uma parte visual,
mas um componente de negócio.
Servlet
• A tecnologia Java Servlet permite definir classes de servlet específicas do HTTP.
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Uma classe de servlet estende os recursos dos servidores que hospedam aplicativos
acessados por meio de um modelo de programação de solicitação-resposta.
• Embora os servlets possam responder a qualquer tipo de solicitação, eles geralmente
são usados para estender os aplicativos hospedados pelos servidores da web.
• Na plataforma Java EE 8, os novos recursos da tecnologia Java Servlet incluem
o seguinte:
– Server Push (o servidor envia ativamente recursos para o usuário);
– HTTP Trailer (permite que se coloque headers no final da resposta).
• A plataforma Java EE 8 requer o Servlet 4.0.
JavaServer Faces
25m
• A tecnologia JavaServer Faces é um framework de interface com o usuário para a
construção de aplicativos da web. Os principais componentes da tecnologia JavaSer-
ver Faces são os seguintes:
– Um framework de componentes de GUI.
– Um modelo flexível para renderizar componentes em diferentes tipos de HTML ou
diferentes linguagens e tecnologias de marcação.
– Um padrão RenderKit para gerar a marcação HTML 4.01.
• Os seguintes recursos suportam os componentes da GUI:
– Validação de entrada;
– Manipulação de eventos;
– Conversão de dados entre objetos e componentes de modelo;
– Criação de objeto de modelo gerenciado;
– Configuração de navegação da página (rota de navegação);
– Linguagem de Expressão (EL).
• Na plataforma Java EE 8, os novos recursos da tecnologia JavaServer Faces incluem
o seguinte:
– Suporte direto para WebSockets através da nova tag <f:websocket> (comunicação
full duplex. Ex.: chat).
– Validação de bean em nível de classe por meio da nova tag <f:validateWholeBean>.
– Uma anotação @ManagedProperty compatível com CDI.
– Estrutura aprimorada de expressão de pesquisa de componente.
ANOTAÇÕES
8 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JavaServer Pages
• A tecnologia JavaServer Pages (JSP) permite inserir trechos de código de servlet dire-
tamente em um documento baseado em texto. Uma página JSP é um documento
baseado em texto que contém dois tipos de texto:
– Dados estáticos, que podem ser expressos em qualquer formato baseado em texto,
como HTML ou XML;
30m
– Elementos JSP, que determinam como a página constrói conteúdo dinâmico.
• A plataforma Java EE 8 requer o JavaServer Pages 2.3 para compatibilidade com ver-
sões anteriores, mas recomenda o uso do Facelets como a tecnologia de exibição em
novos aplicativos.
GABARITO
1. b
2. b
3. e
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
�A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
9 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE V
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JAVA EE V
No código, sai-se de uma linguem que usa código de Java, para usar as tags. Essa é uma
forma intermediária de estabelecer o código.
ANOTAÇÕES
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE V
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O PULO DO GATO
Algumas provas cobram o número das versões que estão sendo utilizados. Porém, não
são todas as bancas que cobram dessa forma.
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE V
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Se não for lançada a exceção durante a execução do método, chegando ao fim, a tran-
sação dos comits vão ser feitas no banco de dados ou nas camadas de persistência. Caso
seja lançado um erro, as ações vão ser desfeitas, porque foi anotado como @Transaction.
No entanto, em alguma outra situação, o programador precisará ter um controle maior e pode
ser feito manualmente.
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE V
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Não foi necessário fazer nenhum tipo de correção explícita para XML.
// Caso um JSON seja solicitado
@GET
@Produces({MediaType.APPLICATION_JSON})
public Todo getJSON() {
Todo todo = new Todo();
todo.setSummary(“Application JSON Todo Summary”);
todo.setDescription(“Application JSON Todo Description”);
return todo;
}
Em geral, as API RESTful frontend dão mais preferência para trabalhar com o JSON por
ser um formato mais leve e de fácil leitura.
ANOTAÇÕES
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE V
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Managed Beans
• Managed Beans, POJOs (Objetos Gerenciados por Contêiner Leve) com requisitos
mínimos, suportam um pequeno conjunto de serviços básicos, como injeção de recur-
sos, callbacks do ciclo de vida e interceptadores.
• Managed Beans representam uma generalização dos Managed Beans especificados
pela tecnologia JavaServer Faces e podem ser usados em qualquer lugar em um apli-
cativo Java EE, não apenas em módulos da web.
20m
• A especificação Managed Beans faz parte da especificação da plataforma Java EE 8
(JSR 366). A plataforma Java EE 8 requer o Managed Beans 1.0.
@ManagedBean(value=”mybean”)
public class MyManagedBean {
@PostConstruct public void setupResources() {
System.out.println(“Setting up resources...”);
}
@PreDestroy
public void cleanupResources() {
System.out.println(“Collecting them back...”);
}
public String sayHello(String name) {
return “Hello “ + name;
}
}
Esse bean pode ser injetado em um Servlet ou em qualquer outro componente geren-
ciado de três maneiras diferentes:
1. Usando a anotação @Resource:
@Resource
MyManagedBean bean;
2. Usando a anotação “@Inject”:
@Inject
MyManagedBean bean;
ANOTAÇÕES
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE V
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
import javax.inject.Named;
@Named
ANOTAÇÕES
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE V
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
@Named
public class MinhaClasseUtil {
@Inject
private UmManagedBean bean;
@PostConstruct
public void init(){ b
ean.executarRotina();
}
}
Em nenhum momento foi chamado o new um managedbean. Ele será instanciado e
gerenciado diretamente para o contêiner. Essa é a grande utilidade do CDI.
25m
DIRETO DO CONCURSO
1. (2014/CESPE/TJ-SE/ANALISTA JUDICIÁRIO/ANÁLISE DE SISTEMAS) Acerca de sis-
temas transacionais e de arquitetura Java EE 7, julgue os itens subsequentes.
O Hibernate é instalado automaticamente na arquitetura Java EE 7, quando escolhido
o recurso JDBC. O Hibernate passou a ser utilizado como solução padrão para mape-
amento objeto-relacional nessa versão de arquitetura, porque a JPA (Java Persistence
API), não é mais suportada para realizar tal mapeamento, tendo sido marcada como
deprecated na versão Java EE 5.
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE V
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
A especificação é a JPA e a implementação do código é feita através do Hibernate. Há ou-
tras possibilidades de fornecedores além do Hibernate para colocar no servidor.
COMENTÁRIO
JEE é uma plataforma, não um servidor de aplicação.
GABARITO
1. e
2. c
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
ANOTAÇÕES
8 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE VI
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JAVA EE VI
BEAN VALIDATION
Essa API é bastante utilizada e permite que um bean, um cliente ou produto, através de
anotation, tenha uma série de restrições, como número de caracteres, valores máximos ou
mínimos. De forma automática, o bean será validado e apresentará para o usuário os erros
preenchidos.
• A especificação de Bean Validation define um modelo de metadados e uma API para
validar dados nos componentes JavaBeans. Em vez de distribuir a validação de dados
por várias camadas, como o navegador e o servidor, pode-se definir as restrições de
validação em um único local e compartilhá-las nas diferentes camadas.
• Na plataforma Java EE 8, os novos recursos de Bean Validation incluem:
– Suporte para novos recursos no Java SE 8, como a API Date-Time;
– Adição de novas restrições internas de Bean Validation.
• A plataforma Java EE 8 requer Bean Validation 2.0.
@AssertTrue
private boolean working;
@Min(value = 18, message = “Idade não pode ser menor que 18”)
@Max(value = 150, message = “Idade não pode ser maior que 150”) private int age;
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE VI
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
System.out.println(“Create connection”);
connection = connectionFactory.createConnection();
System.out.println(“Create session”);
Session session = connection.createSession(false,
QueueSession.AUTO_ACKNOWLEDGE);
ANOTAÇÕES
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE VI
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
System.out.println(“Lookup queue”);
Queue queue = (Queue) context.lookup(“/queue/HelloWorldQueue”);
System.out.println(“Start connection”);
connection.start();
System.out.println(“Create producer”);
MessageProducer producer = session.createProducer(queue);
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE VI
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE VI
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JAVAMAIL API
• Os aplicativos Java EE usam a API JavaMail para enviar notificações por email. A API
JavaMail possui duas partes:
– Uma interface no nível do aplicativo usada pelos componentes do aplicativo para
enviar email.
– Uma interface de provedor de serviço.
• A plataforma Java EE inclui a API JavaMail com um provedor de serviços que permite
que os componentes do aplicativo enviem email.
• A plataforma Java EE 8 requer o JavaMail 1.6.
// Compõe a mensagem
try{
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO,new
InternetAddress(to));
message.setSubject(“Ping”);
message.setText(“Olá, esta é uma mensagem”);
ANOTAÇÕES
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE VI
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
// Envia
Transport.send(message);
System.out.println(“enviada com sucesso....”);
}catch (MessagingException mex) {mex.printStackTrace();}
}
}
15m
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE VI
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
@ServerEndpoint(“/actions”)
public class DeviceWebSocketServer {
@OnOpen
public void open(Session session) {
// Implementação
}
@OnClose
public void close(Session session) {
// Implementação
}
@OnError
public void onError(Throwable error) {
// Implementação
}
@OnMessage
public void handleMessage(String message, Session session) {
// Implementação
}
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Java EE VI
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (2017/IBFC/TJ-PE/ANALISTA JUDICIÁRIO/ANALISTA DE SISTEMAS) Adquiriu-se a
última versão do Java Platform, Enterprise Edition. Nessa última versão do Java EE
temos containers e API’s tais como:
(1) JTA (Java Transaction API).
(2) JSF (JavaServer Faces).
(3) JDBC (Java Database Connectivity).
(4) JPA (Java Persistence API).
a. da relação apresentada somente são aplicados o 1, 2 e 3.
b. da relação apresentada somente são aplicados o 1, 2 e 4.
c. da relação apresentada somente são aplicados o 2, 3 e 4.
d. da relação apresentada somente são aplicados o 1, 3 e 4.
e. da relação apresentada todos podem ser aplicados
GABARITO
1. e
2. a
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
�A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
8 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
JPA
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JPA
BIBLIOGRAFIA
https://www.javacodegeeks.com/minibook/jpa-minibook
https://docs.oracle.com/javaee/7/tutorial/partpersist.htm
Obs.: dependendo do intuito, utiliza-se uma bibliografia diferente. Para o dia a dia, o livro
é mais interessante e prático; para concurso, a documentação é mais interessante.
As provas têm sido bem teóricas, com conteúdo pouco prático. Em geral, ao elaborar
as provas, as bancas utilizam a documentação oficial para elaborar as questões. Por
isso, o conteúdo da aula é mais textual. Nos slides, já é possível revisar o conteúdo.
Introdução
“O Java Persistence API (JPA) fornece aos desenvolvedores Java um recurso de mape-
amento objeto/relacional para gerenciar dados em aplicativos Java.”
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
JPA
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: é uma linguagem semelhante ao SQL, mas é orientada ao objeto. É uma simplifica-
ção do SQL.
Obs.: o JPA infere muita coisa do próprio objeto, mas, muitas vezes, é preciso usar dicas
para especificar. Esses metadados servem para dar uma orientação ao JPA, marcan-
do na classe como eles devem persistir ou tratar aquela entidade.
Entidades
Obs.: geralmente, há uma classe cliente, que estará relacionada a uma tabela chama-
da cliente.
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
JPA
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: em geral, se houver uma classe cliente, o cliente terá um nome, uma lista de ende-
reços. O endereço será uma outra entidade; haverá um relacionamento. O cliente
tem uma lista de endereço; esse endereço é uma outra tabela de banco de dados.
Por meio dos metadados, determina-se como é o relacionamento de cliente com en-
dereço (pode ser de um para um; de um para muitos; de muitos para um; de muitos
para muitos). Isso depende de como é definido o relacionamento, que é definido em
função do negócio.
O objetivo geral do JPA é definir algumas classes, anotá-las com alguns metadados e
essas classes serão mais fáceis para persistir no banco de dados. Muitas tarefas serão feitas
de forma automática pelo JPA, sem escrever todo o SQL verboso.
Obs.: @entity.
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
JPA
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• O estado persistente de uma entidade pode ser acessado por meio das proprie-
dades ou variáveis da instância da entidade. Os campos ou propriedades podem
ser dos seguintes tipos: primitivos, String ou tipos serializáveis, wrappers de tipos pri-
mitivos, BigDecimal, Date, etc.
• As entidades podem usar campos persistentes, propriedades persistentes ou uma
combinação de ambos.
• Se as anotações de mapeamento forem aplicadas às variáveis de instância da enti-
dade, a entidade usará campos persistentes.
• Se as anotações de mapeamento forem aplicadas aos métodos getter da entidade
para propriedades no estilo JavaBeans, a entidade usará propriedades persistentes.
Obs.: o metadado de persistência pode ser utilizado aplicado tanto a uma propriedade di-
reto na classe quanto no método getter.
Campos persistentes
Obs.: ao anotar como transiente, ao fazer a persistência da entidade, esse campo anotado
como transiente não será persistido no banco de dados.
15m
Propriedades persistentes
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
JPA
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Se uma entidade Cliente usar propriedades persistentes e tiver uma variável de ins-
tância privada chamada primeiroNome, a classe definirá um método getPrimeiro-
Nome e setPrimeiroNome para recuperar e definir o estado da variável de instância
primeiroNome.
• As anotações de mapeamento objeto/relacional para propriedades persistentes devem
ser aplicadas aos métodos “getter”.
• As anotações de mapeamento não podem ser aplicadas a campos ou propriedades
anotadas como @Transient ou marcadas como transitórias.
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
JPA
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: imagine que haja clientes e uma lista de endereços. Suponha que essa lista possa
ter quantos endereços quiser. Às vezes, por descuido ou desconhecimento, o desen-
volvedor coloca EAGER. Quando carregar o cliente, carrega toda a lista. Só que a
lista pode ser muito grande e os objetos podem ficar pesados. Em geral, o padrão é
utilizar o método LAZY, ou seja, o carregamento é tardio. Ele será feito à medida que
os campos forem acessados.
@Entity
public class Person {
... @ElementCollection(fetch=EAGER)
protected Set nickname = new HashSet();
...
}
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
JPA
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
JPA
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
@Entity
public class Contact implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
protected String firstName;
@NotNull
protected String lastName;
@Pattern(regexp = “[a-z0-9!#$%&’*+/=?^_`{|}~-]+(?:\\.”
+ “[a-z0-9!#$%&’*+/=?^_`{|}~-]+)*@”
+ “(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9]”
+ “(?:[a-z0-9-]*[a-z0-9])?”,
message = “{invalid.email}”)
protected String email;
@Pattern(regexp = “^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{4})$”,
message = “{invalid.
phonenumber}”)
protected String mobilePhone;
...
}
DIRETO DO CONCURSO
1. (2013/CESPE/TRE-MS/TÉCNICO JUDICIÁRIO – PROGRAMAÇÃO DE SISTEMAS)
Assinale a opção correspondente ao elemento que, além de ser utilizado para definir
um meio de mapeamento objeto-relacional para objetos Java simples e comuns (PO-
JOs), denominados beans de entidade, também é utilizado para gerenciar o desenvol-
vimento de entidades do modelo relacional em plataforma nativa Java SE e Java EE.
a. JSF
b. SVN
c. JPA
d. spring
e. struts
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
JPA
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
30m
O JPA pode ser utilizado no Java SE e Java EE.
Destaque para o trecho: mapeamento objeto-relacional para objetos Java simples e co-
muns (POJOs).
É preciso saber que o JPA faz o mapeamento objeto-relacional.
GABARITO
1. c
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO WEB
JPA II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JPA II
ATENÇÃO
• Chave primária é um conceito bem conhecido no banco de dados. O ID do cliente não
pode ser repetido, é um identificador único.
• As chaves primárias simples são aquelas mais naturais, que têm um ID, e a chave com-
posta pode ser constituída de várias outras propriedades combinadas.
ATENÇÃO
Para criar uma entidade que tenha uma chave composta, é necessário criar uma classe
para que a mesma seja uma chave composta.
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
JPA II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Um-para-um (One-to-one):
• Cada instância de entidade está relacionada a uma única instância de outra entidade.
• Por exemplo, para modelar um armazém físico no qual cada depósito contém uma
única ferramenta, a ferramentaDepositada e a ferramenta teriam um relacionamento
de um para um.
• Relacionamentos um-para-um usam a anotação javax.persistence.OneToOne na pro-
priedade ou campo persistente correspondente.
5m
ATENÇÃO
A propriedade irá se relacionar com uma outra tabela.
UM-PARA-MUITOS (ONE-TO-MANY):
• Uma instância de entidade pode estar relacionada a várias instâncias das outras
entidades.
• Um pedido de venda, por exemplo, pode ter vários itens.
• No aplicativo de pedido, OrdemDeCompra teria um relacionamento um-para-
muitos com Item.
• Relacionamentos um-para-muitos usam a anotação javax.persistence.OneToMany na
propriedade ou campo persistente correspondente.
MUITOS-PARA-UM (MANY-TO-ONE):
• Várias instâncias de uma entidade podem estar relacionadas a uma única instância da
outra entidade.
• Essa multiplicidade é o oposto de um relacionamento um-para-muitos.
• No exemplo mencionado, o relacionamento com OrdemDeCompra da perspectiva de
Item é de muitos para um.
• Relacionamentos muitos-para-um usam a anotação javax.persistence.ManyToOne na
propriedade ou campo persistente correspondente.
ANOTAÇÕES
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
JPA II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Muitos-para-muitos (Many-to-many):
ATENÇÃO
Se a classe cliente tem uma lista de endereços e, na classe endereço tem a referência ao
cliente esse relacionamento é bidirecional, pois, tanto o cliente sabe a lista de endereços que
tem quanto o endereço sabe a qual cliente está relacionado. Mas, caso somente o cliente
saiba da sua lista de endereços, ou vice versa, este seria um relacionamento unidirecional.
10m
Relacionamentos Bidirecionais
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
JPA II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Por exemplo, se OrdemDeCompra souber quais instâncias de Item ele possui e se Item
souber a qual OrdemDeCompra pertence, eles terão um relacionamento bidirecional.
RELACIONAMENTOS UNIDIRECIONAIS
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
JPA II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Para OrdemDeCompra e Item, uma consulta pode navegar nas duas direções, porque
essas duas entidades têm um relacionamento bidirecional.
ATENÇÃO
Se houver um cliente com vários endereços, e, na entidade cliente foi inserido ou excluído
um endereço. Se a remoção não for feita fisicamente na tabela, pode acontecer daquele
endereço ficar “órfão” na tabela ocupando apenas o espaço.
15m
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
JPA II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
@OneToMany(cascade=REMOVE, mappedBy=”cliente”)
public Set<OrdemCliente> getOrdens() { return ordens; }
ATENÇÃO
O orphanRemoval é diferente da operação cascata remove pois, na operação em cascata
remove, se uma ordem com vários itens é removida, implica a remoção de todos os itens,
mas se a ordem continua sem a lista dos itens e um item é removido, mas a ordem continua
a existir, esse item será considerado órfão e deverá ser excluído pela operação de órfãos.
Obs.: neste caso não ficará nenhuma entidade órfã na tabela, a mesma permanecerá limpa.
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
JPA II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (FEPESE/2013/JUCESC/ANALISTA TÉCNICO EM GESTÃO DE REGISTRO MER-
CANTIL – ANALISTA DE INFORMÁTICA) Em relação à JPA e Hibernate, considere as
seguintes afirmativas.
25m
COMENTÁRIO
O JPA é uma especificação, o Hibernate é uma implementação. Existem 3 (três) níveis:
JSR (nível mais alto de abstração, uma solicitação de especificação); depois o nível mais
baixo entre eles, o JPA, que é uma especificação; e, por último, o Hibernate, que é uma
implementação da especificação e costuma ser mais popular.
• O Hibernate não especifica uma JSR, ele a implementa.
GABARITO
1. a
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
JPA III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JPA III
Gerenciando Entidades
A interface do EntityManager
Obs.: ou seja, as operações básicas sobre as entidades (inserir, remover, localizar etc.)
serão feitas utilizando o API do EntityManager.
Obs.: existem duas formas de gerir o gerenciador – pelo contêiner ou pela aplicação.
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
JPA III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: será utilizada essa forma gerenciada pelo contêiner em casos mais simples, ou seja,
na maioria dos casos. Ela tem algumas vantagens, como por exemplo o gerencia-
mento automático de transações. Ou seja, o próprio contêiner iniciará uma transação
e se der algum erro nas operações ele fará o rollback daquelas transações auto-
maticamente.
@PersistenceContext
EntityManager em;
Obs.: no caso dos gerenciadores de entidades gerenciados por aplicação haverá um con-
trole bem mais manual sobre como são feitas as transações.
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
JPA III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
@PersistenceUnit
EntityManagerFactory emf;
EntityManager em = emf.createEntityManager();
@Resource
ANOTAÇÕES
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
JPA III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
UserTransaction utx;
@PersistenceUnit
EntityManagerFactory emf;
EntityManager em;
@Resource
UserTransaction utx;
...
em = emf.createEntityManager();
try {
utx.begin();
em.persist(SomeEntity);
em.merge(AnotherEntity);
em.remove(ThirdEntity);
utx.commit();
} catch (Exception e) {
utx.rollback();
}
@PersistenceContext
EntityManager em;
public void enterOrder(int custID, CustomerOrder newOrder) {
Customer cust = em.find(Customer.class, custID);
cust.getOrders().add(newOrder);
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
JPA III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
newOrder.setCustomer(cust);
}
15m
Obs.: uma nova entidade por enquanto ainda não tem referências no banco de dados,
ainda não está gerenciada de nenhuma forma e estará em determinado estado. Se
o usuário persistir aquela entidade, ela mudará o seu estado. E quando o usuário
recuperar aquela entidade do banco de dados, ela estará gerenciada, diferentemente
de quando é feito um novo cliente.
• Novas instâncias de entidade não têm identidade persistente e ainda não estão
associadas a um contexto de persistência.
• Instâncias de entidades gerenciadas possuem uma identidade persistente e estão
associadas a um contexto de persistência.
• As instâncias de entidades desanexadas têm uma identidade persistente e não
estão atualmente associadas a um contexto de persistência.
• As instâncias de entidade removidas têm uma identidade persistente, estão asso-
ciadas a um contexto persistente e são agendadas para remoção do armazena-
mento de dados.
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
JPA III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: as entidades têm um ciclo de vida que está relacionado ao fato de elas terem sido
persistidas ou não no banco de dados.
@PersistenceContext
EntityManager em;
...
public LineItem createLineItem(CustomerOrder order, Product product, int quantity) {
LineItem li = new LineItem(order, product, quantity);
order.getLineItems().add(li);
em.persist(li);
return li;
}
@OneToMany(cascade=ALL, mappedBy=”order”)
public Collection<LineItem> getLineItems() {
return lineItems;
}
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
JPA III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (FCC/TRT 19ª REGIÃO – AL/2011/TÉCNICO JUDICIÁRIO – TECNOLOGIA DA IN-
FORMAÇÃO) Os estados do ciclo de vida de uma instância de uma entidade, definidos
na JPA 2.0, são
a. novo (new), gerenciado (managed), destacado (detached) e removido (removed).
b. ativo (active), inativo (inactive) e removido (removed).
c. novo (new), temporário (temporary), permanente (permanent) e destacado (detached).
d. novo (new), temporário (temporary) e destacado (detached).
e. gerenciado (managed), temporário (temporary), permanente (permanent) e desta-
cado (detached).
COMENTÁRIO
Conforme visto durante a aula, os estados do ciclo de vida de uma instância de uma enti-
dade, definidos na JPA 2.0, são novo (new), gerenciado (managed), destacado (detached)
e removido (removed).
25m
GABARITO
1. . a
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
�A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
JPA IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JPA IV
ATENÇÃO
A entidade é nova, ainda não estava persistida e então foi feita o REMOVE dela.
• Se a remoção for invocada em uma entidade desanexada, o remove emitirá uma Ille-
galArgumentException, ou a confirmação da transação falhará.
• Se invocado em uma entidade já removida, a remoção será ignorada.
• Os dados da entidade serão removidos do armazenamento de dados quando a tran-
sação for concluída ou como resultado da operação de flush.
• No exemplo a seguir, todas as entidades LineItem associadas ao pedido também são
removidas, pois CustomerOrder.getLineItems tem cascade=ALL definido na anotação
de relacionamento:
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
JPA IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ATENÇÃO
Há uma remoção da ordem para que a entidade seja gerenciada e posteriormente removida.
Obs.: sincronizar é o mesmo que salvar as alterações, sincronizar o que está na memória
JAVA com o que está na memória do banco de dados.
Unidades de Persistência
Obs.: a camada que gerencia a conexão direta com o banco de dados é chamada de
PersistenceContents.
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
JPA IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
<persistence>
<persistence-unit name=”OrderManagement”>
<jta-data-source>jdbc/MyOrderDB</jta-data-source>
<jar-file>MyOrderApp.jar</jar-file>
<class>com.widgets.CustomerOrder</class>
<class>com.widgets.Customer</class>
</persistence-unit>
</persistence>
Consultando Entidades
Obs.: o JPQL é muito parecido com SQL, porém mais poderoso, pois tem uma orientação
objeto, permite que navegue nas entidades, entre outros.
• A APICriteria é usada para criar consultas de tipos seguros usando APIs da linguagem
de programação Java para consultar entidades e seus relacionamentos.
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
JPA IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ATENÇÃO
Um outro problema obtido com o JPQL, que talvez seja até maior, é que, ao fazer um
JPQL, não pode fazer consultas, chamadas de consultas abertas, o que vai ter são parâ-
metros que são imutáveis para evitar problemas na injeção e no código.
• Consultas via Criteria API permitem que se defina a consulta na camada de negócios
do aplicativo.
• Embora isso também seja possível usando consultas dinâmicas JPQL, as consultas
Criteria fornecem melhor desempenho porque as consultas dinâmicas JPQL devem
ser analisadas sempre que forem chamadas.
• As consultas via Criteria são seguras e, portanto, não exigem conversão de tipos, como
as consultas de JPQL.
ATENÇÃO
As consultas via Criteria estão mais ligadas ao código, será uma consulta mais programá-
tica no código e já consegue fazer as validações do tipo de forma prévia, sem a possibili-
dade de erro de conversão do tipo.
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
JPA IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• A API Criteria é apenas outra API da linguagem de programação Java e não exige que
os desenvolvedores aprendam a sintaxe de outra linguagem de consulta.
15m
• As consultas via Criteria são geralmente mais detalhadas do que as consultas JPQL e
exigem que o desenvolvedor crie vários objetos e realize operações nesses objetos
antes de enviar a consulta ao gerenciador de entidades.
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
JPA IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
<property name=”javax.persistence.schema-generation.create-s-
cript-source”
value=”META-INF/sql/create.sql” />
<property name=”javax.persistence.sql-load-script-source”
value=”META-INF/sql/data.sql” />
<property name=”javax.persistence.schema-generation.drop-source”
value=”script” />
<property name=”javax.persistence.schema-generation.drop-s-
cript-source”
value=”META-INF/sql/drop.sql” />
</properties>
</persistence-unit>
</persistence>
Configuração Descrição
none Nenhuma criação ou exclusão de esquema ocorrerá.
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
JPA IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: há a opção de utilizar algum script, que talvez no banco de dados tenha algum
comando especifico e então cria-se o comando SQL que vai gerar as tabelas do banco de
dados. Mas, caso o banco de dados seja mais simples, não é necessário criar um script pois
o sistema ou contêiner vai analisar a relação entre as classes e criar tabelas automatica-
mente com base nos metadados.
Configuração Descrição
script Utiliza um script fornecido para criar ou excluir os artefatos do banco de dados.
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
JPA IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
<property name=”javax.persistence.sql-load-script-source”
value=”META-INF/sql/data.sql” />
ATENÇÃO
Os comandos SQL de inserção de dados no banco de dados, para criar dados fictícios ou
para criar listas de dados iniciais como listas de estados ou municípios, já pré-carregados
no banco de dados.
COMENTÁRIO
• O mapeamento entre as tabelas de entidades vai ser direto na entidade.
• As queries são definidas no código.
<?xml version=”1.0” encoding=”UTF-8”?>
<persistence xmlns=”http://xmlns.jcp.org/xml/ns/persistence”
xmlns:xsi=”http://www.w3ºrg/2001/XMLSchema-instance” version=”2.1”
xsi:schemaLocation=”http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd”>
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
JPA IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
GABARITO
1. E
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO WEB
EJB
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
EJB
Bibliografia
Introdução
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
EJB
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
EJB
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
No diagrama acima, há um web browser e uma aplicação desktop, que irá se comunicar
direto com a Enterprise Bean. Já a web browser irá de encontro com um web container, que
irá consumir por meio do Enterprise Bean. Além disso, há fronteiras que dividem a máquina
15m
do cliente e o servidor Java EE. Por fim, há o acesso ao banco de dados.
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
EJB
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
É instanciado uma vez por aplicativo e existe pelo ciclo de vida do aplicativo. São projetados
para circunstâncias em que uma única instância de Enterprise Bean é compartilhada e acessada
simultaneamente pelos clientes. Oferecem funcionalidade semelhante aos stateless Session
Beans, mas diferem deles no sentido de que há apenas um por aplicativo, ao contrário de
um conjunto de stateless Session Beans. Ademais, podem implementar endpoints de web
services. Trata-se de uma informação que será aplicada a todas as aplicações.
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
EJB
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Para melhorar o desempenho, quando o estado do bean não tem dados para um cliente
específico. Em uma única chamada de método, o bean executa uma tarefa genérica para
todos os clientes. Por exemplo, você pode usar um Stateless Session Bean para enviar um
e-mail que confirme um pedido on-line. O bean implementou uma web service.
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
EJB
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A principal diferença é que os clientes não acessam o Message-Driven Beans por meio
de interfaces. Ao contrário de um Session Bean, ele tem apenas uma classe de bean.
Assemelha-se a um bean de sessão sem estado, pois não retém nenhum dado ou estado
de conversação para um cliente específico, todas as instâncias são equivalentes, permitindo
que o contêiner EJB atribua uma mensagem a qualquer instância de bean e um único bean
pode processar mensagens de vários clientes.
São executados após o recebimento de uma única mensagem do cliente. São acionados
de forma assíncrona. Geralmente, são relativamente de curta duração e não representam
dados compartilhados diretamente no banco de dados, mas podem acessar e atualizar esses
dados. Podem estar conscientes das transações e não têm estado.
Session Beans permitem enviar mensagens JMS e recebê-las de forma síncrona, mas
não de forma assíncrona. Para evitar a dependência dos recursos do servidor, não se utiliza
o bloqueio de recebimento síncrono em um componente do lado do servidor. Em geral, as
mensagens JMS não devem ser enviadas ou recebidas de forma síncrona. Para receber
mensagens de forma assíncrona, usa-se um Message-Driven Beans.
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
EJB
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
No diagrama acima, a aplicação ao cliente manda uma mensagem, que entra em uma fila
de processamento que recebe a mensagem e a entrega para o servidor, no qual está o EJB
container, onde está a instância do Message-Driven Beans.
30m
Java EE Containers
• Java EE server: a parte runtime de um produto Java EE. Um servidor Java EE fornece
containers EJB e da web;
• Enterprise JavaBeans (EJB) container: gerencia a execução de beans corporativos
para aplicativos Java EE. Os beans corporativos e seu contêiner são executados no
servidor Java EE;
• Web container: gerencia a execução de páginas da Web, servlets e alguns componentes
EJB para aplicativos Java EE. Componentes da Web e seu contêiner são executados
no servidor Java EE;
• Application client container: gerencia a execução de componentes do aplicativo cliente.
Clientes de aplicativos e seus contêineres são executados no cliente;
• Applet container: gerencia a execução de applets. Consiste em um navegador da web
e plug-in Java sendo executado no cliente juntos.
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
EJB
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (FCC/2015) O Servlet Container que suporta as tecnologias servlet, JSP, JSTL e JSF,
mas não suporta EJB é o:
a. JBoss.
b. WebSphere.
c. GlassFish.
d. Jetty.
e. Weblogic.
COMENTÁRIO
O Servlet Container que suporta as tecnologias servlet, JSP, JSTL e JSF, mas não suporta
EJB, é o Jetty.
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
EJB
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
Existem diversos protocolos para os quais é possível comunicar, no que se refere às
aplicações EJB.
35m
GABARITO
1. d
2. b
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO DE SISTEMAS
JSF
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JSF
O JavaServer Faces (JSF) é uma tecnologia muito utilizada para desenvolver pági-
nas da web.
Bibliografia:
Esse conteúdo da Oracle é utilizado com frequência pelas bancas examinadoras para
elaborar suas provas.
Introdução
1 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Além disso, o JSF também funciona como uma especificação, que tem várias implemen-
tações. Assim, é possível colocar uma aplicação JSF em vários servidores JEE que imple-
mentam aquela especificação.
O JSF é bastante utilizado para o desenvolvimento de aplicações web, pois é adequado,
por exemplo, para aplicações do tipo carrinho de compras ou sistemas que gerenciam o fluxo
de entrada em prédios.
A depender da finalidade da aplicação, talvez o JSF não seja tão útil. Por exemplo, é pos-
sível fazer um blog utilizando JSF, mas existem outros frameworks mais indicados para isso
em PHP. Já quando se tratar de uma aplicação, principalmente se for corporativa, o JSF vem
bastante ao caso.
Características
Uma API para representar componentes e gerenciar seu estado; manipulação de eventos,
validação no lado do servidor e conversão de dados; definir navegação de página; apoiar a
internacionalização e acessibilidade; e fornecendo extensibilidade para todos esses recursos.
Obs.: nesse sentido, o JSF funciona como um “canivete suíço”, ou seja, possui múltiplas
funcionalidades. Todos os seus recursos são extensíveis pelo desenvolvedor. Nesse
sentido, apesar de o JSF trabalhar com um validador padrão, se for de interesse do
desenvolvedor, pode-se criar um outro validador específico para o caso.
Possuir bibliotecas de tags para adicionar componentes a páginas da Web e para conec-
tar componentes a objetos do lado do servidor.
10m
A tecnologia JavaServer Faces fornece um modelo de programação bem definido e várias
bibliotecas de tags.
As bibliotecas de tags contêm controladores de tags (handlers) que implementam as tags
de componentes.
Esses recursos facilitam significativamente o ônus de criar e manter aplicativos da Web
com interfaces de usuário (UIs) do lado do servidor.
ANOTAÇÕES
2 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: esse modelo de programação fornecido pelo JSF é o framework e conta com opiniões
bastante fortes de como o usuário deve desenvolver a sua página. É possível que o
desenvolvedor não concorde com essas opiniões, contudo, precisará segui-las, pois
será fornecido um modelo de programação.
Obs.: esses componentes personalizados fazem parte das estruturas que tanto o JSF irá
fornecer quanto o desenvolvedor pode expandi-las, na medida em que vai desenvol-
vendo. É possível criar as próprias tags do JSF.
Obs.: é recomendado conhecer os nomes dos arquivos, pois há itens em que a banca pode
dispor o nome do arquivo XML errado.
ANOTAÇÕES
3 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: um browser só reconhece arquivos HTML, CSS e JavaScript. O browser, em si, não
“entende” os arquivos JSF e Java. Assim, toda aplicação desenvolvida via JSF, no
final, deve passar por um processo para gerar, como resultado, um arquivo HTML,
CSS ou JavaScript. Regra geral, esse processo é chamado de renderização.
Tags de componente são usadas para adicionar componentes à view, que é a represen-
tação do lado do servidor da página.
Além dos componentes, a página da Web também pode fazer referência a objetos, como
os seguintes:
• Listeners, validadores e conversores de eventos registrados nos componentes;
• Os componentes do JavaBeans que capturam os dados e processam a funcionali-
dade específica do aplicativo dos componentes;
• A pedido do cliente, a visualização é renderizada como uma resposta. Renderização
é o processo pelo qual, com base na visualização do lado do servidor, o contêiner da
web gera uma saída, como HTML ou XHTML, que pode ser lida pelo cliente, como um
navegador.
20m
ANOTAÇÕES
4 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Benefícios
Obs.: quando o JSF surgiu, a estruturação da programação para a web ainda não era tão
madura quanto é hoje. Dessa forma, ocorria muita mistura entre o código da view e o
código do controlador, sendo a manutenção desse código muito complexa. É por isso
que o JSF surge como um modelo de programação, sendo uma de como se deveria
organizar uma página da web. Um dos principais elementos é a orientação para que
se divida o código da apresentação do código da view.
Obs.: ou seja, uma equipe pode trabalhar na view e outra pode se concentrar na lógica de
negócio. Assim, posteriormente é possível unir esses códigos, mas em componentes
que interagem entre si e logicamente separados.
Obs.: nesse sentido, é possível expandir as tags em JSF para criar componentes ricos e in-
terativos na medida em que for surgindo a necessidade. Não há uma limitação dentro
do JSF.
API em Camadas
5 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
25m
Facelets
Ciclo de Vida
Cada aplicativo da web possui um ciclo de vida. Tarefas comuns, como manipular solici-
tações recebidas, decodificar parâmetros, modificar e salvar estados e renderizar páginas da
web no navegador, são executadas durante o ciclo de vida de um aplicativo da web.
Alguns frameworks ocultam os detalhes do ciclo de vida, enquanto outros exigem geren-
ciamento manual.
Por padrão, o JavaServer Faces manipula automaticamente a maioria das ações do ciclo
de vida. No entanto, ele também expõe os vários estágios do ciclo de vida da solicitação,
para que se possa modificar ou executar ações dependendo dos requisitos da aplicação.
30m
Obs.: como o JSF faz um gerenciamento automático, em muitos casos, o usuário acaba
não percebendo a existência desse ciclo de vida.
O ciclo de vida de um aplicativo JavaServer Faces inicia e termina com as seguintes ativi-
dades: O cliente faz uma solicitação para a página da Web e o servidor responde com a página.
O ciclo de vida consiste em duas fases principais: Execute e Render.
Obs.: vale lembrar que o resultado do processamento de um JSF deve ser um conteúdo
HTML.
ANOTAÇÕES
6 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Execute
Para uma primeira solicitação (inicial), somente a visão é construída. Para solicitações
subsequentes (postback), algumas ou todas as outras ações podem ocorrer.
Render
7 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: essa árvore de componentes será o modelo lógico, em memória, que será mantido
pelo JSF para renderizar a página.
DIRETO DO CONCURSO
1. (2009/CESPE/SECONT-ES/AUDITOR DO ESTADO – TECNOLOGIA DA INFORMA-
ÇÃO) O JSF é um framework web embasado em interface gráfica, capaz de renderizar
componentes e manipular eventos em aplicações web no padrão Java EE, no qual os
componentes JSF são orientados a eventos. O JSF fornece, ainda, mecanismos para
conversão, validação, execução de lógica de negócios e controle de navegação.
COMENTÁRIO
Item correto, pois apresenta um conceito geral do JSF.
GABARITO
1. C
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
8 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JSF II
Obs.: Nesse sentido, os componentes podem ser reutilizados várias vezes em uma página
e, além disso, ele ainda pode ser parametrizado de formas diferentes, o que pode
mudar o comportamento ou as ações resultantes por meio de atributos do XML.
Um componente pode ser simples, como um botão, ou pode ser composto, como uma
tabela composta de vários componentes.
A tecnologia JavaServer Faces fornece uma arquitetura de componentes que inclui
o seguinte:
• Um conjunto de classes javax.faces.component.UIComponent para especificar o
estado e o comportamento dos componentes da interface do usuário;
• Um modelo de renderização que define como renderizar os componentes de
várias maneiras;
• Um modelo de conversão que define como registrar conversores de dados em um
componente;
• Um modelo de evento e listener que define como manipular eventos de componentes;
5m
• Um modelo de validação que define como registrar validadores em um componente.
Obs.: Ou seja, é possível que se aplique algum tipo de validação a um input de texto para
saber se o dado inserido está certo ou errado. Existem regras de validação diferentes
para diferentes ações, tais como: tornar um número digitado válido, reconhecer um
CPF como válido etc.
ANOTAÇÕES
1 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: Nesse sentido, existem duas formas de estender o JSF. Uma delas é criar novos
componentes básicos, o que, no geral, não é muito comum no dia a dia. A outra forma
é compor componentes utilizando o Facelets, o que já é mais comum no dia a dia.
2 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
MODELO DE CONVERSÃO
Obs.: Ou seja, ao enviar a informação que está no bean para o navegador, regra geral, ela
será representada de forma textual como uma string, mesmo que seja uma idade, um
nome ou uma data. Assim, é importante saber, por exemplo, como se converte um
date, que está ao lado do servidor, para a view por meio de uma string. Isso porque
há diferentes maneiras de se digitar uma data, a depender da região em que está o
usuário. Assim, quando essa data voltar para o servidor, é importante que ele saiba
converter essa string novamente para um objeto do tipo date.
ANOTAÇÕES
3 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: O exemplo mais trivial de um evento é o clique de um botão. Tal evento deverá ser
associado a um código Java que será executado.
EVENTOS DE APLICAÇÃO
4 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
MODELO DE VALIDAÇÃO
Obs.: Por meio da validação, o desenvolvedor pode adicionar uma regra a um determinado
campo. Exemplo: o nome do usuário não pode ter mais que 50 caracteres. Assim,
quando o usuário digitar um nome maior do que 50 caracteres, ocorrerá um erro de
validação, mesmo antes de o valor digitado pelo usuário ser associado ao bean.
ANOTAÇÕES
5 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (2010/CESPE/MPU/ANALISTA DE INFORMÁTICA/PERITO) A respeito da tecnologia
JSF (JavaServer Faces), julgue os próximos itens. Uma aplicação web deve prover
mecanismos de validação de dados. O JSF fornece vários validadores de dados padrões
que podem ser utilizados no lado do cliente (client-side).
25m
COMENTÁRIO
A validação é feita do lado do servidor (server-side).
GABARITO
1. E
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura
exclusiva deste material.
ANOTAÇÕES
6 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JSF III
Modelo de navegação
Em blocos anteriores, foi feito o estudo dos demais modelos do JSF, tais como o modelo
de validação de dados, o modelo de conversão e o modelo de componentes. Nesse sentido,
o modelo de navegação é um dos mais elaborados, pois irá ditar como o usuário realiza uma
determinada ação em uma página e navega para outra página.
Navegação é um conjunto de regras para escolher a próxima página a ser exibida após
uma ação do aplicativo, como quando um botão ou link são clicados.
A navegação pode ser implícita ou definida pelo usuário. A navegação implícita ocorre
quando regras de navegação definidas pelo usuário não são configuradas nos arquivos de
recursos de configuração do aplicativo.
Quando se adiciona um componente como um commandButton a uma página Facelets
e atribui outra página como o valor para sua propriedade de ação, o gerenciador de navega-
ção padrão tentará corresponder uma página adequada dentro do aplicativo implicitamente.
No exemplo a seguir, o manipulador de navegação padrão tentará localizar uma página
chamada response.xhtml dentro do aplicativo e navegar até ela:
Como regra geral, a navegação implícita é utilizada em casos mais simples. Ex.: um
botão que direciona o usuário para outra página.
As regras de navegação definidas pelo usuário são declaradas em zero ou mais arquivos
de recursos de configuração do aplicativo, como faces-config.xml, usando um conjunto de
elementos XML. A estrutura padrão de uma regra de navegação é a seguinte:
1 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF III
5m Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Exemplo:
2 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Esse ciclo de vida do JSF será um modelo com fases bem definidas e regras bem estru-
turadas sobre como deve ser feita cada uma dessas fases e qual é a sua finalidade, além do
que deve ocorrer se uma dessas fases gerar um erro.
3 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A depender do nível do concurso, é preciso ter esse diagrama decorado ou, pelo menos,
conhecer boa parte dele. Há muitas informações que podem ser inferidas pelo candidato,
contudo, é possível que uma ordem ou outra seja mais difícil de concluir. É importante saber
que existe uma ordem nesse ciclo de vida, quais são os elementos que podem ser executa-
dos e qual a responsabilidade de cada fase. Isso é bastante cobrado em provas.
15m
O ciclo de vida de solicitação-resposta manipula dois tipos de solicitações: solicitações
iniciais e postbacks.
Uma solicitação inicial ocorre quando um usuário faz uma solicitação para uma página
pela primeira vez.
Uma solicitação de postback ocorre quando um usuário envia o formulário contido em
uma página que foi carregada anteriormente no navegador como resultado da execução de
uma solicitação inicial.
Quando o ciclo de vida recebe uma solicitação inicial, ele executa apenas as fases Res-
tore View e Render Response, porque não há entrada ou ação do usuário para processar.
Por outro lado, quando o ciclo de vida recebe um postback, ele executa todas as fases.
ANOTAÇÕES
4 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Restore View;
• Apply Request Values;
• Process Validations;
• Update Model Values;
• Invoke Application; e
• Render Response.
As fases acima são apresentadas em ordem, ou seja, regra geral, elas serão executadas
uma após a outra.
DIRETO DO CONCURSO
1. (2013/CCV-UFC/UFC/ANALISTA DE TECNOLOGIA DA INFORMAÇÃO – ENGENHA-
RIA DE SOFTWARE) O Framework JSF (JavaServer Faces) é utilizado no desenvolvi-
mento de aplicações Java para web que utilizam o padrão de projeto MVC (Model-View-
-Controller). Sobre o JSF 2 é correto afirmar:
5 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
a. Na realidade, é por meio do FacesServlet.
c. Não se trata do arquivo web-config.xml, mas sim do arquivo web.xml.
20m
d. Na realidade, o correto é web.xml e faces-config.xml.
e. O correto é Controller e não View.
GABARITO
1. b
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
6 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JSF IV
Obs.: é importante memorizar o nome dessas fases tanto em inglês quanto em português.
Isso porque cada banca cobra esses nomes de uma maneira diferente.
Quando uma solicitação para uma página JavaServer Faces é feita, geralmente por uma
ação, como quando um link ou um componente de botão é clicado, a implementação do JSF
inicia a fase Restore View.
Durante essa fase, a implementação do JavaServer Faces cria a visualização da página,
manipula os identificadores de eventos e os validadores para os componentes na exibição e
salva a exibição na instância do FacesContext, que contém todas as informações necessá-
rias para processar uma única solicitação.
Obs.: nesse sentido, quando chega uma requisição para um determinado endereço, o JSF
irá restaurar a view (que tinha sido obstruída depois da última requisição) e aplica os
novos parâmetros que chegaram.
1 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: ou seja, o JSF irá acumular os erros que podem ocorrer durante todas as fases.
No final dessa fase, os componentes são definidos para seus novos valores e as mensa-
gens e os eventos são enfileirados.
ATENÇÃO
Nessa fase, somente os componentes da árvore de componentes estão com os seus va-
lores atualizados. Tais valores ainda não foram convertidos e validados para passar para o
bean, o que será feito em uma fase posterior.
2 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: é nesse momento do invoke application que, por exemplo, uma ação associada a um
botão será chamada no bean.
3 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: nesse sentido, se o desenvolvedor define um campo para uma entrada de número,
mas o usuário digita um texto, será possível definir uma mensagem de erro e, auto-
maticamente, quando o JSF perceber que o valor está inválido, exibirá a mensagem
de erro, que será renderizada automaticamente.
4 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Exemplo:
ATENÇÃO
Tanto a parte conceitual quanto o funcionamento do ciclo de vida do JSF estão entre os
tópicos mais cobrados pelas bancas examinadoras em provas que cobram esse assunto,
logo é importante estudá-lo com atenção.
Obs.: no começo, o JSF não contava com o Ajax. Por conta disso, toda vez que era feita
uma requisição, era preciso processar a página inteira, o que gerava um consumo
de rede um pouco elevado. Hoje, com o Ajax, o JSF pode atualizar partes de uma
página sem que seja feita uma navegação completa. Ou seja, fará com que trafegue
na rede somente o componente que foi atualizado e não a página inteira a cada nova
atualização parcial da página.
5 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
JSF IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Quando esse pedido parcial entra no ciclo de vida do JavaServer Faces, as informa-
ções são identificadas e processadas por um objeto javax.faces.context.PartialViewContext.
O ciclo de vida do JavaServer Faces ainda está ciente dessas solicitações do Ajax e modifica
a árvore de componentes de acordo.
Os atributos de execução e renderização da tag f:ajax são usados para identificar quais
componentes podem ser executados e renderizados.
DIRETO DO CONCURSO
1. (NC-UFPR/ITAIPU BINACIONAL/PROFISSIONAL DE NÍVEL SUPERIOR JR/2017) So-
bre o ciclo de vida de uma aplicação JSF 2.2, em que fase é feita a extração dos valores
da requisição?
a. Restore View.
b. Invoke Application.
c. Apply Request Value.
d. Update Model Values.
e. Process Validations.
COMENTÁRIO
A extração dos valores da requisição é feita na fase Apply Request Value.
GABARITO
1. c
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Programação
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
PROGRAMAÇÃO
JMS
Referências
https://docs.oracle.com/javaee/7/tutorial/index.html
O que é o Messaging?
É um método de comunicação entre componentes ou aplicativos de software. Um sis-
tema de mensagens é um recurso ponto a ponto (peer-to-peer): um cliente de mensagens
pode enviar e receber mensagens de qualquer outro cliente. Por exemplo, um chat ou um
e-mail. Cada cliente se conecta a um agente de mensagens que fornece recursos para criar,
enviar, receber e ler mensagens. O sistema de mensagens permite a comunicação distribu-
ída fracamente acoplada. Dessa forma, um componente envia uma mensagem para um des-
tino e o destinatário pode recuperar a mensagem do destino.
5m
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
Programação
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O que torna a comunicação pouco acoplada é que o destino é tudo o que o remetente e
o destinatário têm em comum. O remetente e o destinatário não precisam estar disponíveis
ao mesmo tempo para se comunicar. De fato, o remetente não precisa saber nada sobre o
destinatário nem o receptor precisa saber nada sobre o remetente. O remetente e o destina-
tário precisam saber apenas qual formato de mensagem e qual destino usar. Nesse aspecto,
as mensagens diferem das tecnologias fortemente acopladas, como RMI (Remote Method
Invocation), que exigem que um aplicativo conheça os métodos de um aplicativo remoto.
O sistema de mensagens também difere do correio eletrônico (e-mail), que é um método
de comunicação entre pessoas ou entre aplicativos de software e pessoas. As mensagens
são usadas para comunicação entre aplicativos ou componentes de software.
É uma API Java que permite aos aplicativos criar, enviar, receber e ler mensagens. Dessa
forma, define um conjunto comum de interfaces e semânticas associadas que permitem que
os programas escritos na linguagem de programação Java se comuniquem com outras imple-
mentações de mensagens. Além disso, minimiza o conjunto de conceitos que um programa-
dor deve aprender para usar produtos de mensagens, mas fornece recursos suficientes para
suportar aplicativos sofisticados de mensagens. Ele também se esforça para maximizar a
portabilidade dos aplicativos JMS entre os provedores JMS.
10m
O JMS permite uma comunicação não apenas fracamente acoplada, mas também:
– Assíncrona: um cliente receptor não precisa receber mensagens ao mesmo tempo
em que o cliente remetente as envia. O cliente remetente pode enviá-los e continuar
com outras tarefas; o cliente receptor pode recebê-los muito mais tarde;
– Confiável: Um provedor de mensagens que implementa a API JMS pode garantir
que uma mensagem seja entregue uma e apenas uma vez. Níveis mais baixos de
confiabilidade estão disponíveis para aplicativos que podem perder mensagens ou
receber mensagens duplicadas.
15m
ANOTAÇÕES
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
Programação
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
Programação
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Estilos de mensagens
Antes da API JMS existir, a maioria dos produtos de mensagens suportava o estilo de
mensagem ponto a ponto (Peer to Peer) ou de publicação/assinatura. A especificação JMS
define comportamentos para cada estilo. Um provedor JMS deve implementar ambos os esti-
los, e a API JMS fornece interfaces específicas para cada um. A API JMS, no entanto, torna
desnecessário usar apenas um dos dois estilos. Ela permite que se use o mesmo código para
enviar e receber mensagens usando o estilo Peer to Peer ou pub/sub.
Os destinos que se usa permanecem específicos para um estilo e o comportamento do
aplicativo dependerá em parte se estiver usando uma fila ou um tópico. Contudo, o próprio
código pode ser comum aos dois estilos, tornando os aplicativos flexíveis e reutilizáveis.
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
Programação
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
Programação
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Consumo de Mensagens
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
Programação
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
COMENTÁRIO
Cada mensagem tem apenas um consumidor.
GABARITO
1. a
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula pre-
parada e ministrada pelo professor Tiago Lage Payne de Pádua.
ANOTAÇÕES
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo minis-
trado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclusiva deste
material.
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
Programação
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
PROGRAMAÇÃO
JMS II
Duas partes de um aplicativo JMS, destinos e connection factories, geralmente são man-
tidas administrativamente e não programaticamente. A tecnologia subjacente a esses objetos
provavelmente será muito diferente de uma implementação da API JMS para outra. Portanto,
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
Programação
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
É o objeto que um cliente usa para criar uma conexão com um provedor. Um connection
factory encapsula um conjunto de parâmetros de configuração de conexão que foram defini-
dos por um administrador. Cada fábrica de conexões é uma instância da interface Connec-
tionFactory, QueueConnectionFactory ou TopicConnectionFactory. No início de um programa
cliente JMS, geralmente injeta-se um recurso de connection factory em um objeto Connec-
tionFactory. Um servidor Java EE deve fornecer um connection factory JMS com o nome
lógico da JNDI java:comp/DefaultJMSConnectionFactory. O nome JNDI real será específico
da implementação
@Resource(lookup = “java:comp/DefaultJMSConnectionFactory”)
private static ConnectionFactory connectionFactory;
Destinos JMS
É o objeto que um cliente usa para especificar o destino das mensagens que produz e
a origem das mensagens que consome. Em mensagens PTP, os destinos são chamados
de filas. Em mensagens de pub/sub, os destinos são chamados de tópicos. Um aplicativo
JMS pode usar várias filas ou tópicos (ou ambos). Além de injetar um recurso de connection
factory em um programa cliente, normalmente injeta-se um recurso de destino. Ao contrá-
rio das fábricas de conexão, os destinos são específicos para o estilo de mensagens PTP
ou pub/sub.
ANOTAÇÕES
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
Programação
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
@Resource(lookup = “jms/MyQueue”)
private static Queue queue;
@Resource(lookup = “jms/MyTopic”)
private static Topic topic;
Com as interfaces comuns, pode-se misturar ou combinar fábricas e destinos de cone-
xão, ou seja, além de usar a interface ConnectionFactory, pode-se injetar um recurso Queue-
ConnectionFactory e usá-lo com o Topic, e pode-se injetar um recurso TopicConnectionFac-
tory e usá-lo com a Queue. O comportamento do aplicativo dependerá do tipo de destino que
se usa e não do tipo de connection factory que se usa.
Conexões
Uma conexão encapsula uma conexão virtual com um provedor JMS. Por exemplo, uma
conexão pode representar um soquete TCP/IP aberto entre um cliente e um daemon de ser-
viço do provedor. Usa-se uma conexão para criar uma ou mais sessões. Na plataforma Java
EE, a capacidade de criar várias sessões a partir de uma única conexão é limitada aos aplica-
tivos clientes. Nos componentes de web e enterprise bean, uma conexão pode criar somente
uma sessão. Normalmente cria-se uma conexão criando um objeto JMSContext.
Sessões
Objetos JMSContext
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
Programação
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
– Consumidores de mensagens;
– Mensagens;
– Navegadores de fila; Filas e tópicos temporários.
−
JMSContext context = connectionFactory.createContext();
Quando chamado sem argumentos, quando não há nenhuma transação JTA ativa em
andamento, o método createContext cria uma sessão não transacionada com um modo de
reconhecimento de JMSContext.AUTO_ACKNOWLEDGE. Quando chamado sem argumen-
tos quando há uma transação JTA ativa em andamento, o método createContext cria uma
sessão transacionada. Também pode-se chamar o método createContext com o argumento
JMSContext.SESSION_TRANSACTED para criar uma sessão transacionada:
JMSContext context = connectionFactory.createContext(JMSContext.SESSION_
TRANSACTED);
É um objeto criado por um JMSContext ou uma sessão e usado para enviar mensagens
para um destino. Um produtor de mensagem criado por a JMSContext implementa a interface
JMSProducer:
try (JMSContext context = connectionFactory.createContext();) {
JMSProducer producer = context.createProducer();
...
O JMSProducer é um objeto leve que não consome recursos significativos. Por esse
motivo, não é necessário salvar a variável JMSProducer; pode-se criar um sempre que enviar
uma mensagem:
context.createProducer().send(dest, message);
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
Programação
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
Programação
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
para entrega de mensagens assíncronas. Um bean acionado por mensagens também imple-
menta a interface MessageListener e contém um método onMessage.
Mensagens JMS
O objetivo de um aplicativo JMS é produzir e consumir mensagens que podem ser usadas
por outros aplicativos de software. As mensagens JMS têm um formato básico que é simples,
mas altamente flexível, permitindo criar mensagens que correspondem aos formatos usados
por aplicativos não JMS em plataformas heterogêneas. Uma mensagem JMS pode ter três
partes: um cabeçalho, propriedades e um corpo. Somente o cabeçalho é necessário.
Exemplo de Queue/fila
Há um “sender” que irá enviar a mensagem. Para isso, primeiramente, faz um “connec-
20m
tion factory”, onde ocorre o lookup, que é o JNDI, para estabelecer um queue. Em seguida,
cria uma conexão, dá uma start na “connection”. Sendo assim, cria-se uma sessão, na qual
automaticamente irá receber as mensagens. Logo após, cria-se um “sender session” para
enviar as mensagens, seguido de uma mensagem de texto. Assim, toda vez que o usuário
digitar uma mensagem, ele irá verificar, pois se igual a “fim”, termina, caso contrário, deverá
digitar “msg.setText” e “sender.send(msg).
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
Programação
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
De um lado, executa-se um programa que abrirá um input de texto, onde é possível ficar
digitando e do outro, executa-se um programa que ficará aguardando as mensagens chega-
rem. Como ambos se conectam na mesma fila e provedor de mensagens, a mensagem sai
de um e chega ao outro. E quem está recebendo, recebe de forma assíncrona.
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
Programação
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Exemplo de Topic
O formato de tópico é parecido, mudando a classe. Além disso, no formato de filas, o usu-
ário envia a mensagem, no de tópico, ele publica.
25m
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
Programação
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A diferença é que no topic, é possível ter diversos “subscribers” para o mesmo tópico,
enquanto no esquema da fila, a cada mensagem enviada, chegará apenas para uma pessoa
que está na fila.
DIRETO DO CONCURSO
COMENTÁRIO
A API JMS é usada para a construção de sistemas de mensageria na plataforma JEE, sen-
do algumas de suas características relevantes a assincronia das mensagens, a arquitetura
peer-to-peer e o suporte ao estilo de mensageria publish-subscribe.
GABARITO
1. C
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula prepa-
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO WEB
JVM
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JVM
JAVA
É comum ocorrer uma certa confusão quanto ao Java, pois “Java” pode ser referente
tanto à plataforma quanto à linguagem. Java se refere à plataforma Java, que abrange a JVK,
a JVM etc. Nesta aula o que será abordado será a linguagem.
• É a base da plataforma Java, pois o código do Java roda sobre a JVM, ou seja, o Java
é dependente da JVM.
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
JVM
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Visão Geral
15m
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
JVM
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Novas linguagens podem surgir a qualquer momento, basta que elas possuam o
arquivo .class
• Uma JVM precisa ler o formato de arquivo “class” e executar corretamente as ope-
rações nele especificadas. O arquivo “class” é como se fosse um programa, sendo a
tradução da respectiva linguagem para o bytecode da JVM. Existem várias JVMs e
vários fabricantes podem desenvolvê-la.
• Detalhes de implementação que não fazem parte da especificação da JVM como o
layout de memória das áreas de dados de runtime, o algoritmo de coleta de lixo usado
e qualquer otimização interna das instruções são deixadas ao critério da implementa-
ção específica. A JVM é definida num nível de abstração maior, pois dependendo do
detalhe em questão de melhoria da plataforma, é possível haver implementação sem
que se saia da especificação da JVM.
20m
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
JVM
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Tipos de Dados
• Como a linguagem de programação Java, a Java Virtual Machine opera em dois tipos
de dados: tipos primitivos e tipos de referência.
• A JVM espera que a verificação de tipos seja feita antes do tempo de execução, por
um compilador, e não precisa ser feita pela própria JVM. Os tipos de dados não são
necessariamente os tipos do Java. A JVM opera com tipos de dados estáticos. Tal tipa-
gem forte tenta fazer com que não haja colisão. No processo de compilação do arquivo
.java para o arquivo .class vai ocorrer uma validação de tipos, para que na hora em
que chegar na JVM, a validação não precise ocorrer novamente. Se a JVM precisasse
25m
atuar na validação dos tipos, sua performance cairia muito.
• A JVM contém suporte explícito para objetos. Um objeto é uma instância de classe
alocada dinamicamente ou uma matriz.
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
JVM
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Tipo Intervalo
byte 8-bit (-2⁷ a 2⁷ - 1)
short 16-bit (-2¹⁵ a 2¹⁵ - 1)
int 32-bit (-2³¹ a 2³¹ - 1)
long 64-bit (-2⁶³ a 2⁶³ - 1)
char 16-bit (0 a 2¹⁶ - 1)
float 32-bit IEEE 754
double 64-bit IEEE 754
returnAddress Endereço de um opcode dentro do mesmo método
reference Referência a um objeto no heap ou null
�Este material foi elaborado pela equipe pedagógica do Gran Concursos, de acordo com a aula pre-
parada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
JVM II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JVM II
• Existem três tipos de tipos de referência: tipos de classe, tipos de matriz e tipos de
interface.
• Um tipo de matriz consiste em um tipo de componente com uma única dimensão (cujo
comprimento não é fornecido pelo tipo).
• Um valor de reference também pode ser a referência nula especial, uma referência
a nenhum objeto, que será denotada por null. Quando se trabalha com os tipos que
são objetos, eles podem ser null. O Java possui essa característica de ter os tipos
primitivos além dos objetos por uma questão de performance. Existem vários tipos de
números com várias quantidades de bits diferentes para que se possa trabalhar com
economia de dados e ter a melhor performance possível. Existem outras linguagens
que são puramente voltadas a objetos, como a Rub. Tais linguagens podem ter um
poder de performance inferior ao Java. O JavaScript, por exemplo, possui apenas um
tipo numérico, que é o tipo number.
• Registrador PC.
• Java Virtual Machine Stacks.
• Heap.
• Área dos Métodos.
5m
A JVM é uma máquina abstrata baseada nos recursos que existem atualmente e o que
ela faz é adicionar alguns tipos de maior nível.
Registrador PC
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
JVM II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Cada thread da JVM possui seu próprio registrador pc (contador de programa). É pos-
sível trabalhar com várias threads operando de forma simultânea. É necessário haver
alguma maneira que seja possível saber qual ponto do código em que a thread está
presente, pois a thread não está conectada à quantidade de núcleos do processador.
• A qualquer momento, cada thread da JVM está executando o código de um único
método. O registrador do pc conterá o endereço da instrução JVM atualmente sendo
executada. Ele aponta para a língua de código que está sendo executado.
O registrador pc sabe em quais pontos as threads estão em execução. Cada thread tem
uma pilha de execução.
Heap
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
JVM II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A Stack Memory está relacionada a códigos que serão executados. O coletor de lixo
armazena referências. Ele sabe que o programa está apontando para determinando cliente.
A partir do momento que não existem mais referências para o objeto, o coletor de lixo des-
carta a memória. Assim, ele possui a função de fazer com que o gerenciamento de memória
seja automático.
15m
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
JVM II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Uma implementação da Java Virtual Machine pode usar pilhas convencionais, chama-
das de “C stacks”, para suportar métodos nativos (métodos escritos em uma lingua-
gem diferente da linguagem de programação Java).
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
JVM II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
20m
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
JVM II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A JVM executa o código. Em geral, o JVM está em incluso no JRE quando ele é instalado.
Para desenvolver um programa no Java, é necessário o JDK. O JDK abrange ferramentas
de desenvolvimento.
DIRETO DO CONCURSO
1. (FCC/2017/ARTESP/ESPECIALISTA EM REGULAÇÃO DE TRANSPORTE I – TECNO-
LOGIA DA INFORMAÇÃO) Na arquitetura da JVM existe a JVM Memory que contém
uma área de memória que armazena os objetos criados pela aplicação por meio do
operador new ou qualquer outro método que crie um objeto. Essa área de memória é
chamada de:
a. stack frame
b. method area
c. heap
d. perm
e. native Stack
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
JVM II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
O Stack frame é a parte que contém códigos, não objetos em si. Method área também não
contém objetos. A perm é outra área de memória.
COMENTÁRIO
O J2EE é uma especificação; o JDK é o development quit; o JRE é o tempo de execução;
JSP é uma página; API é um padrão de comunicação.
25m
GABARITO
1. c
2. c
�Este material foi elaborado pela equipe pedagógica do Gran Online, de acordo com a aula prepa-
rada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
Arquiteturas para Desenvolvimento de Aplicativos em Dispositivos Móveis
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
INTRODUÇÃO
A arquitetura define como são organizados esses elementos para montar o software e o
arquiteto é o responsável pela sua criação.
O mais importante é saber quais as possíveis escolhas e que fatores influenciam na
sua seleção;
Neste ponto entra a caixa de ferramentas do arquiteto (conjunto de possíveis escolhas/
soluções) e os requisitos que o software deve atender (permitem selecionar quais as solu-
ções viáveis/interessantes).
5m
ANOTAÇÕES
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Arquiteturas para Desenvolvimento de Aplicativos em Dispositivos Móveis
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: quando vai ser desenvolvido um aplicativo móvel, a questão do hardware dificulta
bastante, pois envolve variáveis como processador, memória etc.
PLATAFORMAS
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Arquiteturas para Desenvolvimento de Aplicativos em Dispositivos Móveis
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Ao considerar uma estratégia para dispositivos móveis, uma das grandes decisões de
muitos clientes é concentrar os recursos em um aplicativo da Web ou em aplicativos nativos
voltados para plataformas móveis específicas.
Não existe uma solução perfeita para esse problema, devido ao número de plataformas
em operação, e a melhor abordagem para um negócio pode ser totalmente diferente daquela
para outro.
Há uma série de benefícios e desvantagens em cada abordagem, que precisam ser pon-
deradas junto às especificidades de qualquer projeto em particular.
Aplicativos Nativos
Obs.: existe uma série de interação no celular que uma aplicação web não consegue atingir
a expectativa do usuário.
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Arquiteturas para Desenvolvimento de Aplicativos em Dispositivos Móveis
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Aplicativos Web
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Arquiteturas para Desenvolvimento de Aplicativos em Dispositivos Móveis
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: inicialmente, o Iphone 1 possuía somente aplicativos web, mas após viu-se a grande
possibilidade de lucro com aplicativos nativos.
20m
VELOCIDADE
A navegação na Web móvel mudou drasticamente nos últimos anos, em grande parte
como resultado das velocidades mais rápidas da Internet (4G).
Além disso, as mudanças tecnológicas nos próximos anos serão substanciais. Muito já
mudou. Por exemplo, hoje, o tamanho da tela do dispositivo móvel de um usuário pode ser
desde um relógio de pulso (tecnologia vestível) até o tamanho de um pequeno laptop (tablet).
O 5G aumentará significativamente a velocidade e a capacidade de resposta das redes
sem fio. O 5G é 100x mais rápido que o 4G, com 10x menos latência do que a atual infra-
estrutura 4G. A velocidade de transmissão de dados em uma rede 5G pode atingir 20 Gbps.
HTML5
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Arquiteturas para Desenvolvimento de Aplicativos em Dispositivos Móveis
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
APLICATIVOS HÍBRIDOS
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Arquiteturas para Desenvolvimento de Aplicativos em Dispositivos Móveis
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (FAURGS/TJ-RS/ANALISTA DE SISTEMAS/2018) Acerca do desenvolvimento de apli-
cativos para dispositivos móveis, é correto afirmar que aplicativos:
a. desenvolvidos para a web são ditos “não responsivos”, pois são apresentados atra-
vés dos navegadores instalados nos dispositivos.
b. nativos são programados em plataformas de desenvolvimento genéricas, mas encap-
sulados em páginas web para uso em diferentes dispositivos.
c. nativos são sempre mais lentos do que aplicativos para a web, pois não utilizam as
otimizações disponíveis nos navegadores.
d. híbridos exigem a escrita de código em diferentes plataformas, para que a parte nativa
possa ser integrada à parte genérica.
e. híbridos podem ser gerados através da compilação de código para diferentes sistemas.
COMENTÁRIO
a. Responsividade tem a ver com a adaptabilidade à tela.
b. Trata-se do híbrido.
c. Os nativos são mais rápidos, pois utilizam recursos dos sistemas operacionais.
d. Não exige, pois ele vai ser comum nas plataformas.
e. Correto.
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Arquiteturas para Desenvolvimento de Aplicativos em Dispositivos Móveis
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
No projeto de aplicações para dispositivos móveis, devem ser considerados, entre ou-
tros aspectos, as características dos dispositivos de hardware para os quais a aplicação
está sendo desenvolvida e o consumo de energia gerado por cada recurso do sistema,
visando-se a economia de bateria
COMENTÁRIO
Deve-se pensar no consumo da bateria ao desenvolver um aplicativo móvel.
GABARITO
1. e
2. C
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
8 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Arquiteturas para Desenvolvimento de Aplicativos em Dispositivos Móveis II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
PWA E HÍBRIDAS
DESENVOLVIMENTO MOBILE
• São aplicativos para dispositivos móveis que exigem que apenas um navegador da
Web seja instalado no dispositivo;
• Normalmente usam HTML e Ajax (e, cada vez mais, componentes HTML5) e não são
escritas especificamente para um dispositivo;
• Têm uma usabilidade praticamente equivalente a aplicativos Web em PC, quando
projetados especificamente para formatos menores;
• Os aplicativos da Web para dispositivos móveis diferem dos aplicativos nativos móveis,
pois usam tecnologias da Web e não estão limitados à plataforma subjacente
para implantação.
Obs.: Quando se trata de Mobile Web Applications, trata-se de um site que foi altamente
especializada para ser executado em um celular.
PWA
• Progressive web applications são uma categoria de mobile Web Application criado
com tecnologias comuns da Web, incluindo HTML, CSS e JavaScript;
• Funcionam em qualquer plataforma que use um navegador compatível com os padrões
definidos pela W3C;
• Possuem funcionalidades como trabalho off-line (sem necessidade de acesso à
internet), notificações por push e acesso ao hardware do dispositivo, permitindo
a criação de experiências ao usuário semelhantes a aplicativos nativos em
dispositivos móveis;
ANOTAÇÕES
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Arquiteturas para Desenvolvimento de Aplicativos em Dispositivos Móveis II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Como são um tipo de página da Web ou site conhecido como aplicativo da Web, não é
necessário que desenvolvedores ou usuários instalem os aplicativos da Web por meio
de sistemas de distribuição digital, como App Store da Apple ou Google Play;
5m
• Embora os aplicativos web sempre estiveram disponíveis para dispositivos móveis,
eles geralmente ficaram atrás de aplicativos nativos em termos de velocidade, recursos
e adoção de usuários, especialmente em dispositivos móveis;
• O acesso direto ao hardware e a capacidade de trabalhar off line, anteriormente
disponível apenas para aplicativos nativos, permite que os PWAs tenham um
desempenho muito mais rápido e forneçam mais recursos de forma semelhante aos
aplicativos nativos (os aplicativos nativos sempre serão mais rápidos);
• Os PWAs não exigem empacotamento ou distribuição separados. Sua publicação é
como qualquer outra página da web. Os PWAs funcionam em qualquer navegador,
mas os recursos "semelhantes a aplicativos", como independência da conectividade,
instalação na tela inicial e envio de mensagens dependem do suporte ao navegador.
Esses recursos são suportados em graus variados pelos navegadores Microsoft
Edge, Google Chrome, Mozilla Firefox e Apple Safari.
Aplicações Híbridas
• Híbrido, por definição é qualquer coisa derivada de fontes heterogêneas, ou composta
de elementos de tipos diferentes ou incongruentes;
• Um aplicativo híbrido é aquele que é escrito com a mesma tecnologia usada para sites
e implementações da Web para dispositivos móveis, e que é hospedado ou executado
em um contêiner nativo em um dispositivo móvel;
• É o casamento da tecnologia web e execução nativa;
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Arquiteturas para Desenvolvimento de Aplicativos em Dispositivos Móveis II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Código JavaScript
10m
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Arquiteturas para Desenvolvimento de Aplicativos em Dispositivos Móveis II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: De forma subjacente, o JavaScript vai chamar uma função nativa, disponibilizada
pelo container. Essa função nativa será diferente dependendo da plataforma utilizada
(por exemplo, será uma na plataforma iOS e outra na plataforma Android).
• Ao desenvolver um aplicativo híbrido, você não precisa se preocupar com esse nível
de detalhe. Tudo o que você precisa fazer é chamar a função JavaScript (navigator.
camera.getPicture () nesse caso) e responder ao resultado.
RESUMO
Apps Nativas
• Construída para uma plataforma;
• Codificada com o SDK da plataforma;
• Deve ser reescrita para cada plataforma;
• Acessa todas as APIs nativas;
• Alta performance gráfica;
• Distribuição pela App Store.
Apps Híbridas
• Plataforma Cruzada;
• Codificada com HTML5/CSS3/JS;
• Executa localmente mas tem suporte off-line;
• Acessa APIs nativas;
• Distribuição pela App Store.
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Arquiteturas para Desenvolvimento de Aplicativos em Dispositivos Móveis II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
REACT NATIVE
Obs.: Em um primeiro momento, o React Native parecerá uma aplicação híbrida, mas a
interface que ele exibirá para o usuário é uma interface nativa, e não um WebViewcomo
em uma aplicação híbrida.
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Arquiteturas para Desenvolvimento de Aplicativos em Dispositivos Móveis II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
PROPS
• É uma abreviação de "properties", e é a forma como os componentes se comunicam;
• As propriedades fluem para baixo a partir do componente pai;
• É por isso que as pessoas se referem ao React como tendo fluxo de dados unidirecional.
STATE
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Arquiteturas para Desenvolvimento de Aplicativos em Dispositivos Móveis II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Exemplo
DIRETO DO CONCURSO
1. (CESPE/SLU-DF/ANALISTA DE GESTÃO DE RESÍDUOS SÓLIDOS
INFORMÁTICA/2019) No que diz respeito a ferramentas de desenvolvimento, julgue
o item a seguir. React Native utiliza componentes nativos em vez de componentes
da Web como blocos de construção, existindo dois tipos de dados que controlam um
componente: state, definido pelo pai e fixado durante todo o tempo de vida de um
componente; e props, utilizado para os dados que irão mudar.
COMENTÁRIO
A questão inverteu os conceitos. Quem é definido pelo pai não é o state, é o props. O state
é utilizado para os dados que irão mudar, e não o props.
GABARITO
1. E
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Introdução
Obs.: a plataforma do Android é uma concorrente da Apple, sendo estas as duas maiores
do mercado. Em geral, o Android domina de 70% a 80% do mercado, enquanto a
Apple, de 20% a 30%.
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Desenvolvimento de Apps
É importante lembrar que o Android tem uma multiplataforma, sendo possível instalar o
Android SDK tanto no Desktop e no Mac, quanto no Linux e no Windows.
10m
IDE
Obs.: nas primeiras versões, a Google disponibilizava um plugin para ser baixado no Eclip-
se. Porém, devido a diversos problemas de performance, o Android Studio foi de-
senvolvido com a finalidade específica de construir os aplicativos do Android. Ele
também gerencia as bibliotecas do SDK e permite a criação de novas versões do
emulador e a execução dele.
ANOTAÇÕES
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Arquitetura
Obs.: o Android é desenvolvido com muito C/C++, que são linguagens de nível mais baixo,
para que ele tenha uma maior performance. No entanto, para facilitar para o desen-
volvedor conseguir as aplicações, é oferecido para ele a possibilidade de programar
com o Java, que tem um nível mais alto de abstração.
15m
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
partir de código nativo que requer bibliotecas nativas escritas em C e C ++. Essas bibliotecas
nativas estão disponíveis para aplicativos por meio do Java API framework;
4. Camada de abstração de hardware (HAL): essa camada fornece interfaces padrão
que expõem os recursos de hardware do dispositivo ao Java API framework de nível superior.
O HAL consiste em vários módulos de biblioteca, cada um dos quais implementa uma interface
para um tipo específico de componente de hardware, como a câmera ou o módulo Bluetooth;
5. Kernel Linux: a base da plataforma Android é o kernel do Linux. As camadas acima do
kernel do Linux dependem do kernel do Linux para threads, gerenciamento de memória de
baixo nível e outras funcionalidades. O uso de um kernel Linux permite que o Android apro-
veite os recursos de segurança baseados no Linux e permite que os fabricantes de dispositi-
vos desenvolvam drivers de hardware para um kernel bem conhecido.
20m
Distribuição
• e-mail;
• Website;
• Mercado de aplicativos, como o Google Play;
A distribuição e instalação dos aplicativos, sem que seja necessário nenhum tipo de des-
bloqueio do dispositivo, pode ocorrer por meio do recebimento do apk por e-mail, website etc.
Em geral, essa não é a forma mais comum de utilizar os aplicativos, pois a Play Store (loja de
software oficial da Google) faz uma série de verificações, principalmente em relação à segu-
rança. Logo, trata-se de uma forma de distribuição mais recomendada.
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Versões
Fundamentos de Aplicativos
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: no Linux tradicional há um único login, de um mesmo usuário, para vários aplicativos.
No caso do Android, para cada aplicativo é criado um usuário diferente, de modo que
eles terão níveis de acesso distintos.
Obs.: trata-se de uma estratégia para criar o sandbox, misturando uma estratégia própria
com uma já fornecida pelo próprio kernel do Linux do usuário.
• Por padrão, cada aplicativo é executado no próprio processo do Linux. O Android inicia
o processo quando é preciso executar algum componente do aplicativo; em seguida,
encerra-o quando não mais é necessário ou quando o sistema precisa recuperar
memória para outros aplicativos;
• Assim, o sistema Android implementa o princípio do privilégio mínimo. Ou seja, cada
aplicativo, por padrão, tem acesso somente aos componentes necessários para a exe-
cução do seu trabalho e nada mais. Isso cria um ambiente muito seguro em que o
aplicativo não pode acessar partes do sistema para o qual não tem permissão;
Obs.: os critérios de segurança em dispositivos móveis para aplicativos de celular são mui-
to mais restritos que os critérios utilizados para aplicativos Desktop, uma vez que o
usuário é mais leigo e uma quantidade grande de aplicativos é instalada.
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (2015/UFMT/IFMT/PROFESSOR/ENGENHARIA DE COMPUTAÇÃO) Sobre o sistema
operacional Android, é INCORRETO afirmar:
a. Para que uma aplicação seja instalada, o usuário precisa aprovar as permissões
solicitadas.
30m
b. Usa um tipo de máquina virtual Java denominada Dalvik.
c. Seu kernel é baseado no kernel da família de sistema operacional BSD.
d. O Android suspende da memória aplicações abertas que não estão sendo utilizadas.
COMENTÁRIO
a. Um aplicativo pode solicitar permissão para acessar dados de dispositivo como contatos
do usuário, mensagens SMS, o sistema montável (cartão SD), câmera, Bluetooth etc. O
usuário precisa conceder essas permissões de forma explícita.
b. Aplicações Android escritas em Java são compiladas em bytecodes Dalvik e executadas
usando a Máquina Virtual Dalvik, que é uma máquina virtual especializada desenvolvida
para uso em dispositivos móveis, o que permite que programas sejam distribuídos em
formato binário (bytecode) e possam ser executados em qualquer dispositivo Android, in-
dependentemente do processador utilizado;
– Apesar de as aplicações Android serem escritas na linguagem Java, ela não é uma má-
quina virtual Java, já que não executa bytecode JVM;
c. A plataforma Android, baseada no kernel do Linux, é projetada principalmente para dis-
positivos móveis com tela sensível ao toque, como telefones celulares e tablets.
d. Se um aplicativo tiver um processo em cache e retiver a memória que atualmente não é
necessária, o aplicativo, mesmo quando o usuário não o estiver usando, afetará o desem-
penho geral do sistema.
– Como o sistema fica com pouca memória, ele mata processos no cache de LRU, come-
çando com o processo menos usado recentemente;
– O sistema também considera os processos que armazenam mais memória e pode termi-
ná-los para liberar memória RAM.
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
GABARITO
1. c
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Componentes de Aplicativo
• Nem todos os componentes são pontos de entrada reais para o usuário e alguns
dependem uns dos outros, mas cada um existe como uma entidade independente e
desempenha uma função específica – cada um é um bloco de construção exclusivo
que ajuda a definir o comportamento geral do aplicativo;
• Há quatro tipos de componentes de aplicativo. Cada tipo tem uma finalidade distinta e
tem um ciclo de vida específico que define a forma pela qual o componente é criado e
destruído;
• Eis os quatro tipos de componentes de aplicativos:
– Atividades;
– Serviços;
– Provedores de conteúdo;
– Receptores de transmissão.
Atividades (Activity)
• Atividades representam uma tela única (visual) com uma interface do usuário;
• Por exemplo, um aplicativo de e-mail pode ter uma atividade que mostra uma lista de
novos e-mails, outra atividade que compõe um e-mail e outra ainda que lê e-mails;
• Embora essas atividades funcionem juntas para formar uma experiência de usuário
coesa no aplicativo de e-mail, elas são independentes entre si;
• Portanto, um aplicativo diferente pode iniciar qualquer uma dessas atividades (se o
aplicativo de e-mails permitir);
5m
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Serviços (Service)
Obs.: durante a instalação do aplicativo (ou quando o aplicativo for utilizar o recurso pela
primeira vez), será enviado um pedido de permissão para o usuário. Assim, os apli-
cativos são executados no sistema operacional a partir de barreiras bastante rígidas.
ANOTAÇÕES
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Os provedores de conteúdo são úteis para ler e gravar dados privados no aplicativo e
não compartilhados;
• Um provedor de conteúdo é implementado como uma subclasse de ContentProvider
e precisa implementar um conjunto padrão de APIs que permitem a outros aplicativos
realizar transações.
Ativação de Componentes
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Para atividades e serviços, os intents definem a ação a executar (por exemplo, “exibir”
ou “enviar” algo) e podem especificar a URI dos dados usados na ação (entre outras
coisas que o componente a iniciar precisa saber);
• Por exemplo, um intent pode transmitir uma solicitação de uma atividade para exibir
uma imagem ou abrir uma página da Web;
• Obs.: supondo-se que em um aplicativo corporativo há um link ou uma tela com um
botão “Consulte nosso site”. Ao clicar nessa opção, uma intent pode ser disparada com
a informação de que se deseja exibir um site. Além disso, alguma outra aplicação pode
ser registrada para ouvir essa intent, como o navegador, que se oferecerá para execu-
tá-la. Caso existam vários aplicativos ou activities registradas para ouvir tal intent, uma
lista poderá ser exibida para que o usuário defina o destino da informação em questão.
15m
• Em alguns casos, é preciso iniciar uma atividade para receber um resultado; nesse
caso, a atividade também retorna o resultado em um Intent;
• Por exemplo, é possível emitir um intent para que o usuário selecione um contato pes-
soal e retorne-o ao app chamador – o intent de retorno contém uma URI que aponta
para o contato selecionado;
• Em termos de código (no exemplo a seguir, para que seja exibido um alarme):
• Se não houver aplicativos no dispositivo que possam receber a intent implícita, o apli-
cativo apresentará um erro ao acionar startActivity();
Obs.: na intent implícita, informa-se apenas que, por exemplo, deseja-se ajustar um alar-
me. Na explícita, a aplicação que será aberta deverá ser especificada. No primeiro
caso, é possível que várias aplicações distintas respondam para uma mesma funcio-
nalidade, cabendo ao usuário escolher qual mais se adequa para o seu uso.
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Para verificar primeiro se existe um aplicativo para receber o intent, aciona-se resolve-
Activity() no objeto Intent;
• Se o resultado for diferente de nulo, há pelo menos um aplicativo que pode processar
a intent e é seguro chamar startActivity();
• Se o resultado for nulo, não se deve utilizar a intent e, se possível, devemos desativar
o recurso que invoca a intent;
• Para receptores de transmissão, a intent simplesmente define o anúncio que está
sendo transmitido (por exemplo: uma transmissão para indicar que a bateria do dispo-
sitivo está acabando contém uma string de ação conhecida que indica “nível baixo da
bateria”);
20m
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O Arquivo de Manifesto
• É possível usar uma Intent para iniciar atividades, serviços e receptores de transmis-
são. Isso pode ser feito nomeando-se explicitamente o componente-alvo (usando o
nome da classe do componente) no intent;
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Os aplicativos Android são compostos de mais que somente códigos – eles exigem
recursos separados do código-fonte, como imagens, arquivos de áudio e tudo o que
se relaciona com a apresentação visual do aplicativo;
• Por exemplo, deve-se definir animações, menus, estilos, cores e o layout das interfa-
ces do usuário da atividade com arquivos XML;
• O uso de recursos de aplicativo facilita a atualização de diversas características do apli-
cativo sem a necessidade de modificar o código e – fornecendo conjuntos de recursos
alternativos – permite otimizar o aplicativo para diversas configurações de dispositivo
(como idiomas e tamanhos de tela diferentes);
• Para todo recurso incluído no projeto Android, as ferramentas de programação SDK
definem um ID inteiro exclusivo que o programador pode usar para referenciar o
recurso do código do aplicativo ou de outros recursos definidos no XML;
• Por exemplo, se o aplicativo contiver um arquivo de imagem de nome logo.png (salvo
no diretório res/drawable/), as ferramentas de SDK gerarão um código de recurso cha-
mado R.drawable.logo, que pode ser usado para referenciar a imagem e inseri-la na
interface do usuário.
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
Desenvolvimento Mobile Android II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
COMENTÁRIO
Atividades representam uma tela única com uma interface do usuário. Por exemplo, um
aplicativo de e-mail pode ter uma atividade que mostra uma lista de novos e-mails, outra
atividade que compõe um e-mail e outra que lê e-mails.
30m
GABARITO
1. a
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conte-
údo ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura
exclusiva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO WEB
IOS Desenvolvimento Mobile
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Introdução
• A Apple lançou o primeiro iPhone em 2007, o que criou uma grande revolução para a
indústria de smartphones com uma grande tela tátil e um botão para navegação;
• Os aplicativos nativos das plataformas Android e iOS não são intercambiáveis;
5m
• O iPhone foi o primeiro smartphone fácil de usar projetado para proporcionar aos
usuários uma sensação confortável ao navegar pelo conteúdo da Web, explorando
aplicativos com toques simples, bem como vários recursos padrão do telefone celular;
• O desenvolvimento para iOS tem como objetivo criar aplicativos para serem comercia-
lizados na App Store e podem ser instalados em iPhones ou iPads.
Arquitetura
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
IOS Desenvolvimento Mobile
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Core OS
Todas as tecnologias do iOS são criadas com base nos recursos de baixo nível forneci-
dos pela camada do Core OS.
Essas tecnologias incluem o Core Bluetooth Framework, o External Accessory Fra-
mework, o Accelerate Framework, o Security Services Framework, o Local Authorization Fra-
mework etc;
• Core Services
• Media
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
IOS Desenvolvimento Mobile
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Cocoa Touch
Desenvolvimento
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
IOS Desenvolvimento Mobile
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Xcode
• O compilador da Apple LLVM, que, além de compilar o código, fornece uma ferramenta
inteligente de para completar o código;
• O Interface Builder (IB), para trabalhar a parte visual do aplicativo, construindo as telas;
• Uma ferramenta para debug;
• O Organizer, que auxilia no gerenciamento de projetos e dispositivos cadastrados para
testes, além de apresentar a documentação auxiliar;
• O Instruments; uma ferramenta para análise de desempenho do código;
• E, por fim, o iOS Simulator, um simulador para iPhone e iPad no qual pode-se testar
os aplicativos;
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
IOS Desenvolvimento Mobile
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
XCode:
Cadastramento do Desenvolvedor
• Para que se possa testar seus aplicativos em dispositivos reais é necessário que o
desenvolvedor tenha uma conta junto a Apple, desta forma o mesmo pode cadastrar
seus dispositivos, realizar os testes e submeter seus aplicativos para AppStore (loja
virtual da Apple);
• O cadastro de uma conta de desenvolvedor é realizado direto no site de desenvolvi-
mento da Apple (Developer Apple);
Padrão MVC
• Os aplicativos para iOS seguem o padrão MVC (Model-View- Controller). Este padrão
separa o modelo, um conjunto de classes que manipula dados, das views, interfaces
de usuários ou telas, e permite que um controlador (controller) gerencie o fluxo de
informações entre o modelo e as telas;
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
IOS Desenvolvimento Mobile
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Isto facilita a construção de projetos universais, que são projetos tanto para iPhone/
iPod, quanto para iPad. Desta forma, o desenvolvedor pode reaproveitar todo o código
do modelo e do controller para ambos dispositivos e só necessita realizar trabalho
extra nas views, uma para iPad e outra para iPhone;
30m
DIRETO DO CONCURSO
1. (FUNCAB/MDA/ANALISTA DE SUPORTE/2014) O sistema operacional iOS é a funda-
ção de quais das seguintes linhas de produtos da Apple?
a. iPhone, iPad e iPod touch.
b. Mac mini, MacBook air e iPhone.
c. iPhone, iMac e iPad.
d. iPad, iMac e iPod touch.
e. iMac, iPod touch e iPhone.
GABARITO
1. a
2. d
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
IOS Desenvolvimento Mobile II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Objective-C
Ex.:
• @autoreleasepool cria uma área com escopo definido e deixa mais claro o que está
dentro do pool. Dentro do bloco @autoreleasepool é onde escrevemos nosso código;
• A próxima linha se chama NSLog, que é uma função trazida pelo Foundation Fra-
mework. Esta função é muito parecida com a função printf() em C. Aceita uma string
de formato e pode ter tokens substituíveis. A principal diferença notável é que o NSLog
cria automaticamente uma nova linha após uma string;
• “@” É um atalho de Objective-C para criar um objeto NSString a partir da cadeia de
caracteres fornecida
• return 0;: Por convenção, um valor de retorno de zero indica que a função foi
bem-sucedida
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
IOS Desenvolvimento Mobile II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Interface ou implementação
Criação de Objeto
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
IOS Desenvolvimento Mobile II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• A primeira etapa é realizada pelo método de classe alloc, herdado do NSObject e rara-
mente, ou nunca, substituído;
• Esse método literalmente aloca um pedaço de memória suficiente para manter seu
objeto (todas as suas variáveis de instância);
• Em seguida, ele configura todos esses valores para zero ou nulo - isso é para que você
não obtenha valores de lixo deixados para trás pelo que quer que tenha sido usado
pela última vez naquele pedaço de memória;
• Deste modo, todos os objetos começam como nil, BOOLs começam como NO, ints
como 0 e floats são definidos como 0.0. Esses valores são garantidos após o método
alloc ser chamado;
• No entanto, esse objeto ainda não está pronto para ser usado – ele precisa ser inicia-
lizado primeiro;
• Isso é feito pelo método de instância init, que é frequentemente sobrescrito;
• Esse método retorna um objeto do tipo id - o mesmo objeto que está sendo inicializado.
• Por exemplo:
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
IOS Desenvolvimento Mobile II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Por exemplo:
20m
• É necessário que uma instância da classe exista antes de poder ser chamado, portanto,
uma instância de uma classe precisa ser criada;
• Métodos de instância operam em instâncias específicas de classes;
• Métodos de instância não são declarados como estáticos;
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
IOS Desenvolvimento Mobile II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Tipos de Dados
Nome Descrição
Logs
Objective-C
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
IOS Desenvolvimento Mobile II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Arrays
Por exemplo:
25m
Dictionary
Por exemplo:
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
IOS Desenvolvimento Mobile II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (FUMARC/AL-MG/ANALISTAS DE SISTEMAS–DESENVOLVIMENTO/2014) Ana-
lise as seguintes afirmativas sobre fundamentos para desenvolvimento de aplicações
móveis para iOS.
COMENTÁRIO
Contagem de retenção Objective-C
• Objetive-C utiliza o modo de contagem de retenção (não usando coleta de lixo) é uma
ideia simples;
• Quando se aloca explicitamente um objeto, ele obtém uma contagem de retenção de
1 quando se chama release ou autorelease em um objeto, ele decrementado e, em
seguida, o objeto será coletado;
• É o único modo disponível em dispositivos iOS e está em uso no Mac OS X desde o
início do sistema operacional;
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
IOS Desenvolvimento Mobile II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
GABARITO
1. a
2. C
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
FLUTTER
1 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Ele vem com uma outra linguagem de programação, não sendo Javascript, trabalhando
com linguagem de programação mais nova do Google chamada Dart que é uma linguagem
estaticamente tipada, uma linguagem bastante segura e muito performática.
A tela não é nem em componente nativo nem em HTML. O Dart traz uma Engine gráfica
chamada Skia, que desenha os próprios componentes, pixel a pixel.
5m
A estratégia do Java para ser multiplataforma, ele desenhava os próprios componentes
estratégia do swing.
Obs.: Essa estratégia foi tentada várias vezes, pois a estratégia do swing era muito ruim.
No caso do Flutter, tem dado muito certo, pois a sua performance da engine deles é
muito boa.
Em resumo, deve-se fazer a programação em uma linguagem chamada Dart, essa
linguagem será compilada para código nativo de maneira que, no react native continua
rodando em Javascript, na programação híbrida, continua rodando Javascript. Aqui vai
programar, virar código byte nativo da plataforma mesmo. A Engine gráfica utilizada é própria,
que tem tanto para Android quanto para IOS e os componentes não são nem HTML nem
componentes nativos, sendo componentes desenvolvidos pela própria Google.
2 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: É informado que não é Javascript que está por trás, e sim compilando com código
nativo.
Muitas vezes, em alguns pontos, desenvolver um aplicativo em react native não dá muito
certo, como por exemplo um aplicativo de mapa, um aplicativo que tivesse uma interface
muito diferente, com o Flutter isso é possível.
3 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Esse é um exemplo de código que se consegue rodar até mesmo na web, uma
aplicação mínima, um Hello World de Flutter. Essa linguagem é chamada Dart que em
alguns momentos se parece com o Java, Javascript, pegando o melhor dos dois.
• Na primeira linha depreende-se sobre o import, as transferências dos pacotes, na
terceira linha há o método principal e funções, nas demais linhas há uma classe. Na
quinta linha há a orientação do objeto, que informa que há herança, na sétima linha há
linhas de retorno, método e parâmetro, tipos de métodos e assim por diante.
• Na linha dezessete há uma função, repassando tudo da oitava linha até a décima sexta,
tendo parâmetros nomeados, sendo um recurso muito interessante da linguagem.
10m
• O Flutter é um framework de desenvolvimento de software multiplataforma que foi
apresentada pelo Google em 2015 e recebeu seu primeiro lançamento em maio de 2017;
• O Flutter hoje em dia tem crescido de forma constante e oferece possibilidades não
apenas para o desenvolvimento móvel iOS e Android, mas também para aplicativos da
web e desktop;
– É um suporte de primeira ordem para os aplicativos web, porém, a partir da versão
II ele tem suporte específico para aplicativos web.
– Ele utiliza uma estratégia diferente, que é a estratégia de abrir um Canvas e desenhar
os componentes próprios dele lá dentro.
Obs.: Como o nível de customização do Flutter é muito alto, pode-se controlar cada pixel
da tela. Quando em um aplicativo react nature é bem mais difícil, pois chama o
componente nativo e tem um certo nível de customização, além de cores. Porém,
não há nada perto do que o Flutter faz, como customizar cada pixel.
4 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Basicamente, o Overview do sistema Flutter vai demonstrar que ele terá dois temas
principais que ele vai entregar que é o Material e o Cupertino. Esse tema Material é
parecido com Material Design e o tema Cupertino que é o tema do IOS, de maneira
que o Material é o tema da Google e o Cupertino do IOS.
• Algo que é estranho do Flutter é, uma vez escolhido o tema, se compilar essa aplicação
para o Android ou IOS, ela terá o mesmo tema.
– Exemplo: Se compilar uma aplicação que tenha Material Designer ela ficará
com esse tema tanto para o Android quanto para o IOS. E se escolher o tema
Cupertino ele ficará com esse tanto para Android tanto para o IOS, não trocando
dinamicamente o tema.
– Na verdade, os temas existem mais como exemplos do que como resultado geral,
vez que as grandes empresas quando vão utilizar, não vão usar nenhum nem o
outro, criando o seu próprio tema.
• Há um conceito muito forte no que tange às Widgets que são os componentes de
tela que possuem a parte de renderização, animação, desenho e gestos, além dos
componentes básicos.
ANOTAÇÕES
5 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DART
• Dart é uma linguagem de programação orientada a objetos que foi revelada pela
primeira vez pelo Google em 2011;
• Desde então, o Dart evoluiu constantemente, lançando diferentes recursos. Entre
outros, vale mencionar o recurso “dart 2 native” que permite compilá-lo para plataformas
Windows, Linux e macOS como um aplicativo desktop;
• O programa Dart pode ser compilado em um arquivo executável independente ou
compilado em JavaScript, desta forma, você pode executar programas Dart em todos
os navegadores da web modernos;
– Essa é uma característica curiosa: Compilar de Dart para Javascript e ele roda no
navegador ou compilado para código nativo.
O Dart é uma linguagem moderna, interessante, rápida e bem elaborada, com menos
burocracia na linguagem, e com recursos bem interessantes, não sendo, infelizmente,
utilizada em outros aspectos além do próprio Flutter.
ANOTAÇÕES
6 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Esse é um exemplo de Dart Pad sendo executado, tendo o método principal na primeira
linha void main que faz um print ‘Hello, World!’ onde colocando o Run, aparece o
Hello, World!
– Há aqui algumas características da linguagem. Em um exemplo posterior será
possível visualizar que haverá a função main, função principal, que não terá retorno
então terá aí tipos de retorno bem definidos. E aqui tem o método print bem simples.
7 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Essa função é um pouco mais elaborada, apenas para ver outros recursos da linguagem.
Tem uma definição de uma outra função print Integer que recebe um número inteiro, int
aNumber, recebendo um parâmetro.
– Se observar o { logo após o parênteses, percebe-se que é muito parecido com o
Java, talvez não tendo diferença, a não ser pelo fato de que não é necessário colocar
tudo dentro de uma classe, tendo essa burocracia eliminada. No main principal, com
o var declarado, dizendo que a variável terá o tipo inferido.
– Muitas vezes não precisa declarar o tipo na primeira parte da função, principalmente
em situações em que se tem uma atribuição no momento da criação da variável,
automaticamente o tipo dela será inferido como inteiro, e a função print Integer.
– Note que há a template strings automaticamente na linguagem, utilizando a variável
$Number no meio de uma string, utilizando o dólar já nativo dele
FRAMEWORK FLUTTER
8 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
9 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
INSTALAÇÃO

ANOTAÇÕES
10 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
CRIANDO O APP
• Aqui, por exemplo, entrou-se em uma pasta temp onde foi feito futter created myapp,
muito parecido com o que se é feito para a criação de outros framework.
ANOTAÇÕES
11 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Criando a aplicação, estando tudo pronto, entra no diretório e escreve $flutter rum.
EXECUTANDO O APP
• Quando se faz o comando $flutter rum, ele vai perceber o tipo de sistema operacional
que se está. Aqui, por exemplo, se está no sistema operacional que tinha o Android.
De maneira que vai utilizar o Android para renderizar a aplicação.
ANOTAÇÕES
12 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
13 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
– Existem vários editores de código que se pode utilizar. Em geral, utilizam o VS Code
ou o IntelliJ.
25m
– Foi utilizado o IntelliJ para trabalhar com o Dart e o Flutter.
– Ao abrir a aplicação, a esquerda tem o diretório da aplicação, tendo diversos arquivos,
sendo que o arquivo principal é o main.dart. Além disso, há outros arquivos como
pub spec, arquivos de teste.
14 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Percebe-se aqui que se tem dois projetos nativos: O projeto nativo de Android e o
projeto nativo de IOS, tendo uma característica muito parecida com o React Nature,
pois quando for compilar para essa plataforma ele vai utilizar a primeira configuração
para fazer uma compilação nativa.
import ‘package:flutter/material.dart’;
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: ‘Flutter Demo’,
theme: ThemeData(
ANOTAÇÕES
15 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
void _incrementCounter() {
setState(() {
_counter++;
});
}
16 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Ele tem um título, e vai ter um estado. Como ele é um Stateful Widget ele tem um
estado create State() que vai criar uma instância deMy HomePage State() que terá
uma variável que é um contador, que é o estado, o intcounter = 0;. Uma função
chamada incremento Counter(). Quando for fazer uma atualização de estado ou de
alguma variável, tem que realizar dentro do setState, de forma parecida com o React,
incrementando o counter + +.
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
main Axis Alignment: MainAxisAlignment.center,
children: <Widget>[
Text(
‘You have pushed the button this many times:’,
),
Text(
‘$_counter’,
style: Theme.of(context).textTheme.headline4,
),
],
),
),
• Aqui foi feito ou build retornando à árvore de componente. O scaffold( é uma tela
padrão que tem uma barra em cima, que tem um determinado texto, Text (widget.title)
e depois no corpo da tela terá alinhado ao centro body: Center, terá uma coluna que
também estará alinhada ao centro, child: Column(, que também estará alinhado ao
centro, Main Axis Alignment.center.
ANOTAÇÕES
17 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Terá uma lista de widget filhos, children: <Widget>[, onde o primeiro é um texto,
Text(‘You have pushed the button this many times:’,), e o segundo também é um texto,
Text(‘$counter’, style: Theme.of(context).text Theme.headline 4,), ondem tem-se o
valor do contador, ‘$counter’, convertido para texto e em determinado esquema de
cores, vindo do tema style: Theme.of(context).text Theme.headline 4,).
• Repare que aqui há uma certa semelhança com o React, onde há uma árvore de
componentes definida programaticamente. Mas ao contrário do React onde se definia
um JSX, aqui está se definindo no código mesmo de componentes.
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: ‘Increment’,
child: Icon(Icons.add),
),
);
}
}
DIRETO DO CONCURSO
1. (CCV-UFC/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO/DESENVOLVIMENTO
DE SISTEMAS/2019) Sobre o desenvolvimento de aplicações móveis, assinale a
alternativa correta.
a. O React.js é um framework de código aberto usado para desenvolver aplicativos para
Android, iOS e UWP.
b. Ionic é um SDK de software livre completo para desenvolvimento de aplicativos
móveis híbridos escrito em Java.
c. Flutter é um SDK de código aberto criado pelo Google para o desenvolvimento
de aplicativos para dispositivos móveis utilizado para desenvolver aplicativos para
Android e iOS.
30m
d. Swift é um framework de desenvolvimento de aplicativos móveis lançado como código
aberto com o nome de Apache Cordova.
e. O Vue Native é um framework para criar aplicativos móveis nativos cross-platform
usando a linguagem de programação Dart.
18 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Flutter
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
• O React.js é escrito em Javascript.
• O Ionic é uma linguagem e não um framework
• Quem usa Dart é o Flutter.
GABARITO
1. c
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
�A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
19 www.grancursosonline.com.br
TECNOLOGIA DA INFORMAÇÃO
React Native
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
REACT NATIVE
REACT NATIVE
www.grancursosonline.com.br 1
TECNOLOGIA DA INFORMAÇÃO
React Native
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: “React” vem do framework React que era utilizado na biblioteca, e o “Native” vem de
reforçar que os componentes sendo exibidos são nativos da plataforma.
ANOTAÇÕES
www.grancursosonline.com.br 2
TECNOLOGIA DA INFORMAÇÃO
React Native
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O React Native permite criar aplicativos nativos para Android e iOS utilizando o React. Na
imagem acima, há a mesma tela nos dois dispositivos Android e iOS.
É necessário um dispositivo Mac para ser feita a compilação final do aplicativo. Não é
o mesmo aplicativo que irá rodar nas duas plataformas. Há a mesma base de código, para
a qual é gerada uma compilação para os sistemas. Dessa forma, em vez de, por exemplo,
vários desenvolvedores para cada plataforma, será necessário um computador de cada.
15m
ANOTAÇÕES
www.grancursosonline.com.br 3
TECNOLOGIA DA INFORMAÇÃO
React Native
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: caso seja necessário algum recurso específico para uma plataforma, é possível adi-
cionar um “if” no código.
Ao desenvolver para Android e para iOS, é utilizada uma linguagem específica da plata-
forma – Java para Android e Objective-C para iOS. As empresas tinham uma base desenvol-
vedora que estava acostumada com o JavaScript, então, com o React Native, a maior parte
do código é escrita em JavaScript, que é uma linguagem popular e mais fácil de aprender.
O React Nativa irá combinar, então, o melhor que há, tanto no desenvolvimento nativo
do celular com a biblioteca React – biblioteca de desenvolvimento de interfaces gráficas que
pode ser utilizada para desenvolver Android e até aplicativo do Windows – e em JavaScript.
É possível utilizar o React Native, atualmente, em projetos de Android ou iOS existentes, ou
criar um aplicativo totalmente novo, que geralmente é o que acontece.
ANOTAÇÕES
www.grancursosonline.com.br 4
TECNOLOGIA DA INFORMAÇÃO
React Native
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• No Android, será escolhido um elemento nativo que funcione com o “View”, com o
“Header”, com o “Text”. É a plataforma React Native que escolhe o componente ade-
quado da plataforma nativa.
O aplicativo irá usar as mesmas APIs da plataforma nativa que outros aplicativos usam.
Em certo momento, é necessário abrir a câmera, por exemplo, analisar o giroscópio, comu-
nicar por bluetooth, abrir o sistema de arquivos etc. A aplicação web roda dentro de um san-
dbox muito protegido por questões de segurança. No React Native, isso é um pouco dife-
rente. O React Native, além de fornecer os componentes visuais da plataforma, irá oferecer
também uma série de componentes para acessar a plataforma nativa.
O React Native fornece APIs em JavaScript, então, via JavaScript, é feita uma chamada que
faz a abertura da câmera, que toca um som, que lê o sistema de arquivos etc. Ele é um aplicativo
JavaScript, mas não tem as limitações tradicionais do navegador, ele consegue acionar as APIs
nativas do sistema operacional. Eventualmente, a maioria das APIs são comuns nas duas plata-
formas. Por exemplo, tanto o Android quanto o iOS têm características de geolocalização.
Obs.: eventualmente, seria possível utilizar o React Native até se surgissem outras plata-
formas – por exemplo, se o Windows Phone voltasse a funcionar.
Também é possível criar versões específicas dos componentes para uma plataforma,
com uma única base de código, e compartilhar vários códigos entre as plataformas.
ANOTAÇÕES
www.grancursosonline.com.br 5
TECNOLOGIA DA INFORMAÇÃO
React Native
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 6
TECNOLOGIA DA INFORMAÇÃO
React Native
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O “App.js” é composto por um cabeçalho, que fica na parte de cima. O App é dividido
em um Header, que está dividido em uma imagem e uma parte de texto, e em um Body
(corpo), que possui vários blocos de textos. É comum, em aplicativos HTML, haver essa
estrutura de alinhamento.
APP
I H T
O React Native, então, permite que sejam criados aplicativos verdadeiramente nativos e
não seja comprometida a experiência do usuário. Ele é bom para o usuário – porque os apli-
cativos híbridos geravam problemas para os usuários – e para o desenvolvedor, que pode
desenvolver mais rápido.
Ele possui uma série de componentes, como componentes agnósticos – view, text e
image – que existem nas duas plataformas, e consegue pegar componentes nativos de
cada plataforma. Ele é um “ganha-ganha”, ou seja, o usuário e a equipe de desenvolvimento
ganham. Por isso, é extremamente popular o desenvolvimento em React Native.
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 7
TECNOLOGIA DA INFORMAÇÃO
React Native - II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
REACT NATIVE II
EXPO
www.grancursosonline.com.br 1
TECNOLOGIA DA INFORMAÇÃO
React Native - II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O React Native possui uma plataforma chamada Expo, desenvolvida por outra empresa,
com o endereço “snack.expo.dev”. Essa plataforma permite a criação de uma interface web
diretamente no browser, com trechos de códigos que serão renderizados como uma aplica-
ção. É possível renderizar aplicativos iOS, Android ou Web.
5m
Também é possível instalar o aplicativo Expo no celular. Clicando em “My Device”, apa-
rece um QR Code que, ao ser lido, a aplicação irá rodar no dispositivo celular. O Expo pode
ser utilizado também para desenvolver aplicações no computador que irão rodar no celular.
Utilizar o Expo é diferente. O código React Native é a mesma coisa, mas é possível pedir
para a plataforma, que é uma plataforma Cloud, para compilar o aplicativo. Geralmente, o
Expo é utilizado para aplicativos simples ou aplicativos básicos, no caso de aprendizado.
www.grancursosonline.com.br 2
TECNOLOGIA DA INFORMAÇÃO
React Native - II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: na maior parte do curso, serão utilizados os componentes de função porque essa é
a forma mais atual e as questões das bancas cobrarão os componentes de função.
ANOTAÇÕES
www.grancursosonline.com.br 3
TECNOLOGIA DA INFORMAÇÃO
React Native - II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O React Native é um framework livre para construir aplicativos Android e iOS, usando o
React e recursos nativos das plataformas. Com o React, utilizando os APIs da plataforma,
deve ser descrita a aparência e o comportamento da interface utilizando o React.
15m
Será gerado um “bundle”, um arquivo.JS grande, que vai embutir em uma casca e gerar
um app nativo de cada plataforma. O arquivo não irá executar um arquivo.JS e o iOS também,
mas o arquivo “bundle” será empacotado e colocado dentro de uma casca que é nativa.
www.grancursosonline.com.br 4
TECNOLOGIA DA INFORMAÇÃO
React Native - II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMPONENTES NATIVOS
www.grancursosonline.com.br 5
TECNOLOGIA DA INFORMAÇÃO
React Native - II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A imagem acima apresenta uma das primeiras aplicações desenvolvidas pelo Face-
book. Trata-se de um aplicativo de campanhas. Como os componentes do React Native são
apoiados pelas mesmas visualizações do Android e iOS, ele possui a aparência, sensação e
desempenho de qualquer outro aplicativo.
Quando o usuário leigo olha para o aplicativo, ele não consegue distinguir visualmente
que esse aplicativo foi feito em React Native – o que não acontecia com aplicativos em
HTML. Nesse caso, é possível visualizar o botão do iOS e os elementos visuais do iOS. O
React Native possui um conjunto de componentes nativos e prontos para uso.
A imagem acima é a mesma tela da imagem anterior, mas não é pixel perfect, ou seja,
não é exatamente a mesma visualização. Os usuários de Android gostam do floating action
button, por exemplo, mas isso não existe no iOS. No mais, o conteúdo é o mesmo.
ANOTAÇÕES
www.grancursosonline.com.br 6
TECNOLOGIA DA INFORMAÇÃO
React Native - II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O React Native também permite criar os próprios componentes nativos para Android e
iOS para atender necessidades exclusivas do aplicativo. Por exemplo, um componente nativo
para a plataforma do iOS que terá um comportamento peculiar. Em geral, são utilizados os
componentes fornecidos pela própria plataforma do React, mas também é comum que os
desenvolvedores baixem uma biblioteca de componentes complementares com um visual
mais agradável.
COMPONENTES CORE
COMPONENTE
ANDROID IOS WEB DESCRIÇÃO
REACT NATIVE
Um contêiner que oferece suporte
a layout com flexbox, estilo, algum
<View> <ViewGroup> <UIView> <div>
controle de toque e controles de
acessibilidade
Exibe, estiliza e aninha sequên-
<UIText-
<Text> <TextView> <p> cias de texto e até lida com even-
View>
tos de toque
<UIImage-
<Image> <ImageView> <img> Exibe diferentes tipos de imagens
View>
Um contêiner de rolagem gené-
<UIScroll-
<ScrollView> <ScrollView> <div> rico que pode conter vários com-
View>
25m ponentes e visualizações
<input
<UITex-
<TextInput> <EditText> type=”- Permite ao usuário inserir texto
tField>
text”>
www.grancursosonline.com.br 7
TECNOLOGIA DA INFORMAÇÃO
React Native - II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 8
TECNOLOGIA DA INFORMAÇÃO
React Native - II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O código se tornou a imagem acima, com “um texto”, “outro texto”, a imagem de um gato
e um campo para digitação. É utilizada toda uma estratégia de componentes. O ponto princi-
pal do React Native é como serão declarados os componentes. A maior parte do tempo será
utilizada para escrever comportamentos e variáveis. O código está formando um compo-
nente App, que possui uma série de alinhamentos, como blocos (componentes).
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 9
TECNOLOGIA DA INFORMAÇÃO
React Native - III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
RELEMBRANDO
Na última aula, foi tratada a tradução que ocorre entre os componentes core, que são com-
ponentes agnósticos de plataforma – como “text”, “image” e “view” –, e os componentes
nativos da plataforma.
COMPONENTES
www.grancursosonline.com.br 1
TECNOLOGIA DA INFORMAÇÃO
React Native - III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
FUNDAMENTOS DO REACT
O React Native se baseia no React, que é uma biblioteca de código aberto, popular para
a construção de interface usando o JavaScript.
Obs.: já foram cobradas questões de JSX, de Props e de State, além de questões de con-
ceito geral.
O primeiro passo é fazer os imports dos componentes core do React e do React Native.
www.grancursosonline.com.br 2
TECNOLOGIA DA INFORMAÇÃO
React Native - III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 3
TECNOLOGIA DA INFORMAÇÃO
React Native - III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
JSX
Também é utilizada uma sintaxe que parece um HTML e XML que é chamada de JSX.
O React e React Native usam o JSX porque é uma sintaxe que permite escrever elementos
dentro do JavaScript utilizando tags. O JSX será traduzido para JavaScript, então, é possível
utilizá-lo como se fosse JavaScript comum.
Por exemplo, é possível colocar variáveis – como “nome = Gran Cursos” e “Estude no
{nome}”, mas é necessário utilizar uma sintaxe especial, que é a sintaxe de chaves.
Como esse código é um código JavaScript, qualquer expressão JavaScript irá funcio-
nar dentro das chaves, incluindo uma chamada de função. Por exemplo, a função chamada
“pegaNome” que recebe dois argumentos “priNome” e “segNome”. Ela é uma função que
retorna “priNome” mais espaço em branco mais “segNome”. Ao renderizar, há “Estude no
ANOTAÇÕES
www.grancursosonline.com.br 4
TECNOLOGIA DA INFORMAÇÃO
React Native - III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Gran Cursos!”. Então, se a chave for aberta no meio do JSX, é possível chamar uma função
após defini-la dentro do módulo. O valor da função será renderizado no meio das duas chaves.
15m
COMPONENTES PERSONALIZADOS
www.grancursosonline.com.br 5
TECNOLOGIA DA INFORMAÇÃO
React Native - III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Além disso, é possível criar também composições dos componentes próprios, ou seja,
criar pedaços e repeti-los. É criado um componente “Aluno” e essa função é um componente
porque retorna um elemento interno, um trecho de JSX. Além de utilizar os componentes
core do React Native, é possível criar elementos que são composições e utilizá-los como se
fossem elementos core.
Por exemplo, o elemento “Escola” possui uma “View” que possui um componente de
texto e três componentes “Aluno”. O componente “Aluno” é uma “View”. Quando isso for ren-
derizado, irá aparecer “Bem-vindo! Eu sou um aluno! Eu sou um aluno! Eu sou um aluno!”.
Cada um desses componentes foi renderizado. Esse componente “Aluno” pode ser renderi-
zado várias vezes em vários lugares sem repetir o código.
O componente em que é colocado outro componente é chamado de “componente-pai”.
O “View” é o componente-pai e o “Escola” é o componente-pai dos outros elementos, sendo
que o “Aluno” é um componente-filho. Cada “Aluno” renderiza um elemento único que pode
ser personalizado.
ANOTAÇÕES
www.grancursosonline.com.br 6
TECNOLOGIA DA INFORMAÇÃO
React Native - III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
PROPS
www.grancursosonline.com.br 7
TECNOLOGIA DA INFORMAÇÃO
React Native - III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Os próprios componentes do React aceitam uma série de props e possuem suas props.
Por exemplo, a “Image” possui um “Source”, em que é passada uma propriedade, e há um
“style” com a largura e altura da imagem. Essa é uma Prop passada para o componente
“Image”. A maioria dos componentes core e do React Native podem ser personalizados.
“Image” possui muitas propriedades diferentes, incluindo esse “style” que aceita um objeto
JavaScript de pares de valores, propriedades relacionadas.
No JSX, os valores de JavaScript são passados com chaves. No código anterior, os
valores foram passados sem chaves. Ao passar com chaves, fica claro que o componente é
uma variável, uma característica. Os objetos do próprio JavaScript precisam da anotação de
chaves. Então, passa-se, como parâmetro, para a imagem, um objeto JavaScript que possui
algumas propriedades a mais.
Por exemplo, esse estilo possui largura e altura. A primeira chave indica que será passado
um valor do JavaScript, e a segunda indica que o componente é um objeto literal de JavaS-
cript. Portanto, ao passar um objeto do JavaScript em JSX, são envolvidas duas chaves – a
primeira que indica que é um valor e a segunda que indica que é um objeto.
Esses props são elementos estáticos, ou seja, a propriedade não muda. Os props são
características passadas do componente-pai para o componente-filho, mas, se no compo-
nente-filho tiver algo que irá alterar, como um contador de cliques, não se utiliza o Prop, mas
o último elemento do JavaScript, do JSX, que é o State.
25m
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 8
TECNOLOGIA DA INFORMAÇÃO
React Native - IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
REACT NATIVE - IV
RELEMBRANDO
As props constituem passagens de parâmetro de um componente pai para um componente
filho. Possuem característica de imutabilidade. Para que um componente pai sofra altera-
ção, o mesmo terá de ocorrer com o componente filho. Nesse caso, o componente pai será
renderizado com a propriedade nova. É preciso lembrar que alterações não são possíveis
no componente filho.
www.grancursosonline.com.br 1
TECNOLOGIA DA INFORMAÇÃO
React Native - IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 2
TECNOLOGIA DA INFORMAÇÃO
React Native - IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Aqui, class Aluno está definido como componente de classe. Dentro dele, define-se uma
variável state: state = { isEstudando: true }
10m
ANOTAÇÕES
www.grancursosonline.com.br 3
TECNOLOGIA DA INFORMAÇÃO
React Native - IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ATENÇÃO
Como a introdução dos hooks no React é algo recente, é provável que as questões de con-
cursos explorem mais essa funcionalidade do que as precedentes. Não se deve, contudo,
desconsiderar a cobrança, por parte de algumas bancas, das funcionalidades mais antigas.
ENTRADA DE TEXTO
www.grancursosonline.com.br 4
TECNOLOGIA DA INFORMAÇÃO
React Native - IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ATENÇÃO
Por não ocorrerem no React comandos de forma imperativa, é preciso que a alteração do
state seja feita em momentos específicos, utilizando-se funções específicas. Não se pode,
por exemplo, tomar a variável text e simplesmente reatribuir seu valor. Se tal ação for efe-
tuada, o React não realizará a renderização almejada. Como solução, é preciso utilizar a
função setText.
SCROLLVIEW
www.grancursosonline.com.br 5
TECNOLOGIA DA INFORMAÇÃO
React Native - IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ANOTAÇÕES
www.grancursosonline.com.br 6
TECNOLOGIA DA INFORMAÇÃO
React Native - IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
LISTAS
Esse recurso permite exibir uma lista de rolagem de vários elementos, graças ao com-
ponente core FlatList. Diferentemente do ScrollView, ele apresenta melhor funcionalidade
quando se tem uma lista longa de dados, em que o número de itens pode mudar com o
tempo. Contrariamente ao ScrollView, que é mais genérico, o FlatList renderiza os elemen-
tos que estão sendo exibidos na tela, e não todos de uma vez, a exemplo do que mostra a
imagem abaixo:
O FlatList requer duas props: data – onde se encontra a informação da lista – e renderI-
tem, que toma um item dessa fonte e retorna o componente formatado para renderizar, con-
forme se pode perceber na imagem abaixo:
ANOTAÇÕES
www.grancursosonline.com.br 7
TECNOLOGIA DA INFORMAÇÃO
React Native - IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Para que ocorra a renderização dinâmica, é necessário tomar item e deixá-lo como item.
key, conforme apresenta a seguinte imagem:
30m
ANOTAÇÕES
www.grancursosonline.com.br 8
TECNOLOGIA DA INFORMAÇÃO
React Native - IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
MÓDULO DE PLATAFORMA
www.grancursosonline.com.br 9
TECNOLOGIA DA INFORMAÇÃO
React Native - IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Nesse caso, é criado um componente e ao dele, conforme o caso, o nome ios ou android:
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
www.grancursosonline.com.br 10
DESENVOLVIMENTO DE SISTEMAS
IONIC
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
IONIC
Introdução
Ao fazer um aplicativo, existem várias maneiras de fazer a aplicação. A maneira mais
básica é baixar um SDK no fabricante, como o Google ou Apple. No caso do IOS, deve ter o
MAC e no caso do Android, deve-se baixar o Android Studio.
Para a Apple, a programação será em linguagem Swift ou Objective C e para o Google
será em Java ou Kotlin. O problema que surge é que o app será específico de uma determi-
nada plataforma, por isso, se o objetivo for ter o aplicativo em duas plataformas, deverá ser
desenvolvido de formas diferentes.
Com essa problemática, foram buscadas soluções, como um website, que seria mais res-
trito. Alguns desenvolvedores analisaram o chamado o “Web view”, que é uma visão da web,
em que se pode colocar trecho HTML. Usando isso, sugeriu-se usar uma casca para Android
e IOS, em que a mesma lógica usada para um serviria para outro, com uma base de código
única que pode ser compilada para Android ou IOS, surgindo o termo “aplicação híbrida”. .
5m
Dessa forma, o Ionic foi um dos primeiros a apresentar um pacote completo para fazer isso,
em que pode usar um desenvolvedor Web que poderá rodar na plataforma Android ou IOS.
1 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Mova-se mais rápido com uma única base de código, executando em qualquer lugar
com JavaScript e na web;
Para achar um desenvolvedor que use Objective C ou Swift é mais caro e complexo,
diferentemente dos desenvolvedores de Javascript web em HTML, é mais popular desenvol-
vendo soluções mais rápidas e com valores mais baixos.
Exemplo de aplicação Ionic:
Essa aplicação, apesar de parecer nativa, usa Ionic. Por isso, a aplicação híbrida, que
possui HTML, CSS e Javascript. Quando o usuário usa essa aplicação, não percebe que não
é aplicação nativa, posto que não parece um site. .
10m
Visão Geral
• Ionic Framework é um kit de ferramentas de UI de código aberto para a construção
de aplicativos móveis e de desktop de alta qualidade usando tecnologias da web —
HTML, CSS e JavaScript — com integrações para estruturas populares como Angular,
React e Vue;
É possível fazer sem frame nenhum, apesar de ter maior trabalho.
• Se concentra na interface do usuário UX e na interação de interface de um aplicativo -
controles de interface do usuário, interações, gestos, animações;
Um aplicativo nativo possui comportamentos diferentes de uma aplicação web, nas formas
de interação, gestos e animações. Ex.: o padrão de interação na web, com o uso de mouse,
não é idêntico às ações do celular, que usa o toque. Por isso, o Ionic traz uma camada de
abstração para permitir que se use os componentes e tenha um comportamento parecido.
ANOTAÇÕES
2 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Como alternativa, ele pode ser usado autônomo sem qualquer framework de front-end
•
usando um script simples;
• Foco no desempenho: O Ionic foi desenvolvido para funcionar e se comportar de
maneira excelente nos dispositivos móveis mais recentes com práticas recomendadas,
como transições aceleradas de hardware eficientes e gestos otimizados para toque;
Quando surgiu a estratégia dos aplicativos híbridos, com casca nativa e miolo HTML,
CSS e Javascript, houve problemas com a performance, que era mais lenta em relação às
aplicações nativas. Com o passar do tempo, essa diferença sumiu, porque os smartphones
foram evoluindo e tendo maior capacidade.
• Design limpo, simples e funcional: o Ionic foi projetado para funcionar e exibir lin-
damente em todos os dispositivos e plataformas móveis atuais. Com componentes
prontos, tipografia e um lindo (mas extensível) tema básico que se adapta a cada pla-
taforma, você construirá com estilo;
– O Ionic possui um tema básico de aplicação e, geralmente, as empresas grandes
desejam visuais com customizações profundas no visual. Para empresas mais sim-
ples, os tipos de frame possuem componentes prontos e estilizados já prontos, dei-
xando o desenvolvimento mais barato. .
15m
3 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Aplicação em Ionic:
Capacitor
• Capacitor é um projeto de código aberto que executa aplicativos da Web modernos
nativamente no iOS, Android, Electron e Web (usando tecnologia Progressive Web
App) enquanto fornece uma interface poderosa e fácil de usar para acessar SDKs nati-
vos e APIs nativos em cada plataforma;
– Electron é outra estratégia que possui semelhança com Ionic. Electron é desenvol-
ver uma aplicação de Desktop que foi desenvolvida em HTML, CSS e Javascript.
A camada de abstração é fornecida para mudar o menor possível quando for em outra
plataforma.
4 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
– O Capacitor é como um browser que usa a aplicação do celular sem interface, que
fornece API interna, que tem acesso ao sistema de arquivos etc.
• Isso significa que, por exemplo, o acesso à Câmera utiliza o mesmo código no iOS
/ Android que no Electron e na web. Isso torna mais fácil construir um aplicativo da
web que seja executado nativamente no celular, desktop e na web como um Progres-
sive Web App;
– Mesmo que seja outra plataforma, a API estará abstraída.
• Eles podem incorporar controles de UI nativos e acessar qualquer SDK ou API nativo
disponível na plataforma;
• Ao contrário de aplicativos nativos mais tradicionais, os aplicativos Capacitor provavel-
mente terão a maior parte do aplicativo em execução em um controle WebView incor-
porado que desbloqueia os benefícios e eficiências de plataforma cruzada desejados;
– Há um conjunto de tecnologias, com o Capacitor, que fará transições de API do sis-
tema operacional para o aplicativo através de uma API de Javascript e também um
sistema fornecendo Webview, que fornece a capacidade de renderizar, que é exibir
o conteúdo.
ANOTAÇÕES
5 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Cordova / PhoneGap
• Como o Capacitor, Cordova é um projeto de código aberto que executa aplicativos da
web em várias plataformas, embora não no Electron nem web como um aplicativo da
Web progressivo;
– O Cordova, que era o antigo Framework, foi substituído pelo Capacitor, havendo
menor capacidade.
Metas do Ionic
• Plataforma cruzada: Crie e implante aplicativos que funcionem em várias platafor-
mas, como iOS nativo, Android, desktop e web como um Progressive Web App - tudo
com uma base de código. Escreva uma vez, corra em qualquer lugar;
6 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Belo design: Limpo, simples e funcional. O Ionic Framework foi projetado para funcio-
nar e exibir lindamente em todas as plataformas. Comece com componentes pré-con-
cebidos, tipografia, paradigmas interativos e um lindo (mas extensível) tema básico; .
25m
• Simplicidade: O Ionic Framework é construído com a simplicidade em mente, de
modo que a criação de aplicativos Ionic seja agradável, fácil de aprender e acessível a
praticamente qualquer pessoa com habilidades de desenvolvimento web;
– O público-alvo é o desenvolvedor Web, que trabalha com aplicações web e tem
conhecimento CSS, HTML e Javascript, mas ao usar o ecossistema de Android e
IOS possui dificuldades, com o Ionic usará tecnologias conhecidas.
– Os aplicativos Ionic, que são baseados em HTML, CSS e Javascript não pos-
suem experiência de uso tão refinada quanto a experiência de uso de um aplicativo
nativo, possuindo nicho, com objetivos, principalmente para empresas que possuem
equipe de desenvolvimento que não possuem experiência de desenvolvimento de
aplicativos.
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Compatibilidade
• Enquanto as versões anteriores do Ionic eram fortemente acopladas ao Angular, a
versão 4.x da estrutura foi reprojetada para funcionar como uma biblioteca de com-
ponentes da Web autônoma, com integrações para os frameworks JavaScript mais
recentes, como o Angular;
• O Ionic pode ser usado na maioria dos frameworks de front-end com sucesso, incluindo
React e Vue, embora alguns frameworks precisem de uma camada para suporte total
ao Web Components;
– Era muito acoplado ao Angular até a versão 4.x, que foi reprojetada de forma mais
autônoma para trabalhar com outros frameworks, que são mais populares.
JavaScript
• Um dos principais objetivos com a mudança do Ionic Framework para Web Compo-
nents era remover qualquer requisito rígido em um único framework para hospedar os
componentes;
• Isso possibilitou que os componentes principais funcionassem de forma autônoma em
uma página da web com apenas uma tag de script;
• Embora trabalhar com frameworks possa ser ótimo para equipes e aplicativos maiores,
agora é possível usar o Ionic como uma biblioteca autônoma em uma única página,
mesmo em um contexto como o WordPress;
—É possível utilizar até mesmo na web o WordPress. Assim, antigamente o Ionic era
preso ao Angular; atualmente, a partir da versão 4, é possível utilizá-lo com o React e Vue.
Obs.: nas provas, deve-se imaginar que o examinador pode não conhecer os recursos re-
centes, posto que o edital pode não trazer especificamente as versões cobradas. .
30m
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
�A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
8 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
IONIC II
IONIC CLI
Obs.: Atualmente, esse frame deve ter um “DX agradável”, que é uma experiência agradável
para o desenvolvedor, em que há um CLI, que é um comando de usuário que pode
ser utilizado para criar um projeto etc.
APPFLOW
• Para ajudar a construir, implantar e gerenciar aplicativos Ionic em todo o seu ciclo de
vida, há o serviço comercial para aplicativos de produção chamado Appflow, que é
separado do Framework de código aberto;
• O Appflow ajuda os desenvolvedores e equipes a compilar builds de aplicativos nativos
e implementar atualizações de código ao vivo para aplicativos Ionic a partir de um
painel centralizado;
ANOTAÇÕES
1 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Upgrades pagos opcionais estão disponíveis para recursos mais avançados, como
publicação direta em lojas de aplicativos, automação de fluxo de trabalho, logon único
(SSO) e acesso a serviços conectados e integrações;
• A interface é a seguinte:
ECOSSISTEMA
2 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
LICENÇA
• Ionic Framework é um projeto gratuito e de código aberto, lançado sob a licença MIT
permitida;
• Isso significa que pode ser usado em projetos pessoais ou comerciais gratuitamente;
• MIT é a mesma licença usada por projetos populares como jQuery e Ruby on Rails;
Obs.: Eventualmente, surgem questões a esse respeito, que são conceituais, em que
ressalte que o Ionic é open source.
COMPONENTES DA UI
Obs.: Especialmente nas corporações, em que as empresas querem dar sua marca à
aparência.
ESTILO ADAPTÁVEL
3 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Cada componente Ionic adapta sua aparência à plataforma em que o aplicativo está
sendo executado;
• Por exemplo, dispositivos Apple, como iPhone e iPad, usam a linguagem de design
iOS da própria Apple;
• Da mesma forma, os dispositivos Android usam a linguagem de design do Google
chamada Material Design;
Obs.: Apesar de haver a mesma base de código, a linguagem de Android e IOS possuem
forma de comunicação diferentes, por isso há um recurso chamado “adaptive stile”,
que permite que sejam feitas mudanças visuais a depender de onde será executado.
Obs.: Tem-se a mesma tela de Ionic rodando em IOS, à esquerda, e à direita no Android.
10m
ANOTAÇÕES
4 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
NAVEGAÇÃO
• Os aplicativos da web tradicionais usam um histórico linear, o que significa que o usuário
navega para frente em uma página e pode clicar no botão Voltar para navegar de volta;
ACESSO NATIVO
Obs.: Acesso nativo é que os recursos nativos como giroscópio do celular não estão
disponíveis, ocorrendo por meio de:
5 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Um dos casos de uso mais comuns do Ionic é construir um aplicativo que pode ser
baixado da App Store e da Play Store;
• Tanto os kits de desenvolvimento de software (SDKs) iOS e Android fornecem webview
que renderiza qualquer aplicativo Ionic, ao mesmo tempo que permitem acesso total
ao SDK nativo;
• Capacitor e Cordova são usados para dar aos aplicativos Ionic esse acesso a
SDKs nativos;
Obs.: Capacitor e Cordova são elementos que permitem que o aplicativo web acesse
recursos nativos.
TEMAS
Obs.: O tema permite que o usuário vá fazer alteração e ajuste para o visual da empresa.
APIS DE HARDWARE
6 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
IONIC NATIVE
• O Ionic Native possui sua própria lógica interna para detectar se está dentro de um
ambiente nativo;
• Em vez de lançar um erro de tempo de execução, ele imprimirá um aviso se não for um
ambiente nativo e não houver plug-ins Cordova disponíveis;
• O aplicativo não quebrará e continuará funcionando, embora sem a funcionalidade nativa;
15m
– Exemplo: Ao fazer um aplicativo que precise utilizar um GPS, que será compilado
para web, pode-se utilizar os recursos Ionic para detectar se há GPS, podendo
habilitar ou desabilitar alguma função com base nisso.
DETECÇÃO DE PLATAFORMA
• Na lógica de um aplicativo, sempre que for necessário fazer uma chamada de API nativa,
é recomendável sempre verificar o status do ambiente nativo primeiro. Por exemplo:
this.platform.ready().then(() => {
// ‘hybrid’ detecta Cordova e Capacitor if (this.platform.is(‘hybrid’)) {
// fazer chamadas a APIs nativas
} else {
// utilizar as APIs do browser
}
});
Obs.: Tem-se um código javascript, identificando se a plataforma é híbrida, que serão APIs
nativas; caso contrário, serão APIs de browser.
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
FALLBACKS DO NAVEGADOR
• Muitas APIs nativas que as pessoas usam (por exemplo, a API de arquivo), não estão
disponíveis no navegador;
• As APIs estão sempre melhorando e alcançando o nativo, por isso é recomendável
pesquisá-las;
• Levando os dois primeiros pontos em consideração, é bastante fácil criar uma
experiência agradável que se adapte à plataforma em que o aplicativo está sendo
executado;
DESKTOP
Obs.: São componentes de telas, não bastando compilar, que podem funcionar, mas causar
estranheza no desktop.
LAYOUT
• Muitas pessoas raramente notam o layout de um aplicativo, mas pode ter um grande
impacto na experiência e usabilidade. Considere este padrão de UI comum:
ANOTAÇÕES
8 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Isso renderizar 5 itens com largura de 100% cada. Isso pode parecer ótimo em um
dispositivo móvel, como visto abaixo, mas ver isso em um navegador de desktop é
uma história diferente. Os itens ficam esticados para preencher a tela inteira devido à
largura da tela ampla, deixando o espaço da tela sem uso;
Obs.: Assim, ao usar 100% da largura, no celular pode ficar normal, mas no ambiente
desktop ocupará toda a largura da tela.
9 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
10 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ARMAZENAMENTO
Obs.: Isso significa que ao receber o storage, que vem do Ionic, achará o valor dele e
recuperar o valor. Dependendo da plataforma em que se executa esse código, o Ionic
escolherá o dispositivo de armazenamento mais adequado, seja local storage etc. .
20m
class MyClass {
constructor(public storage: Storage) {}
async setData(key, value) {
const res = await this.storage.set(key, value);
console.log(res);
}
async getData(key) {
const keyVal = await this.storage.get(key); console.log(‘Key is’, keyVal);
}
ANOTAÇÕES
11 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
WEB VIEW
Obs.: Ao se usar o web view, abrirá um componente na tela do celular que será ocupado
totalmente pelo HTML.
12 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
CORS
• Web Views impõem CORS, por isso é importante que os serviços externos tratem
adequadamente às solicitações de origem cruzada;
Obs.: Quando faz uma requisição em webview, é como se faz através de browser, que deve
vir com cabeçalhos de CORS bem definidos para que a parte de web view aceite.
PROTOCOLO DE ARQUIVO
• Alguns plug-ins tentam acessar os arquivos do dispositivo por meio do protocolo file://;
• Para evitar dificuldades entre http e file, os caminhos para os arquivos do dispositivo
devem ser reescritos para usar o servidor HTTP local;
• Por exemplo, file:///path/to/device/file deve ser reescrito como
http://<host>:<port>/<prefix>/path/to/device/file antes de ser renderizado no aplicativo;
Obs.: Deve-se utilizar HTTP, porque é como se rodasse um servidor no local host.
13 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Para aplicativos Cordova, o plug-in Ionic Web View fornece uma função de utilidade
para converter URIs de arquivo:
window.Ionic.WebView.convertFileSrc()
• Há também um plugin Ionic Native correspondente:@ionic- native/ionic-webview;
PWAS
Obs.: É um padrão de desenvolvimento web que permite progressive web app, sendo uma
aplicação que progressivamente se instale no celular, em que a principal diferença
é que não passa pela loja da Apple ou Google. Sendo um site que não conseguirá
acessar aos recursos nativos de hardware, se fizer uma compilação da aplicação
para PWA, deve-se estar ciente que não acessa os recursos nativos.
• Um Progressive Web App (PWA) é um aplicativo da web que usa recursos modernos
da web para fornecer uma experiência semelhante a um aplicativo aos usuários;
• Esses aplicativos atendem a certos requisitos, são implantados em servidores,
acessíveis por meio de URLs e indexados por mecanismos de pesquisa; .
25m
• Isso pode funcionar em conjunto com o Capacitor para fornecer vários destinos de
implantação para todos os seus usuários;
• Pode-se implantar seu aplicativo como um PWA e como um aplicativo nativo e aproveitar
os dois canais;
• O Ionic permite que se envie um aplicativo não apenas para a loja de aplicativos, mas
também para a web móvel como um PWA;
Obs.: Pode haver um targget a mais para a aplicação, como o Twitter, que podia ser utilizado
como aplicativo nativo de celular ou PWA.
CONFIGURAÇÃO DE AMBIENTE
• Para começar a usar o Ionic Framework, o único requisito é um ambiente Node & npm;
14 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
TERMINAL
NODE E NPM
Obs.: Entra-se no site do Node e NPM, estando estes dois instalados, escreve-se “node –
version” e ““npm – version”.
15 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
INSTALANDO O CLI
CRIANDO A APP
O comando “ionic start myApp tabs” perguntará qual framework a instalar, preparando
o diretório, extraindo os arquivos, e integrando o Capacitor para rodar com Android ou IOS.
16 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Após isso, acesse a pasta do projeto “myApp” que poderá ser rodado tanto no browser
quanto no celular.
ANOTAÇÕES
17 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (FGV/IBGE/ANALISTA CENSITÁRIO/ANÁLISE DE SISTEMAS/DESENVOLVIMENTO
DE APLICAÇÕES/WEB MOBILE/2017) Ionic é um framework para desenvolvimento
de aplicativos para dispositivos móveis. O serviço fornecido pelo Ionic 2 que pode
ser injetado em classes para obter informações sobre o dispositivo móvel no qual o
aplicativo está rodando é:
a. Config;
b. Plataform;
c. Header;
d. ViewController;
e. Devices.
COMENTÁRIO
Para verificar alguma informação sobre a plataforma, usa-se o comando “platform” com
“.reader”. Sendo uma API fornecida pelo Ionic.
DETECÇÃO DE PLATAFORMA
• Na lógica de um aplicativo, sempre que for necessário fazer uma chamada de API nativa,
é recomendável sempre verificar o status do ambiente nativo primeiro. Por exemplo:
ANOTAÇÕES
18 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
IONIC II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
this.platform.ready().then(() => {
// ‘hybrid’ detecta Cordova e Capacitor if (this.platform.is(‘hybrid’)) {
// fazer chamadas a APIs nativas
} else {
// utilizar as APIs do browser
}
});
30m
GABARITO
1. b
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
�A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
19 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
GIT
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
GIT
O que é Git
• Git é um projeto open source, originalmente desenvolvido em 2005 por Linus Torvalds,
o criador do kernel do sistema operacional Linux;
• Possui arquitetura distribuída, e é um exemplo de um DVCS (Distributed Version Con-
trol System);
• Em vez de ter apenas um único local para o histórico completo da versão do software,
como é comum em sistemas de controle de versões populares como CVS ou Subver-
sion (também conhecido como SVN), no Git, a cópia de trabalho do código de cada
desenvolvedor também é um repositório que pode conter o histórico completo de todas
as alterações.
• Além de ser distribuído, o Git foi projetado com desempenho, segurança e flexibili-
dade em mente.
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
GIT
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Observação:
A principal diferença entre o Git e qualquer outro VCS (Subversion por exemplo) é a
forma como o Git trata sobre seus dados.
• Conceitualmente, a maioria dos outros sistemas armazena informações como uma lista
de alterações baseadas em arquivos. Esses outros sistemas (CVS, Subversion, Per-
force, Bazaar, e assim por diante) tratam as informações que armazenam como um
conjunto de arquivos e as alterações feitas em cada arquivo ao longo do tempo (isso é
comumente descrito como controle de versão baseado em delta).
ANOTAÇÕES
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
GIT
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Observação
Na linha do tempo foram feitas algumas alterações. Um arquivo, em sua forma original,
sofreu uma série de deltas com o passar do tempo.
Observação
No Git é como se cada vez que for dado um commit, cria-se uma foto o sistema de
arquivo daquele momento tentando ser mais eficiente, compactando-o.
15m
ANOTAÇÕES
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
GIT
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• A maioria das operações no Git precisa apenas de arquivos e recursos locais para operar
– geralmente nenhuma informação é necessária de outro computador na sua rede;
• Por exemplo, para navegar pelo histórico do projeto, o Git não precisa ir para o servidor
para obter o histórico e exibi-lo. Ele simplesmente o lê diretamente do banco de dados
local (maior velocidade nas operações);
• Isso também significa que há muito pouco que não se pode fazer se estiver off- line;
INTEGRIDADE
Observação
O checksum é uma soma, uma conta com base nos valores binários de cada um dos
caracteres dos arquivos envolvidos ali e é gerado um número que se houver qualquer altera-
ção ou bit, altera o checksum.
20m
Em geral, o Git é incremental.
• Quando se faz ações no Git, quase todas adicionam dados ao banco de dados do Git.
• É difícil fazer com que o sistema faça qualquer coisa que não possa ser desfeita ou
fazer com que ele apague os dados de qualquer maneira.
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
GIT
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Como acontece com qualquer VCS, você pode perder ou bagunçar as alterações que
ainda não foram submetidas (comitadas), mas depois de submeter (comitar) um ins-
tantâneo no Git, é muito difícil apagá-lo, especialmente se você enviar regularmente
seu banco de dados para outro repositório (push).
Os três estados
• O Git tem três estados principais nos quais seus arquivos podem residir: submetidos
(committed), modificados (modified) e preparados (staged).
• Isso nos leva às três seções principais de um projeto do Git: o diretório Git, a árvore de
trabalho e a área de preparação.
Os três estados
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
GIT
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Observação
• Se uma versão específica de um arquivo estiver no diretório Git, será considerado con-
firmado (commited);
• Se ele foi modificado e adicionado à área de preparação, ele é preparado (staged);
• E se foi alterado desde que foi retirado, mas não foi preparado (staged), é modificado
(modified);
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
GIT
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
GIT
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
30m
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
GIT
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (CESPE/EBSERH/ANALISTA DE TECNOLOGIA DA INFORMAÇÃO/2018) Acerca de
infraestrutura de TI, julgue o item subsequente. O comando Git clone, seguido do ca-
minho do repositório, pode ser usado para criar uma cópia desse repositório para o
diretório atualmente em uso em uma máquina Linux.
�( ) Certo
�( ) Errado
COMENTÁRIO
O comando Git clone é um comando para clonar o repositório remoto.
GABARITO
1. C
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 9
CONHECIMENTOS ESPECÍFICOS
Gitlab
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
GITLAB
GitLab é uma plataforma de DevOps para permitir que as empresas desenvolvam e for-
neçam software com eficiência, além de fortalecer a segurança.
A plataforma presta um serviço diretamente em cloud, mas também é open source,
os dois principais concorrentes no mercado é o GitLab e o GitHub, são similares, porém o
GitHub não é código fonte aberto, ou seja, não há a possibilidade de baixar e executar em
uma determinada empresa, já o GitLab é código fonte aberto e pode ser usado diretamente
na empresa. Ambos têm ligação com o próprio Git, essa ferramenta de linha de comando
possibilita o gerenciamento das versões do código.
Com o GitLab, é possível expandir e potencializar o uso do Git, transformando-o quase
em uma rede social colaborativa em uma empresa. Há várias opções, como visualizar os
arquivos de um projeto, pré-visualizar o conteúdo em Markdown, mandar códigos, adicionar
arquivos padrões, editar diretamente na web, controlar e criar branches, ver histórico, curtir
e subdividir o projeto, etc.
5m
RECURSOS
• Issues – propicia a observação dos defeitos existentes no projeto, é bug tracker. Não
tem na linha de comando naturalmente.
ANOTAÇÕES
www.grancursosonline.com.br 1
CONHECIMENTOS ESPECÍFICOS
Gitlab
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
– List – enumera e lista issues, pode-se buscá-las, ordená-las, observar quais estão
abertas e fechadas, além disso, pode-se adicionar flags a esses problemas, descre-
vendo quais problemas são e permitindo comentários, ademais, pode-se criar uma
“issue” e até mesmo fazer atribuições para um colega de trabalho.
– Board – visualização diferente de issues.
10m
• Deployments
– Release – controle de release, podendo criar a partir da “master” e armazenar paco-
tes binários em package register, que suporta Python, Java, etc.
DIRETO DO CONCURSO
1. (2019/COVEST–COPSET/UFPE/ANALISTA DE TECNOLOGIA DA INFORMAÇÃO/SIS-
TEMAS)No contexto de integração contínua (IC), assinale a alternativa incorreta.
a. Um dos princípios centrais da IC é integrar cedo e de forma frequente. Os desenvolve-
dores devem efetuar commits do código com frequência para obter os benefícios da IC.
b. O uso de IC em um projeto reduz riscos, reduz processos manuais repetitivos e per-
mite gerar a qualquer momento uma versão do software pronta para deploy.
ANOTAÇÕES
www.grancursosonline.com.br 2
CONHECIMENTOS ESPECÍFICOS
Gitlab
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
c. Jenkins, Travis e Gitlab são exemplos de ferramentas que dão suporte à IC em proje-
tos de software.
d. A IC não é apenas uma implementação técnica, ela também é a implementação cul-
tural e organizacional.
e. O uso de testes automatizados é fundamental, pois a automação em um servidor de
IC tira a responsabilidade dos desenvolvedores verificarem se há erros no código que
escrevem para o projeto e que enviam através de commits para o repositório.
COMENTÁRIO
Jenkins é um automatizador de tarefas, assim como o Travis e GitLab é a interface que
gerencia muitos recursos adicionais do Git.
“A Integração Contínua (CI) é o processo de automatizar a criação e o teste de código toda
vez que um membro da equipe entrega alterações no controle de versão. O CI incentiva
os desenvolvedores a compartilharem seus códigos e testes de unidade mesclando suas
alterações em um repositório de controle de versão compartilhado após cada pequena con-
clusão de tarefa. O código de confirmação aciona um sistema de compilação automatizado
para capturar o código mais recente do repositório compartilhado e para construir, testar e
validar a branch principal.”
20m
Testes automatizados são testes que podem ser executados sem a necessidade de inter-
venção humana de maneira repetitiva, a qualquer momento.
Normalmente tem-se que escrever um script para testar algumas afirmações ou validar o
comportamento do seu aplicativo.
O script é então executado por uma máquina que fornece os resultados como uma saída.
O teste automatizado é uma parte essencial do CI, mas não é suficiente por si só.
É uma extensão da integração contínua para garantir que se possa liberar novas altera-
ções para os clientes rapidamente e de maneira sustentável.
ANOTAÇÕES
www.grancursosonline.com.br 3
CONHECIMENTOS ESPECÍFICOS
Gitlab
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 4
CONHECIMENTOS ESPECÍFICOS
Gitlab
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
GABARITO
1. e
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 5
CONHECIMENTOS ESPECÍFICOS
Gitlab II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
GITLAB II
RELEMBRANDO
O Gitlab começa como uma interface online para se trabalhar com o Git e vai evoluindo
com a adição de ferramentas. De modo que atualmente é possível fazer a integração con-
tínua por CI/CD.
CI/CD
GitLab CI/CD é uma ferramenta para desenvolvimento de software que utiliza as meto-
dologias contínuas:
www.grancursosonline.com.br 1
CONHECIMENTOS ESPECÍFICOS
Gitlab II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Os testes feitos garantirão que as alterações sempre sejam aprovadas e que as diretrizes
estabelecidas serão cumpridas.
5m
O próprio GitLab utiliza integração contínua.
Entrega contínua é um passo a mais da integração contínua. Aqui, além das coisas que são
feitas automaticamente. É possível fazer implementações manuais. Após a parte feita pelo aplica-
tivo de forma automática, existe a necessidade de análise humana acerca da implantação ou não.
Portanto, o app faz o build, o teste, gera uma versão fechada, mas não implanta no
ambiente de desenvolvimento.
Já a implantação contínua consiste na implantação automática via software, sem inter-
venção humana. Porém, tudo isso depende do tipo do software, da categoria, e da maturi-
dade da equipe.
GITLAB CI/CD
Esta é a parte do GitLab que se usa para fazer essas integrações contínuas. Contudo, é
importante saber que existem outros aplicativos que são especialistas nessa parte de aplica-
ções contínuas.
www.grancursosonline.com.br 2
CONHECIMENTOS ESPECÍFICOS
Gitlab II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
É possível que o processo seja inteiramente automático ou que ele necessite de confirma-
ção humana em alguma etapa, conforme a programação escolhida. Contudo, vale saber que a
necessidade manual não deriva de incapacidade de automação, e sim de escolha de segurança.
De uma forma um pouco mais detalhada, tem-se a imagem abaixo, que deve ser
lida com atenção.
10m
PIPELINES CI/CD
www.grancursosonline.com.br 3
CONHECIMENTOS ESPECÍFICOS
Gitlab II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Após definir um job, ele será colocado em determinado stage, que é a sequencia de ope-
rações que o app vai fazer.
• Os jobs são executados por runners. Vários Jobs no mesmo stage são executados em
paralelo, se houver runners simultâneos suficientes:
Os runners serão executados pelas máquinas. Atualmente, o trabalho é feito com imagens
docker, delas são extraídas o “ativo” gerado e o aplicativo segue para o passo seguinte.
– Se todos os jobs em um stage forem bem-sucedidos, o pipeline passará para o pró-
ximo stage;
– Se algum job em um stage falhar, o próximo stage não é (geralmente) executado e
o pipeline termina antecipadamente.
TIPOS DE PIPELINES
www.grancursosonline.com.br 4
CONHECIMENTOS ESPECÍFICOS
Gitlab II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Merge request é um período mais próximo do ponto em que o código está pronto,
pois algumas ferramentas cobram por execução e isso encarece o processo.
– Os pipelines de merge results são pipelines de merge request que agem assim
que as alterações da ramificação de origem já tiverem sido mescladas na ramifica-
ção de destino. Em outras palavras, é quando termina o merge request.
– Os merges trains usam pipelines de merge result para enfileirar merges, um após o outro;
– Os pipelines pai-filho dividem pipelines complexos em um pipeline pai, que pode
acionar vários subpipelines filhos, todos executados no mesmo projeto e com o
mesmo SHA. Essa arquitetura de pipeline é comumente usada para mono-repôs;
mono-repôs: é quando em um repositório apenas contém o back end e o front end
– Os pipelines de vários projetos combinam pipelines para diferentes projetos juntos;
ATENÇÃO
Recomenda-se que a preocupação do estudante esteja nos casos mais básicos
20m
VISUALIZAÇÃO DO PIPELINE
www.grancursosonline.com.br 5
CONHECIMENTOS ESPECÍFICOS
Gitlab II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
PASSO A PASSO
Nesses Jobs, define-se qual é o stage que se deseja que o trabalho seja realizado. Paós,
define-se o script, ou seja, qual atividade deve ser realizada.
www.grancursosonline.com.br 6
CONHECIMENTOS ESPECÍFICOS
Gitlab II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
A imagem será usada na forma de container, mas isso não quer dizer que a aplicação
será containerizada.
25m
Nessa imagem, é possível ler as informações que o sistema oferece: status, número
do pipeline etc. Veja que ele informa que já fez o build, sinalizado pelo símbolo do “ok”, em
verde. Neste momento, estão sendo rodados os dois testes em paralelo. O deploy só será
habilitado quando as duas tarefas em execução forem bem-sucedidas.
Por fim, um exemplo de relatório.
ANOTAÇÕES
www.grancursosonline.com.br 7
CONHECIMENTOS ESPECÍFICOS
Gitlab II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
CI – Integração Contínua
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
CI – INTEGRAÇÃO CONTÍNUA
CI – CONTINUOUS INTEGRATION
• Testes automatizados são testes que podem ser executados sem a necessidade de
intervenção humana de maneira repetitiva, a qualquer momento;
• Normalmente tem-se que escrever um script para testar algumas afirmações ou validar
o comportamento do seu aplicativo;
• O script é então executado por uma máquina que fornece os resultados como uma saída;
• O teste automatizado é uma parte essencial do CI, mas não é suficiente por si só.
• É uma extensão da integração contínua para garantir que se possa liberar novas alte-
rações para os clientes rapidamente e de maneira sustentável;
• Isso significa que, além de automatizar os testes, também se automatiza o processo
de liberação e pode–se implantar o aplicativo a qualquer momento;
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
CI – Integração Contínua
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Hoje em dia, tem-se a ideia de entregar pequenos lotes e corrigindo-os na maneira que
os problemas começassem a surgir. A interação continua faz os testem e entrega continua-
mente no código - fonte e faz os testes de maneira automatizada.
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
CI – Integração Contínua
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ATENÇÃO
Em geral, essas são fases feitas sempre nos softwares, a automatização das tarefas e as
ferramentais é chamada de integração contínua, implantação contínua.
• A equipe precisará escrever testes automatizados para cada novo recurso, melhoria
ou correção de bug;
• É necessário um servidor de integração contínua que possa monitorar o repositório
principal e executar os testes automaticamente para cada novo comitê enviado;
• Os desenvolvedores precisam mesclar suas alterações com a maior frequência possí-
vel, pelo menos uma vez por dia;
• Menos bugs são enviados para produção à medida que os erros são capturadas
• antecipadamente pelos testes automatizados;
ANOTAÇÕES
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
CI – Integração Contínua
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• É necessário uma base sólida em integração contínua e sua suíte de testes precisa
• cobrir o suficiente da sua base de código;
• Implantações precisam ser automatizadas. O acionador ainda é manual, mas uma
• vez iniciada a implantação, não deve haver necessidade de intervenção humana;
• A equipe provavelmente precisará incluir sinalizadores de funcionalidades para
• que as funcionalidades incompletas não afetem os clientes na produção;
15m
ATENÇÃO
Tem-se os índices do percentual de cobertura de qualidade de código.
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
CI – Integração Contínua
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
CI – Integração Contínua
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
1. O primeiro passo garante que o código seja compilado. (Ou, no caso de linguagens
interpretadas, simplesmente une todas as partes.)
2. A segunda etapa garante que o código funcione conforme projetado. A maneira mais
certa de fazer isso é com uma série de testes automatizados que validam todos os níveis
do produto;
TESTES UNITÁRIOS
Testes de API
Testes Funcionais
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
CI – Integração Contínua
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Esse tipo de teste vai imitar o usuário, vai fazer um fluxo de trabalho. No entanto, há dois
problemas principais: a demora para processar e testar o fluxo e a indisponibilidade, sistema
fora do ar, que pode gerar um falso negativo e a possiblidade de não fazer a integração.
DIRETO DO CONCURSO
1. (CESPE/2015/TCU/AUDITOR FEDERAL DE CONTROLE EXTERNO - TECNOLO-
GIA DA INFORMAÇÃO) Acerca de integração contínua e entrega contínua, julgue o
próximo item.
Para que a prática de integração contínua seja eficiente, é necessário parametrizar e
automatizar várias atividades relativas à gerência da configuração, não somente do có-
digo- fonte produzido, mas também de bibliotecas e componentes externos.
COMENTÁRIO
Deve ter um fluxo de trabalho mais automatizado possível para ter um a integração con-
tinua e que ela funcione de uma maneira bem sucedida.
GABARITO
1. C
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
PROTOCOLO HTTP
ATENÇÃO
Há questões de prova baseadas em cada um dos tópicos apresentados. O protocolo HTTP
é um protocolo da camada OSI.
5m
HTTP, FTP e SMTP são da camada de aplicação. O HTTPS é uma versão segura do HTTP.
Todos os conteúdos que se vê na internet são transmitidos a partir do protocolo HTTP.
O protocolo HTTP não mantém uma conexão ativa.
10m
HTTP é um assunto recorrente em provas.
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ENTENDA O CASO
www.grancursosonline.com.br 2
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Entendendo o caso
www.grancursosonline.com.br 3
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• A maior parte do tempo, o agente-usuário é um navegador da Web, mas pode ser qual-
quer coisa, a exemplo de um robô que varre a Web para preencher e manter um índice
de mecanismo de pesquisa e coletar informações;
• Cada requisição individual é enviada para um servidor, que lidará com isso e fornecerá
um resultado, chamado de resposta;
• Entre a solicitação e a resposta, existem várias entidades, designadas coletivamente
como proxies, que executam operações diferentes e atuam como gateways (interme-
diários) ou caches, por exemplo;
ATENÇÃO
O proxy é utilizado comumente para bloquear sites específicos (em empresas e escolas, é
bastante comum sua utilização para esse fim).
20m
Cliente: o agente-usuário
ATENÇÃO
O navegador envia uma requisição HTTP para buscar um documento da web. É realiza-
da uma análise e pode ter uma série de outras referências, e o navegador realiza outras
requisições para receber esses elementos. É por isso que, quando a internet está lenta, a
página solicitada é apresentada em partes, pois o primeiro documento recebido é o HTML,
que é o texto da página.
25m
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Do outro lado do canal de comunicação está o servidor que serve o documento requi-
sitado pelo usuário;
• Um servidor se apresenta virtualmente apenas como uma máquina: isso porque o ser-
vidor pode ser uma coleção de servidores dividindo a carga (através de uma técnica
chamada balanceamento de carga) ou também como um programa complexo que
acessa outros servidores (como um cache, um servidor de banco de dados, servidores
de e-commerce (lojas virtuais) etc.), gerando todo ou parte do documento solicitado;
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Proxies
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula prepa-
rada e ministrada pelo professor Tiago Lage Payne de Pádua.
ANOTAÇÕES
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo minis-
trado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclusiva deste
material.
www.grancursosonline.com.br 6
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
PROTOCOLO HTTP II
• HTTP é simples;
• HTTP é extensível;
• HTTP não tem estado, mas tem sessões;
• HTTP e conexões;
O protocolo é baseado em textos e, por esse motivo, é simples. Ele foi aumentado com
o HTTP2, para melhorar questões de performance e segurança. Isso aconteceu após come-
çarem a ser realizadas compras pela internet. Com a movimentação de cartões, houve a
necessidade da realização da encriptação.
Ele é bastante extensível: há uma série de cabeçalhos de envio e de respostas. Não é
o conteúdo, mas são alguns metadados adicionais que identificam a requisição. Podem ser,
inclusive, criados novos cabeçalhos, estendendo para novos casos de usos.
Suponhamos que alguém entre em um site, por exemplo, e insira os itens em um carrinho
de compras. Como o servidor saberá que se trata da mesma pessoa?
5m
Na primeira requisição, serão digitados o usuário e senha e será enviado um cookie, por
meio de um cabeçalho, que é como um “protocolo de atendimento”. Na próxima requisição,
o servidor passará esse protocolo. Ele mantém sessões através dos cookies.
O HTTP utiliza o protocolo TCP. Também há o UDP, mas ele não é confiável. Protocolos
de streaming de vídeo, por exemplo, utilizam o UDP. Porém, o HTTP precisa da garantia de
entrega das informações, logo, de um protocolo seguro e, por isso, utiliza o TCP.
O HTTP 2.0 permite que haja multiplexação de mensagens, permitindo que seja feita
uma requisição e que o servidor envie vários arquivos de uma única vez. Ele é bastante
recente e seu uso não é tão popular.
• Cache;
• Relaxamento das restrições na origem;
• Autenticação;
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Proxy e tunelamento;
• Sessões;
O cache permite que se possa ter o conteúdo sem a necessidade de atualização em cada
requisição.
Quando se acessa um determinado site, ele pode fazer outras requisições. O pessoal
utiliza de forma maliciosa, direcionando para outros sites para roubar dados etc. O HTTP
definiu um tipo de header que define se é possível ou não realizar requisições para outros
sites. Assim, o site precisa autorizar esses acessos. Caso não autorize, não será exibido o
conteúdo dessas outras páginas.
A autenticação pelo protocolo HTTP não é mais recomendada. Ela funcionava da seguinte
maneira: ao acessar uma página, era solicitado e enviado o usuário e senha. Na requisição
para o servidor, era enviado o usuário e senha. A cada nova requisição, era enviado nova-
mente o usuário e senha para o servidor, gerando muito trânsito de usuário e senha, o que
foi considerado não seguro.
15m
Quando se acessa um site, com usuário e senha, o site devolve um token e só o transita.
No tunelamento, é possível encriptar informações ao passar por esse “túnel”. O proxy é
importante para bloquear determinados conteúdos de acordo com a necessidade.
Fluxo HTTP
1) Abre uma conexão TCP: A conexão TCP será usada para enviar uma requisição, ou
várias, e receber uma resposta. O cliente pode abrir uma nova conexão, reusar uma conexão
existente ou abrir várias conexões aos servidores;
2) Envia uma mensagem HTTP: mensagens HTTP (antes do HTTP/2.0) são legíveis às
pessoas. Com o HTTP/2.0, essas mensagens simples são encapsuladas dentro de quadros
(frames), tornando-as impossíveis de se ler diretamente, mas o princípio se mantém o mesmo.
www.grancursosonline.com.br 2
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
3) Lê a resposta do servidor:
A resposta retorna o código de operação. Nesse caso, OK, a data do conteúdo, o servi-
dor, a última modificação, a tag, o tipo de conteúdo, o tamanho do conteúdo e os ranges –
nesse caso, bytes e a “caixa”, que se refere ao conteúdo.
20m
4) Fecha ou reutiliza a conexão para requisições futuras;
No geral, ele fecha a conexão.
Mensagens HTTP
• Requisições:
ANOTAÇÕES
www.grancursosonline.com.br 3
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Respostas:
• A API mais utilizada construída sobre o HTTP é a XMLHttpRequest, que pode ser
usada para trocar dados entre um user agent (en-US) e um servidor;
Inicialmente, o único agente que era permitido de realizar requisições do lado do cliente
era o navegador. Por volta dos anos 1990, houve a necessidade de uma web um pouco mais
dinâmica, pois o modelo inicial obrigava o trânsito de uma página a outra. No momento, é
realizada via javascript.
25m
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
www.grancursosonline.com.br 4
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (FGV/BANESTES/ANALISTA EM TECNOLOGIA DA INFORMAÇÃO/SUPORTE E IN-
FRAESTRUTURA/2021) O protocolo HTTP define um conjunto de métodos de requisi-
ção responsáveis por indicar a ação a ser executada para um dado recurso. Um método
HTTP é denominado idempotente se:
a. as requisições em algum momento causam danos ou efeitos colaterais irreversíveis
no servidor;
b. as requisições com cabeçalhos e parâmetros diferentes causam uma mesma mudança
no estado do recurso;
c. toda requisição estabelecer um túnel para o servidor identificado pelo recurso
de destino;
d. o código de status for o mesmo entre requisições que aplicam modificações parciais
em um recurso;
e. uma requisição idêntica puder ser feita uma ou mais vezes em sequência com o
mesmo efeito enquanto deixa o servidor no mesmo estado.
COMENTÁRIO
Idempotente
GET /pageX HTTP/1.1 é idempotente. Chamado diversas vezes em sequência, ele vai
retornar o mesmo resultado:
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
POST /add_row HTTP/1.1 não é idempotente. Se ele for chamado diversas vezes, ele
adicionará novas entradas:
5m
DELETE /idX/delete HTTP/1.1 é idempotente, mesmo que o código de status mude entre
requisições:
ATENÇÃO
Idempotência é a possibilidade de repetir o método. Os métodos idempotentes precisam
ser seguros. Para os métodos que não são idempotentes, o navegador pergunta se se
tem certeza que deseja repetir a solicitação do método, pois pode ser perigoso (aviso de
reenvio de formulário).
Seguro
www.grancursosonline.com.br 2
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Uma chamada a um método não seguro, que pode alterar o estado do servidor:
ATENÇÃO
Se sua operação for segura, utilize o método GET. Se ela for não segura, utilize os métodos
POST, DELETE etc.
COMENTÁRIO
Os métodos SEND, READ, WRITE, SET, INPUT e OUTPUT não fazem parte da lista de
métodos válidos.
ANOTAÇÕES
www.grancursosonline.com.br 3
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
1) HTTP
2) HTTPS
3) SSH
4) DNS
( ) 443
( ) 80
( ) 53
( ) 22
ANOTAÇÕES
www.grancursosonline.com.br 4
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
1) 403
2) 301
3) 404
4) 500
• Os códigos de status das respostas HTTP indicam se uma requisição HTTP foi corre-
tamente concluída. As respostas são agrupadas em cinco classes:
– Respostas de informação (100-199);
– Respostas de sucesso (200-299);
– Redirecionamentos (300-399);
– Erros do cliente (400-499);
– Erros do servidor (500-599);
ANOTAÇÕES
www.grancursosonline.com.br 5
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ANOTAÇÕES
www.grancursosonline.com.br 6
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
É necessário saber, minimamente, as cinco classes em que são agrupados os códigos
de status.
20m
a. I e II, apenas.
b. I, II, III e IV.
c. I, II e III, apenas
d. II, III e IV, apenas.
www.grancursosonline.com.br 7
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
HTTP
O PULO DO GATO
Os tópicos das questões da presente aula são bastante comuns em provas.
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO DE SISTEMAS
Protocolo HTTP III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
GABARITO
1. e
2. a
3. a
4. a
5. c
6. c
7. c
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO WEB
Web Socket – Introdução
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: o HTTP difere-se do WebSocket porque não tem comunicação persistente. Após o
cliente requisitar uma resposta do servidor, o servidor processa o dado e envia ao
cliente, encerrando a comunicação; isso porque a comunicação não é persistente.
Obs.: inicia-se uma comunicação HTTP com o servidor, o que executa um Java script que
se comunica com o mesmo servidor ou com outro que seja autorizado. A partir daí, o
servidor reconhece que o cliente quer se comunicar por meio do serviço WebSocket.
Assim, o modelo de segurança é baseado em origem.
ANOTAÇÕES
www.grancursosonline.com.br 1
DESENVOLVIMENTO WEB
Web Socket – Introdução
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
EVENTOS
Depois que o socket é criado, pode-se ouvir os eventos nele. Há um total de 4 eventos:
www.grancursosonline.com.br 2
DESENVOLVIMENTO WEB
Web Socket – Introdução
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 3
DESENVOLVIMENTO WEB
Web Socket – Introdução
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ABRINDO UM WEBSOCKET
Quando new WebSocket é criado, inicia-se um hand-shake HTTP (HTTPS para wss://).
Em termos abstratos, o navegador pergunta ao servidor: “Você suporta WebSocket?” E
se o servidor disser “sim”, a conversa continua no protocolo WebSocket, que não é HTTP.
www.grancursosonline.com.br 4
DESENVOLVIMENTO WEB
Web Socket – Introdução
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Obs.: isto é, se a origem do site especificado em origin for fraudulenta, não haverá permis-
são de conexão por meio de WebSocket.
DADOS WEBSOCKET
A comunicação WebSocket consiste em frames que podem ser enviados de ambos os lados:
• Frames de texto – contêm dados de texto que as partes enviam entre si.
• Frames de dados binários – contêm dados binários que as partes enviam entre si.
• Frames de ping/pong – são usados para verificar a conexão, enviados pelo servidor, o
navegador responde a eles automaticamente.
• Frame de conexão fechada – e alguns outros frames de serviço.
www.grancursosonline.com.br 5
DESENVOLVIMENTO WEB
Web Socket – Introdução
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
socket.bufferType = “arraybuffer”;
socket.onmessage = (event) => {
// event.data é uma string ou arraybuffer (se binário)
};
ENCERRAMENTO DA CONEXÃO
Normalmente, quando uma parte deseja fechar a conexão (o navegador e o servidor têm
direitos iguais), eles enviam um frame de fechamento de conexão com um código numérico
e um motivo como texto.
O método é:
socket.close([código], [razão])
25m
Em seguida, a outra parte no gerenciador do evento close pode obter o código e o motivo,
por exemplo:
// um lado:
socket.close(1000, “Tarefa concluída”);
// Outro lado:
socket.onclose = event => {
// event.code === 1000
// event.reason === “Tarefa concluída”
// event.wasClean === true (fechamento limpo)
};
www.grancursosonline.com.br 6
DESENVOLVIMENTO WEB
Web Socket – Introdução
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ESTADO DA CONEXÃO
DIRETO DO CONCURSO
1. (UFC/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO/DESENVOLVIMENTO DE SIS-
TEMAS/2019) Sobre WebSockets, assinale a alternativa correta:
a. WebSockets utiliza AJAX para possibilitar a comunicação RESTful.
b. WebSockets e Sockets de rede são sinônimos, representando o mesmo protocolo e
especificação.
c. De acordo com a RFC 6455 que descreve o protocolo WebSocket, não é possível
utilizar WebSockets em ambientes que possuam um servidor proxy.
d. O handshake WebSocket usa o cabeçalho HTTP Upgrade para mudar do protocolo
HTTP para o protocolo WebSocket, com uma requisição de Upgrade.
e. Por padrão, o protocolo WebSocket usa a porta 8080 para conexões WebSocket
comuns e a porta 443 para conexões WebSocket encapsuladas por TLS (Transport
Layer Security).
ANOTAÇÕES
www.grancursosonline.com.br 7
DESENVOLVIMENTO WEB
Web Socket – Introdução
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
a) WebSocket não se relaciona com XML.
b) WebSocket e Socket não são sinônimos: Socket é um elemento em nível mais baixo de
rede, ao passo que o WebSocket se enquadra na camada de aplicativo.
c) A utilização de WebSocket é permitida em servidor proxy.
d) O hand-shake usa o cabeçalho Upgrade para alterar o protocolo HTTP para o protocolo
WebSocket.
e) Não há que se falar em padrão 8080 ou 443.
GABARITO
1. d
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 8
CONHECIMENTOS ESPECIFICOS
AMQP
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
AMQP
A maioria dos sistemas trabalha com comunicação síncrona. Para os casos mais bási-
cos, esse modelo funciona perfeitamente, porém, com os sistemas ficando mais complexos,
encontram-se alguns problemas com essa comunicação, visto o acoplamento forte entre sis-
temas. Devido a isso, foi criado o sistema assíncrono, nesse caso, por exemplo, um sistema
de vendas ao invés de se comunicar sincronamente com o sistema de mercadorias e ter de
aguardar o retorno, publica em uma espécie de fila, informando a este que as mercadorias
foram vendidas, desse modo, caso o sistema de mercadorias fique indisponível por alguma
falha, não afetará o uso.
www.grancursosonline.com.br 1
CONHECIMENTOS ESPECIFICOS
AMQP
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• As exchanges são entidades AMQP para as quais as mensagens são enviadas; é uma
espécie de direcionamento.
• As exchanges pegam uma mensagem e a roteiam para zero ou mais filas;
• O algoritmo de roteamento usado depende do tipo de exchange e das regras chama-
das bindings;
Tipos de Exchanges
• Direct Exchange;
• Fanout Exchange;
• Topic Exchange;
• Headers Exchange.
Default Exchange
• A exchange padrão é uma exchange direta sem nome (string vazia) pré-declarada
pelo broker;
• Ele tem uma propriedade especial que o torna muito útil para aplicações simples: cada
fila que é criada é automaticamente vinculada a ela com uma chave de roteamento que
é igual ao nome da fila;
• Por exemplo, quando você declara uma fila com o nome de “search-indexingonline”, o
broker AMQP irá vinculá-la à exchange padrão usando “searchindexing-online” como
chave de roteamento.
ANOTAÇÕES
www.grancursosonline.com.br 2
CONHECIMENTOS ESPECIFICOS
AMQP
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Direct Exchange
• Uma exchange direta entrega mensagens para filas com base na chave de roteamento
de mensagens;
• Uma exchange direta é ideal para o roteamento unicast de mensagens (embora
também possam ser usadas para roteamento multicast);
– Uma fila se liga à exchange com uma chave de roteamento K;
– Quando uma nova mensagem com chave de roteamento R chega à central direta, a
central a encaminha para a fila se K = R;
15m
Em geral, esses processos em fila, não são processos que funcionam em tempo real,
a informação vai ser processada e depois será gravada uma resposta em algum lugar,
gerando as filas.
www.grancursosonline.com.br 3
CONHECIMENTOS ESPECIFICOS
AMQP
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Fanout Exchange
• Uma exchange de fanout roteia mensagens para todas as filas que estão vinculadas a
ela e a chave de roteamento é ignorada;
• Se N filas estiverem vinculadas a uma exchange de fanout, quando uma nova mensa-
gem for publicada nessa exchange, uma cópia da mensagem será entregue a todas
as N filas;
• As exchanges de fanout são ideais para o roteamento de mensagens em broadcast;
No caso acima, ao se publicar uma nova mensagem na Exchange, todas as demais filas
receberão uma cópia da mensagem.
20m
Topic Exchange
• As exchanges de tópicos roteiam mensagens para uma ou várias filas com base na
correspondência entre uma chave de roteamento de mensagens e o padrão que foi
usado para vincular uma fila a uma exchange.
• O tipo de exchange de tópicos é frequentemente usado para implementar várias varia-
ções de padrão de publicação/assinatura;
• As exchanges de tópicos são comumente usadas para o roteamento multicast de
mensagens;
ANOTAÇÕES
www.grancursosonline.com.br 4
CONHECIMENTOS ESPECIFICOS
AMQP
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
No Topic, a chave de roteamento terá uma composição de varias partes, como se fosse
um DNS, possui várias filas diferentes.
Observe o exemplo acima, no primeiro caso, tem-se o consumidor A, que deseja consu-
mir tudo que tenha a informação *.error, desse modo, quando publicada a mensagem Users.
error, ele receberá a mensagem apenas no que se refere ao primeiro caso, visto que no
segundo caso a informação é Users.info.
No exemplo do consumidor B, tanto no primeiro caso quanto no segundo, este deseja
consumir tudo que tenha Users.* como a mensagem publicada foi Users.error, ele também
receberá a mensagem.
O consumidor C está interessado em *.*, logo, receberá a mensagem tanto no primeiro
caso quanto no segundo.
Headers Exchange
Uma mensagem possui uma série de atributos(headers), esses atributos podem ser utili-
zados para fazer o roteamento.
www.grancursosonline.com.br 5
CONHECIMENTOS ESPECIFICOS
AMQP
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Filas (Queues)
Bindings
• Bindings são regras que as exchanges usam (entre outras coisas) para rotear mensa-
gens para filas;
• Para instruir uma exchange E a rotear mensagens para uma fila Q, Q deve estar vin-
culado a E;
• As ligações podem ter um atributo de chave de roteamento opcional usado por alguns
tipos de Exchange;
• A finalidade da chave de roteamento é selecionar determinadas mensagens publica-
das em uma exchange para serem roteadas para a fila vinculada.
Consumidores (Consumers)
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
www.grancursosonline.com.br 6
CONHECIMENTOS ESPECÍFICOS
Apache Kafka
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
APACHE KAFKA
Apache Kafka é middleware, um software que fica entre outros softwares e serve como
um barramento corporativo, sendo uma maneira de comunicar uma aplicação com outra.
Dessa forma, ele é um barramento de eventos para possibilitar que haja comunicação assín-
crona entre as aplicações.
5m
Ainda há diversos cenários em que é necessária a comunicação síncrona entre sistemas,
porém o Apache Kafka oferece a possibilidade de comunicação assíncrona para quando for
vantajoso.
Streaming de Eventos
Usos
www.grancursosonline.com.br 1
CONHECIMENTOS ESPECÍFICOS
Apache Kafka
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
ATENÇÃO
Pode haver cenários em que um fluxo de eventos muito intenso provoque uma variação na
velocidade de consumo, assim, para não gerar um acoplamento direto entre os sistemas,
fazendo que a lentidão em um cause a lentidão em outro, trabalha-se com uma fila que
possibilita o consumo de mensagens na medida que for possível.
www.grancursosonline.com.br 2
CONHECIMENTOS ESPECÍFICOS
Apache Kafka
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Funcionamento
ATENÇÃO
Aplicações mais modernas, como o Apache Kafka, já devem ser feitas pensando em traba-
lhar em nuvem. Muitas aplicações antigas não são pensadas como escaláveis.
Os servidores formam uma camada chamada armazenamento (brokers), outros servido-
res executam outras ferramentas do Kafka, como o Kafka Connect, para importar e expor-
tar continuamente fluxo de dados e eventos que integram o Kafka com outros sistemas
existentes.
Microsserviços são parte de uma filosofia de desenvolvimento de aplicações bem recente.
ANOTAÇÕES
www.grancursosonline.com.br 3
CONHECIMENTOS ESPECÍFICOS
Apache Kafka
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Diagrama
Para que as aplicações se comuniquem, o Apache Kafka funciona como uma espi-
nha dorsal:
CONCEITOS E TERMINOLOGIAS
www.grancursosonline.com.br 4
CONHECIMENTOS ESPECÍFICOS
Apache Kafka
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
APIs
• A API Admin para gerenciar e inspecionar tópicos, agentes e outros objetos Kafka;
• A API do produtor para publicar (gravar) um fluxo de eventos para um ou mais tópi-
cos do Kafka;
• A API Consumer para assinar (ler) um ou mais tópicos e processar o fluxo de eventos
produzidos para eles;
• A API Kafka Streams para implementar aplicativos de processamento de fluxo e
microsserviços;
• A API Kafka Connect para criar e executar conectores de importação/exportação de
dados reutilizáveis que consomem (leem) ou produzem (gravam) fluxos de eventos de
e para sistemas e aplicativos externos para poderem se integrar ao Kafka;
ANOTAÇÕES
www.grancursosonline.com.br 5
CONHECIMENTOS ESPECÍFICOS
Apache Kafka
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Conceitos
Partição: os tópicos podem ter muitas partições, portanto, podem manipular uma quan-
tidade arbitrária de dados;
Offset da partição: cada mensagem particionada tem um id de sequência exclusivo cha-
mado offset;
Réplicas de partição: as réplicas nada mais são do que backups de uma partição. As répli-
cas nunca são dados de leitura ou gravação. Eles são usados para evitar a perda de dados;
Brokers: os Brokers são sistemas simples responsáveis por manter os dados publica-
dos. Cada broker pode ter zero ou mais partições por tópico;
www.grancursosonline.com.br 6
CONHECIMENTOS ESPECÍFICOS
Apache Kafka
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Cluster Kafka: Kafka ter mais de um Broker é chamado de cluster Kafka Um cluster
Kafka pode ser expandido sem tempo de inatividade. Esses clusters são usados para geren-
ciar a persistência e a replicação de dados de mensagens;
Produtores: os produtores são os editores de mensagens para um ou mais tópicos
Kafka. Produtores enviam dados para Brokers Kafka. Toda vez que um produtor publica uma
mensagem para um broker, o broker simplesmente anexa a mensagem ao último arquivo de
segmento. Na verdade, a mensagem será anexada a uma partição. O produtor também pode
enviar mensagens para uma partição de sua escolha;
Consumidores: os consumidores leem dados de Brokers. Os consumidores se inscrevem
em um ou mais tópicos e consomem mensagens publicadas extraindo dados dos Brokers.
Leader: Leader é o nó responsável por todas as leituras e gravações para a partição
especificada. Cada partição tem um servidor atuando como líder;
Follower: o nó que segue as instruções do líder é chamado de follower. Se o líder falhar,
um dos seguidores se tornará automaticamente o novo líder. Um seguidor atua como consu-
midor normal, extrai mensagens e atualiza seu próprio armazenamento de dados;
DIRETO DO CONCURSO
COMENTÁRIO
API consumer – para ler.
API de produtor – para gravar.
ANOTAÇÕES
www.grancursosonline.com.br 7
CONHECIMENTOS ESPECÍFICOS
Apache Kafka
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
De forma assíncrona, ou seja, a mensagem acumula e depois chega.
GABARITO
1. E
2. C
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO WEB
Docker
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DOCKER
O Docker é um assunto muito atual e que vem começando a ser cobrado em provas
de concursos, especialmente de forma conceitual. O foco do nosso estudo também terá
um caráter majoritariamente conceitual, pelos seguintes motivos: (i) como o Docker é muito
recente, podemos dizer, inclusive, que é uma novidade tecnológica e, mesmo que tenha
cerca de 10 anos, esse tema caiu poucas vezes em provas, assim, a base de questões ainda
é pequena; e (ii) é um assunto que está começando a ser cobrado de forma conceitual, vol-
tada para suas características e utilização.
O Docker está muito associado à parte de microsserviços, mas não está diretamente aco-
plado, podendo haver microsserviços com Docker ou sem. Esses dois elementos andam de
mãos dadas, pois, no dia a dia, eles são utilizados em conjunto.
Referências Bibliográficas
• https://www.opencontainers.org/. Ótima descrição acerca de container, Docker e OCI.
• https://docs.microsoft.com/ptbr/dotnet/standard/microservicesarchitecture/container-
-docker-introduction/docker-defined
Vamos trabalhar com base nas referências acima. Também é importante ressaltar que
Docker não é um assunto tão acadêmico, de forma que não há, por esse motivo, muita litera-
tura acadêmica acerca do tema, como em outros assuntos na área de TI. Muitas vezes, é pre-
ciso buscar informações em compêndios de grandes empresas, disponibilizados na internet.
De início, para entender o que é Docker, precisamos entender o que é container.
ANOTAÇÕES
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Os aplicativos em containers são executados em um host de containers que, por sua vez,
é executado no sistema operacional (Linux ou Windows).
Os containers, portanto, ocupam um espaço significativamente menor do que as imagens
de máquinas virtuais (VM). Cada container pode executar um aplicativo da web inteiro ou
um serviço.
Quando temos uma máquina virtual rodando, como, por exemplo, um Virtual Box, esta-
remos simulando um sistema operacional inteiro naquela máquina; já o container vai com-
partilhar o sistema operacional daquela mesma máquina, então, não levanta outro sistema
operacional distinto, o que economiza muitos recursos em termos de tamanho das imagens
e gasto de memória. Além disso, o container consegue separar um processo do outro para
evitar que aconteça algum tipo de quebra de segurança ou algo do tipo.
Exemplo: abaixo, temos o sistema operacional hospedeiro (host) com app 1, app 2, svc
1 e svc 2, cada um dentro de um container, separado e isolado, como se fossem máquinas
virtuais distintas, mas muito mais leve. Ademais, podemos ter o mesmo sistema operacional
rodando dentro de uma VM ou de um servidor.
Hospedeiro
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
todos os nossos contêineres escalados em uma mesma máquina física, e ela tiver um pro-
blema, tudo morre de uma vez, sendo recomendável escalar em várias máquinas, virtuais ou
físicas, diferentes.
Em suma, os contêineres oferecem os benefícios de isolamento, portabilidade, agilidade,
escalabilidade e controle em todo o fluxo de trabalho do ciclo de vida do aplicativo.
O benefício mais importante é o isolamento do ambiente fornecido entre o Dev e o Ops.
Isto é, como o container é muito leve, podemos usar como se tivesse o mesmo sistema
operacional, que vai ser executado no aplicativo em produção. Conseguimos, então, trazê-lo
para dentro da nossa máquina e executá-lo localmente. Desse modo, teremos uma previsi-
bilidade de problemas muito menor e um isolamento, pois, quando rodamos o aplicativo em
produção na nossa máquina, ele está de um jeito, quando ele roda em produção, rodamos
no mesmo container da nossa máquina.
Isso começou com algumas empresas, sendo uma das grandes empresas a Docker e,
rapidamente, as pessoas quiseram padronizar para que não gerasse uma bagunça no mer-
cado e cada um fizesse de um jeito. Nesse contexto, foi criado um órgão chamado Open
Container Initiative (OCI). .
10m
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Nesse ponto, o OCI Runtime Bundle seria executado por um OCI Runtime;
Ou seja, temos uma coleção de imagens e, quando executamos o runtime e ele quer exe-
cutar uma sql, mas não há nada de sql no computador, ele busca uma imagem sql no Docker
Hub, executa-a na nossa máquina e compartilha o sistema operacional, com base no sistema
operacional que veio no sistema de arquivos da imagem.
Esse fluxo de trabalho deve suportar o uso que os usuários esperam dos mecanismos
de contêineres como Docker e rkt (Rocket): principalmente, a capacidade de executar uma
imagem sem argumentos adicionais:
Rocket é concorrente do Docker, mas os dois seguem o mesmo padrão, conseguindo
executar as mesmas imagens.
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Para que isso funcione, são necessários alguns requisitos do sistema operacional:
Por um lado, temos o Docker, que executa a imagem no padrão determinado, mas
o sistema operacional do Linux tem um recurso específico chamado LXC, que permite o
isolamento.
O Docker baixa a imagem e descompacta o filesystem em algum lugar do sistema. Então,
faz solicitação ao LXC, que compartilha o kernel e consegue ler aquele filesystem, dando
uma espécie de boot ou inicialização daquele sistema como se a pessoa estivesse naquele
outro filesystem que foi baixado da imagem. Quem coordena tudo isso é o Docker.
Docker
• O Docker é um projeto de código aberto para automatizar a implantação de aplicativos,
como contêineres portáteis e autossuficientes que podem ser executados na nuvem
ou localmente;
• O Docker também é uma empresa que promove e desenvolve essa tecnologia, traba-
lhando em colaboração com os fornecedores de nuvem, Linux e Windows, incluindo a
Microsoft;
O Docker é tanto a ferramenta como a empresa.
ANOTAÇÕES
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Máquina Virtual
Docker
8 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
9 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Como um efeito colateral da execução no mesmo kernel, há menos isolamento que as VMs.
Uma solução de máquina virtual é muito mais segura nesse aspecto, pois, como ela não
compartilha o sistema operacional, ela isola muito mais do que no caso do Linux Contai-
ner. Contudo, já existem diversas soluções e mecanismos de segurança para evitar esses
problemas.
O principal objetivo de uma imagem é que ela torne o ambiente (dependências) o mesmo
em diferentes implantações. Ou seja, pode-se repetir várias e várias vezes a implantação do
mesmo contêiner, pois vai ser exatamente a mesma coisa. Inclusive, podemos implementar
um container no Windows e outro no Linux, que vai funcionar da mesma forma.
Isso significa que se pode depurá-lo em uma máquina e implantá-lo em outra máquina
com a garantia de ser o mesmo ambiente.
Uma imagem de contêiner é uma maneira de empacotar um aplicativo ou serviço e
implantá-lo de maneira confiável e reproduzível. Podemos dizer que o Docker não é apenas
uma tecnologia, mas também uma filosofia e um processo.
25m
Então, se tivermos um sistema crítico, que não pode sair do ar porque tem muitos pro-
blemas, quando utilizamos o Docker, temos muito mais garantias de que vamos conseguir
reproduzir aquela imagem e executá-la de forma muito mais simples em máquinas diferentes.
Além dos containers, o Docker também tem imagens e registros.
10 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Considere que nós criamos o site da Gran Cursos. Assim, vamos gerar uma imagem
Docker que represente tudo – o site, as bibliotecas, o sistema operacional –, empacotamos
e enviamos para um local chamado registro. Esse registro mantém um catálogo de todas as
nossas imagens.
Temos o Docker Hub, o Azure, além de outros utilizados para não tornar o nosso sof-
tware público. Podemos também ter um registo interno da empresa, no qual as imagens
serão salvas.
Taxonomia
A taxonomia gera a seguinte estrutura:
DIRETO DO CONCURSO
:
1. (2017/FCC/DPE-RS/ANALISTA/DESENVOLVIMENTO DE SISTEMAS) Considere, por
hipótese, que a equipe de analistas da Defensoria Pública tenha optado pelo uso do
Docker. Esta decisão foi motivada pelo fato de o Docker
a. estar ganhando espaço como um gerenciador de máquinas virtuais no ambiente
GNU/Linux e não ter bibliotecas próprias, mantendo as bibliotecas nativas utilizadas
para gerenciar o LXC.
b. não utilizar Namespaces do Linux, o que permite prover espaços de trabalho isolados
para os contêineres. Desta forma, quando um contêiner é criado, automaticamente é
criada uma camada de isolamento para grupos de processos.
c. utilizar hypervisors, compatíveis com diversas plataformas, para executar máquinas
virtuais que virtualizam hardware físico como parte de um desenvolvimento multipla-
taforma para testes e implementação de fluxo de trabalho.
11 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
a. O Docker não é um gerenciador de máquinas virtuais, ele é um container. As duas coisas
são diferentes, como já foi visto anteriormente. .
30m
b. O LXC utiliza Namespaces.
c. O hypervisor não é obrigatório.
d. O Docker permite a portabilidade de contêineres. É possível criar uma imagem de toda
a configuração e aplicativos instalados em um contêiner e transferi-lo para outro host que
tenha um Docker previamente instalado.
e. O container utiliza menos memória, e o desempenho não é o mesmo do hypervisor.
COMENTÁRIO
Esse item define o Docker de forma precisa.
GABARITO
1. d
2. C
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
12 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DOCKER II
Daremos continuidade ao tema Docker, uma ferramenta muito utilizada para trabalhar o
desenvolvimento e a conteinerização de aplicação. Nesta aula, veremos detalhes técnicos do
funcionamento e operação.
Arquitetura do Docker
O Docker usa uma arquitetura cliente-servidor. No entanto, em geral, o cliente e servidor
estão na mesma máquina. Existe um daemon, que é um processo que fica ativo escutando
conexões e comandos. Enviamos comandos para o daemon através do cliente, aquele pro-
cessa e devolve resposta aos comandos.
O cliente Docker conversa com o daemon Docker, que realiza o trabalho pesado de cons-
truir, executar e distribuir seus contêineres Docker.
O cliente e o daemon do Docker podem ser executados no mesmo sistema ou pode-
-se conectar um cliente do Docker a um daemon do Docker remoto. Se ele está na mesma
máquina, geralmente, irá utilizar a interface UNIX, e quando estiver em máquina separada,
utilizará a interface de rede.
O cliente e daemon do Docker se comunicam usando uma API REST, sobre soquetes
UNIX ou uma interface de rede.
ANOTAÇÕES
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Tem-se o cliente, que pode ou não ser uma máquina separada do daemon. No cliente, é
no Docker que se dá o comando.
Há o daemon, um processo que está em execução.
Por exemplo, quando é um comando de construção, ele criará uma imagem nova. Se for
o comando de run, ele pegará uma imagem, irá lê-la e transformá-la em um contêiner. Se o
comando for pull, ele pegará uma imagem do registry e trazê-la para a máquina local.
Em geral, o registry está em uma máquina separada, dedicada ao armazenamento das
imagens do Docker. Esse repositório pode ou não estar na empresa.
5m
O Daemon Docker
O daemon do Docker (dockerd) escuta solicitações da API do Docker e gerencia objetos
do Docker, como imagens, contêineres, redes e volumes;
Um daemon também pode se comunicar com outros daemons para gerenciar os serviços
do Docker, principalmente o Swarm ou outros processos que envolvem várias máquinas em
execução ao mesmo tempo.
Registro do Docker
Um registro do Docker armazena imagens do Docker. A imagem do Docker é um arquivo,
como se fosse zip, que guarda todas as informações do sistema criado. Ele fica guardado de
forma versionar, e, geralmente, pesquisável.
O Docker Hub é um registro público que qualquer pessoa pode usar. O Docker está con-
figurado para procurar imagens no Docker Hub por padrão. No entanto, pode-se executar um
registro privado.
Se baixarmos na máquina o Docker hub e executarmos, ele vai ao registro padrão da
internet. No entanto, algumas empresas, por questão de segurança, optam por ter uma cópia
do registry com as imagens autorizadas internamente, para que os funcionários utilizem
somente essas.
Quando se usam os comandos Docker pull ou Docker run, as imagens necessárias são
extraídas do registro configurado.
Quando se usa o comando docker push, a imagem é enviada para o registro configurado.
Dessa forma, pode-se fazer o pull de uma imagem básica, o Dockerfile (uma sequência
de comandos feita em cima de uma imagem base) que pode, inclusive, gerar uma segunda
imagem, fazer um push e enviá-la de volta para o registry.
ANOTAÇÕES
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Por exemplo, é possível pegar no registro uma imagem base só com o node, inserir a
aplicação e fazer um push para o registry, que é o node mais a aplicação em execução.
O pull busca a imagem do registry, ele tem várias opções de aplicativos, tais como NGINX,
Ubuntu etc.
Objetos do Docker
Ao usar o Docker, se está criando e usando imagens, contêineres, redes, volumes, plug-
-ins e outros objetos;
Segue uma breve visão geral de alguns desses objetos.
Imagens
Uma imagem é um modelo somente leitura com instruções para criar um contêiner
do Docker.
A imagem terá uma série de arquivos, é somente leitura porque é estática, dá a forma
para a execução do contêiner. O contêiner é uma instância de uma imagem, ele é modificá-
vel. Dessa forma, a imagem é a classe e o contêiner é o objeto.
10m
Note-se que se pode ter uma classe e várias instâncias (objetos), semelhantemente, uma
imagem e várias instâncias de execução dela (contêineres).
Muitas vezes, uma imagem é baseada em outra imagem, com alguma personalização
adicional.
ANOTAÇÕES
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Por exemplo, pode-se criar uma imagem baseada na imagem ubuntu, mas instalar o ser-
vidor da Web Apache e seu aplicativo, bem como os detalhes de configuração necessários
para executar o aplicativo.
Uma imagem é um modelo somente leitura com instruções para criar um contêiner
do Docker.
O comum é ter uma imagem base, inserir um aplicativo e executá-lo. A vantagem disso
é que, no cenário antigo de execução, sem o Docker, era necessário configurar o ambiente
final de execução da aplicação. Por exemplo, se a aplicação depende do apache, era preciso
ir à máquina de execução e instalá-lo.
Começou o seguinte problema: e se a aplicação precisa do apache em uma versão e a
aplicação de outra equipe precisa do apache noutra versão?
Era preciso ter dois servidores ou colocar duas instâncias do apache em execução.
Por isso, passou-se a utilizar a estrutura de contêiner, na qual se pode conteinerizar a
aplicação em uma versão específica do Ubuntu e do apache. A outra equipe pode ter ver-
sões diferentes daquele mesmo software, em execução paralela, numa mesma máquina, de
forma isolada.
Pode-se criar as próprias imagens ou usar apenas aquelas criadas por outras pessoas e
publicadas em um registro.
Para criar uma imagem, cria-se um Dockerfile com uma sintaxe simples para definir as
etapas necessárias para criar a imagem e executá-la.
Cada instrução em um arquivo Dockerfile cria uma camada na imagem.
Quando se altera o Dockerfile e reconstrói a imagem, apenas as camadas que foram
alteradas são reconstruídas. Isso faz parte do que torna as imagens tão leves, pequenas e
rápidas, quando comparadas a outras tecnologias de virtualização.
Ele tem um sistema de arquivos especial que atribuiu hashcodes para cada uma das
camadas. Por exemplo, na imagem do Ubuntu com hashcode 123, se instalado o apache,
o hashcode será modificado para 456. A parte inicial da imagem se mantém, só será adicio-
nado algo ao final.
15m
Se for criada outra imagem Ngix, por exemplo, ele aproveitará a parte inicial do Ubuntu
com o 123, e adicionará o 789. Ou seja, as duas imagens, diferentes, compartilharão a
mesma imagem base, que é o Ubuntu. Isso economiza porque, no cenário original de virtua-
lização, tudo era isolado, cada máquina virtual tinha o tamanho do Ubuntu completo. Com a
estratégia de compartilhar as etapas anteriores com o Dockerfile e o sistema do Docker, as
imagens são muito menores.
ANOTAÇÕES
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Contêineres
Um contêiner é uma instância executável de uma imagem.
Pode-se criar, iniciar, parar, mover ou excluir um contêiner usando a API ou a CLI
do Docker.
É possível conectar um contêiner a uma ou mais redes, anexar armazenamento a ele ou
até criar uma nova imagem com base em seu estado atual. Não é muito comum, em geral,
cria-se a partir do Dockerfile.
Por padrão, um contêiner é relativamente bem isolado de outros contêineres e sua
máquina host. Pode-se controlar como a rede, o armazenamento ou outros subsistemas sub-
jacentes de um contêiner estão isolados de outros contêineres ou da máquina host. A chave
do Docker é como ele consegue isolar e manter a segurança dos contêineres.
Um contêiner é definido por sua imagem, bem como pelas opções de configuração que
se fornece quando a cria ou inicia.
Quando um contêiner é removido, quaisquer alterações em seu estado que não sejam
armazenadas no armazenamento persistente desaparecem.
Por exemplo, ao iniciar o contêiner, não foi associado a ele o armazenamento persistente.
Ele tem um HD virtual, no entanto, se desligarmos ou removermos o contêiner, o que foi feito
nele desaparece. Ele feito para que os dados não persistam, a não ser que seja feito o com-
partilhamento de uma área de dados persistente.
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Quando se digita exit para finalizar o comando /bin/bash, o contêiner para, mas não é
removido. Pode-se iniciá-lo novamente ou removê-lo.
ANOTAÇÕES
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
No exemplo, abre-se a linha de comando docker run -i -t ubuntu /bin/bash. A máquina não
tinha o ubuntu localmente e tenta fazer o pull desta imagem.
Observe-se que há um pull em cada uma das hashs, as quais representam camadas. Ele
baixa e executa a imagem.
Note-se que no início estava na máquina Windows e, ao final, está como host. Nesse
ponto, executa-se o shell dentro do contêiner.
Serviços
Os serviços permitem escalar contêineres em vários daemons do Docker, que funcionam
juntos como um enxame (swarm) com vários gerentes e trabalhadores. Nessa estratégia do
Docker daemon, pode-se colocar várias máquinas trabalhando juntas, de forma cooperativa,
em um cluster.
Cada membro de um enxame é um daemon do Docker e todos os daemons se comuni-
cam usando a API do Docker. Um serviço permite definir o estado desejado, como o número
de réplicas do serviço que devem estar disponíveis a qualquer momento.
25m
Por padrão, o serviço é balanceado por carga em todos os nós do trabalhador. Para o con-
sumidor, o serviço Docker parece ser um único aplicativo. O Docker Engine oferece suporte
ao modo swarm (enxame) no Docker 1.12 e superior. O swarm permite a orquestração dos
contêineres, que se coloque várias máquinas para trabalhar em conjunto com o docker.
A tecnologia subjacente
O Docker é escrito em Go e tira proveito de vários recursos do kernel do Linux para ofe-
recer sua funcionalidade.
Namespaces
O Docker usa uma tecnologia chamada namespaces para fornecer o espaço de trabalho
isolado chamado contêiner.
Quando se executa um contêiner, o Docker cria um conjunto de namespaces para esse
contêiner.
Esses namespaces fornecem uma camada de isolamento. Cada aspecto de um contê-
iner é executado em um namespace separado e seu acesso é limitado a esse namespace.
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Namespaces
O Docker Engine usa os seguintes namespaces no Linux:
• Namespace pid: isolamento do processo (PID: ID do processo). Dessa forma, o pro-
cesso executado do contêiner não é visível de fora, porque ele é isolado pelo sistema
operacional;
• Namespace net: Gerenciando interfaces de rede (NET: Networking);
• Namespace ipc: Gerenciando o acesso aos recursos do IPC (IPC: InterProcess Com-
munication);
• Namespace mnt: Gerenciando pontos de montagem do sistema de arquivos (MNT:
Montagem);
• Namespace uts: Isolando identificadores de kernel e versão. (UTS: Sistema de com-
partilhamento de tempo Unix).
Para que funcione, ele precisa utilizar alguns recursos do Linux. Aquele script, rodado
anteriormente, estava no Windows, porque ele tem uma estratégia para rodar o Docker. No
entanto, quando ele roda imagens do Linux, o faz em um sistema interno chamado hypervi-
sor, que cria uma máquina virtual Linux. Isso porque o Docker, para ser executado, precisa
de uma máquina Linux.
Grupos de Controle
O Docker Engine no Linux também conta com outra tecnologia chamada control groups
(cgroups).
Um cgroup limita um aplicativo a um conjunto específico de recursos.
Os grupos de controle permitem que o Docker Engine compartilhe recursos de hardware
disponíveis em contêineres e, opcionalmente, imponha limites e restrições. Por exemplo,
pode-se limitar a memória disponível para um contêiner específico.
Isso é muito importante pois, por exemplo, se estivermos rodando muitas imagens Docker,
se uma delas consumir muitos recursos, não derrubará o sistema, pois são impostos limites
de consumo.
8 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O Docker Engine usa o UnionFS para fornecer os blocos de construção para contêineres.
O Docker Engine pode usar várias variantes do UnionFS, incluindo AUFS, btrfs, vfs e
DeviceMapper.
Dessa forma, ele precisa de um sistema de arquivos especial com a capacidade de tra-
balhar com camadas, para permitir o compartilhamento de camadas entre diversas imagens,
a fim de que elas não fiquem muito grandes e lotem o HD rapidamente.
Formato do Contêiner
O Docker Engine combina os namespaces, grupos de controle e UnionFS em um wra-
pper chamado formato de contêiner.
30m
O formato padrão do contêiner é libcontainer.
No futuro, o Docker poderá suportar outros formatos de contêiner.
DIRETO DO CONCURSO
1. (2018/FAURGS/TJ-RS/ANALISTA DE SUPORTE) Conceitualmente, as máquinas virtu-
ais definidas por contêineres são baseadas em virtualização:
a. em nível de hardware.
b. em nível de linguagem.
c. em nível de sistema operacional.
d. por hipervisores.
e. por monitores.
COMENTÁRIO
O Linux fornece alguns recursos ao Docker que permitem que ele faça este tipo de virtuali-
zação. Ele se apoia no sistema operacional, não faz uma virtualização de hardware.
9 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker II
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
A questão indaga se o Docker precisa de hipervisor.
A virtualização do tipo 1 é feita pelo VirtualBox ou VMware, por exemplo. Ele tem uma
virtualização acima do nível do hardware, na qual hipervisor irá isolar várias instâncias de
sistemas operacionais distintas. Tem-se uma máquina virtual que virtualiza tudo para que
se possa rodar o sistema operacional completo em cada uma das virtualizações.
Já na virtualização por contêiner, há o sistema operacional, que fornece recursos para con-
teinerizar as aplicações, e não o sistema operacional em si.
GABARITO
1. c
2. C
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
10 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DOCKER III
Configuração
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
KUBERNETES
O Docker Desktop configurará o Kubernetes de forma rápida e fácil. Para isso, deve-se
seguir as orientações específicas do sistema operacional.
Para confirmar que o Kubernetes está em funcionamento, pode-se criar um arquivo de
texto chamado pod.yaml com o seguinte conteúdo:
Dessa forma, criaremos o primeiro pod, que é feito para ser executado dentro de determi-
nado nó. Quando rodado localmente, ele terá somente um nó, para que os testes sejam feitos.
O nó é um arquivo YAML no qual são colocadas várias versões, como o api do Kuberne-
tes, qual o tipo (pod), alguns metadados, especificação e um ou mais contêineres para serem
executados no pod.
No caso, especificamos um deles, o contêiner é o testpod, rodará o Linux apline:3.5 e o
comando ["ping", "8.8.8.8"], que é o dms do Google.
Para efetuar a criação do pod, faz-se:
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
É possível implantar o pod com várias réplicas, então o Kubernetes os distribui. Dá-se um
objetivo ao Kubernetes e ele irá trabalhar em prol de mantê-lo.
10m
O swarm é nativo da parte docker e funciona de forma parecida, mas com nomenclaturas
diferentes (ao invés de pods, workers). Há gerentes para os workers.
DOCKER SWARM
O Docker Desktop é executado principalmente no Docker Engine, que possui tudo o que
se precisa para executar um Swarm;
Deve-se seguir as instruções de configuração e validação apropriadas para o sistema
operacional.
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Executar um serviço Docker simples que use um sistema de arquivos alpine e um ping
para 8.8.8.8:
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
CONTAINERIZANDO UM APLICATIVO
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Configurando
Dockerfile
FROM node:6.11.5: inicia a imagem pré-existente node:6.11.5. Essa é uma imagem ofi-
cial, criada pelos fornecedores do node.js e validada pelo Docker para ser uma imagem de
alta qualidade que contém o interpretador do node 6.11.5 e as dependências básicas.
ANOTAÇÕES
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Dessa forma, parte-se com uma imagem node oficial do repositório. Não é necessário se
preocupar com instalar o node. Por exemplo, se o sistema de destino é uma versão especí-
fica do Linux, não é preciso entender como instalar o node nela.
O from indica a base da imagem. Quando ela for construída, terá também o from dela.
20m
WORKDIR /usr/src/app: especifica que todas as ações subsequentes devem ser execu-
tadas no diretório /usr/src/app em seu sistema de arquivos de imagem (nunca no sistema de
arquivos do host).
COPY package.json.: copia o arquivo package.json do host para o local atual (.) na
imagem (nesse caso, para /usr/src/app/package.json).
RUN npm install: executa o comando npm install dentro do sistema de arquivos da
imagem (lerá o package.json para determinar as dependências do node do aplicativo e
instalá-las).
Obs.: o run é um comando que será executado não na máquina hospedeira, mas na máqui-
na de destino. Rodará dentro da imagem do contêiner durante a sua criação. Ele
rodará com a versão do npm que veio com o node que estava na imagem oficial.
O Docker irá percorrer cada instrução no Dockerfile, construindo sua imagem à medida
que for avançando.
ANOTAÇÕES
8 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Ou seja, será criada a imagem da aplicação, o que será executado. Ela é imutável.
Quando ela for executada e gerar um contêiner (sendo que a imagem é a classe e o con-
têiner é o objeto). Primeiro, dá-se um build na imagem, ela será construída e versionada. É
interessante enviá-la para o repositório de versões, como o repositório público do docker hub
ou em um repositório interno.
Para iniciar um contêiner com base na nova imagem:
Do lado direito, está a porta interna do contêiner (8080); do lado esquerdo, a porta de
fora. Significa que se for feito o local host 8000, ele redirecionará o fluxo para 8080 dentro do
contêiner.
• --publish solicita ao Docker que encaminhe o tráfego recebido na porta 8000 do host,
para a porta 8080 do contêiner (os contêineres têm seu próprio conjunto de portas pri-
vadas; portanto, para acessar um da rede, é necessário encaminhar o tráfego para ele
dessa maneira; caso contrário, as regras de firewall impedirão que todo o tráfego de
rede chegue ao contêiner, como uma postura de segurança padrão);
Não foi especificado qual processo o container deve executar. Isso não é necessário, pois
a diretiva CMD está contida no Dockerfile; graças a isso, o Docker sabe executar automatica-
mente o processo npm start dentro do contêiner quando ele é inicializado.
ANOTAÇÕES
9 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Docker III
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Lembre-se de que no dockerfile havia uma linha no final, que era do CMD. Essa linha
define o que será executado no dockerfile quando ele instanciado em um contêiner. Logo, ele
não é executado durante a criação da imagem, mas quando é levantado um contêiner a partir
dela. Dessa forma, está embutido nele o npm start.
O aplicativo pode ser acessado a partir de um navegador em localhost:8000.
O container pode ser excluído com o comando:
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
10 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
DOCKER IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DOCKER IV
IMPLANTANDO NO KUBERNETES
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
DOCKER IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
5m
Ou seja, dentro do arquivo YAML será colocada uma série de especificações sobre como
o pod deve ser executado.
Resumindo:
1. Criar o dockerfile;
2. Fazer o build e gerar a imagem;
ANOTAÇÕES
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
DOCKER IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Nesse arquivo YAML do Kubernetes, existem dois objetos, separados pelo ---:
• Um Deployment, descrevendo um grupo escalável de pods idênticos. Nesse caso,
haverá apenas uma réplica, ou cópia, do pod, e esse pod (que é descrito sob a chave
template:) possui apenas um contêiner, com base na imagem bulletinboard:1.0;
• Um serviço NodePort que encaminhará o tráfego da porta 30001 em seu host para a
porta 8080 dentro dos pods, permitindo acessar a aplicação da rede.
IMPLANTANDO NO SWARM
O Swarm nunca cria contêineres individuais; em vez disso, todas as cargas de trabalho
do Swarm são agendadas como serviços, que são grupos escalonáveis de contêineres com
recursos adicionais de rede mantidos automaticamente pelo Swarm. É um pouco análogo ao
nó que há no Kubernetes.
Além disso, todos os objetos Swarm podem e devem ser descritos em manifestos
chamados arquivos de stack; esses arquivos YAML descrevem todos os componentes e
configurações do aplicativo Swarm e podem ser usados para criar e destruir facilmente o
aplicativo em qualquer ambiente do Swarm.
Nesse arquivo YAML do Swarm, há apenas um objeto: service, descrevendo um grupo
escalável de contêineres idênticos.
Nesse caso, haverá apenas um contêiner (o padrão) e esse contêiner será baseado na
imagem bulletinboard:1.0.
ANOTAÇÕES
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
DOCKER IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Além disso, configura o Swarm para encaminhar todo o tráfego que chega à porta 8000
na máquina de desenvolvimento para a porta 8080 dentro do contêiner. Aqui, faz-se também
a configuração das portas de uma forma parecida com o que é feito no Kubernetes.
10m
DIRETO DO CONCURSO
1. (2018/PR-4/UFRJ/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO) Considere o
comando a seguir, executado em um terminal linux, com o docker instalado, e utilizando
o repositório padrão do docker:
# docker run --name pgSQL -p 8665:5432 -e POSTGRES_PASSWORD=pswrd
-d postgres
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
DOCKER IV
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
Todos os itens que não têm como nome pgSQL estão incorretos.
Nem mesmo a documentação do docker utiliza a terminologia da banca ("porta real" e
"porta virtual").
Note-se que a "porta real" é da virtualização.
Geralmente, a porta da esquerda será da máquina host, convidado, e a porta 5432 será a
interna, onde a aplicação está sendo executada, ou da virtualização.
GABARITO
1. c
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Kubernetes
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
KUBERNETES
Referências Bibliográficas
https://kubernetes.io/docs/home/ (documentação de referência do Kubernetes)
Introdução
• O Kubernetes é uma plataforma portátil, extensível e de código aberto para geren-
ciamento de cargas de trabalho e serviços containerizados, que facilita a configuração
declarativa e a automação;
1 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Kubernetes
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Hypervisor - ex.: virtual box; Container Runtime - ex.: Doker. O container é uma solu-
ção bem mais leve do que uma solução de virtualização, porque a solução de virtualização
vai virtualizar todo o sistema operacional, enquanto a solução de container vai compartilhar
o sistema operacional.
Implantação Tradicional
10m
• As organizações executavam aplicativos em servidores físicos;
• Não havia como definir limites de recursos para aplicativos em um servidor físico,
e isso causava problemas de alocação de recursos;
• Por exemplo, se vários aplicativos forem executados em um servidor físico, pode haver
instâncias em que um aplicativo ocuparia a maioria dos recursos e, como resultado, os
outros aplicativos teriam desempenho inferior;
• Uma solução para isso seria executar cada aplicativo em um servidor físico diferente.
Mas isso não escalou pois os recursos foram subutilizados e foi caro para as organiza-
ções manterem muitos servidores físicos.
2 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Kubernetes
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
3 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Kubernetes
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
4 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Kubernetes
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
5 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Kubernetes
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
DIRETO DO CONCURSO
1. (PUC-PR/TJ-MS/TÉCNICO DE NÍVEL SUPERIOR/ANALISTA DE INFRAESTRUTU-
RA DE RED/2017) Sistemas virtualizados e containers são conceitos importantes para
computação na nuvem. Para gerenciar grande número de servidores físicos, virtualiza-
dos e containers, utilizam-se ferramentas especializadas de configuração remota.
Indique a afirmativa que descreve de forma CORRETA os conceitos relativos a sistemas
virtualizados e containers e as ferramentas de gerenciamento disponíveis.
6 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Kubernetes
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
O que é Puppet
• O Puppet é uma ferramenta de automação de servidor de última geração e de
código aberto. É composto de uma linguagem declarativa para expressar a configu-
ração do sistema, um cliente e servidor para distribuí-lo e uma biblioteca para realizar
a configuração;
• O principal objetivo do design do Puppet é ter uma linguagem suficientemente expres-
siva apoiada por uma biblioteca poderosa o suficiente para que você possa escrever
seus próprios aplicativos de automação de servidor em apenas algumas linhas de
código. A extensibilidade profunda do Puppet e a licença de código aberto permitem
adicionar funcionalidades conforme necessário e compartilhar suas inovações com
outras pessoas.
O que é Ansible
• Ansible é uma simples e poderosa ferramenta de automatização criada para gerenciar
múltiplas máquinas de uma vez. Além disso, é uma engine que permite executar Ansi-
ble Playbooks;
É uma linguagem que para escrever scripts e juntá-los nos Ansible Playbooks para auto-
matizar tarefas.
• Uma das principais características que faz o Ansible ser atrativo para uso em relação
à automação de serviços é a sua linguagem bastante simples, ao ponto de ser “huma-
namente legível”, isto é, não precisando ter um notável conhecimento técnico para
entender o que está sendo feito. Pelo fato da linguagem ser de fácil entendimento, é
possível começar a criar serviços de automação de forma fácil e rápida. E para auxiliar
ainda mais o entendimento do que está sendo processado, as tasks são executadas
na ordem em que são escritas.
7 www.grancursosonline.com.br
DESENVOLVIMENTO WEB
Kubernetes
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
RESOLUÇÃO
Resolução da questão anterior
a. Puppet e Ansible são ferramentas que tem a finalidade de simplificar o processo de ge-
renciamento de servidores remotos. Essas ferramentas funcionam apenas com servidores
físicos ou virtualizados. Elas não suportam containers.
b. Puppet e Ansible podem ser usados para gerenciar serviços virtualizados. Ansible é pre-
ferível por ser uma ferramenta multi-plataforma, enquanto Puppet funciona apenas para
Linux, pois todos os seus comandos remotos são executados via SSH.
c. Containers e máquinas virtuais são sinônimos, pois ambos são usados para virtualizar o
hardware que hospeda um sistema operacional completo, que pode ser diferente do siste-
ma operacional da máquina física.
d. Containers do tipo Dockers podem ser orquestrados apenas pelo Docker Swarm, que foi
desenvolvido especificamente para suportar essa tecnologia de container.
e. Kubernetes é uma ferramenta de orquestração que oferece recursos de geren-
ciamento para containers, como balanceamento de carga e migração sem perda
de dados.
35m
GABARITO
1. e
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conteúdo
ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura exclu-
siva deste material.
ANOTAÇÕES
8 www.grancursosonline.com.br
DESENVOLVIMENTO DE SISTEMAS
Red Hat Openshift
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
www.grancursosonline.com.br 1
DESENVOLVIMENTO DE SISTEMAS
Red Hat Openshift
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Arquitetura
• RHEL CoreOS – O sistema operacional base é o Red Hat Enterprise Linux CoreOS.
O CoreOS é uma versão leve do RHEL, que fornece recursos essenciais do sistema
operacional e combina a facilidade de atualizações remotas do Container Linux com o
kernel Red Hat Enterprise Linux para hosts de contêiner;
• CRI-O – CRI-O é uma alternativa leve do Docker. Ele utiliza os contêineres que vêm no
Docker, sendo uma solução mais leve. É uma interface de tempo de execução de con-
têiner do Kubernetes que permite usar tempos de execução compatíveis com a Open
Container Initiative. O CRI-O suporta imagens de contêiner OCI de qualquer registro
de contêiner. Por sua vez, em cima dele vem o Kubernetes;
5m
• Kubernetes – Orquestra e organização da execução dos pods. Kubernetes é o meca-
nismo de orquestração de contêineres padrão do setor, gerenciando vários hosts
master e workers para executar contêineres. Os recursos do Kubernetes definem
como os aplicativos são criados, operados, gerenciados etc.
ANOTAÇÕES
www.grancursosonline.com.br 2
DESENVOLVIMENTO DE SISTEMAS
Red Hat Openshift
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Principais Componentes
Ele é organizado através de uma divisão entre a Master e o Node. Dentro da Master, ele
tem o controlador. Na divisão Node, ele tem vários nós controlados. O Master, nesse sentido,
faz o próprio gerenciamento dos elementos. Os nós ficam com a carga de trabalho.
Posto isso, a parte Master tem os seguintes componentes:
www.grancursosonline.com.br 3
DESENVOLVIMENTO DE SISTEMAS
Red Hat Openshift
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Cluster Masters
Cluster Workers
www.grancursosonline.com.br 4
DESENVOLVIMENTO DE SISTEMAS
Red Hat Openshift
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Operadores
www.grancursosonline.com.br 5
DESENVOLVIMENTO DE SISTEMAS
Red Hat Openshift
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Projetos
Rede
www.grancursosonline.com.br 6
DESENVOLVIMENTO DE SISTEMAS
Red Hat Openshift
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Service Mesh
www.grancursosonline.com.br 7
DESENVOLVIMENTO DE SISTEMAS
Red Hat Openshift
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Como ilustra a imagem a seguir, o service mesh tem os proxys na frente das máquinas,
Isso bate no Istio, que conseguirá direcionar os serviços entre as máquinas A, B e C, contro-
lando tanto o tráfego de entrada como o de saída dessas máquinas.
Logging
Então, para se ter um sistema de Docker bem amplo, são necessárias várias ferramentas
distintas, até mesmo na parte de logging.
20m
ANOTAÇÕES
www.grancursosonline.com.br 8
DESENVOLVIMENTO DE SISTEMAS
Red Hat Openshift
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Monitoramento
Medição
Serverless
• O OpenShift Serverless pode executar APIs nativas do Kubernetes, bem como lin-
guagens e estruturas familiares, para implantar aplicativos e cargas de trabalho de
contêiner;
• O OpenShift Serverless é baseado no projeto de código aberto Knative, oferecendo
portabilidade e consistência em ambientes híbridos e multinuvem;
ANOTAÇÕES
www.grancursosonline.com.br 9
DESENVOLVIMENTO DE SISTEMAS
Red Hat Openshift
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
Então, escreve-se basicamente um código, uma função e não se define o servidor. Por
exemplo: escreve-se um código Java e o próprio ambiente do OpenShift consegue levantar
esse código e executá-lo sem que se levante um servidor de forma explícita. De toda forma,
implicitamente é necessário se ter um servidor.
Automação, CI/CD
O OpenShift já vem com várias ferramentas que fornecem recursos para o levantamento
das máquinas, a obtenção dos pods e do serviço para fazer a compilação e implantação do
código, a integração contínua, entre outros recursos.
www.grancursosonline.com.br 10
DESENVOLVIMENTO DE SISTEMAS
Red Hat Openshift
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
• Fluxos de imagem – Os fluxos de imagem podem ser usados para detectar alterações
no código do aplicativo ou nas imagens de origem e forçar uma ação de reconstrução/
reimplantação do pod para implementar as alterações. Os fluxos de imagens agrupam
imagens de contêiner marcadas por tags e podem gerenciar o ciclo de vida do contê-
iner relacionado de acordo. Os fluxos de imagem podem atualizar automaticamente
uma implantação se uma nova imagem de base for lançada na plataforma.
25m
• Pipelines OpenShift – Com o OpenShift Pipelines, os desenvolvedores e administra-
dores de cluster podem automatizar os processos de criação, teste e implantação do
código do aplicativo na plataforma. Com pipelines é possível minimizar o erro humano
com um processo consistente. Um pipeline pode incluir código de compilação, testes
de unidade, análise de código, segurança, criação de instalador, construção e implan-
tação de contêiner. Nos pipelines do OpenShift, cada etapa do pipeline é executada em
seu próprio contêiner, permitindo que ele seja dimensionado de forma independente.
Portanto, o pipeline faz o fluxo completo, desde a parte do código até a implantação;
Como foi mostrado, o OpenShift tem várias ferramentas para fazer com que a utilização
do Docker e de contêiner seja completa. Além disso, ele busca trazer uma consistência no
resultado do gerenciamento dos Dockers e contêineres. Ele junta para isso vários softwares
que já existem como Elasticsearch, Prometheus, Kubernetes, entre outros, entregando uma
infraestrutura bastante coesa.
DIRETO DO CONCURSO
1. (2020/CESPE/CEBRASPE/TJ-PA/ANALISTA JUDICIÁRIO – ANÁLISE DE SISTEMAS
– SUPORTE) O Openshift provê recursos a partir do kubernetes, sendo capaz de exe-
cutar e disponibilizar aplicações a partir de contêineres. As imagens dos contêineres no
Openshift podem ser armazenadas no componente denominado
a. pod.
b. build.
c. secret.
d. registry.
e. master.
ANOTAÇÕES
www.grancursosonline.com.br 11
DESENVOLVIMENTO DE SISTEMAS
Red Hat Openshift
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
COMENTÁRIO
COMENTÁRIO
• Um dos componentes do OpenShift é permitir o armazenamento do estado e das con-
figurações.
• Haproxy é proxy de alta disponibilidade.
• ETCD – ETCD é um banco de dados distribuído de pares chave-valor, armazenando
cluster, configuração de objetos Kubernetes e informações de estado;
• Extensões do OpenShift Kubernetes – As extensões do OpenShift Kubernetes são
definições de recursos personalizados (CRDs) no banco de dados Kubernetes ETCD,
fornecendo funcionalidade adicional em comparação com uma implantação do Kuber-
netes padrão;
ANOTAÇÕES
www.grancursosonline.com.br 12
DESENVOLVIMENTO DE SISTEMAS
Red Hat Openshift
Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br
GABARITO
1. d
2. a
�Este material foi elaborado pela equipe pedagógica do Gran Cursos Online, de acordo com a aula
preparada e ministrada pelo professor Tiago Lage Payne de Pádua.
A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do conte-
údo ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela leitura
exclusiva deste material.
ANOTAÇÕES
www.grancursosonline.com.br 13