Δημοσιεύτηκε: 01 Απρ 2010, 10:37
από cyberpython
kon_nos έγραψε: η java, που έχει ομοιότητες με την C#, πολλές ευκολίες, είναι πολύ βαριά

Το οτι η Java είναι "βαριά" δεν ισχύει - για την ακρίβεια είναι πολύ πιο γρήγορη από την Python (που προσωπικά τη βρίσκω αρκετά γρήγορη για τις περισσότερες εργασίες μίας desktop εφαρμογής).
Αυτό που κάνει τη Java να φαίνεται αργή είναι :
  • Η σχετικά αργή εκκίνηση του JRE - δηλαδή της εικονικής μηχανής, που έχει βελτιωθεί σημαντικά τελευταία.
  • Το γεγονός οτι η Java προσφέρει στον προγραμματιστή τη δυνατότητα αντί να χρησιμοποιήσει το native widget toolkit για την πλατφόρμα που γράφει το GUI της εφαρμογής (π.χ. GTK+), να χρησιμοποιήσει το Swing που είναι ένα toolkit ενσωματωμένο στο JRE. To Swing έχει πολλά πλεονεκτήματα (π.χ. είναι εύκολα παραμετροποιήσιμο(μπορεί κάποιος να το κάνει να έχει το στύλ του συστήματος ή το ίδιο στύλ σε διαφορετικές πλατφόρμες/λειτουργικά), χρησιμοποιεί το MVC pattern, είναι πανεύκολο να γράψει κάποιος νέα widgets επεκτείνοντας τα ήδη υπάρχοντα, και κυρίως το ίδιο GUI λειτουργεί παντού), ΑΛΛΑ επειδή σχεδιάζει τα πάντα από την αρχή(παράθυρα, κουμπιά κτλ.) μπορεί να έχει μικρές αποκλίσεις από το θέμα του συστήματος και το βασικότερο: είναι ΠΟΛΥ ΑΡΓΟ σε σχέση με τα native toolkits.
    Αυτό όμως δε σημαίνει οτι κάποιος δε μπορεί να γράψει το GUI της εφαρμογής του στο native toolkit π.χ. GTK+, οπότε θα είναι το ίδιο γρήγορο (και ίσως γρηγορότερο) με αυτό μίας εφαρμογής π.χ. σε C#.

Πάντως, η Java σαν γλώσσα είναι πολύ γρήγορη και με ενοχλεί ιδιαίτερα όταν ακούω οτι είναι "βαριά", "αργή" κλπ.
Η αλήθεια είναι οτι στην αρχή η JVM ήταν αργή, αλλά με τις βελτιώσεις που έχουν γίνει τελευταία (π.χ.JIT compilation) έχουν βελτιώσει την ταχύτητα εκτέλεσης δραματικά.

Τέλος, ο σημαντικότερος παράγοντας που επηρεάζει την ταχύτητα εκτέλεσης μίας εφαρμογής είναι ο ίδιος ο προγραμματιστής - π.χ. μπορεί να γράψουμε ένα πρόγραμμα σε C++ και στις μεθόδους να περνάμε αντικείμενα με τιμή αντί με αναφορά που επιβαρύνει σημαντικά και την ταχύτητα εκτέλεσης και τη χρήση μνήμης...