Desenvolvimento WEB Flashcards

1
Q

O que é um Web Service?

A

Um Web Service é um sistema de software projetado para oferecer suporte à interação máquina a máquina através de uma rede;
Possui uma interface descrita em um formato processável por máquina (especificamente WSDL –Web Service DescriptioncLanguage);
Outros sistemas interagem com o Web Service da maneira prescrita por sua descrição usando mensagens SOAP, normalmente transmitidas usando HTTP com uma serialização XML em conjunto com outros padrões relacionados à Web;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Agentes e Serviços

A

Um Web Service é uma noção abstrata que deve ser implementada por um agente concreto;
O agente é o software ou hardware concreto que envia e recebe mensagens, enquanto o serviço é o recurso caracterizado pelo conjunto abstrato de funcionalidades fornecidas;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Solicitantes e Provedores

A

O objetivo de um Web Service é fornecer algumas funcionalidades em nome de seu proprietário -uma pessoa ou organização, como uma empresa ou um indivíduo;
A entidade provedora é a pessoa ou organização que fornece um agente apropriado para implementar um serviço específico;
Uma entidade solicitante é uma pessoa ou organização que deseja fazer uso do Web Service da entidade prestadora. Ele usará um agente solicitante para trocar mensagens com o agente da entidade prestadora

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Arquitetura Orientada a Serviços (SOA

A

É uma forma de arquitetura de sistemas distribuídos que geralmente é caracterizada pelas seguintes propriedades:
➢Visualização lógica: o serviço é uma visualização lógica e abstrata de programas, bancos de dados, processos de negócios etc., definidos em termos do que faz, geralmente executando uma operação em nível de negócios;
➢Orientação da mensagem: O serviço é formalmente definido em termos das mensagens trocadas entre o agente provedor e o agente solicitante, e não nas propriedades dos próprios agentes. A estrutura interna de um agente, incluindo recursos como linguagem de implementação, estrutura de processos e até estrutura de banco de dados, é deliberadamente abstraída na SOA. Um dos principais benefícios disso diz respeito aos chamados sistemas legados. Ao evitar qualquer conhecimento da estrutura interna de um agente, é possível incorporar qualquer componente ou aplicativo de software que possa ser “encapsulado” no código de tratamento de mensagens que permita a ele aderir à definição formal de serviço;
➢Orientação da descrição: um serviço é descrito por metadados processáveis ​​por máquina. A descrição suporta a natureza pública da SOA: somente os detalhes expostos ao público e importantes para o uso do serviço devem ser incluídos na descrição. A semântica de um serviço deve ser documentada, direta ou indiretamente, por sua descrição;
➢Granularidade: os serviços tendem a usar um pequeno número de operações com mensagens relativamente grandes e complexas;
➢Orientação de rede: os serviços tendem a ser orientados ao uso em uma rede, embora isso não seja um requisito absoluto;
➢Neutralidade de plataforma: as mensagens são enviadas em um formato padronizado e neutro da plataforma, entregue pelas interfaces.
XML é o formato mais óbvio que atende a essa restrição

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Web Services Description Language (WSDL)

A

É uma linguagem baseada em XML utilizada para descrever Web Services funcionando como um contrato do serviço. Trata-se de um documento escrito em XML que além de descrever o serviço, especifica como acessá-lo e quais as operações ou métodos disponíveis.
Um documento WSDL descreve um serviço da web. Ele especifica a localização do serviço, e os métodos do serviço, usando estes elementos principais:
Define os tipos de dados (esquema XML) usados ​​pelo serviço da web
Define os elementos de dados para cada operação
Descreve as operações que podem ser executadas e as mensagens envolvidas.
Define o protocolo e formato de dados para cada tipo de porta

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

MVC é o acrônimo de Model-View-Controller

A
MVC é o acrônimo de Model-View-Controller (em português: Arquitetura Modelo-Visão-Controle - MVC) é um padrão de projeto de software,[1] ou padrão de arquitetura de software formulado na década de 1970,[2] focado no reuso de código e a separação de conceitos em três camadas interconectadas, onde a apresentação dos dados e interação dos usuários (front-end) são separados dos métodos que interagem com o banco de dados (back-end).
Camada de modelo ou da lógica da aplicação (Model)
Modelo é a ponte entre as camadas Visão (View) e Controle (Controller),  consiste na parte lógica da aplicação, que gerencia o comportamento dos dados através de regras de negócios, lógica e funções. Esta fica apenas esperando a chamada das funções, que permite o acesso para os dados serem coletados, gravados e, exibidos.
Camada de apresentação ou visualização (View)
Visão pode ser qualquer saída de representação dos dados, como uma tabela ou um diagrama. É onde os dados solicitados do Modelo (Model) são exibidos.  É possível ter várias visões do mesmo dado, como um gráfico de barras para gerenciamento e uma visão tabular para contadores. A Visão também provoca interações com o usuário, que interage com o Controle (Controller). O exemplo básico disso é um botão gerado por uma Visão, no qual um usuário clica e aciona uma ação no Controle. 
Camada de controle ou controlador (Controller)
Controle é o componente final da tríade, faz a mediação da entrada e saída, comandando a visão e o modelo para serem alterados de forma apropriada conforme o usuário solicitou através do mouse e teclado.  O foco do Controle é a ação do usuário, onde são manipulados os dados que o usuário insere ou atualiza, chamando em seguida o Modelo. 
O Controle (Controller) envia essas ações para o Modelo (Model) e para a janela de visualização (View) onde serão realizadas as operações necessárias.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Arquitetura de software

A

A arquitetura de software de um sistema consiste na definição dos componentes de software, suas propriedades externas, e seus relacionamentos com outros softwares. O termo também se refere à documentação da arquitetura de software do sistema. A documentação da arquitetura do software facilita: a comunicação entre os stakeholders, registra as decisões iniciais acerca do projeto de alto-nível, e permite o reúso do projeto dos componentes e padrões entre projetos

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Arquitetura em camadas

Arquitetura multicamada

A

Arquitetura em camadas visa a criação de aplicativos modulares, de forma que a camada mais alta se comunica com a camada mais baixa e assim por diante, fazendo com que uma camada seja dependente apenas da camada imediatamente abaixo. Camadas são uma maneira de separar responsabilidades e gerenciar dependências. Cada camada tem uma responsabilidade específica. Uma camada superior pode usar os serviços em uma camada inferior, mas não o oposto.
Camadas são uma maneira de separar responsabilidades e gerenciar dependências. Cada camada tem uma responsabilidade específica. Uma camada superior pode usar os serviços em uma camada inferior, mas não o oposto.

Em Engenharia de software, a arquitetura em camadas (mais conhecida como arquitetura multicamadas) é um sistema Cliente-Servidor onde as camadas de apresentação, processamento de aplicativos e gerenciamento de dados são separados

A arquitetura em camadas pode ser definida como um processo de decomposição de sistemas complexos em camadas para facilitar a compreensão do mesmo, como também, facilitar a manutenção deste sistema, ainda afirma que, esta técnica foi emprestada da arquitetura de computadores, que utilizam camadas de chamada ao sistema operacional, drivers e afins.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Camada de apresentação

A

A camada de apresentação é responsável pela apresentação, interação do usuário e recebimento de dados processados pelo software bem como suas funções.
Em sistemas distribuídos, existem duas alternativas para apresentação:

Usando um navegador web, todo o conteúdo e formulário de uma aplicação web clássica são apresentados em XML, XHTML E JavaScript, entre outras linguagens criadas para a World Wide Web. Sua comunicação com camadas é geralmente feita através do HTTP.
Usando um cliente gordo, você produz sua própria interface gráfica do usuário. Usando as opções de exibição estendida da linguagem de programação ou da biblioteca gráfica para essa finalidade, como Flash ou Java Swing se comunicando com a camada de aplicativos por meio de protocolos de rede, como SOAP, Microsoft NET Remoting, entre outros.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Camada de controle

A

A camada de controle é responsável por comandar o fluxo da apresentação servindo como uma camada intermediária entre a camada de apresentação e a lógica.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Camada lógica de negócios

A

A camada lógica de negócios se refere a implementação de regras de negócio ou requisitos do sistema.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Camada de acesso a dados

A

A camada de dados inclui as técnicas de persistência de dados (compartilhamento de arquivos, servidores de banco de dados e etc) e a camada de acesso a dados que encapsula os mecanismos e expõe os dados. O armazenamento persistente geralmente usa banco de dados, mas outros sistemas podem usar arquivos normais.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Duto e filtro ou Pipe-And-Filter

A

Duto e filtro ou Pipe-And-Filter, em engenharia de software, é um estilo de arquitetura orientado a dados. É composto por uma cadeia de elementos de processamento dispostos de tal forma que a saída de cada elemento é a entrada do próximo, ou seja, os programas (chamados de filtros) processam as entradas recebidas e geram uma nova saída. Os filtros são conectados por meio de dutos que agem como buffers, armazenando a saída de um filtro enquanto ela não é lida pelo próximo filtro da sequência. Cada etapa do processamento é implementada como uma transformação, que pode ser executada sequencialmente ou em paralelo. Um exemplo clássico do padrão duto e filtro é o shell do Linux, onde existe uma coleção de pequenos programas que geralmente fazem uma única coisa e podem ser encadeados na mesma linha de comando.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Cliente-servidor

A

O modelo cliente-servidor (em inglês client/server model), em computação, é uma estrutura de aplicação distribuída que distribui as tarefas e cargas de trabalho entre os fornecedores de um recurso ou serviço, designados como servidores, e os requerentes dos serviços, designados como clientes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Repositório

A

Cada subsistema mantém seu próprio banco de dados e são passados explicitamente para outros subsistemas. Quando grandes quantidades de dados precisam ser compartilhados, o modelo de repositório é usado para organizar os sistemas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Inversão de controle Ioc

A

(Inversion of Control ou IoC, em inglês) é um princípio de design de programas de computadores onde a sequência (controle) de chamadas dos métodos é invertida em relação à programação tradicional, ou seja, ela não é determinada diretamente pelo programador. Este controle é delegado a uma infraestrutura de software muitas vezes chamada de container ou a qualquer outro componente que possa tomar controle sobre a execução. Esta é uma característica muito comum a alguns frameworks.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

A plataforma JEE contém uma série de especificações e containers

A

JDBC (Java Database Connectivity), utilizado no acesso a bancos de dados;
Servlets, são utilizados para o desenvolvimento de aplicações Web com conteúdo dinâmico. Ele contém uma API que abstrai e disponibiliza os recursos do servidor Web de maneira simplificada para o programador.
JSP (Java Server Pages), uma especialização do servlet que permite que conteúdo dinâmico seja facilmente desenvolvido.
JTA (Java Transaction API), é uma API que padroniza o tratamento de transações dentro de uma aplicação Java.
EJBs (Enterprise Java Beans), utilizados no desenvolvimento de componentes de software. Eles permitem que o programador se concentre nas necessidades do negócio do cliente, enquanto questões de infra-estrutura, segurança, disponibilidade e escalabilidade são responsabilidade do servidor de aplicações.
JCA (Java Connector Architecture), é uma API que padroniza a ligação a aplicações legadas.
JPA (Java Persistence API), é uma API que padroniza o acesso a banco de dados através de mapeamento Objeto/Relacional dos Enterprise Java Beans.
JMS (Java Message Service), é uma API para middleware orientado a mensagens. Através dela é possível realizar a comunicação de forma assíncrona entre duas ou mais aplicações.
JSF (JavaServer Faces), é uma especificação Java para a construção de interfaces de usuário baseadas em componentes para aplicações web.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

J2EE define 4 camadas básicas no modelo de aplicação

A

Camada Cliente – Parte do software que roda no computador do usuário;
Camada Web - Parte do software que roda no servidor web, que por sua vez fica normalmente dentro do servidor de aplicações;
Camada de negócios – Parte do software que roda no servidor de aplicações;
Camada de dados – Banco de dados e sistemas externos;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

O que é o Spring Framework?

A

O Spring é um framework java open source criado pela Pivotal para facilitar o desenvolvimento de aplicações corporativas, baseado nos padrões de projeto de inversão de controle e injeção de dependência.
O Spring framework foi criado devido os problemas que os desenvolvedores java enfrentavam ao criar uma aplicação corporativa J2EE. Um dos problemas era a necessidade de utilizar um servidor de aplicação robusto, entre muitos outros fatores.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Spring

A

O Spring é um framework open source para a plataforma Java criado por Rod Johnson e descrito em seu livro “Expert One-on-One: JEE Design e Development”. Trata-se de um framework não intrusivo, baseado nos padrões de projeto inversão de controle (IoC) e injeção de dependência.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Arquitetura Spring

A

O Spring possui uma arquitetura baseada em interfaces e POJOs (Plain Old Java Objects), oferecendo aos POJOs características como mecanismos de segurança e controle de transações. Também facilita testes unitários e surge como uma alternativa à complexidade existente no uso de EJBs. Com Spring, pode-se ter um alto desempenho da aplicação.
Esse framework oferece diversos módulos que podem ser utilizados de acordo com as necessidades do projeto, como módulos voltados para desenvolvimento Web, persistência, acesso remoto e programação orientada a aspectos.
Injeção de dependência (Dependency Injection, em inglês) é um padrão de desenvolvimento de programas de computadores utilizado quando é necessário manter baixo o nível de acoplamento entre diferentes módulos de um sistema. Nesta solução as dependências entre os módulos não são definidas programaticamente, mas sim pela configuração de uma infraestrutura de software (container) que é responsável por “injetar” em cada componente suas dependências declaradas. A Injeção de dependência se relaciona com o padrão Inversão de controle mas não pode ser considerada um sinônimo deste

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

O que é arquitetura de software?

A

Engenharia de software é uma área da computação voltada à especificação, desenvolvimento e manutenção de sistemas de software, com aplicação de tecnologias e práticas de gerência de projetos e outras disciplinas, visando organização, produtividade e qualidade
Os arquitetos são aqueles que modelam e projetam o sistema e, os engenheiros são aqueles que controlam o processo até a conclusão.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

O que é engenharia de software?

A

Engenharia de software é uma área da computação voltada à especificação, desenvolvimento e manutenção de sistemas de software, com aplicação de tecnologias e práticas de gerência de projetos e outras disciplinas, visando organização, produtividade e qualidade
Os arquitetos são aqueles que modelam e projetam o sistema e, os engenheiros são aqueles que controlam o processo até a conclusão.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Web Service

A

Web Service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. Os Web Services são componentes que permitem às aplicações enviar e receber dados. Cada aplicação pode ter a sua própria “linguagem”, que é traduzida para uma linguagem universal, um formato intermediário como XML, Json, CSV, etc.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Um documento XML é bem-formado se:

A

Possui um só elemento raiz que inclui todos os demais;• Todos os elementos devem estar devidamente aninhados;
Se presente, o que é recomendado, a instrução de processamento declaração XML deve literalmente iniciar o documento. Essa declaração pode indicar a versão de con-junto de caracteres utilizada (ex.: UTF-8);
Todos os elementos não vazios devem ter start-tag e end-tag;• Atributos não se repetem num mesmo elemento;
Todas as entidades analisadas, referenciadas direta ou indiretamente, devem ser também entidades bem-formadas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Comentários XML, JAVASCRIPT, CSS, HTML, JAVA

A
XML: 
HTML:  
CSS: /*   */
JAVASCRIPT:  // OU /*    */
JAVA: /** Javadoc */ COMENTÁRIO DE DOCUMENTAÇÃO OU // OU /*    */
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

O que é REST?

A

EST, ou Representational State Transfer, é um estilo arquitetônico aplicado para fornecer padrões entre sistemas de computador na web, facilitando a comunicação entre eles. Os sistemas em conformidade com REST, muitas vezes conhecidos como sistemas RESTful, são reconhecidos pelo jeito como separam as preocupações do cliente e do servidor.

No estilo REST, a implementação do cliente e do servidor pode ser feita de forma independente, sem que cada um conheça o outro. Isso significa que o código do lado do cliente pode ser alterado a qualquer momento, sem afetar a operação do servidor, e o contrário também é válido.

Ao utilizar uma interface REST, clientes diferentes atingem os mesmos pontos finais REST, executam ações iguais e recebem as mesmas respostas. Como os sistemas REST interagem por meio de operações padrão sobre recursos, eles não dependem da implementação de interfaces.

Essas restrições ajudam as aplicações RESTful a alcançar maior nível de confiabilidade, além de possibilitar um desempenho rápido e escalável. Todos os componentes podem ser gerenciados, atualizados e reutilizados sem afetar o sistema como um todo, mesmo durante a operação
O “pai” do REST é Roy Fielding

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

REST

Client-server

A

A implementação do cliente e do servidor podem ser feitas independentemente, sem que cada um tenha conhecimento do outro;
Isso significa que o código no lado do cliente pode ser alterado a qualquer momento sem afetar a operação do servidor, e o código no lado do servidor pode ser alterado sem afetar a operação do cliente;
Desde que cada lado saiba qual formato de mensagens enviar para o outro, eles podem ser mantidos modulares e separados;• Separando as preocupações da interface do usuário das preocupações de armazena-mento de dados, melhora-se a flexibilidade da interface entre as plataformas;
A separação permite que cada componente evolua independentemente;
Usando uma interface REST, diferentes clientes atingem os mesmos pontos de extremi-dade REST, executam as mesmas ações e recebem as mesmas respostas;
Comunicação entre Cliente e ServidorNa arquitetura REST, os clientes enviam solicitações para recuperar ou modificar recursos, e os servidores enviam respostas para essas solicitações;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

REST

Stateless

A

Os sistemas que seguem o paradigma REST são stateless, o que pode ser traduzido livremente como “sem estado”. Isso significa que o servidor não precisa saber nada sobre o estado em que o cliente se encontra e vice-versa.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

REST

Uniform interface

A

O principal elemento que distingue o REST de outras opções com base na rede é o seu foco em uma interface uniforme entre os componentes. O princípio de generalidade, característica da engenharia de software, quando aplicado à interface de componentes, simplifica a arquitetura do sistema e torna as interações mais visíveis.
REST é definido por quatro fatores:

identificação de recursos;
gerenciamento de recursos por meio de representações;
mensagens auto-descritivas;
hipermídia.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

REST e sua definição

A

REST, ou REpresentational State Transfer (Transferência de Estado Representa-cional), é um estilo arquitetural que fornece padrões entre sistemas de computador na Web, facilitando a comunicação entre os sistemas.
Os sistemas compatíveis com REST, geralmente chamados de sistemas RESTfull, são caracterizados pela falta de estado e por separar as responsabilidades do cliente e do servidor;
Possibilita a criação de web services, cujas principais diferenças em relação ao modelo tradicional (SOAP) estão na:
Utilização semântica dos métodos HTTP (GET, POST, PUT e DELETE);
Leveza dos pacotes de dados transmitidos na rede;°Simplicidade, fazendo desnecessária a criação de camadas intermediárias (Ex.: Envelope SOAP) para encapsular os dados;5m

32
Q

Realizando Requisições REST

A

REST requer que um cliente faça uma solicitação ao servidor para recuperar ou modificar dados no servidor. Uma solicitação geralmente consiste em:
Um verbo HTTP, que define o tipo de operação a ser executada;
Um cabeçalho, que permite ao cliente passar informações sobre o pedido;
Um caminho para um recurso;
Um corpo de mensagem opcional contendo dados;Verbos HTTP
Existem 4 verbos HTTP básicos que usamos em pedidos para interagir com recursos em um sistema REST:
GET – recupera um recurso específico (por id) ou uma coleção de recursos;
POST – cria um recurso;
PUT – atualiza um recurso específico por id;
DELETE – remove um recurso específico por id;

33
Q

VERBO REST HTTP

A

GET – returna 200 (OK)
POST – returna 201 (CREATED)
PUT – returna 200 (OK)
DELETE – returna 204 (NO CONTENT) Se a operação falhar, retorne o código de status mais específico possível, correspondente ao problema encontrado

34
Q

XML

A

XML (Extensible Markup Language) é uma recomendação da W3C para gerar linguagens de marcação para necessidades especiais.

É um dos subtipos da SGML (acrônimo de Standard Generalized Markup Language ou Linguagem Padronizada de Marcação Genérica) capaz de descrever diversos tipos de dados. Seu propósito principal é a facilidade de compartilhamento de informações por intermédio da internet.

35
Q

XML Schema (WSD)

A

XML Schema é uma linguagem baseada no formato XML para definição de regras de validação (“esquemas”) em documentos no formato XML. Foi a primeira linguagem de esquema para XML a obter o status de recomendação por parte do W3C.
XML Schema é comumente conhecido como XML Schema Definition (XSD)
Esta linguagem é uma alternativa ao DTD, cuja sintaxe não é baseada no formato XML
Elemento é o elemento raiz de todo esquema XML:


Ao contrário da sintaxe do DTD, a sintaxe do XML Schema é um XML bem formado, tornando possível usar ferramentas XML para editá-lo;

36
Q

A diferença crítica entre DTDs e XML Schema

A

Esquemas XML são gravados em XML enquanto DTD são derivados da sintaxe SGML.
Esquemas XML definem tipos de dados para elementos e atributos, enquanto o DTD não suporta tipos de dados.
Esquemas XML permitem o suporte a espaços para nome, enquanto o DTD não.
Os esquemas XML definem o número e a ordem dos elementos filhos, enquanto o DTD não.
Os esquemas XML podem ser manipulados por você mesmo com o XML DOM, mas não é possível no caso de DTD.
usando o esquema XML, o usuário não precisa aprender um novo idioma, mas trabalhar com DTD é difícil para um usuário.
O esquema XML fornece comunicação segura de dados, ou seja, o remetente pode descrever os dados de uma maneira que o destinatário entenda, mas no caso de dados DTD podem ser mal interpretados pelo destinatário.
Esquemas XML são extensíveis enquanto DTD não é extensível.

37
Q

Java (plataforma de software)

A

Java é o ambiente computacional, ou plataforma, criada pela empresa estadunidense Sun Microsystems, e vendida para a Oracle depois de alguns anos. A plataforma permite desenvolver programas utilizando a linguagem de programação Java. Uma grande vantagem da plataforma é a de não estar presa a um único sistema operacional ou hardware, pois seus programas rodam através de uma máquina virtual que pode ser emulada em qualquer sistema que suporte a linguagem C++

38
Q

Java (linguagem de programação)

A

Java é uma linguagem de programação orientada a objetos desenvolvida na década de 90 por uma equipe de programadores chefiada por James Gosling, na empresa Sun Microsystems. Em 2008 o Java foi adquirido pela empresa Oracle Corporation. Diferente das linguagens de programação modernas, que são compiladas para código nativo, a linguagem Java é compilada para um bytecode que é interpretado por uma máquina virtual (Java Virtual Machine, mais conhecida pela sua abreviação JVM). A linguagem de programação Java é a linguagem convencional da Plataforma Java, mas não é a sua única linguagem. J2ME Para programas e jogos de computador, celular, calculadoras, ou até mesmo o rádio do carro.

39
Q

A linguagem Java foi projetada tendo em vista os seguintes objetivos:

A

Orientação a objetos - Baseado no modelo de Simular;
Portabilidade - Independência de plataforma - “escreva uma vez, execute em qualquer lugar” (“write once, run anywhere”);
Recursos de Rede - Possui extensa biblioteca de rotinas que facilitam a cooperação com protocolos TCP/IP, como HTTP e FTP;
Segurança - Pode executar programas via rede com restrições de execução.

40
Q

O universo Java é um vasto conjunto de tecnologias

A
Java SE (Java Platform, Standard Edition). É a base da plataforma. Inclui o ambiente de execução e as bibliotecas comuns.
Java EE (Java Platform, Enterprise Edition). A edição voltada para o desenvolvimento de aplicações corporativas e para internet.
Java ME (Java Platform, Micro Edition). A edição para o desenvolvimento de aplicações para dispositivos móveis e embarcados.
41
Q

Java Platform Enterprise Edition

A

Java Platform, Enterprise Edition (ou Java EE, ou EE, ou em português Plataforma Java, Edição Empresarial) é uma plataforma de programação para servidores na linguagem de programação Java.A plataforma fornece uma API e um ambiente de tempo de execução para o desenvolvimento e execução de softwares corporativos, incluindo serviços de rede e web, e outras aplicações de rede de larga escala, multicamadas, escaláveis, confiáveis e seguras. Java EE estende a Java Platform, Standard Edition (Java SE), fornecendo uma API para mapeamento objeto-relacional, arquiteturas multicamada e distribuídas e web services. A plataforma incorpora um desenho amplamente baseado em componentes modulares rodando em um servidor de aplicação. Softwares para Java EE são primeiramente desenvolvidos na linguagem de programação Java

42
Q

JEE Containers e APIs

A

JDBC (Java Database Connectivity), utilizado no acesso a bancos de dados;
Servlets, são utilizados para o desenvolvimento de aplicações Web com conteúdo dinâmico. Ele contém uma API que abstrai e disponibiliza os recursos do servidor Web de maneira simplificada para o programador.
JSP (Java Server Pages), uma especialização do servlet que permite que conteúdo dinâmico seja facilmente desenvolvido.
JTA (Java Transaction API), é uma API que padroniza o tratamento de transações dentro de uma aplicação Java.
EJBs (Enterprise Java Beans), utilizados no desenvolvimento de componentes de software. Eles permitem que o programador se concentre nas necessidades do negócio do cliente, enquanto questões de infra-estrutura, segurança, disponibilidade e escalabilidade são responsabilidade do servidor de aplicações.
JCA (Java Connector Architecture), é uma API que padroniza a ligação a aplicações legadas.
JPA (Java Persistence API), é uma API que padroniza o acesso a banco de dados através de mapeamento Objeto/Relacional dos Enterprise Java Beans.
JMS (Java Message Service), é uma API para middleware orientado a mensagens. Através dela é possível realizar a comunicação de forma assíncrona entre duas ou mais aplicações.
JSF (JavaServer Faces), é uma especificação Java para a construção de interfaces de usuário baseadas em componentes para aplicações web.

43
Q

Enterprise JavaBeans

A
Enterprise JavaBeans (EJB) é um componente da plataforma JEE que roda em um container de um servidor de aplicação. Seu principal objetivo consiste em fornecer um desenvolvimento rápido e simplificado de aplicações Java, com base em componentes distribuídos, transacionais, seguros e portáveis.
O componente EJB possui 3 (três) tipos fundamentais de beans: Entity beans, Session Beans e Message Driven Beans.
44
Q

Java Persistence API

A

Java Persistence API (ou simplesmente JPA) é uma API padrão da linguagem Java que descreve uma interface comum para frameworks de persistência de dados. A JPA define um meio de mapeamento objeto-relacional para objetos Java simples e comuns (POJOs), denominados beans de entidade. Diversos frameworks de mapeamento objeto/relacional como o Hibernate implementam a JPA. Também gerencia o desenvolvimento de entidades do Modelo Relacional usando a plataforma nativa Java SE e Java EE.

45
Q

JMS

A

Java Message Service, ou JMS, é uma API da linguagem Java para middleware orientado a mensagens. Através da API JMS, duas ou mais aplicações podem se comunicar por mensagens.
A API JMS suporta dois modelos de troca de mensagens:
*ponto a ponto ou modelo de filas
*modelo publish/subscribe

46
Q

Java Server Faces

A

JavaServer Faces (JSF) é uma especificação Java para a construção de interfaces de usuário baseadas em componentes para aplicações web. Possui um modelo de programação dirigido a eventos, abstraindo os detalhes da manipulação dos eventos e organização dos componentes, permitindo que o programador se concentre na lógica da aplicação.
O framework JSF permite a inserção, via IDE, de:
Folhas de estilo (CSS);
Comandos em JavaScript;
Metodologia Ajax;

47
Q

Java Server Pages (JSP)

A

JavaServer Pages (JSP) é uma tecnologia que ajuda os desenvolvedores de software a criarem páginas web geradas dinamicamente baseadas em HTML, XML ou outros tipos de documentos. Lançada em 1999 pela Sun Microsystems, JSP é similar ao PHP, mas usa a linguagem de programação Java.

Para implantar e executar JavaServer Pages, um servidor web compatível com um container servlet, como Apache Tomcat, Jetty ou Glassfish, é requerido.

Por ser baseada na linguagem de programação Java, tem a vantagem da portabilidade de plataforma, que permite a sua execução em diversos sistemas operacionais, como o Windows da Microsoft, Unix e Linux.

Esta tecnologia permite ao desenvolvedor de páginas para Internet produzir aplicações que acessem o banco de dados, manipulem arquivos no formato texto, capturem informações a partir de formulários e captem informações sobre o visitante e sobre o servidor.

Uma página criada com a tecnologia JSP, após instalada em um servidor de aplicação compatível com a tecnologia Java EE, é transformada em um Servlet.

48
Q

JavaBeans

A

JavaBeans são componentes de software escritos na linguagem de programação Java. Segundo a especificação da Sun Microsystems os JavaBeans são “componentes reutilizáveis de software que podem ser manipulados visualmente com a ajuda de uma ferramenta de desenvolvimento”.
Apesar da semelhança nos nomes, os JavaBeans não devem ser confundidos com os Enterprise JavaBeans, ou EJBs, que são componentes utilizados em servidores e são parte da plataforma Java EE.

49
Q

Java Transaction API

A

A Java Transaction API, ou JTA, é uma API pertencente à plataforma Java EE. Ela disponibiliza uma interface para a demarcação de transações em aplicações escritas na linguagem Java. Esta interface é a mesma independentemente da forma como foi implementado o monitor de transação. A JTA é um padrão definido pela JSR 907.
A JTA é uma API de alto nível utilizada por desenvolvedores de aplicações para a plataforma Java. Através da interface JTA o desenvolvedor interage com o monitor de transação, normalmente implementado em um servidor de aplicações, para determinar as fronteiras de uma transação dentro de uma aplicação, isto é, através da interface JTA ele define o início da transação e determina se ela será confirmada (commit) ou não (rollback).

50
Q

JDBC

A

Java Database Connectivity ou JDBC é um conjunto de classes e interfaces (API) escritas em Java que fazem o envio de instruções SQL para qualquer banco de dados relacional; Api de baixo nível e base para api’s de alto nível; Amplia o que você pode fazer com Java; Possibilita o uso de bancos de dados já instalados; Para cada banco de dados há um driver JDBC que pode cair em quatro categorias.

51
Q

Java Transaction Service

A

O Java Transaction Service (JTS) é uma implementação de um gerenciador de transações distribuídas que suporta a interface definida pela API JTA e que internamente suporta a especificação Object Transaction Service da OMG. A comunicação entre diferentes gerenciadores de transação JTS é realizada através do protocolo IIOP.

O JTS disponibiliza o suporte transacional para os elementos envolvidos em transações distribuídas: o servidor de aplicação, o gerenciador de recursos compatível com o padrão XA (um sistema de gerenciamento de banco de dados, por exemplo) e o Communication Resource Manager (que permite o participação de outros gerenciadores na transação).

52
Q

Java Development Kit

A

Java Development Kit (JDK) significa Kit de Desenvolvimento Java, e é um conjunto de utilitários que permitem criar sistemas de software para a plataforma Java. É composto por compilador e bibliotecas.

53
Q

Máquina virtual Java

A

Máquina virtual Java (Java Virtual Machine, JVM) é um programa que carrega e executa os aplicativos Java, convertendo os bytecodes em código executável de máquina. A JVM é responsável pelo gerenciamento dos aplicativos, à medida que são executados.
Graças à máquina virtual Java, os programas escritos em Java podem funcionar em qualquer plataforma de hardware e software que possua uma versão da JVM, tornando assim essas aplicações independentes da plataforma onde funcionam.
A máquina virtual Java é um computador abstrato (virtual) definido por uma especificação. O algoritmo de coleta de lixo usado e qualquer otimização interna das instruções da máquina virtual Java (sua tradução em código de máquina) não são especificados.

54
Q

Bytecode Java

A

O código de um programa de computador escrito na linguagem Java é compilado para uma forma intermediária de código denominada bytecode, que é interpretada pelas Máquinas Virtuais Java (JVMs). É essa característica que faz com que os programas Java sejam independentes de plataforma, executando em qualquer sistema que possua uma JVM. Cada opcode tem o tamanho de um byte — daí o seu nome — e assim o número de diferentes códigos de operação está limitado a 256

55
Q

Java Platform, Standard Edition

A

O Java SE (Java Platform, Standard Edition) é uma ferramenta de desenvolvimento para a plataforma Java. Ela contém todo o ambiente necessário para a criação e execução de aplicações Java, incluindo a máquina virtual Java (JVM), o compilador Java, as APIs do Java e outras ferramentas utilitárias para uma melhor funcionalidade. O Java SE, até 2006, era conhecido como J2SE.

A plataforma Java EE (Java Platform, Enterprise Edition) inclui toda a funcionalidade existente na plataforma Java SE mais todas as funcionalidades necessárias para o desenvolvimento e execução de aplicações em um ambiente corporativo.

56
Q

Java Platform, Micro Edition

A

Java Plataform, Micro Edition ou Java ME, é uma tecnologia que possibilita o desenvolvimento de software para sistemas e aplicações embutidas ou embarcados, ou seja, toda aquela que roda em um dispositivo de propósito específico, desempenhando alguma tarefa que seja útil para o dispositivo.
a plataforma Java para dispositivos compactos, como celulares, PDAs, controles remotos, e uma outra gama de dispositivos. Java ME é uma coleção de APIs do Java definidas através da JCP (Java Community Proccess).

57
Q

Java Runtime Environment

A

Java Runtime Environment (JRE) significa Ambiente de Tempo de Execução Java, e é utilizado para executar as aplicações da plataforma Java. É composto por bibliotecas (APIs) e pela Máquina virtual Java (JVM).

58
Q

Servlet

A

Servlet (servidorzinho) é uma classe Java usada para estender as funcionalidades de um servidor. Poderem responder a quaisquer tipos de requisições, eles normalmente são usados para estender as aplicações hospedadas por servidores web, imaginados como Applets Java que rodam em servidores
Cada servlet é, portanto, um objeto Java que recebe tais requisições (request) e produz algo (response), como uma página HTML dinamicamente gerada
*Conteúdo dinâmico normalmente em HTML processando requisições/respostas
A API Java Servlet (do pacote javax.servlet) proporciona ao desenvolvedor a possibilidade de adicionar conteúdo dinâmico em um servidor web usando a plataforma Java.
Esta tecnologia disponibiliza ao programador da linguagem Java uma interface para o servidor web (ou servidor de aplicação), através de uma API. As aplicações baseadas no Servlet geram conteúdo dinâmico .
Também pode ser definido como um componente semelhante um servidor, que gera dados HTML e XML para a camada de apresentação de uma aplicação Web. Ele processa dinamicamente requisições e respostas. doGET doPOST doDELETE doPUT

59
Q

Eclipse

A

Eclipse é uma IDE para desenvolvimento Java, porém suporta várias outras linguagens a partir de plugins como C/C++,PHP,ColdFusion, Python, Scala e Kotlin. Ele foi feito em Java e segue o modelo open source de desenvolvimento de software.

O projeto Eclipse foi iniciado na IBM que desenvolveu a primeira versão do produto e doou-o como software livre para a comunidade. O gasto inicial da IBM no produto foi de mais de 40 milhões de dólares Hoje, o Eclipse é o IDE Java mais utilizado no mundo. Possui como característica marcante o uso da SWT e não do Swing como biblioteca gráfica, a forte orientação ao desenvolvimento baseado em plug-ins e o amplo suporte ao desenvolvedor com centenas de plug-ins que procuram atender as diferentes necessidades de diferentes programadores.

60
Q

Arquitetura de camadas JEE - CLIENTE

A

É a primeira camada da aplicação, aquela que geralmente representa algum recurso gráfico de acesso feito pelo usuário. Nessa camada estão localizados elementos como browsers, outra aplicações, sistemas JSE, celulares, GPS, dentre outros.

61
Q

Arquitetura de camadas JEE - APRESENTAÇÃO

A

Essa é uma das camadas mais importantes das aplicações, web ou não. É nela onde serão produzidas e enviadas todas as requisições à lógica Java. Nela também se concentram o gerenciamento de sessões, preferências salvas (cookies), navegabilidade, redirecionamento, single sign-on, eventos e efeitos gráficos. E quando falamos sobre lógica de negócio, coisas como adsense, pop-ups e outros recursos também podem ser usados dependendo da estrutura e do tipo de cliente esteja usando para apresentar a aplicação.

62
Q

Arquitetura de camadas JEE - CAMADA DE NEGÓCIO

A

Essa camada representa o intermédio das demais na aplicação. É ela quem liga tudo que acontece na tela ao banco de dados, e além disso tem o papel de fazer validações, conversões, informes e críticas, tratamento de exceções, e etc.

É nessa camada também que começa a ser pensado a divisão do aplicativo em partes menores, a modularização. Modularizar a aplicação em componentes torna o reaproveitamento de código bem mais objetivo. A partir dessa abordagem também conseguimos construir software com baixo acoplamento e razoável coesão

63
Q

Arquitetura de camadas JEE - CAMADA DE PERSISTÊNCIA

A

Essa camada sempre ganha uma atenção especial na aplicação, uma vez que é a partir dela que temos disponíveis as funcionalidades de persistência (DMLs e DDLs) na base de dados. Persistência essa que faz comunicação direta, geralmente, com a camada de negócio.

64
Q

Ciclo de Vida do Desenvolvimento Seguro - SDL

A

processo que consiste na inserção de várias atividades e produtos relacionados a segurança na fase de desenvolvimento de software, como modelagem de ameaças, análise estática do código com uso de ferramentas, revisão de código, testes de segurança direcionados e uma revisão final de segurança, minimizando o surgimento de vulnerabilidades

65
Q

SDL

A

Foi proposto e utilizado inicialmente pela Microsoft em janeiro de 2004 para reduzir os custos de manutenção de software e aumentar a confiabilidade do software no que se relaciona a bugs de segurança. Baseia-se no clássico modelo em espiral

66
Q

SDL conjunto SD3+C - Seguro por Projeto (Design)

A

a arquitetura, o projeto e a implementação do software devem ser executados de forma a protegê-lo e proteger as informações que ele processa, além de resistir a ataques.

67
Q

SDL conjunto SD3+C - Seguro por Padrão (Default)

A

visto que na prática é impossível obter uma segurança perfeita os projetistas devem considerar a possibilidade de haver falhas de segurança.

68
Q

SDL conjunto SD3+C - Seguro na Implantação (Deployment)

A

o software deve conter ferramentas e orientação que ajudem os usuários finais e/ou administradores a usá-lo com segurança, assim como a implantação das atualizações deve ser fácil.

69
Q

SDL conjunto SD3+C - Comunicações

A

s desenvolvedores de software devem estar preparados para a descoberta de vulnerabilidades do produto e devem comunicar-se de maneira aberta e responsável com os usuários finais e/ou com os administradores para ajudá-los a tomar medidas de proteção (como instalar patches ou implantar soluções alternativas).

70
Q

FASES SDL - Formação

A

Essa fase é um pré-requisito para a implementação do SDL e visa a formação de um núcleo de treinamento e atualização. É realizada uma atualização sobre os princípios básicos de segurança e tendências recentes de segurança e privacidade, assim como treinamento de conceitos fundamentais para a construção de um software melhor. Entre estes conceitos estão incluídos projeto seguro, modelagem de ameaças, codificação segura, testes de segurança e melhores práticas para privacidade.

É ainda nessa fase que é definida a freqüência mínima de treinamento e o limiar mínimo aceitável para grupos de treinamento.

71
Q

FASES SDL - Requisitos

A

Nessa fase definem-se portões de qualidade e analisa os riscos de segurança e privacidade. O time de desenvolvimento identifica requerimentos de segurança e privacidade,

72
Q

FASES SDL - Projeto

A

Nessa fase é feita a modelagem de ameaças e a análise de superfície de ataque (ou vulnerabilidade). A modelagem de ameaças consiste no levantamento de contra-medidas de segurança que resolvem as ameaças ao software. A análise de superfície de ataque consiste em fazer um levantamento de formas de acesso do aplicativo ou componente.

73
Q

FASES SDL - Implementação

A

Nessa fase são especificadas ferramentas de segurança, listas de verificação, reforçadas funções proibidas e realizada a análise estática, assim como são adotadas as melhores práticas de codificação segura para ajudar a implementar um projeto seguro.

74
Q

FASES SDL - Verificação

A

Nessa fase são realizados testes dinâmicos de difusão (fuzz) e verificados os modelos de ameaças e a superfície de ataque. Os testes de difusão consistem em tomar dados válidos, metamorfoseá-los e depois observar um aplicativo que empregue esses dados, verificando se aplicação se comporta adequadamente ou apresenta algum tipo de falha de segurança. Em sua forma mais simples, pode-se criar uma biblioteca de arquivos válidos que o aplicativo utilize e depois usar uma ferramenta para corromper sistematicamente um arquivo e fazer o aplicativo executá-lo ou processá-lo no verificador de aplicativos com verificação de heap habilitada para ajudar a descobrir mais erros.

75
Q

FASES SDL - Lançamento

A

Nessa fase é definido o plano de resposta, a revisão de segurança final (FSR) e a liberação de arquivo. A FSR é executada pela equipe de segurança central com ajuda da equipe de produto, mas não apenas pela equipe de produto. No final do processo FSR, as descobertas são anotadas e é tomada uma decisão sobre o lançamento do software ou o retrabalho de seções.

76
Q

FASES SDL - Resposta

A

Nessa fase é realizada a execução de resposta, que consiste de duas partes principais:

responder a defeitos de segurança e trabalhar com pessoas que descobrem problemas de segurança no código.
aprender com os erros, através da análise e documentação da causa dos defeitos.