Spring Framework Series: Μερος 2ο

ΕΙΣΑΓΩΓΗ

Στο 1ο μέρος αυτής της σειράς κάναμε μία γενική επισκόπηση του Spring Framework και είδαμε τα πλεονεκτήματα και τις δυνατοτητες που προσφέρει στον σύγχρονο J2EE developer (και όχι μονο). Ωραία η θεωρία, όμως  χωρίς πρακτικό κομμάτι…. δεν πάιζει. Πάμε λοιπόν να δούμε στο 2o μέρος αυτής της σειράς πώς μπορούμε να στήσουμε ένα Project σε Spring μέσα σε ελάχιστο χρόνο.

Continue reading “Spring Framework Series: Μερος 2ο”

J2EE και Aspect Oriented Programming

ΕΙΣΑΓΩΓΗ

Όπως οι περισσότεροι προγραμματιστές J2EE, έχω γαλουχηθει, στο μεγαλύτερο μέρος της καριέρας μου, και για πολλά χρόνια, στην ανάπτυξη συστημάτων λογισμικού με τη χρήση τεχνικών αντικειμενοστραφούς προγραμματισμού (OOP). Η μέθοδος αυτή είναι η πλέον διαδεδομένη με κύριο χαρακτηριστικό τον κατακερματισμό ενός προβλήματος σε αντικείμενα που χαρακτηρίζονται από ιδιότητες (μέθοδους) και δεδομένα (μεταβλητές).

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

Τέτοιου είδους προβλήματα και πολλές άλλες ανησυχίες έρχεται να επιλύσει μία διαφορετική τεχνική, ο πτυχοστρεφής  ή κατά άλλους θεματοστρεφής προγραμματισμός (AOP). Πάμε να δούμε  λοιπόν κάποια προκατάρκτικά στοιχέια για αυτόν.

Σημείωση: Προτείνω γενικά τον όρο πτυχοστρεφή γιατί εκφράζει καλύτερα την έννοια aspect στα ελληνικά ακόμη και σε λειτουργικό επίπεδο.

Continue reading “J2EE και Aspect Oriented Programming”

RESTfull Services in Spring 3 MVC

SpringSourceΤα τελευταία χρόνια, το έχει γίνει η ντε φάκτο εναλλακτική λύση αντί για τις SOAP / WSDL /WS αρχιτεκτονικές. Δε μπορούσε λοιπόν να μείνει απ’εξω από τη τελευταία έκδοση του Spring τη 3.0.

Έτσι λοιπόν κατασκεύασαν μια υλοποίηση για ‘RESTful’ Web services και application και τις ενσωμάτωσαν στο @Controller model του Spring MVC.

RESTful χαρακτηριστικά στο Spring MVC 3.0

URI Templates

Ένα από τα πολύ σημαντικά χαρακτηριστικά είναι τα uri templates.

Μέχρι τώρα ήταν σχετικά δύσκολο να έχεις friendly urls. Έπρεπε να χρησιμοποιήσεις url rewriting αρκετές «πατέντες» ή κάποιο ποιο εξειδικευμένο κομμάτι του framework που να σου δίνει flows και να μανατζάρει όλο αυτό το κομμάτι.

Continue reading “RESTfull Services in Spring 3 MVC”

2010 Java Platform Survey

Η Έρευνα έγινε το 2010 απο την εταιρεία REPLAY SOLUTIONS. Συμμετήχαν 142,915
ατομα απο την IT βιομηχανία, στοχευμενα περισσότερο σε ειδηκότητε;ς που έχουν να κάνουν με deploy και support JEE εφαρμογών.

Θα τη βρείτε εδώ http://storage.pardot.com/1772/18317/Survey_Results.pdf

Επιλέγοντας τον κατάλληλο J2EE application server

Μια από τις σημαντικές αποφάσισεις στην αρχιτεκτονική ενός online συστήματος στηριζόμενου σε τεχνολογία J2EE αποτελεί η επιλογή του application container πάνω στο οποίο θα στηθεί. Αν το “κέλυφος” του λογισμικού δεν είναι το κατάλληλο για την περίπτωση, οι συνέπειες μπορεί να αποδειχτούν καταστροφικές όταν είναι live ανεξάρτητα οποιασδηποτε προσπάθειας έχει προηγηθεί για την τελειοποίηση της λειτουργίας της εφαρμογής.
Υπάρχουν διάφοροι παράμετροι που επηρεάζουν την καταληλότητα του application server ανά περίπτωση. Στη λίστα των ποιο βασικών φιγουράρουν οι ακόλουθες:

  • Οι επιδόσεις
  • Το κόστος άδειας
  • Η επεκτασιμότητα
  • Η διαθεσιμότητα
  • Η αποτελεσματικότητα / ευκολία που προσδίδει στην ανάπτυξη της εφαρμογής
  • Υπoστήριξη του παρόχου

Σίγουρα όμως ο ποιο καθοριστικός παράγοντας είναι το μέγεθος της εφαρμογής τόσο σε components όσο και στο πλήθος των χρηστών για το οποίο προορίζεται. Με βάση λοιπόν την κατηγοριοποίηση σε μέγεθος, η προτεραιότητα για κάθε μία από τις προαναφερθαίντες παραμέτρους αλλάζει.

Το παρακάτω άρθρο περιγράφει αναλυτικά τη στρατηγική που πρέπει να ακολουθείται στην επιλογή ενός J2EE application server
http://archive.devx.com/java/free/articles/sf0101/sf0101-1.asp

To batch or not to batch

Batch applications are quite common in IT systems: perhaps you won’t have to write a whole batch application in your developper career but there are many chances you’ll have some batch parts in your Web or desktop applications. Batch is about handling high volumes of data and a lot of things can go wrong or be tricky when it comes to batch: bad performances, very high memory footprint, complex recovery scenarios to avoid stopping a whole batch because of one bad item, etc. This article covers through a simple use case different approaches to tackle with batch applications. By comparing the runtime behavior of the approaches, we’ll see the benefits on relying a batch framework like Spring Batch.

This article is hosted at blog.zenika.com and it is writtenh by the Spring Master of  Zenika Paris Arnaud Cogoluègnes. You may find it here

Open Source στους δύσκολους οικονομικά καιρούς

Όπως δήλωση ο σύμβουλος επιχειρήσεων και Java Champion, Jeff Genender, οι Open source τεχνολογίες έχουν κάνει τεράστια βήματα απο τη πρωτο εμφάνισή τους. Είναι κοινά παραδεκτό ότι όποτε η οικονομία κάνει ελεύθερη πτώση, ο προϋπολογισμός του IT είναι ο πρώτος που περικόπτεται και αυτό οδηγεί πλέον τις εταιρείες να σκέφτονται με λίγο ποιο ανοιχτό μυαλό και ελεύθερο πνεύμα τις τεχνολογίες ανοιχτού λογισμικού για ανάπτυξη και middleware. Για παράδειγμα η ευρεία εξάπλωση των application servers Apache Tomcat και JBoss που πλέον αποκτούν μεγάλο μερίδιο στην παραδοσιακή αγορά των μεγάλων επιχειρήσεων (π.χ. Τράπεζες) έναντι των IBM Websphere και ΒΕΑ δείχνει ακριβός αυτό.
Όπως δήλωσε “The first challenge is political. Getting companies to bet the farm on open source is a challenge. One of the issues companies have with open source is getting commercial support.” δηλαδή το μεγάλο στοίχημα είναι να νικήσεις την αβεβαιώτητα που έχουν οι επιχειρήσεις έναντι της εμπορικής υποστήριξης του προϊντος όταν θα παρουσιαστεί ανάγκη.
Με την μεγάλη ανάπτυξη όμως των κοινοτήτων ανοιχτού λογισμικού πλέον αυτός ο φόβος περιορίζεται πάρα πολύ. Όσο ποιο δημοφιλές και χρηστικό είναι ένα λογισμικό ανοιχτού κώδικα τόσο μεγαλύτερη πιθανότητα έχει να

  • Να είναι άρτοια τεκμηριωμένο
  • Να είναι Bug Free
  • Να έχει πάρα πολλά άτομα εξειδικευμένα που να παρακολουθούν forums, mailing lists κλπ για να δώσουν βοήθεια.
  • Να υπάρχουν εταιρείες εξειδικευμένες στη παροχή υποστήριξης σε αυτό.

Βέβαια σε καιρούς ισχνών αγελάδων σαν και αυτό, πολλές εταιρείες παίρνουν το ρίσκο και διαπιστώνουν ότι τελικά η παρεχόμενη υποστήριξη είναι εξαιρετική και δε χρειάζονται τίποτε άλλο για να αναπτύξουν με ασφάλεια και ταχύτητα τις εφαρμογές τους σε πολύ μικρότερο κόστος.
Εξάλου όπως είπε και ο Genender “Με WebSpheres and WebLogics παίρνεις ένα τεράστιο middleware όταν τελικά το μόνο που χρειάζεσαι είναι ενα μικρό web component!
Τελικά η λύση είναι είναι ανοιχτό λογισμικό!

Quick Tip: Κάνοντας remote debugging στον application server

ΟΚ φανταστείται το εξής σενάριο: Εϊναι 3 η ώρα το πρωί και ο μετρητής καφέδων δείχνει 10+. Κλασικά η εφαρμογή έπρεπε να είναι έτοιμη για demo στο UAT περιβάλλον χτες… (ως συνήθως) αλλά πατώντας το Submit σκάει. Το πρόβλημα με το Null pointer exception που φαίνεται στα logs είναι αδύνατο να εντοπιστεί σε τί οφείλεται παρόλο που ο ίδιος κώδικας “παίζει” στο δικό σας PC. Πανικός !!!

Ευτυχώς όμως μπορούμε να κάνουμε remote debugging και να δούμε βήμα προς βήμα που είναι το πρόβλημα. Στο συγκεκριμένο παράδειγμα θα χρησιμοποιήσουμε Glassfish V3 και Eclipse αλλά παρόμοια διαδικασία υπάρχει για άλλους application servers και IDEs. Continue reading “Quick Tip: Κάνοντας remote debugging στον application server”

Spring Framework series: Μέρος 1ο

ΕΙΣΑΓΩΓΗ 

SpringSourceDecisions, decisions, decisions… λέει το γνωστό απόφθεγμα και δε θα μπορούσε να ταιριάζει καλύτερα σε ένα από το βασικά διλήμματα που έχει να αντιμετωπίσει ένας J2EE architect όσων αφορά την επιλογή middleware. Για ένα τυπικό MVC design pattern, πρέπείτε να γράψει ένα fully custom συστήμα με κάποιον controller και μια ομάδα components για business layer και επικοινωνία με τη βάση ή β) να στηριχθεί σε ένα framework που αναλαμβάνει όλες αυτές τις εργασίες για εκείνον. Μέχρι πρότινως, στη δεύτερη περίπτωση αποτελούσε σχεδόν μονόδρομο η επιλογή των Enterprise Java Beans (EJB) για τα οποία υπήρχαν διαχρονικά παράπονα που σχετίζονται με το ότι είναι βαρεία κτλ. Κάπου λοιπόν στο 2003 ξεκίνησε μία πρωτοβουλία για τη δημιουργία ενός lightweight framework το οποίο δειλά-δειλά και με μεθοδευμένα βήματα αποτελεί σήμερα τον, κατά τη γνώμη πολλών, δεύτερο πόλο ο οποίος δεν είναι άλλος από το Spring Framework. Το άρθρο αυτό αποτελεί το πρώτο σε μία σειρά άρθρων για την τεχνολογία αυτή και εστιάζεται στα γενικά χαρακτηρίστικα και τα πλεονεκτήματα της.  Continue reading “Spring Framework series: Μέρος 1ο”

JSPWiki – μια J2EE Wiki μηχανή

ΕΙΣΑΓΩΓΗ

Από την αρχή της ενασχόλησής μου με τον μαγικό κόσμο της πληροφορικής (σε κάτι ρομαντικά χρόνια που χάνονται στα μέσα της δεκαετίας του ’80) κράτησα ένα καλό συνήθειο: Να καταγράφω οτιδήποτε υλοποιώ γιατί πάντα ήταν σίγουρο ότι θα  χρειαζόμουν αυτήν την πληροφορία αργότερα. Το κακό για μένα όμως ήταν ότι για αρκετά χρόνια, εμπιστεύομουν τα σημειωματάρια μου και έτσι όταν αυτά χάνονταν για ένα ανεξήγητο λόγο (… χμμμ ίσως όχι και τόσο ανεξήγητο εδώ που τα λέμε) μαζί χάνονταν και η πολύτιμη γνώση που είχε αποτυπωθεί πάνω τους.

Μέχρι που ανακάλυψα τη δύναμη του Wiki. Η δυνατότητα να καταγράφω μία πληροφορία που να είναι προσβάσιμη online σήμαινε ότι θα είχα πάντα μαζί μου και παντού (όπου υπήρχε ένας browser τέλως πάντων) τις σημειώσεις μου. Σαν τυπικός javaς (τζαμπάς… κατά άλλους) που είμαι βέβαια κοιταξα να βρω distros σε j2ee. Μέχρι που βρήκα το JSWiki. Continue reading “JSPWiki – μια J2EE Wiki μηχανή”