Dec 16, 2012

Αναλυτική κριτική για το βιβλίο "Oracle ADF real world developer's guide"

Μετά από ένα μήνα περίπου blog-σιωπής λόγω άφθονων υποχρεώσεων, ας επανέλθουμε με την επισκόπηση ενός βιβλίου που είχαμε προαναγγείλει εδώ και καιρό. Πρόκειται για το "Oracle ADF real world developer's guide" του Jobinesh Purushothaman. Πρόκειται για τον νεώτερο τίτλο στην ADF βιβλιογραφία που καλύπτει την έκδοση 11g R2, και είναι γραμμένο από έναν άνθρωπο που γνωρίζει όσο λίγοι το framework. Ο Jobinesh  διαθέτει ένα εξαιρετικά επιτυχημένο blog που είναι μάλλον αδύνατον κάποιος να ασχολείται με το ADF και να μην έχει ανατρέξει κάποια στιγμή στο blog του. Ένας επιπλέον λόγος αναφοράς αυτού του τίτλου είναι πως  ένας από τους reviewers είναι ένας εξαιρετικός συνάδελφος και συνεργάτης, ο Δημήτρης Στασινόπουλος που εξίσου διατηρεί ένα δημοφιλές blog.

Είναι ενδιαφέρον να αντιπαραβάλει κάποιος το συγκεκριμένο βιβλίο με το επίσημο developer's guide της Oracle που εξάλλου μετράει γύρω στις 1820 σελίδες. Σε πρώτη φάση, η δομή των κεφαλαίων του βιβλίου ακολουθεί αυτή της επίσημης τεκμηρίωσης. Υπερτερεί όμως σε παραδείγματα και άφθονο πηγαίο κώδικα. Καλύπτει με λεπτομέρειες πολλά από τα ενδότερα στοιχεία του framework που δεν έχουν αναφερθεί αλλού όπως για παράδειγμα το πώς δουλεύει το locking, η διαχείριση transactions, το ADF lifecycle, χρησιμοποιούμενα αρχεία metadata και άλλα πολλά. Ιδιαίτερη έμφαση έχει δοθεί επίσης στα ADF Java APIs. O Jobinesh όταν αναφέρεται σε ένα θέμα πολύ συχνά περιγράφει σε πολύ αναλυτικό βαθμό και με παραδείγματα τα διαθέσιμα APIs και την ακολουθία εκτέλεσης τους στο runtime δίχως να αφήσει τίποτα ασχολίαστο. Από την άλλη, για θέματα που που είναι ήδη αρκετά καταγεγραμμένα στην επίσημη τεκμηρίωση είτε σε online πηγές δίνεται μια σύντομη περιγραφή και άμεσες παραπομπές ώστε να αποφεύγονται επαναλήψεις. Τέλος, αξίζει να αναφερθεί πως στα  σχετικά code downloads περιλαμβάνονται όλα τα παραδείγματα του βιβλίου, κάτι που δεν συμβαίνει με όλους τους τίτλους της Packt, και είναι εξαιρετικά χρήσιμο.

Τα περιεχόμενα του βιβλίου περιλαμβάνουν δώδεκα κεφάλαια, τα μισά από τα οποία αναφέρονται στα ADF BC, τα υπόλοιπα τέσσερα στα ADF Faces και στον ADF Controller. Υπάρχουν και δυο μεικτά κεφάλαια σχετικά με validations και best practices. Η εμμονή στην τεχνική λεπτομέρεια κάνει το βιβλίο πολύ χρήσιμο για μεσαίου και ανώτερου επιπέδου προγραμματιστές του ADF, αλλά σε καμία περίπτωση δεν θα το συνιστούσα για πρώτο ανάγνωσμα σε 4GL (Forms) ή Java/JEE developers.

To πρώτο κεφάλαιο ("Getting started with Oracle ADF") περιγράφει στα γρήγορα έναν κύκλο ανάπτυξης σε ADF καθώς και συνοδευτικά εργαλεία δίνοντας αναλογίες με ένα σύγχρονο JEE τρόπο προγραμματισμού. Έπειτα ("Introduction to ADF Business Components") περιγράφονται με συντομία τα ADF BC καθώς και οι διαδικασίες ανάκτησης δεδομένων (queries) και οριστικοποίησης αλλαγών (commit) πάντα φυσικά με UML sequence διαγράμματα και πολλές λεπτομέρειες. Συνεχίζουμε με την περιγραφή των entity objects (κεφάλαιο 3) και των view objects (κεφάλαιο 4) καλύπτοντας εξαιρετικά όλες από τις δυνατότητές τους τόσο σε δηλωτικό (declarative) όσο και σε προγραμματιστικό επίπεδο. Η διαχείριση του κύκλου ζωής entities και view objects είναι αντικείμενο του "Advanced Concepts on Entities Objects and View Objects" όπου γίνεται μια θαυμάσια παρουσίαση και των σχετικών APIs τόσο για transactions όσο και για queries. Εξίσου ενδιαφέρον είναι και το κεφάλαιο για τα Application Modules, καλύπτοντας διάφορες πτυχές παραμετροποίησης (tuning parameters, shared modules, passivation, savepoints, κ.α.)

Στο κεφάλαιο "Binding Business Services with the User Interface" μαθαίνουμε πολλά για τους διάφορους τύπους ADF bindings, τα metadata αρχεία τους και τη διασύνδεση με Servlets. Μετά ("Building Data Bound Web User Interfaces") περιγράφονται ανάμεσα στα άλλα συνοπτικά τα components των ADF Faces και το δέσιμο τους με το ADF model, οι iterators και η σύνθετη διαμόρφωση των ADF query panels. Τα κεφάλαια 9 και 10 αναφέρονται στα ADF task flows, στο transaction management τους, στα regions, στα trains καθώς και μια ενδιαφέρουσα αναφορά στα savepoints. Στο "More on Validations and Error Handling" βλέπουμε λεπτομέρειες στον χειρισμό τους στο επίπεδο των ADF Faces και του ADF Model σε σχέση με τον κύκλο ζωής τους. Το κεφάλαιο 12 ("Oracle ADF Best Practices") συμπυκνώνει αρκετές πρακτικές οργάνωσης και επιλογές παραμετροποίησης για την καλύτερη απόδοση και επεκτασιμότητα των ADF εφαρμογών και έτσι κλείνει ιδανικά το βιβλίο.

Για όσους λοιπόν θέλουν να επεκτείνουν τις γνώσεις τους στο ADF, να καταλάβουν την εσωτερική λειτουργία των δυνατοτήτων του καθώς και να μάθουν πολλές δυνατότητες παραμετροποίησης (και αντίστοιχα APIs) τότε αυτό το βιβλίο είναι σταθμός. Ο Jobinesh περιγράφει αναλυτικά κάθε γνώρισμα σε μεγάλο βάθος δίνοντας πολλαπλές προοπτικές, προβλέποντας πιθανές ερωτήσεις του αναγνώστη. Πιστεύω μάλιστα πως το βιβλίο θα ήταν ακόμα πιο ισχυρό αν περιελάμβανε περισσότερες λεπτομέρειες σχετικά με τα ADF Faces αλλά και εξίσου προηγμένες δυνατότητες όπως τη χρήση javascript, θέματα ασφάλειας, personalization, κ.α. που μερικές φορές θα καταφύγει κάποιος σε ένα έργο με βάση αυτή την τεχνολογία.

No comments: