23. Anexos
Apresentamos aqui como instalar as ferramentas utilizadas neste documento em computadores com Windows 7 ou 8. As capturas de ecrã referem-se geralmente às versões de 64 bits do SGBD e das ferramentas instaladas. O leitor deverá adaptar-se ao seu próprio ambiente.
23.1. Instalação de um JDK
No URL [http://www.oracle.com/technetwork/java/javase/downloads/index.html] (outubro de 2014), encontra-se o JDK mais recente. A partir de agora, designaremos por <jdk-install> a pasta de instalação do JDK.
23.2. Instalação do Maven
O Maven é uma ferramenta de gestão de dependências de um projeto Java e muito mais. Está disponível (outubro de 2014) no URL [http://maven.apache.org/download.cgi].
Descarregue e descompacte o arquivo. Chamaremos <maven-install> à pasta de instalação do Maven.
- No [1], o ficheiro [conf / settings.xml] configura o Maven;
Nele encontram-se as seguintes linhas:
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
O valor predefinido da linha 4 pode causar problemas a alguns programas que utilizam o Maven, se, tal como no meu caso, o seu {user.home} tiver um espaço no seu caminho (por exemplo, [C:\Users\Serge Tahé]). Vamos indicar (linha 7) outra pasta para o repositório local do Maven:
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:\Programs\devjava\maven\.m2\repository</localRepository>
Na linha 7, evite um caminho que contenha espaços.
Vamos instalar o SpringSource Tool Suite [http://www.springsource.com/developer/sts] (outubro de 2014), um Eclipse pré-equipado com vários plugins relacionados com o framework Spring e também com uma configuração Maven pré-instalada.
- aceda ao site do SpringSource Tool Suite (STS) [1], para descarregar a versão atual do STS [2A] [2B],
- o ficheiro descarregado é um instalador que cria a estrutura de ficheiros [3A] [3B]. No [4], executa-se o executável,
- em [5], a janela de trabalho do IDE após fechar a janela de boas-vindas. Em [6], é exibida a janela dos servidores de aplicações,
- em [7], a janela dos servidores. Está registado um servidor. Trata-se de um servidor VMware compatível com o Tomcat.
É necessário indicar ao STS a pasta de instalação do Maven:
- no [1-2], configura-se o STS;
- no [3-4], adiciona-se uma nova instalação do Maven;
- em [5], indica-se a pasta de instalação do Maven;
- no [6], conclui-se o assistente;
- em [7], define-se a nova instalação do Maven como a instalação predefinida;
- em [8-9], verifica-se o repositório local do Maven, a pasta onde serão colocadas as dependências que serão descarregadas e onde STS colocará os artefactos que serão construídos;
É também necessário selecionar um JDK (Java Development Kit) para executar tanto os projetos Eclipse sem como com o Maven [1-5].
Com o [4], é possível adicionar JDK (Java Development Kit) ou JRE (Java Runtime Environment). Este último consegue executar ficheiros .class, mas não consegue compilar os ficheiros .java para os produzir. O JDK consegue fazer ambas as coisas. Escolher-se-á um JDK porque certas operações do Maven requerem um JDK.
Para criar um projeto Eclipse, deve-se proceder da seguinte forma:
- em [3], atribua um nome ao projeto;
- em [4], selecione uma pasta existente e vazia;
- em [5], o projeto criado;
- em [5-8], crie um pacote. Um pacote é uma pasta que contém código Java. Duas classes podem ter o mesmo nome se pertencerem a pacotes diferentes. Num projeto, não pode haver dois pacotes com o mesmo nome. Assim, não é possível utilizar um nome de pacote que já exista numa das dependências do projeto. Uma empresa utilizará como nome de pacote um nome que especifique a empresa, o projeto e as diferentes ramificações do mesmo;
- em [9], atribua um nome ao pacote;
- em [10], o pacote criado;
- em [11-13], cria-se uma classe no pacote que foi criado;
- em [14], atribua um nome à classe (deve respeitar a norma CamelCase — cada palavra do nome deve começar por uma letra maiúscula seguida de letras minúsculas);
- em [15], verifique o pacote;
- em [16], assinale a caixa de seleção. Esta opção solicita que o método estático [main] seja gerado. Este método torna uma classe executável, ou seja, a primeira classe a ser executada num projeto;
- na classe [17], assim criada;
Introduza no método [main] o código seguinte, que apresenta um texto na consola:
package st.istia;
public class Test01 {
public static void main(String[] args) {
System.out.println("test01");
}
}
- em [18-20], execute a classe. O seu método [main] será então executado;
- em [21-22], o resultado da aplicação;
Se a vista [Console] não estiver presente, proceda da seguinte forma [1-4]:
É possível que, ao importar um projeto Eclipse, este apresente erros. Tal pode dever-se a uma configuração incorreta do projeto. Para corrigir o erro (caso exista), proceda da seguinte forma:
- no [1], altere o [Build Path] do projeto;
- para [2], o projeto está configurado para utilizar um JVM 1.5;
- em [3], elimine esta dependência;
- em [4], adicione uma nova dependência;
- no [5], adiciona-se um JVM;
- no [6], selecione o JVM do item;
Feito isto, valida-se tudo e passa-se para a propriedade [Java compiler] do projeto [7]:
- em [8], solicita-se ao compilador que aceite todas as características da linguagem Java até à versão 1.7 (ou 1.8), inclusive;
- em [9], valida-se;
- em [10], o projeto assim reconfigurado já não deve apresentar erros;
Além disso, o projeto importado pode utilizar uma codificação de caracteres UTF-8. Siga estes passos para definir esta codificação no projeto importado [1-4]:
Além disso, pode ser útil desativar a verificação ortográfica no projeto para evitar que os comentários em francês sejam sublinhados como incorretos. Siga os passos [1-4] abaixo:
O SGBD MySQL5 Community Edition pode ser encontrado (junho de 2015) no URL [https://dev.mysql.com/downloads/mysql/]:
A instalação decorre da seguinte forma:
- no [8], foi utilizada a palavra-passe [root]. Neste documento, as credenciais do administrador do SGBD MySQL são [root / root];
Depois de instalar o MySQL 5, aceda à página de gestão de serviços do Windows:
- [1]: ícone do Windows no canto inferior esquerdo;
- em [8], defina o serviço [MySQL56] para arranque manual, para que não consuma recursos desnecessariamente. Poderá iniciá-lo a partir da página de serviços sempre que for necessário;
23.5. Instalação do EMS e do MyManager
O site [http://www.sqlmanager.net/en/] disponibiliza clientes gratuitos para gerir seis tipos de SGBD:
A vantagem é que todos apresentam a mesma interface para gerir os SGBD. É ideal para este documento, em que se pretende gerir os seis SGBD. Não é necessário aprender a utilizar um novo cliente quando se muda de SGBD. Encontramo-los todos no URL [http://www.sqlmanager.net/download/]. Iremos descarregar as versões gratuitas denominadas lite:
As versões URL disponíveis para download são, atualmente (maio de 2015), as seguintes:
Ao instalar, por exemplo, o cliente MyManager a partir do MySQL5, obtém-se a seguinte estrutura de diretórios:
- o executável encontra-se em [2];
- as etapas [3-8] mostram como ligar o [MyManager] a uma das bases de dados do MySQL;
- em [4], a palavra-passe é [root];
23.6. Instalação do SGBD Oracle Database Express Edition 11g Release 2
O SGBD Oracle Database Express Edition 11g Release 2 está disponível no URL (junho de 2015): [http://www.oracle.com/technetwork/database/database-techno logies/express-edition/downloads/index.html]:
A instalação decorre da seguinte forma:
- em [6], introduz-se a palavra-passe [system]. Neste documento, as credenciais do administrador Oracle são [system / system];
A instalação configura o Oracle como um serviço do Windows. São instalados vários serviços que, por predefinição, estão todos configurados para arrancar automaticamente. A primeira coisa a fazer é colocá-los no modo manual:
Dois serviços devem ser iniciados:
- [OracleXETNSListener], que escuta na porta 1521 os pedidos feitos ao SGBD;
- [OracleServiceXE], que é o SGBD;
Para administrar o Oracle, vamos utilizar o cliente [OraManager] (parágrafo 23.5). Para que este possa ser utilizado, é necessário instalar previamente o pacote [Oracle Database Express Edition 11g Release 2 Client], disponível no URL (junho de 2015): [http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win32soft-098987.html]. É necessário descarregar a versão de 32 bits, uma vez que o [OraManager] é um cliente de 32 bits:
A instalação deste pacote é feita da seguinte forma:
- no [3], indique a pasta <oracleXE-install>\app\oracle\product\11.2.0\client_1, em que <oracleXE-install> é a pasta onde instalou o Oracle Express;
Agora, vamos ligar o cliente [OraManager] ao Oracle SGBD:
- em [2], o nome do grupo pode ser escolhido livremente;
- em [4], é obrigatório indicar XE;
- em [5], o alias é livre;
- em [6], os identificadores são [system / system];
23.7. Instalação do SGBD PostgreSQL 9.4
O SGBD PostgreSQL 9.4 está disponível no URL (junho de 2015): [http://www.enterprisedb.com/products-services-training/pgdownload#windows]:
A instalação decorre da seguinte forma:
- no [4], a palavra-passe é postgres. Neste documento, as credenciais do administrador do SGBD PostgreSQL são [postgres / postgres];
A instalação configura o PostgreSQL como um serviço do Windows com arranque automático. A primeira coisa a fazer é colocá-lo no modo manual:
Agora, vamos ligar o cliente [PgManager] (ver parágrafo 23.5) ao SGBD PostgreSQL:
- no [2], os identificadores são [postgres / postgres];
- em [3], estabelece-se ligação à base de dados [postgres];
23.8. Instalação do SGBD DB2 Express
O SGBD DB2 Express está disponível no URL (junho de 2015): [http://www-01.ibm.com/software/data/db2/express-c/download.html]:
A instalação decorre da seguinte forma:
- em [9], a palavra-passe é [db2admin]. Neste documento, as credenciais do administrador do SGBD são [db2admin / db2admin];
Nota: pode ser tentador saltar esta etapa. Não o faça. Esta etapa irá criar a pasta onde serão armazenadas as bases de dados DB2 que iremos criar.
- foi criada uma pasta [d:\DB2] [1];
- foi criada a base de dados [SAMPLE] na pasta [d:\db2\node0000];
A instalação configura o DB2 como um serviço do Windows com arranque automático. A primeira coisa a fazer é colocá-lo no modo manual:
Faça isto para todos os serviços [DB2*] acima referidos. Apenas o serviço [DB2 - DB2COPY1] precisa de ser iniciado para efeitos deste documento.
Agora, vamos ligar o cliente [Db2Manager] (ver parágrafo 23.5) ao SGBD e ao DB2:
- em [1], utilizar os identificadores [db2admin / db2admin];
23.9. Instalação do SGBD SQL Server 2014 Express
O SGBD SQL Server 2014 Express está disponível no URL (junho de 2015): [http://www.microsoft.com/fr-fr/server-cloud/products/sql-server/]:
A instalação decorre da seguinte forma:
- no [1], introduza uma palavra-passe qualquer. Iremos alterá-la posteriormente;
Em seguida, iniciamos o serviço do servidor SQL:
Feito isto, iniciamos o cliente [Microsoft SQL Server Management Studio], que foi instalado em simultâneo com o SGBD (ver Menu Iniciar):
Poderíamos utilizar este cliente para administrar o servidor SQL. No entanto, por uma questão de uniformidade com os clientes dos outros SGBD, utilizaremos o cliente [MsManager] (ver parágrafo 23.5).
- no [1], anote o nome do SGBD;
- no [2], foi definida a palavra-passe msde. Neste documento, as credenciais do administrador do SGBD são [sa / msde];
Feito isto, executamos a ferramenta [Gestionaire de configuration SQL Server], que foi instalada em simultâneo com o SGBD (ver Menu Iniciar):
- Por predefinição, no [2], a comunicação TCP/IP não está ativada. Para este documento, é necessário ativá-la no [3];
- em [4], ainda para efeitos deste documento, é necessário indicar que o SGBD aguarda os pedidos dos clientes na porta 1433. O valor de [Ports TCP dynamiques] deve estar vazio;
Feito isto, inicia-se o cliente [MsManager] (ver parágrafo 23.5):
- no [3], introduza o nome anotado no [1];
- em [4], os identificadores são [sa / msde];
23.10. Instalação do SGBD Firebird
O SGBD Firebird 2.5.4 está disponível a partir do URL (junho de 2015): [http://www.firebirdsql.org/en/firebird-2-5-4/]:
A instalação decorre da seguinte forma:
Feito isto, vamos verificar o modo de execução do serviço do Windows criado:
Vamos agora ligar o cliente [IBManager] (ver parágrafo 23.5) ao Firebird SGBD instalado:
- no [1], a palavra-passe é masterkey;
23.11. Instalação do plugin do Chrome [Advanced Rest Client]
Neste documento, utiliza-se o navegador Chrome da Google (http://www.google.fr/intl/fr/chrome/browser/). Iremos adicionar-lhe a extensão [Advanced Rest Client]. Para tal, pode-se proceder da seguinte forma:
- a aplicação fica então disponível para download:
- Para a obter, terá de criar uma conta Google. A aplicação [Google Web Store] solicita, em seguida, a confirmação da aplicação [1]:
- Em [2], a extensão adicionada está disponível na opção [Applications] [3]. Esta opção é apresentada em cada novo separador que criar (CTRL-T) no navegador.
23.12. Gestão do jSON em Java
De forma tra nsparente para o programador, o framework [Spring MVC] utiliza a biblioteca jSON [Jackson]. Para ilustrar o que é o jSON (JavaScript Object Notation), apresentamos aqui um programa que serializa objetos em jSON e faz o inverso, deserializando as cadeias jSON produzidas para recriar os objetos iniciais.
A biblioteca «Jackson» permite construir:
- a cadeia jSON de um objeto: new ObjectMapper().writeValueAsString(object);
- um objeto a partir de uma cadeia jSON: new ObjectMapper().readValue(jsonString, Object.class).
Ambos os métodos podem lançar uma exceção. Aqui está um exemplo.
O projeto acima é um projeto Maven com o seguinte ficheiro [pom.xml];
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>istia.st.pam</groupId>
<artifactId>json</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.3.3</version>
</dependency>
</dependencies>
</project>
- linhas 12-16: a dependência que inclui a biblioteca «Jackson»;
A classe [Personne] é a seguinte:
package istia.st.json;
public class Personne {
// dados
private String nom;
private String prenom;
private int age;
// construtores
public Personne() {
}
public Personne(String nom, String prénom, int âge) {
this.nom = nom;
this.prenom = prénom;
this.age = âge;
}
// assinatura
public String toString() {
return String.format("Personne[%s, %s, %d]", nom, prenom, age);
}
// getters e setters
...
}
A classe [Main] é a seguinte:
package istia.st.json;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class Main {
// a ferramenta de serialização/desserialização
static ObjectMapper mapper = new ObjectMapper();
public static void main(String[] args) throws IOException {
// criação de uma pessoa
Personne paul = new Personne("Denis", "Paul", 40);
// exibição jSON
String json = mapper.writeValueAsString(paul);
System.out.println("Json=" + json);
// instanciação de Pessoa a partir do JSON
Personne p = mapper.readValue(json, Personne.class);
// exibição de um utilizador
System.out.println("Personne=" + p);
// uma tabela
Personne virginie = new Personne("Radot", "Virginie", 20);
Personne[] personnes = new Personne[]{paul, virginie};
// exibição de JSON
json = mapper.writeValueAsString(personnes);
System.out.println("Json personnes=" + json);
// dicionário
Map<String, Personne> hpersonnes = new HashMap<String, Personne>();
hpersonnes.put("1", paul);
hpersonnes.put("2", virginie);
// exibição de JSON
json = mapper.writeValueAsString(hpersonnes);
System.out.println("Json hpersonnes=" + json);
}
}
A execução desta classe produz a seguinte saída no ecrã:
| Json={"nom":"Denis","prenom":"Paul","age":40}
Personne=Personne[Denis, Paul, 40]
Json personnes=[{"nom":"Denis","prenom":"Paul","age":40},{"nom":"Radot","prenom":"Virginie","age":20}]
Json hpersonnes={"2":{"nom":"Radot","prenom":"Virginie","age":20},"1":{"nom":"Denis","prenom":"Paul","age":40}}
|
Do exemplo, destaca-se:
- o objeto [ObjectMapper] necessário para as transformações jSON / Objeto: linha 11;
- a transformação [Personne] --> jSON: linha 17;
- a transformação jSON --> [Personne]: linha 20;
- a exceção [IOException] lançada pelos dois métodos: linha 13.