23. Załączniki
Poniżej przedstawiamy instrukcję instalacji narzędzi wykorzystanych w niniejszym dokumencie na komputerach z systemem Windows 7 lub 8. Zrzuty ekranu zazwyczaj przedstawiają 64-bitowe wersje SGBD i zainstalowanych narzędzi. Czytelnik powinien dostosować instrukcję do własnego środowiska.
23.1. Instalacja JDK
W URL [http://www.oracle.com/technetwork/java/javase/downloads/index.html] (październik 2014 r.) znajduje się najnowsza wersja JDK. W dalszej części folder instalacyjny JDK będziemy nazywać <jdk-install>.
23.2. Instalacja Mavena
Maven to narzędzie do zarządzania zależnościami projektu Java i nie tylko. Jest ono dostępne (październik 2014 r.) pod numerami URL i [http://maven.apache.org/download.cgi].
Pobierz i rozpakuj archiwum. Folder instalacyjny Mavena nazwiemy <maven-install>.
- W pliku [1] plik [conf / settings.xml] konfiguruje Maven;
Znajdują się w nim następujące wiersze:
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
Domyślna wartość w wierszu 4 może stanowić problem dla niektórych programów korzystających z Mavena, jeśli tak jak u mnie wasz {user.home} zawiera spację w ścieżce (na przykład [C:\Users\Serge Tahé]). W wierszu 7 należy wskazać inny katalog jako lokalne repozytorium Mavena:
<!-- 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>
W wierszu 7 należy unikać ścieżki zawierającej spacje.
Zainstalujemy pakiet narzędziowy SpringSource (październik 2014 r.), czyli środowisko Eclipse wyposażone w liczne wtyczki związane z frameworkiem Spring, a także z preinstalowaną konfiguracją Maven.
- przejdź na stronę zestawu narzędzi SpringSource (STS) [1], aby pobrać aktualną wersję STS [2A] [2B],
- pobrany plik jest instalatorem, który tworzy drzewo plików [3A] [3B]. W [4] uruchamia się plik wykonywalny,
- w pliku [5] wyświetla się okno robocze programu IDE po zamknięciu okna powitalnego. W pliku [6] wyświetla się okno serwerów aplikacji,
- w [7] wyświetla się okno serwerów. Zarejestrowano jeden serwer. Jest to serwer VMware zgodny z Tomcatem.
Należy wskazać w STS katalog instalacyjny Mavena:
- w [1-2] konfiguruje się STS;
- w [3-4] dodaje się nową instalację Mavena;
- w [5] należy wskazać folder instalacyjny Mavena;
- w pliku [6] zamykamy kreatora;
- w [7] ustawia się nową instalację Mavena jako domyślną;
- w [8-9] sprawdzamy lokalny repozytorium Mavena, czyli folder, w którym będą umieszczane pobrane zależności oraz w którym STS umieści wygenerowane artefakty;
Należy również wybrać JDK (Java Development Kit), aby móc uruchamiać zarówno projekty Eclipse bez Mavena, jak i z Mavenem [1-5].
Wraz z [4] można dodać JDK (Java Development Kit) lub JRE (Java Runtime Environment). Ten ostatni potrafi uruchamiać pliki .class, ale nie potrafi kompilować plików .java w celu ich wygenerowania. JDK potrafi wykonać obie te czynności. Wybierzemy JDK, ponieważ niektóre operacje Maven wymagają JDK.
Aby utworzyć projekt Eclipse, należy postępować w następujący sposób:
- w [3] nadaj nazwę projektowi;
- w [4] należy wskazać istniejący, pusty katalog;
- w [5] wybierz utworzony projekt;
- w [5-8], utwórz pakiet. Pakiet to folder zawierający kod Java. Dwie klasy mogą nosić tę samą nazwę, jeśli należą do różnych pakietów. W projekcie nie może istnieć dwóch pakietów o tej samej nazwie. Nie można zatem użyć nazwy pakietu, która istnieje w jednej z zależności projektu. Firma jako nazwę pakietu użyje nazwy określającej firmę, projekt i jego różne gałęzie;
- w [9], nadaj nazwę pakietowi;
- w [10] – utworzony pakiet;
- w [11-13] tworzymy klasę w utworzonym pakiecie;
- w [14], nadaj nazwę klasie (musi być zgodna z normą CamelCase – każde słowo w nazwie powinno zaczynać się wielką literą, a pozostałe litery powinny być małe);
- w pliku [15] należy zweryfikować pakiet;
- w polu [16] zaznacz pole wyboru. Służy ono do wygenerowania metody statycznej [main]. Metoda ta sprawia, że klasa staje się wykonywalna, tj. jest pierwszą klasą uruchamianą w projekcie;
- w [17], utworzoną w ten sposób klasę;
W metodzie [main] należy wpisać następujący kod, który wyświetla tekst na konsoli:
package st.istia;
public class Test01 {
public static void main(String[] args) {
System.out.println("test01");
}
}
- w klasie [18-20] uruchom klasę. Zostanie wówczas wykonana jej metoda [main];
- w [21-22] – wynik działania;
Jeśli widok [Console] nie istnieje, należy postępować w następujący sposób: [1-4]:
Podczas importowania projektu Eclipse mogą pojawić się błędy. Może to wynikać z nieprawidłowej konfiguracji projektu. Aby skorygować błąd (jeśli występuje), należy postępować w następujący sposób:
- w pliku [1] zmień plik [Build Path] projektu;
- na [2] – projekt jest skonfigurowany do korzystania z pliku JVM 1.5;
- na [3], usuń tę zależność;
- w pliku [4] dodaj nową zależność;
- w [5] dodaj JVM;
- w [6] wybierz JVM z pozycji;
Po wykonaniu tych czynności zatwierdzamy całość, a następnie przechodzimy do właściwości [Java compiler] projektu [7]:
- w [8] należy zlecić kompilatorowi akceptację wszystkich cech języka Java aż do wersji 1.7 (lub 1.8) włącznie;
- w pliku [9] zatwierdza się zmiany;
- w [10] tak skonfigurowany projekt nie powinien już zawierać błędów;
Ponadto zaimportowany projekt może korzystać z kodowania znaków UTF-8. Aby ustawić to kodowanie w zaimportowanym projekcie [1-4], należy postępować w następujący sposób:
Ponadto warto wyłączyć sprawdzanie pisowni w projekcie, aby komentarze w języku francuskim nie były podkreślane jako błędne. Wykonaj poniższe kroki:
Wersja SGBD MySQL5 Community Edition będzie dostępna (czerwiec 2015 r.) w wersji URL [https://dev.mysql.com/downloads/mysql/]:
Instalacja przebiega w następujący sposób:
- w przypadku pliku [8] użyto hasła [root]. W tym dokumencie identyfikatory administratora SGBD i MySQL to [root / root];
Po zainstalowaniu MySQL 5 należy wyświetlić stronę zarządzania usługami systemu Windows:
- [1]: ikona systemu Windows w lewym dolnym rogu;
- w [8] należy ustawić usługę [MySQL56] na ręczne uruchamianie, aby nie zużywała niepotrzebnie zasobów. Usługę tę będzie można uruchamiać ze strony usług za każdym razem, gdy będzie to konieczne;
23.5. Instalacja EMS MyManager
Witryna [http://www.sqlmanager.net/en/] oferuje bezpłatne klienckie do zarządzania sześcioma typami SGBD:
Zaletą jest to, że wszystkie one mają ten sam interfejs do zarządzania plikami SGBD. Jest to idealne rozwiązanie w przypadku tego dokumentu, w którym chcemy zarządzać sześcioma plikami SGBD. Nie ma potrzeby uczenia się obsługi nowego klienta przy zmianie pliku SGBD. Wszystkie z nich można znaleźć pod adresem URL [http://www.sqlmanager.net/download/]. Pobierzemy darmowe wersje o nazwie lite:
Obecnie (maj 2015 r.) dostępne do pobrania są następujące wersje URL:
Po zainstalowaniu np. klienta MyManager z MySQL5 otrzymujemy następującą strukturę katalogów:
- plik wykonywalny to [2];
- kroki [3-8] pokazują, jak połączyć [MyManager] z jedną z baz danych MySQL;
- w pliku [4] hasło brzmi [root];
23.6. Instalacja SGBD Oracle Database Express Edition 11g Release 2
Wersja SGBD Oracle Database Express Edition 11g Release 2 jest dostępna w wersji URL (czerwiec 2015 r.): [http://www.oracle.com/technetwork/database/database-techno logies/express-edition/downloads/index.html]:
Instalacja przebiega w następujący sposób:
- w [6] należy wprowadzić hasło [system]. W niniejszym dokumencie dane logowania administratora Oracle to [system / system];
Instalator instaluje Oracle jako usługę systemu Windows. Zainstalowanych jest kilka usług, które domyślnie uruchamiają się automatycznie. Pierwszą rzeczą, którą należy zrobić, jest przełączenie ich w tryb ręczny:
Należy uruchomić dwie usługi:
- [OracleXETNSListener], który nasłuchuje na porcie 1521 żądań kierowanych do SGBD;
- [OracleServiceXE], który jest serwisem SGBD;
Do administrowania Oracle'em użyjemy klienta [OraManager] (punkt 23.5). Aby można było z niego korzystać, należy najpierw zainstalować pakiet [Oracle Database Express Edition 11g Release 2 Client] dostępny w URL (czerwiec 2015 r.): [http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win32soft-098987.html]. Należy pobrać wersję 32-bitową, ponieważ [OraManager] jest klientem 32-bitowym:
Instalacja tego pakietu przebiega w następujący sposób:
- w [3] należy wskazać folder <oracleXE-install>\app\oracle\product\11.2.0\client_1, gdzie <oracleXE-install> to folder, w którym zainstalowano Oracle Express;
Teraz podłączmy klienta [OraManager] do serwera Oracle SGBD:
- w [2] nazwa grupy jest dowolna;
- w [4] należy obowiązkowo wpisać XE;
- w [5] alias można dowolnie wybrać;
- w [6] identyfikatory to [system / system];
23.7. Instalacja SGBD PostgreSQL 9.4
SGBD PostgreSQL 9.4 jest dostępny w URL (czerwiec 2015 r.): [http://www.enterprisedb.com/products-services-training/pgdownload#windows]:
Instalacja przebiega w następujący sposób:
- w [4] hasło brzmi postgres. W niniejszym dokumencie dane logowania administratora SGBD PostgreSQL to [postgres / postgres];
Instalator instaluje PostgreSQL jako usługę systemu Windows z automatycznym uruchamianiem. Pierwszą rzeczą, którą należy zrobić, jest przełączenie jej w tryb ręczny:
Teraz podłączmy klienta [PgManager] (patrz punkt 23.5) do SGBD PostgreSQL:
- w [2] identyfikatory to [postgres / postgres];
- w [3] nawiązuje się połączenie z bazą [postgres];
23.8. Instalacja SGBD DB2 Express
SGBD DB2 Express jest dostępny w URL (czerwiec 2015 r.): [http://www-01.ibm.com/software/data/db2/express-c/download.html]:
Instalacja przebiega w następujący sposób:
- w przypadku [9] hasło brzmi [db2admin]. W tym dokumencie dane logowania administratora SGBD to [db2admin / db2admin];
Uwaga: można ulec pokusie, by pominąć ten krok. Nie należy tego robić. Spowoduje to utworzenie folderu, w którym będą przechowywane bazy danych DB2, które zamierzamy utworzyć.
- utworzono folder [d:\DB2] [1];
- utworzono bazę danych o nazwie [SAMPLE] w folderze [d:\db2\node0000];
Instalator instaluje DB2 jako usługę systemu Windows z automatycznym uruchamianiem. Pierwszą rzeczą, którą należy zrobić, jest przełączenie jej w tryb ręczny:
Należy to zrobić dla wszystkich powyższych usług [DB2*]. Na potrzeby niniejszego dokumentu należy uruchomić jedynie usługę [DB2 - DB2COPY1].
Teraz podłączmy klienta [Db2Manager] (patrz punkt 23.5) do SGBD i DB2:
- w [1] należy użyć identyfikatorów [db2admin / db2admin];
23.9. Instalacja SGBD SQL Server 2014 Express
SGBD SQL Server 2014 Express jest dostępny w wersji URL (czerwiec 2015 r.): [http://www.microsoft.com/fr-fr/server-cloud/products/sql-server/]:
Instalacja przebiega w następujący sposób:
- w pliku [1] należy ustawić dowolne hasło. Zmienimy je później;
Następnie uruchamiamy usługę serwera SQL:
Po wykonaniu tych czynności uruchamiamy klienta [Microsoft SQL Server Management Studio], który został zainstalowany wraz z SGBD (patrz menu Start):
Klient ten można by wykorzystać do administrowania serwerem SQL. Jednak w celu zachowania spójności z klientami innych serwerów SGBD, użyjemy klienta [MsManager] (patrz punkt 23.5).
- w [1] należy zapisać nazwę SGBD;
- w [2] wprowadzono hasło msde. W niniejszym dokumencie dane logowania administratora SGBD to [sa / msde];
Po wykonaniu tych czynności uruchamiamy narzędzie [Gestionaire de configuration SQL Server], które zostało zainstalowane wraz z SGBD (patrz Menu Start):
- Domyślnie, w [2], komunikacja TCP/IP nie jest włączona. W przypadku tego dokumentu należy ją włączyć w [3];
- w [4], również na potrzeby tego dokumentu, należy wskazać, że SGBD oczekuje na żądania klientów na porcie 1433. Wartość [Ports TCP dynamiques] musi być pusta;
Po wykonaniu tych czynności uruchamia się klienta [MsManager] (patrz punkt 23.5):
- w [3] należy wpisać nazwę zapisaną w [1];
- w [4] identyfikatory to [sa / msde];
23.10. Instalacja programu SGBD Firebird
Firebird 2.5.4 o numerze SGBD jest dostępny w wersji URL (czerwiec 2015 r.): [http://www.firebirdsql.org/en/firebird-2-5-4/]:
Instalacja przebiega w następujący sposób:
Po wykonaniu tych czynności sprawdźmy tryb uruchamiania utworzonej usługi systemu Windows:
Teraz podłączmy klienta [IBManager] (patrz punkt 23.5) do zainstalowanej bazy danych Firebird o nazwie SGBD:
- w [1] hasło brzmi masterkey;
23.11. Instalacja wtyczki Chrome [Advanced Rest Client]
W niniejszym dokumencie korzystamy z przeglądarki Chrome firmy Google (http://www.google.fr/intl/fr/chrome/browser/). Dodamy do niej rozszerzenie [Advanced Rest Client]. Można to zrobić w następujący sposób:
- aplikacja jest wtedy dostępna do pobrania:
- aby ją pobrać, należy utworzyć konto Google. Aplikacja [Google Web Store] prosi następnie o potwierdzenie [1]:
- W [2] dodane rozszerzenie jest dostępne w opcji [Applications] [3]. Opcja ta jest wyświetlana na każdej nowej karcie, którą tworzysz (CTRL-T) w przeglądarce.
23.12. Obsługa jSON w Javie
W sposób tra nsparente dla programisty framework [Spring MVC] wykorzystuje bibliotekę jSON [Jackson]. Aby zilustrować, czym jest jSON (JavaScript Object Notation), przedstawiamy tutaj program, który serializuje obiekty do formatu jSON oraz wykonuje odwrotną operację, deserializując wygenerowane ciągi znaków jSON w celu odtworzenia pierwotnych obiektów.
Biblioteka „Jackson” umożliwia utworzenie:
- ciągu jSON dla obiektu: new ObjectMapper().writeValueAsString(object);
- obiektu na podstawie ciągu znaków jSON: new ObjectMapper().readValue(jsonString, Object.class).
Obie metody mogą wywołać wyjątek. Oto przykład.
Powyższy projekt to projekt Maven zawierający następujący plik [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>
- wiersze 12–16: zależność, która wprowadza bibliotekę „Jackson”;
Klasa [Personne] wygląda następująco:
package istia.st.json;
public class Personne {
// dane
private String nom;
private String prenom;
private int age;
// producenci
public Personne() {
}
public Personne(String nom, String prénom, int âge) {
this.nom = nom;
this.prenom = prénom;
this.age = âge;
}
// podpis
public String toString() {
return String.format("Personne[%s, %s, %d]", nom, prenom, age);
}
// metody pobierające i ustawiające
...
}
Klasa [Main] ma następującą postać:
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 {
// narzędzie do serializacji / deserializacji
static ObjectMapper mapper = new ObjectMapper();
public static void main(String[] args) throws IOException {
// tworzenie osoby
Personne paul = new Personne("Denis", "Paul", 40);
// wyświetlanie jSON
String json = mapper.writeValueAsString(paul);
System.out.println("Json=" + json);
// instancjonowanie obiektu Personne na podstawie JSON
Personne p = mapper.readValue(json, Personne.class);
// wyświetlanie osoby
System.out.println("Personne=" + p);
// tabela
Personne virginie = new Personne("Radot", "Virginie", 20);
Personne[] personnes = new Personne[]{paul, virginie};
// wyświetlanie JSON
json = mapper.writeValueAsString(personnes);
System.out.println("Json personnes=" + json);
// słownik
Map<String, Personne> hpersonnes = new HashMap<String, Personne>();
hpersonnes.put("1", paul);
hpersonnes.put("2", virginie);
// wyświetlanie danych JSON
json = mapper.writeValueAsString(hpersonnes);
System.out.println("Json hpersonnes=" + json);
}
}
Wykonanie tej klasy powoduje wyświetlenie następującego ekranu:
| 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}}
|
Z przykładu należy zapamiętać:
- obiekt [ObjectMapper] niezbędny do transformacji jSON / Object: wiersz 11;
- transformację [Personne] → jSON: wiersz 17;
- transformację jSON → [Personne]: wiersz 20;
- wyjątek [IOException] wywołany przez obie metody: wiersz 13.