Java_exPress_007_2010_03.pdf
(
12230 KB
)
Pobierz
Maszynista
JEP.
gEt
t
Eam
().
say
t
hank
y
ou
();
Już siódmy raz przyszło mi podzielić się z Wami tym, co dostaję
od innych. Myślałem, że po kilku numerach przyjdzie kryzys i nie
będzie chętnych do napisania artykułów. A jest zupełnie przeciw-
nie. Skłądając numer siódmy miałem materiały na cały numer
ósmy. Czy to nie cudownie? Gratulacje dla wszystkich, którzy
chcą w ten sposób podzielić się swoją wiedzą.
JAVA exPress z numeru na numer robi się coraz ciekawsze. Coraz więcej ludzi widzi sens
w publikowaniu swoich artykułów na łamach tego pisma. To dobrze. Wiedza, którą się
nie dzielimy z innymi jest mało warta.
Teraz pora na szerszą reklamę czasopisma. Nie chce mi się wierzyć, że w Polsce jest
tylko 2 tyś. developerów Java, którzy chcą rozwijać się i dokształcać. Pomóżcie w naszej
misji i prześlijcie na grupy dyskusyjne w pracy, czy na uczelni informacje o JAVA exPress.
Wielkie podziękowania należą się nie tylko autorom tekstów. JAVA exPress to zespół
ludzi, którzy mniej lub bardziej pomagają. Zaczynając od Marka Podsiadłego i Jakuba
Sosińskiego, którzy od samego początku pomagają tworzyć stronę JAVA exPress i samo
pismo. Cóż wiele tu mówić. Właściwie, to oni są odpowiedzialni za wszystko co widzicie
na stronach javaexpress.pl i dworld.pl. Tylko im zawdzięczamy, że mamy miejsce w sieci.
Podziękowania należą się także całej grupie tłumaczy oraz patronom. Od tego nume-
ru odszedł jeden patron, ale w zamian przyszedł nowy. Firma Adobe będzie wspierała
JAVA exPress przez co najmniej 1 rok. Mam nadzieję, że na tym się nie skończy, bo za-
częło się bardzo obiecująco.
Na koniec jak zwykle apel. Jeśli chcesz napisać artykuł, pomóc w tłumaczeniach lub
tworzeniu stron www, napisz do nas na kontakt@dworld.pl.
Do zobaczenia w czerwcu,
Grzegorz Duda
R
ozkład
Jazdy
JEP.
gEt
t
Eam
().
say
t
hank
y
ou
();
2
C
o
w
tRawiE
PiszCzy
...
3
P
iERwszE
kRoki
w
s
Cali
4
s
PRing
–
kontEnER
wstRzykiwania
zalEżnośCi
12
g
lassfish
E
ntERPRisE
: 5 9’
s
z
hadB
20
l
og
4
J
a
komunikatoRy
intERnEtowE
43
a
PlikaCJE
f
lEx
z
B
lazE
ds
49
t
RansakCJE
w
systEmaCh
J
ava
E
ntERPRisE
: w
PRowadzEniE
56
m
istRz
P
RogRamowania
: R
EfaktoRyzaCJa
,
Cz
. iii
73
2
Megafon
C
o
w
tRawiE
PiszCzy
...
g
RzEgoRz
d
uda
ScreenSnipe
Czy to bugzilla, czy Jira, czy inny bug trac-
ker, to wiele od jakości buga zależy od te-
sterów. Oni podają kroki do reprodukcji
buga i załączają niezbędne informacje.
Bardzo często załączają zrzut ekranu. Ale
co tester, to inny format i wiele razy zda-
rzało się, że zrzut w bmp zajmował kilka
MB.
Polecamy książki
Jeśli JAVA exPress to
dla Was za mało wie-
dzy, to chcielibyśmy
polecić Wam 2 książ-
ki Wydawnictwa He-
lion. Pierwszą z nich
powinniście znać pod
angielskim tytułem
„Efecive Java”, której
autorem jest Joshua
Bloch. Polski tytuł to
Java. Efektywne Pro-
gramowanie. Wydanie II.
Marzyło mi się narzędzie, które zautoma-
tyzuje proces tworzenia buga. No i jest. Co
lepsze, to powstało ono w Polsce, a kon-
kretniej w grupie Spartez z Gdańska.
Druga książka to no-
wość. Autora, wójka
Boba (Uncle Bob), nie
trzeba przedstawiać.
Z czystym sumieniem
polecamy
Czysty Kod.
Podręcznik dobrego
programisty.
ScreenSnipe umożliwia nie tylko pobranie
zrzutu ekranu, ale także dodanie adnota-
cji, powiększeń, zaznaczeń itp. A co lepsze
integruje się z JIRĄ.
Warto przyglądnąć się temu narzędziu na
htp://my.spartez.com/sotware-for-agile-
developers/screensnipe.html
.
Code Bubbles
Ostatnio wiele o tym się mówi. Jedni uwa-
żają to za przyszłość IDE, inni za zabawkę,
a jeszcze inni za dobry materiał na pracę
doktorską. Ja jestem gdzieś pomiędzy dru-
gą i trzecią grupą, ale z całą pewnością
warto przyjrzeć się
Code Bubbles
.
Chociaż-
by po to, aby zobaczyć jak inaczej można
podejśc do tematu IDE. Zamiast tworzyć
kolejny klon Eclipse’a, warto zrobić krok
milowy i wyprzedzić całą konkurencję.
Konferencje
Zakończyła się konferencja
4Developers
,
a niedługo już kolejna. W Poznaniu odbę-
dzie się w dniach 12-14 maja konferencja
GeeCON
, a 26 czerwca, w Warszawie
Ja-
varsovia
. Mam nadzieję, że JAVA exPress
pojawi się w Warszawie tym razem. Do
trzech razy sztuka.
Ale to nie koniec w tym roku. W paździer-
niku jak zwykle można liczyć na
JDD
. Bę-
dzie fajnie jak zwykle.
Pewnie nie tym razem, ale któraś kolejna
próba na pewno się powiedzie.
Dodatkowo
COOLuary
nabiorą nieco ru-
mieńców. Już w drugiej połowie maja od-
będzie się czwarta edycja
COOLuarów
. Tym
razem poprzedzona będzie całodzienną
konferencją w standardowej formule. Ale
jak to na Developers World przystało, spo-
dziewajcie się niecodziennego podejścia
do tematu. Więcej wkrótce na
dworld.pl
.
Pamiętacie
Wolfram Alfa
? Też miało zwo-
jować świat, a póki co nadal to jest jedynie
ciekawostka jak można inaczej zrobić wy-
szukiwarkę.
Czy w swoich projektach podąrzasz za in-
nymi, czy szukasz nowych rozwiązań?
3
Poczekalnia
P
iERwszE
kRoki
w
s
Cali
ł
ukasz
k
uCzERa
If I were to choose language other than Java it would be Scala
James Gosling
Creator of Java
I can honestly say if someone had shown me the Programming in Scala boo� by �ar�
boo� by �ar�
in Oders�y, Lex Spoon & Bill Venners bac� in 2003 I’d probably have never created
Groovy.
Scala boo� by �ar�
James Strachan
Creator of Groovy
Historia
Scala to nowy bardzo ciekawy język pro-
gramowania. Łączy ze sobą dwa „światy”
programowania – świat programowania
obiektowego i świat funkcyjny. Historia
Scali zaczyna się trochę wcześniej niż w
2001 na Politechnice w Lozannie w Szwaj-
carii (EPFL), gdzie Marin Odersky wraz z
grupą studentów zakłada projekt nowe-
go języka. Wszystko zaczęło się od ekspe-
rymentalnego języka Pizza, który został
utworzony przez Odersky’iego i Philip’a
Wadler’a w 1998 roku. Wtedy obaj pano-
wie pracowali w Sun’ie nad rozwojem Javy
i zastanawiali się jak wprowadzic do języka
Generics (JSR-014). Wpadli wtedy na po-
mysł, że zrobią nowy język, który posłuży
im jako pole doświadczalne. Napisanie
nowego języka to dużo pracy, zysk był jed-
nak spory, oswobodzeni z Javy mogli pró-
bować nowych rzeczy, ograniczał ich tylko
JVM. Pizza ma Generics, domknięcia i pat-
tern matching. Wiosną 1998 do Odersky-
’iego i Wadler’a dołącza David Stoutamire
i Gilad Bracha bazując na doświadczeniach
Pizzy tworzą kolejny język – GJ (Generics
Java). Implementacja GJ została wcielo-
na do Javy pod postacią generics w 1.5
(praktycznie niezmieniona). Marin Ode-
rsky napisał kompilator do GJ, który stał
się podstawą javac, to było już w wersji
1.3 (2000), mimo to Generics były niedo-
stępne w języku, aż do wersji 1.5 (2004).
Orginalna wersja Odersky’iego została roz-
szerzona o „wildcards” czyli „? extends T”.
W 2001 Odersky przenosi się do Szwajcarii
na uniwersytet w Lozannie, gdzie zajmuje
stanowisko profesora metod programo-
wania i rozpoczyna pracę nad nowym ję-
zykiem.
Instalacja.
Do rozpoczęcia pracy wystarczy ściągnąć
dystrubucję ze strony domowej –
htp://
www.scala-lang.org/downloads
i zainsta-
lować. Do dyspozycji są dwie wersje – pod
konkretną plaformę bądź uniwersalny in-
stalator. Jeżeli nie korzystamy z instalatora
po rozpakowaniu należy ustawić zmienną
środowiskową SCALA_HOME na katalog
ze Scalą i do zmiennej PATH dodać kata-
log bin dystrybucji. Po tych zabiegach wpi-
sując „scala” w linii poleceń uruchamia
się interaktywny interpreter. Do małych
zadań, skryptowania, zabawy interpreter
jest doskonałym narzędziem, przy tworze-
niu większego projektu do dyspozycji są
trzy zintegrowane środowiska programi-
styczne: Netbeans, IntelliJ IDEA oraz Eclip-
se. W chwili pisania artykułu pluginy IDE
są piętą achillesową Scali, da się praco-
wać, trzeba jednak przygotować się na to
że nie wszystko będzie działało tak samo
dobrze jak dla Javy.
Scala jest językiem w pełni obiektowym to
znaczy wszystko jest obiektem, jest też ję-
4
Poczekalnia
Póki co kod wygląda jak w języku
z dynamicznym typowaniem.
Nic bardziej mylnego. Scala jest statyczna
zykiem funkcyjnym, pozwala na tworzenie
metod wyższych rzędów, domknięć i prefe-
ruje obiekty niemutowalne. Kompiluje się
do bytecode’u Javy oraz do CLI .NET, poka-
zuje to że twórcom zależy na przenośności
języka i nie wiążą się ściśle z JVM’em.
jest taki jakbyśmy chcieli dlatego możemy
go podać jawnie:
scala> val x: Int = 2+2
scala> val y: Double = 2+2
Tam gdzie to możliwe Scala wykorzystuje
obiekty Javy. Powyższe wyrażenia zosta-
ną przez kompilator przetłumaczone naj-
prawdopodniej na Javowe int i double.
Znamiennym przykładem jest String:
Pierwszy kod
Wewnątrz interpretera, nie musimy dekla-
rować zmiennych. Zatem wpisując:
scala> val hello = „Hello, world
!”
hello: java.lang.String = Hello,
world !
scala> 2+2
Otrzymamy:
res0: Int = 4
Dla rozbudzenia apetytu, możesz spróbo-
wać wpisać w interpreterze:
Interpreter przypisuje to co wpisujemy
do kolejnych zmiennych o nazwie res[n].
W Scali nie ma też operatorów w trady-
cyjnym sensie. To znaczy operatory są za-
implementowane w bibliotece, nie jest to
element języka. Dlatego powyższy zapis
jest skrótem od takiego:
scala>
„Hello,
world”.
foreach(println(_))
Powyższy zapis korzysta z kilku funkcjo-
nalności języka: pełnej obiektowości, im-
plicit conversions (domyślnych konwersji),
funkcji wyższych rzędów oraz czegoś co
nazywa się placeholder syntax (składnia
zastępnikowa ?). W tej części opiszę m.in.
implicit conversions.
scala> (2).+(2)
Oznacza to nic innego jak wywołanie me-
tody „+” na obiekcie typu Int z argumen-
tem Int w notacji tzw. operatorowej. Jeżeli
metoda przyjmuje tylko jeden argument,
można ją wywoływać bez kropki i nawia-
sów. Jest to jeden z elementów który po-
zwala na szybkie i łatwe tworzenie DSL’i
(Domain Speciic Language) w Scali. Poniż-
szy zapis przypisuje cztery do zmiennej x
(właściwie wartości, ale o tym za chwilę).
Deinicja funkcji:
scala> def double(x: Int): Int =
x*2
Powyższy zapis deinuje funkcję o nazwie
double z jednym parametrem Int, zwraca-
jącą typ Int. W funkcjach ostatnia zapis jest
zwracany dzięki temu nie ma obowiązku
pisania słówka kluczowego returns, jest to
opcjonalne. Co instotne Inferencer jest w
stanie wypełnić za nas typ zwracany przez
funkcję:
scala> val x = 2+2
Póki co kod wygląda jak w języku z dyna-
micznym typowaniem. Nic bardziej myl-
nego. Scala jest statyczna, dzięki inferen-
cji (wnioskowania) typów nie musimy ich
jawnie podawać, kompilator zrobi to za
nas. Oczywiście nie zawsze otrzymany typ
scala> def double(x: Int) = x*2
double: (Int)Int
Jeżeli funkcja, metoda jest zbyt długa aby
5
Plik z chomika:
jimasek
Inne pliki z tego folderu:
Java_exPress_002_2008_12.pdf
(8889 KB)
Java_exPress_003_2009_03.pdf
(10012 KB)
Java_exPress_001_2008_08.pdf
(3097 KB)
Java_exPress_007_2010_03.pdf
(12230 KB)
Java_exPress_004_2009_06.pdf
(8098 KB)
Inne foldery tego chomika:
Auto Świat
Chip
Elektronika dla Wszystkich
Elektronika Praktyczna
hakin9
Zgłoś jeśli
naruszono regulamin