Glasshish v3 Installation on Ubuntu / Debian

Όλοι όσοι έχουν ασχολιθεί με J2EE development σίγουρα σε κάποια περίοδο έχουν συναντήσει άρθρα τα οποία περιγράφουν το νέο application server της SUN (ORACLE πλέον) τον Glassfish στην περίφημη έκδοσή του την v3.

Η Αλήθεια είναι πως πρόκειται για ένα πολύ μεγάλο βήμα και για έναν πάρα πολύ καλό full j2ee compiant application server ο οποίος έχει πολλές καλές αποκρίσεις και απο πλευράς ταχύτητας αλλά και χρηστηκότητας.

Ας δούμε λοιπόν την εγκατάσταση του σε Ubuntu 10.04 LTS. Με όμοιο τρόπο γίνεται και σε Debian Lenny.

Κάνουμε login σε ένα terminal με χρήστη root ή εναλλακτικά τρέχουμε sudo -i για να έχουμε ισοδύναμη κατάσταση. Εγκαθιστούμε το maven2 και το sun java6 developers kit δίνοντας

apt-get -y install maven2 sun-java6-jdk java-common

Continue reading “Glasshish v3 Installation on Ubuntu / Debian”

Εισαγωγη στο Hibernate

Αυτός ο οδηγός θα σας δείξει τη βασική χρήση του Hibernate 3.0. Το Hibernate είναι ένα open source object relational mapping tool για Java.

Προσφαίρει υψηλής απόδοσης object/relational persistence και query service για Java.

Με το Hibernate μπορείτε να φτιάξετε persistent classes και με τη Hibernate Query Language, μπορείτε να γεφυρώσετε τις σχέσεις σε όλες τις βασεις δεδομένων. Μπορείτε να χρησημοποιήσετε native SQL ή Java-based Κριτήρια.

Αυτή τη στιγμή το Hibernate είναι το πλέον δημοφιλές object/relational mapping solution για Java

Continue reading “Εισαγωγη στο Hibernate”

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”

Επιλέγοντας τον κατάλληλο 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!
Τελικά η λύση είναι είναι ανοιχτό λογισμικό!

J2EE URL rewrite

To mod_rewrite module του Apache web server πιθανόν το ξέρετε. Πόσες νύχτες έχουν κάποιοι από εμάς ξοδέψει για να το configure-άρουμε ξεσκαρτίζοντας ως και τα ποιο απίθανα forum (από Κορέα μέχρι Αργεντινή) για να χρησιμοποιήσουμε τις απεριόριστες δυνατότητες που έχει ως προς την επαναεγγραφή του URL on the fly στη δική μας περίπτωση.

Να όμως που υπάρχει και έκδοση του URL rewrite σε επίπεδο web application. Η συγκεκριμένη τεχνολογία λέγεται Url Rewriter Filter, ένα ελέυθερα διαθέσιμο προϊόν της Tuckey. Σε αυτό το άρθρο περιγράφω κάποια χαρακτηριστικά και κάποιες πρακτικές οδηγίες χρήσεως.

 

Continue reading “J2EE URL rewrite”