Java Quiz no1

Consider the following code

public class JavaApplication4 {

    /**
    * @param args the command line arguments
    */
    public static void main(String[] args) {

        String testValue = "1";

        try{
            testValue = "2";
            return;
        }catch(Exception e){
    
        }finally{
            testValue = "3";
        }

    }
}

What will be the value of testValue at the end of execution?

Τα Java VM Options που πρέπει να ξέρεις τι κάνουν!

Είναι πάρα πολλές οι φορές που συναντώ στησίματα σε servers με JVM options και στην ερώτηση μου “γιατί είναι επιλεγμένα αυτά τα options?” η απάντηση είναι: “Γιατί το είχε πει ο “Θανάσης” “που ήξερε” ή “Τι να σου πω; έτσι το βρήκα και μου φάνηκε καλό”.

Αποφάσισα, λοιπόν, να γράψω αυτό το άρθρο, για να αναφέρω τις πιο συχνές παραμέτρους που χρησιμοποιώ εγώ για Java 6 μέχρι και 8, σε παραγωγικά και μη περιβάλλοντα.
Continue reading “Τα Java VM Options που πρέπει να ξέρεις τι κάνουν!”

Πως επιλέγω το κατάλληλο Implementation για το Collection μου

Java Collections Cheat Sheet

Συχνά στους junior programmers έρχομαι αντιμέτωπος με το πρόβλημα του να χρησιμοποιούν ένα  collection implementation, συνήθως  ArrayList ή HashSet, επειδή απλά αυτό βλέπουν συχνά χωρίς να ξέρουν τις ιδιαιτερότητές του με αποτέλεσμα διάφορα προβλήματα όπως να χάνεται η σειρά ενώ τη χρειάζονται, να χάνονται διπλές εγγραφές κλπ.

Οπότε αποφάσισα να γράψω αυτόν τον οδηγό για την κατάλληλη επιλογή του

Continue reading “Πως επιλέγω το κατάλληλο Implementation για το Collection μου”

Συνέδριο JavaOne 2016 – Live Streaming

Για άλλη μια χρονιά το Java One παραμένει η κορυφή στα συνέδρια γύρω απο τη Java!

Όταν πας στο Σαν Φρανσίσκο ξέρεις ότι  θα συναντήσεις τα καλύτερα μυαλά γύρω απο τη java και θα φύγεις απο εκεί καλύτερος προγραμματιστής.

Στον εκθεσιακό χώρο του Java One εχουν συγκεντρώσει τις πιο καινοτόμες εταιρείες που χρησιμοποιούν Java σήμερα-και αυτοί που διαμορφώνουν το μέλλον.

Για του άτυχους που δεν είναι εκεί υπάρχει live streaming που θα το δείτε εδώ http://www.oracle.com/javaone/live/index.html

[video] Lightweight JEE7 with JAX RS

Είχα την τύχη να παρακολουθήσω φέτος το εκπληκτικό συνέδριο JCrete μετά απο πρόσκληση για εκδήλωση ενδιαφέροντος του Java Champion και συνδιοργανωτή Dr Heinz Kabutz . Εκεί λοιπόν σε μια παρουσίαση του Java Champion Sebastian Daschner με αντίστοιχο θέμα είδα τη δυνατότητα με χρήση JEE χωρίς να κατασκευάζεις τεράστιες και “βαριές” εφαρμογές της δημιουργίας μικρών web εφαρμογών που γρήγορα σου δίνουν RESTfull endpoint exposure οπότε αποφάσισα να φτιάξω το παρακάτω βίντεο.

Όλος ο κώδικας του παρακάτω βίντεο είναι στο Github https://github.com/diakogiannis/LightJee7WithJaxRS

Σύντομα θα βγάλω και δεύτερο μέρος που να περιλαμβάνει persistence κλπ.

[JavaSpecialists] Summer Special – Writing My Name Into a Plank with Java

Ελληνική μετάφραση του Java(tm) Specialists’ Newsletter

Καλησπέρα απο το The Java(tm) Specialists’ Newsletter,

Ελπίζω να απολαμβάνετε τον Αύγούστο όσο εγώ! Ξεκίνησε την 1η Αυγούστου, το #JCrete, που ήταν το καλύτερο απο τα τελευταία 6 που έγιναν. Απίστευτοι συμμετέχοντες και έντονες συζητήσεις.

Ένα από τα παιχνίδια που απέκτησα πρόσφατα είναι ένα Carbide 3D Nomad Pro 883. Πρόκειται για μια φρέζα CNC που μπορείτε να ελέγξετε μέσα από Java. Τελικά κατάλαβα πώς να μιλήσουμε με αυτό. Ο κώδικάς μου χρειάζεται ακόμη κάποιες βελτιώσεις, αλλά είναι ήδη αρκετά καλό ότι θα μπορούσα να γράψω το όνομά μου σε ένα κομμάτι ξύλου και να σχεδιάσω ένα Java Duke.

Κινηματογράφισα τον εαυτό μου να κάνει μια πρόχειρη επίδειξη χρησιμοποιώντας Periscope. Χρειάστηκε κάποιος χρόνος για να δουλέψει το λογισμικό, χάρη σε ένα ενοχλητικό “χαρακτηριστικό” στη Java 9 με την υποτιθέμενη  locale-sensitive String.format () συνάρτηση. Με την μόνη διαφορά οτι την έχουν φτιάξει λάθος. Στον υπολογιστή μου έχω δημιουργήσει το δεκαδικό σημείο στήξης να είναι ένα “.” και το πήρε ως “,” αντ ‘αυτού. Κατα τη γνώμη μου, είναι λάθος να αλλάξει η String.format () και να αναγνωρίζει locale. Θα υπάρξει πολλής κώδικας εκεί έξω που αναμένει να εξάγει το δεκαδικό σαν μια τελεία. Επειδή έγραφα κώδικα με το ένα χέρι και με το άλλο κράταγα το κινητό τηλέφωνο στο άλλο, έκανα μερικά λάθη. Αν είστε ανυπόμονοι, ίσως να θέλετε να παρακάμψετε μέσα από τα πρώτα 20 λεπτά, όπου προσπαθώ να κάνω πάρει το demo να ξεκινήσει.

https://www.periscope.tv/heinzkabutz/1nAKEbpOoDbGL

Continue reading “[JavaSpecialists] Summer Special – Writing My Name Into a Plank with Java”

Δημιουργία συμπιεσμένου ZIP αρχείου με Java

Αυτό το χρειάστηκα σήμερα το πρωί. Η φιλοσοφία είναι ότι έχουμε να διαχειριστούμε κάποια αρχεία σε ένα ή παραπάνω φακέλους στο δίσκο και πρέπει να δημιουργήσουμε ένα συμπιεσμένο zip αρχείο με τα αρχεία αυτά.

Η λύση είναι αρκετά απλή.

  1. Παίρνουμε τις διαδρομές των αρχείων και τις βάζουμε σε ένα collection (Array πχ)
  2. Ανοίγουμε ένα output stream στο δίσκο που του “δίνουμε zip ιδιότητες”
  3. Διαβάζουμε ένα-ένα τα αρχεία και τα βάζουμε στο  output stream
  4. Κλείνουμε το stream