17 sierpnia 2010

Book review: RESTful Java Web Services

Okładka RESTful Java Web Services
Właśnie opublikowałem najnowszą recenzję książki RESTful Java Web Services Jose Sandoval z Packt - Book review: RESTful Java Web Services.

Miałem duże nadzieje związane z lekturą tej książki, która miała sprawić, że bez wahania będę mógł się mienić mianem znawcy tematu Web Services, ale z przykrością muszę stwierdzić, że coraz bardziej skłaniam się ku opinii, że Packt wypuszcza książki, których wartość marytoryczna jest, powiedzmy, średnia ze wskazaniem na słaba. Nie liczyłem liczby książek z Packt, które przeczytałem, ale ta pozycja zdecydowanie potwierdza tę prawidłowość. Dużo powtórzeń, kod źródłowy niezwykle trywialny, a w dodatku autor pozwala sobie na jego opis i to w różnych częściach książki powtórzony kilkukrotnie. Zdecydowanie za mało przy tytule, który mógłby wskazywać, że mamy do czynienia z encyklopedią na temat javowych usług sieciowych pisanych zgodnie z zasadami REST. Jako wprowadzenie może być, ale szkoda czasu na jej czytanie od deski do deski - wystarczy przeskoczyć do odpowiednich rozdziałów, które w danej chwili są interesujące. Jakby na pocieszenie, dzięki książce miałem po raz pierwszy możliwość posmakowania prostoty db4o. Niewiele, ale wystarczyło, aby przekonać się o jego walorach i sensowności użycia w projektach. Na pewno nie zapomnę o db4o przy nadarzającej się okazji jego wprowadzenia do projektu.

Zainteresowani całościowym spojrzeniem na wartość merytoryczną książki zapraszam do lektury mojej recenzji Book review: RESTful Java Web Services.

Kolejną książką, za którą się zabrałem, jest Practical Clojure. Muszę przyznać, że pierwszy rozdział zrobił na mnie ogromne wrażenie prostotą omawiania koncepcji, które stoją u podstaw Clojure. Bardzo zapadło mi w pamięci wyjaśnienie, dlaczego tak istotne jest, aby utrzymać niezmienność struktur danych, nawet tam, gdzie wydawałoby się, że jest nieprzystającą do problemu. Przykład z cyfrą 3, której zwiększenie o 1, to utworzenie nowej kopii z wartością 4 przemówił mi do rozsądku :) W końcu tak samo jest z bardziej złożonymi strukturami, które wbrew wspomnianej oczywistości z 3, traktujemy specjalniej i dodanie elementu niewielu wskazuje na *konieczność* utworzenia struktury-kopii z nowym nabytkiem. Wydaje się zbyt kosztowną operacją?! Proszę o argumenty popierające to myślenie? Chętnie wysłucham (a książka posłuży mi jako moje źródło odpowiedzi).

Czy u Ciebie również daje się odczuć potrzebę poznania języka funkcyjnego bardziej dokładnie i praktyczniej? U mnie zaczyna być widać objawy chorobowe przechodzące w uzależnienie. Czego i Tobie życzę! :)

14 komentarzy:

  1. Ja mam za sobą Apache CXF Web Service Development
    z tego samego wydawnictwa i nie mogę o tej książce powiedzieć wiele dobrego :-(. Bardzo interesował mnie rozdział o wsparciu CXF dla REST, jednak zamiast tego dostałem kilkadziesiąt zrzutów ekranów z jakiejś Firefoksowej wtyczki. Mnóstwo kompletnie niepotrzebnych listingów pokazujących wynik budowania programu ANTem czy mavenem. Pamiętam, że miałeś tą książkę w kolejce - możesz ją śmiało przesunąć na koniec.

    OdpowiedzUsuń
  2. Dzięki Tomku! Faktycznie była w kolejce, kiedy dostałem ją w paczce z właśnie recenzowaną RESTful Java Web Services. Już do nich nie wrócę zapewne.

    OdpowiedzUsuń
  3. Jacku, ostrzegales mnie przed packtem pożyczając Apache CXF Web Service Development.... i niestety mialeś mnóstwo racji ; ) Wciąż nie mogę jej zmęczyć - mało konkretów, mnóstwo błędów - chciałem przerobić tę książkę pisząc i edytując podany kod - ale po ntym błędzie dałem sobie spokój. Pracuję z CXF'em a i tak trudno z tej książki wyciągnąć coś pożytecznego..

    A co do Clojure (choć nie tylko) - podziwiam Twoją konswekwencję ; )

    OdpowiedzUsuń
  4. @Jacek - jakiś czas temu poznałem absolutne minimum RESTful Services, ale nic wysublimowanego - uważasz, że ta książka może być dla mnie? Szukam ostatnio literatury na ten temat, ale takiej, by nie była od początku przytłaczająca poziomem :)

    OdpowiedzUsuń
  5. @Łukasz, ta książka nie jest wysublimowana merytorycznie, ale (na co zwróciłem uwagę później po czytaniu innych recenzji na Amazonie) jest dobrym przeglądem dostępnych szkieletów RESTowych. Poza tym podkreśla się czystość z podwalinami REST, czyli negocjacja formatu odpowiedzi na podstawie nagłówków HTTP, a nie rozszerzenia w URLu, czy podobnie. Zajrzyj do mojej recenzji, gdzie w drugiej części wskazuję wartość merytoryczną każdego z rozdziałów. Polecam rozdziały 1, 2, początek 3, 4, 5 i opcjonalnie 10. Reszta do kosza.

    OdpowiedzUsuń
  6. Ja db4o znam już od jakiegoś czasu i ogółem się bardzo zajarałem obiektowymi bazami danych i innymi rozwiązaniami z zakresu NoSQL. Jak byś miał jakieś pytania odnośnie db4o to wal śmiało. Chętnie pomogę :)

    OdpowiedzUsuń
  7. @Jacek - po przeczytaniu Twojego review doszedłem do wniusku, że może to być dobra książka dla początkującego REST'owca :) Chociaż zdziwił mnie fakt, że Twój post na blogu ma o wiele mocniejszy, negatywny wydźwięk niż sama recenzja.

    OdpowiedzUsuń
  8. @Marcin, z db4o pewnie wrócę do Ciebie niebawem.

    @Łukasz, kiedy pisałem wpis "reklamujący" recenzję też zauważyłem pewien rozdźwięk pomiędzy nimi. W recenzji skupiłem się jedynie na książce, a we wpisie dotknąłem ogólniejszego problemu wielu innych książek z Packt. Zwykle daje im niskie noty, bo odnoszę wrażenie, że są pisane jakby na kolanie. Aktualnie czytam książkę z Apress o Clojure i jestem nią tak zachwycony, że zamierzam całkowicie zarzucić czytanie książek z Packt (poza jedną o WPS/WESB) aż przeczytam wszystkie zaplanowane z Apress, Manning i OReilly (nie wspominając o innych wydawnictwach, szczególnie tych nietechnicznych).
    Wysłać książkę do Ciebie kurierem? Podaj adres na priv i ślę. Mam już w kolejce jedną do wysłania, więc mogę i kolejną. Jestem niezwykle ciekaw Twojej opinii na temat tej książki.

    OdpowiedzUsuń
  9. Nie bardzo rozumiem zafascynowanie programowaniem funkcyjnym. Miałem w obecnym roku tą nieprzyjemność mieć do czynienia z Ocaml'em. Było z tym więcej problemów niż pożytku. Być może związane go było głównie z tym, że zostałem niejako zmuszony do nauki tego języka przez uczelnię. Jednakże do tej pory nie widzę żadnego zastosowania takiego programowania np w tworzeniu rozbudowanych systemów informatycznych (np. klasy CRM, ERP, MRP, etc). Sam na codzień komercyjnie programuję z wykorzystaniem Javy i Obj-C.

    OdpowiedzUsuń
  10. @Paweł, Ja również doświadczyłem podobnego wrażenia, kiedy miałem uczyć się Ocaml i Haskella. Udało się lekko zmodyfikować program (studiów) i ominąłem je szerokim łukiem, co teraz baaaardzo mi doskwiera, a nawet zaczynam zastanawiać się, czy nie uczestniczyć w zajęciach na MIMUWie jako wolny słuchacz. Zwykle jest tak, że kiedy trzeba/musimy, to się nie chce/może, a później przychodzi chwila zadumy i często żałuje decyzji.

    Będę pisał więcej o programowaniu funkcyjnym i na pewno będę miał swój udział w utrwaleniu Twojej niechęci do PF, albo wręcz przeciwnie - wrócisz i podziękujesz :P Obiecaj, że pod koniec roku, napiszesz, czy się coś zmieniło w Twoim postrzeganiu PF dzięki moim wpisom. Zgoda?

    OdpowiedzUsuń
  11. @Jacek, zgoda, ale pod jednym warunkiem. Pokażesz mi do czego można w komercyjnych projektach PF zastosować, okej? :)

    OdpowiedzUsuń
  12. @Jacek: ciekawe co powiesz po lekturze RWH ;)

    OdpowiedzUsuń