Software.Developers.Journal.2010.06.PL.pdf
(
7130 KB
)
Pobierz
287738974 UNPDF
6/2010 (186)
Szanowni Czytelnicy,
SPIS TREŚCI
Niedawno obchodziliśmy 15-lecie SDJ. 15 lat naj-
większego polskiego pisma dla programistów. Przez
ten czas zyskaliśmy solidną pozycję na rynku, odda-
ne grono czytelników i markę wśród największych firm
z branży.
Nie chcemy jednak stać w miejscu. Świat się zmie-
nia a wraz z nim media. Dlatego z przyjemnością infor-
muję, że Software Developer’s Journal staje w awan-
gardzie światowych mediów. Otwieramy się na przy-
szłość, a ...przyszłość leży w sieci.
Ten numer SDJ jest zwiastunem rewolucji, która prę-
dzej czy później dotknie każdego medium na świecie.
Rozwój internetu, urządzeń przenośnych sprawi, że
papierowe wydania pism będą ustępować przed napo-
rem nowych technologii. Aby sprostać oczekiwaniom
pisma on-line, SDJ przeszedł delikatny lifting. Mam na-
dzieję, że nowy format pozwoli Wam z przyjemnością
oddawać się lekturze magazynu.
Każdy kolejny numer SDJ będzie się ukazywał do
pobrania każdego, ostatniego dnia miesiąca. Pismo
będzie dostępne w wygodnym formacie PDF. Co waż-
niejsze będzie on pismem całkowicie darmowym!
Jesteśmy przekonani, że zmiana formatu wydawa-
nia magazynu, a także szersza dostępność sprawi, że
SDJ stanie się jeszcze bardziej opiniotwórczym me-
dium o programowaniu w Polsce. Nadal będziemy pre-
zentować aktualną, a także sprawdzoną wiedzę z dzie-
dziny programowania. Współpracując ze specjalistami
z największych firm na rynku, a także pasjonatami pro-
gramowania, uczelniami wyższymi itp chcemy dostar-
czać naszym czytelnikom wiedzy potrzebnej do pracy,
a także dalszego rozwoju osobistego.
Jednocześnie nie zapominamy o materiałach dodat-
kowych do artykułów. Wszelkie aplikacje, kody a także
materiały video będą dostępne na naszej stronie www.
Również za darmo.
Mam głęboką nadzieję, że ta zmiana przypadnie
Wam do gustu. Chcemy aby SDJ jak najbardziej od-
powiadał Waszym oczekiwaniom, dlatego będziemy
wdzięczni za wszelkie sugestie i uwagi dotyczące na-
szego, wspólnego magazynu.
BIBLIOTEKA MIESIĄCA
6 Biblioteka Dozer –
Proste mapowanie obiektów
Tomasz Oponowicz
Ręcznie pisanym translatorom można zarzucić wie-
le – są czasochłonne, błędogenne, a ich przejrzystość
zależy w dużej mierze od umiejętności programistycz-
nych. Może czas odrzucić dotychczasowe przyzwycza-
jenia? Interesującym rozwiązaniem wydaje się być bi-
blioteka Dozer.
KLUB TECHNICZNY
16 Technologie Progress OpenEdge – Część 7.
Replikacja i obsługa klastrów systemowych
w środowisku OpenEdge
Piotr Tucholski
Jednym z najistotniejszych aspektów w systemach
aplikacyjnych jest bezpieczeństwo informacji zawar-
tych w bazach danych, a w przypadku ich awarii szyb-
kie wznowienie i kontynuacja pracy systemu. Przyjrzyj-
my się produktom OpenEdge Replication i Failover Clu-
sters.
SZTUCZNA
INTELIGENCJA
20 Paradygmat CLP – Przykłady problemów
optymalizacyjnych oraz logicznych
Łukasz Mazur
Rozwiązywane problemy przez systemy informatyczne
opracowane na mechanizmach CLP są zazwyczaj wy-
soce złożone. Wykorzystują one heurystyczne algoryt-
my poszukiwania rozwiązania, dodatkowo wspomaga-
jąc się propagacją ograniczeń oraz dystrybucją zmien-
nych.
Redaktor naczelny SDJ
Łukasz Łopuszański
4
6/2010
4
SPIS TREŚCI
PROGRAMOWANIE URZĄDZEŃ
MOBILNYCH
Miesięcznik
Software Developer’s Journal
(12 numerów w roku)
jest wydawany przez Software Press Sp. z o.o. SK
Redaktor naczelny:
Łukasz Łopuszański
lukasz.lopuszanski@software.com.pl
38 Android NDK – Programowanie natywne
w systemie Android
Piotr Szmyt
Tematem artykułu są podstawy NDK, czyli środowiska
umożliwiającego wykorzystanie kodu natywnego (C/
C++) w systemie Android. Zakładam, że czytelnik posia-
da już podstawowe informacje na temat programowania
w systemie Android, tworzenia nowych projektów oraz
uruchomiania itp., gdyż tego typu elementy nie będą opi-
sywane w tym artykule.
Projekt okładki:
Agnieszka Marchocka
Skład i łamanie:
Tomasz Kostro
www.studiopoligraficzne.com
Kierownik produkcji:
Andrzej Kuca
andrzej.kuca@software.com.pl
Adres korespondencyjny:
Software Press Sp. z o.o. SK,
ul. Bokserska 1, 02-682 Warszawa, Polska
tel. +48 22 427 36 91, fax +48 22 224 24 59
www.sdjournal.org cooperation@software.com.pl
APLIKACJE BIZNESOWE
Dział reklamy:
adv@software.com.pl
54 Stary, dobry znajomy: Oracle Forms
Michał Kuratczyk
Historia narzędzi Oracle Forms sięga późnych lat 80.
i choć ich popularność wyraźnie spadła wraz z rozpo-
wszechnieniem się Internetu, wciąż wiele aplikacji bazu-
je na tym rozwiązaniu.
Redakcja dokłada wszelkich starań, by publikowane w piśmie
i na towarzyszących mu nośnikach informacje i programy były
poprawne, jednakże nie bierze odpowiedzialności za efekty
wykorzystania ich; nie gwarantuje także poprawnego działania
programów shareware, freeware i public domain.
Wszystkie znaki firmowe zawarte w piśmie są własności
odpowiednich firm.
Zostały użyte wyłącznie w celach informacyjnych.
Osoby zainteresowane współpracą prosimy o kontakt:
cooperation@software.com.pl
EFEKTYWNOŚC PRACY
58 Brakujący 1% – Zarządzanie
zaangażowaniem programistów
Michał Bartyzel, Mariusz Sieraczkiewicz
Większość programistów uwielbia swoją pracę. Jeśli
nawet nie przepadają za niektórymi zadaniami, to i tak
przeważnie lubią to, co robią. Zazwyczaj więc pojedyn-
czy programista jest bardzo zaangażowanym pracowni-
kiem. W artykule zastanawiamy się, jak wygląda spra-
wa zaangażowania w przypadku zespołu współpracują-
cych ze sobą
www.sdjournal.org
5
5
BIBLIOTEKA MIESIĄCA
Biblioteka Dozer
Proste mapowanie obiektów
Ręcznie pisanym translatorom można zarzucić wiele –
są czasochłonne, błędogenne, a ich przejrzystość zależy
w dużej mierze od umiejętności programistycznych.
Może czas odrzucić dotychczasowe przyzwyczajenia?
Interesującym rozwiązaniem wydaje się być biblioteka Dozer.
Dowiesz się:
• W jaki sposób zainicjalizować Dozer'a;
• W jaki sposób tworzyć proste i zaawansowane pliki konigura-
cyjne wykorzystywane przez Dozer'a;
• W jaki sposób mapować obiekty typu JAXB przy pomocy Dozer'a.
Powinieneś wiedzieć:
• Jak programować w języku Java;
• Podstawowa znajomość XML'a.
pomiędzy obiektami z różnych modeli danych.
W przypadku systemów rozproszonych,
obiekty przekazywane są pomiędzy różnymi systemami.
Sytuacje, w których zewnętrzny model danych wykorzy-
stywany jest wewnątrz naszej aplikacji, są niepożądane.
Zdarza się, że dostawca usług nagle zmienia w zna-
czący sposób model danych. Następstwem tego są
zmiany w całej naszej aplikacji. Dlatego lepszym roz-
wiązaniem byłoby mapowanie obiektów zewnętrznych
na nasz wewnętrzny model danych, na najniższej war-
stwie. W dużej mierze uniezależniłoby to nasz system
od zmian pochodzących z zewnątrz.
Powszechnym rozwiązaniem powyższego problemu
jest pisanie ręcznych translatorów. Jednak implementa-
cja ich jest zbyt czasochłonna, a programista jest zmu-
szony do ręcznego odwzorowania wszystkich zależ-
ności. Nawet gdy klasy różnią się między sobą w nie-
wielkim stopniu. Tak zaimplementowany kod jest mało
przejrzysty i trudny w szybkiej analizie. Dodatkowo sto-
sunkowo łatwo o pomyłkę.
W niniejszym artykule przedstawię, w jaki sposób roz-
wiązać typowe problemy mapowania przy pomocy biblio-
teki Dozer. Biblioteka wprowadza jednolity sposób zapi-
sywania relacji pomiędzy obiektami w plikach XML. Nie
wymaga ona żadnej modyfikacji istniejących klas (np.
Szybki start w Eclipse
Koniguracja projektu w Eclipse:
1. Stworzyć w Eclipse nowy projekt Java;
2. Pobrać binarną dystrybucję biblioteki Dozer (patrz: ramka W sieci);
3. W zakładce do konigurowania bibliotek zewnętrznych (
Project -> Properties -> Java Build Path -> Libraries
) dodać bibliotekę
dozer.osgi-5.2.0.jar
za pomocą przycisku
Add external JARs
;
4. Powtórzyć kroki 2 i 3 dla bibliotek JAXB, Apache Commons Beanutils, Apache Commons Collections, Apache Commons Lang
i Apache Commons Logging.
Dodatkowo w przypadku biblioteki JAXB, po ściągnięciu jej z Internetu należy ją rozpakować, stosując się do instrukcji umieszczo-
nych na stronie domowej biblioteki. Spośród wypakowanych plików, do build path'a należy dodać plik o nazwie
jaxb-api.jar.
Z przyczyn technicznych na niektórych Listingach nie znalazły się deinicje setter'ów i getter'ów, co zostało oznaczone stoso-
wanym komentarzem. Jednak w łatwy sposób Czytelnik może wygenerować wspomniane funkcje za pomocą narzędzi wbu-
dowanych w Eclipse'a. W kodzie źródłowym klasy wywołujemy menu kontekstowe i klikamy kolejno
Source -> Generate getters
and setters
.
6
6/2010
M
apowanie obiektów jest to kopiowanie danych
Biblioteka Dozer
dodanie adnotacji). Dzięki temu jest to w pełni przeźro-
czyste rozwiązanie. Pierwsza wersja biblioteki Dozer zo-
stała wydana w 2005 roku. Od tego czasu jest intensyw-
nie rozwijana i optymalizowana. Ponadto cechuje się
przemyślanymi rozwiązaniami i dużą stabilnością.
Struktura niniejszego artykułu jest następująca: na
początek przedstawię sposób wykorzystania API Do-
zer'a oraz podstawową koncepcję zapisywania rela-
cji w plikach konfiguracyjnych. Następnie zaprezentu-
ję rozbudowane mechanizmy sterowania mapowaniem
i omówię szczegółowo zastosowane techniki. W dal-
szej kolejności zmierzę się z rzeczywistym problemem
– mapowaniem obiektów typu JAXB. Na koniec porów-
nam wydajność pomiędzy Dozer'em a ręcznie pisany-
mi translatorami.
wpisać i skompilować klasy znajdujące się na Listin-
gach od 1 do 5. Przykład uruchamiamy, wywołując kla-
sę
DozerExample
.
Przeanalizujmy krok po kroku kod programu znajdu-
jący się na Listingu 1. Na początku dołączamy niezbęd-
ne nagłówki. Następnie inicjalizujemy bibliotekę Dozer,
za co odpowiedzialna jest instrukcja:
DozerBeanMapper mapper = (DozerBeanMapper) DozerBeanMapp
erSingletonWrapper.getInstance();
Wykorzystaliśmy tutaj klasę
DozerBeanMapperSingleton
Wrapper
, ponieważ twórcy biblioteki zalecają, aby w ca-
łej naszej aplikacji występowała tylko jedna instancja
klasy
DozerBeanMapper
(tzw. singleton). Dalej inicjalizu-
jemy klasę
JabberPerson
testowymi wartościami:
Zaczynamy
Pierwszą czynnością, którą należy wykonać, jest konfi-
guracja środowiska pracy. Osoby korzystające z Eclip-
se'a zapraszam do przestudiowania zawartości ramki
Szybki start w Eclipse
. Czytelników chcących wykorzy-
stać bibliotekę wraz ze Spring Framework odsyłam do
ramki
Szybki start w Spring
. Warto także wspomnieć,
że biblioteka Dozer jest dostępna w centralnym repozy-
torium Maven'a. W ramce
W sieci
umieściłem bardziej
szczegółowe informacje z tym związane.
Gdy środowisko pracy jest już gotowe, możemy roz-
począć przygodę z Dozer'em. Na potrzeby artykułu wy-
obraźmy sobie, że jesteśmy programistami multiko-
munikatora internetowego, Pidgin. Aplikacja jest zmu-
szona do mapowania obiektów konkretnego protoko-
łu na swój model danych. Tak więc należy utworzyć,
JabberPerson source = new JabberPerson("Jan",
"Kowalski", 40, new
JabberAddress("Wojska Poskiego",
"3"));
Ostatecznie zlecamy bibliotece przemapowanie obiek-
tu typu
JabberPerson
na obiekt typu
PidginPerson
za
pomocą instrukcji:
PidginPerson destination = mapper.map(source,
PidginPerson.class);
Listing 1.
Najprostsze użycie biblioteki Dozer (plik
DozerExample.java)
Szybki start w Spring
Spójrzmy na prosty przykład, tego, jak wykorzystać Do-
zer'a w istniejącym serwisie zarządzanym przez Sprin-
g'a. W tym celu, w dowolnym serwisie, deiniujemy inter-
fejs
org.dozer.Mapper
w formie właściwości komponen-
tu JavaBean. Niech właściwość będzie miała nazwę map-
per. Następnie, w plikach XML deiniujących kontekst apli-
kacji, określamy, że właściwość
mapper
powinna być usta-
wiona na egzemplarz klasy
org.dozer.DozerBeanMapper
(który deiniujemy jako element bean). Teraz w serwisie mo-
żemy korzystać z dobrodziejstw biblioteki Dozer, wykorzy-
stując zmienną
mapper
.
import java.util.*;
import org.dozer.*;
public
class
DozerExample
{
public
static
void
main
(
String
...
args
)
{
DozerBeanMapper
mapper
=
(
DozerBeanMapper
)
DozerBeanMapperSingletonWrapper
.
getInstance
()
;
mapper
.
setMappingFiles
(
new
ArrayList
<
String
>
())
;
JabberPerson
source
=
new
JabberPerson
(
"Jan"
,
"Kowalski"
,
40
,
new
JabberAddress
(
"Wojska Poskiego"
,
"3"
))
;
PidginPerson
destination
=
mapper
.
map
(
source
,
PidginPerson
.
class
)
;
System
.
out
.
println
(
"JabberPerson-
>PidginPerson: "
+
destination
)
;
Plugin do Eclipse'a
W ramach projektu Dozer rozwijana jest również wtyczka
do Eclipse'a, usprawniająca edycję plików koniguracyjnych.
Możliwości, jakie oferuje wtyczka:
• podpowiadanie nazw klas i pól w trakcie pisania;
• walidacja nazw klas i pól;
• graiczne przedstawienie treści zawartej w plikach koni-
guracyjnych.
}
}
www.sdjournal.org
7
Plik z chomika:
liop2003
Inne pliki z tego folderu:
Software.Developers.Journal.2011.11.PL.pdf
(5810 KB)
Software.Developers.Journal.2011.10.PL.pdf
(4627 KB)
Software.Developers.Journal.2011.09.PL.pdf
(10519 KB)
Software.Developers.Journal.2011.08.PL.pdf
(8647 KB)
Software.Developers.Journal.2011.07.PL.pdf
(8610 KB)
Inne foldery tego chomika:
AI, Systemy Eksperckie, Programowanie ewolucyjne
Asembler
C, C++, C#
Grafika komputerowa
Komunikacja
Zgłoś jeśli
naruszono regulamin