Προγραμματισμός

Node.js εναντίον Java: Μια επική μάχη για το διανοητικό σκέλος προγραμματιστή

Στην ιστορία της πληροφορικής, το 1995 ήταν μια τρελή στιγμή. Πρώτα εμφανίστηκε η Java, και μετά κλείστηκε στα τακούνια της ήρθε JavaScript. Τα ονόματα τους έκαναν να μοιάζουν με συζευγμένα δίδυμα που αποσπάστηκαν πρόσφατα, αλλά δεν θα μπορούσαν να είναι πιο διαφορετικά. Ένα από αυτά είναι μεταγλωττισμένο και στατικά δακτυλογραφημένο. το άλλο ερμηνευμένο και δυναμικά δακτυλογραφημένο. Αυτή είναι μόνο η αρχή των τεχνικών διαφορών μεταξύ αυτών των δύο εξαιρετικά άγριων γλωσσών που έκτοτε έχουν μετατοπιστεί σε μια σειρά συγκρούσεων, χάρη στο Node.js.

Αν είστε αρκετά μεγάλος για να είστε γύρω τότε, ίσως να θυμάστε την πρώιμη, επική κορυφή της Java. Άφησε τα εργαστήρια και καρφώθηκε ο μετρητής διαφημιστικής εκτύπωσης. Όλοι το είδαν ως μια επανάσταση που θα σταματούσε σε τίποτα λιγότερο από μια συνολική εξαγορά του υπολογιστή. Αυτή η πρόβλεψη κατέληξε να είναι εν μέρει σωστή. Σήμερα, η Java κυριαρχεί σε τηλέφωνα Android, εταιρικούς υπολογιστές και ορισμένους ενσωματωμένους κόσμους όπως δίσκους Blu-ray.

Ωστόσο, για όλη την επιτυχία της, η Java δεν έδειξε ποτέ μεγάλη πρόσφυση στην επιφάνεια εργασίας ή στο πρόγραμμα περιήγησης. Οι άνθρωποι έλεγαν τη δύναμη των μικροεφαρμογών και των εργαλείων που βασίζονται σε Java, αλλά το gunk βλάπτει πάντα αυτούς τους συνδυασμούς. Οι διακομιστές έγιναν το γλυκό σημείο της Java.

Εν τω μεταξύ, αυτό που οι προγραμματιστές αρχικά πίστευαν ότι ο χαζός δίδυμος έχει έρθει στο δικό του. Σίγουρα, η JavaScript προστέθηκε εδώ και μερικά χρόνια ως HTML και ο ιστός τράβηξε ένα Borg στον κόσμο. Αλλά αυτό άλλαξε με το AJAX. Ξαφνικά, ο χαζός δίδυμος είχε δύναμη.

Στη συνέχεια, το Node.js γεννήθηκε, γυρίζοντας τα κεφάλια των προγραμματιστών με την ταχύτητά του. Όχι μόνο η JavaScript ήταν πιο γρήγορη στον διακομιστή από ό, τι περίμενε κανείς, αλλά ήταν συχνά ταχύτερη από την Java και άλλες επιλογές. Η σταθερή διατροφή των μικρών, γρήγορων, ατελείωτων αιτημάτων για δεδομένα έχει κάνει το Node.js πιο κοινό, καθώς οι ιστοσελίδες έχουν γίνει πιο δυναμικές.

Ενώ μπορεί να ήταν αδιανόητο πριν από 20 χρόνια, τα σχεδόν δίδυμα είναι τώρα κλειδωμένα σε μια μάχη για τον έλεγχο του κόσμου προγραμματισμού. Από τη μία πλευρά βρίσκονται τα βαθιά θεμέλια της στερεάς μηχανικής και της αρχιτεκτονικής. Από την άλλη πλευρά είναι απλότητα και πανταχού παρούσα. Ο κόσμος της Java που βασίζεται σε μεταγλωττιστές παλιού σχολείου θα διατηρήσει το έδαφος του ή θα βοηθήσει την ταχύτητα και την ευελιξία του Node.js να συνεχίσει να μετατρέπει τα πάντα στο δρόμο της;

Πού κερδίζει η Java: Rock-solid foundation

Μπορώ να ακούσω τους προγραμματιστές να γελούν. Κάποιοι μπορεί ακόμη και να πεθαίνουν από καρδιακή ανεπάρκεια. Ναι, η Java έχει δυσλειτουργίες και σφάλματα, αλλά σχετικά μιλώντας, είναι ο βράχος του Γιβραλτάρ. Η ίδια πίστη στο Node.js είναι πολλά χρόνια μακριά. Στην πραγματικότητα, μπορεί να είναι δεκαετίες πριν το πλήρωμα JavaScript γράφει σχεδόν τόσες δοκιμές παλινδρόμησης όσο η Sun / Oracle αναπτύχθηκε για να δοκιμάσει την Java Virtual Machine. Όταν εκκινείτε ένα JVM, αποκτάτε 20 χρόνια εμπειρίας από έναν σταθερό επιμελητή αποφασισμένο να κυριαρχήσει στον εταιρικό διακομιστή.

Ο κόσμος της JavaScript φτάνει γρήγορα. Όταν μεγάλο μέρος του ιστού εξαρτάται από τη μηχανή εκτέλεσης JavaScript, ένα bazillion ώρες προγραμματιστή πηγαίνει για να γυαλίσει όλες τις άκρες. Όμως, όλη η καινοτομία έχει ένα μειονέκτημα, επειδή τα νέα χαρακτηριστικά μπορεί να πολλαπλασιάζονται γρηγορότερα από ότι η βάση προγραμματιστών μπορεί να τα απορροφήσει. Οι προγραμματιστές του παλιού σχολείου συχνά μπερδεύονται από τον κώδικα που είναι γεμάτος με τις νεότερες βελτιώσεις σύνταξης ECMAScript και αυτός ο νέος νέος κώδικας θα σπάσει ήσυχα ορισμένα παλαιότερα προγράμματα περιήγησης. Η ατελείωτη προσφορά καινοτόμων προεπεξεργαστών όπως το CoffeeScript και το JSX μπορεί να είναι μεγάλη για προγραμματιστές που θέλουν αυτές τις δυνατότητες, αλλά δυσκολεύουν τους υπόλοιπους από εμάς να ανοίξουμε ένα τυχαίο αρχείο και να το κατανοήσουμε αμέσως.

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

Πού κερδίζει το Node.js: Ubiquity

Χάρη στο Node.js, το JavaScript βρίσκει ένα σπίτι στον διακομιστή και στο πρόγραμμα περιήγησης. Ο κωδικός που γράφετε για έναν πιθανότατα θα λειτουργεί με τον ίδιο τρόπο και στα δύο. Τίποτα δεν είναι εγγυημένο στη ζωή, αλλά αυτό είναι όσο πιο κοντά γίνεται στην επιχείρηση υπολογιστών. Είναι πολύ πιο εύκολο να κολλήσετε με το JavaScript και για τις δύο πλευρές της διαίρεσης πελάτη / διακομιστή από ό, τι είναι να γράψετε κάτι μία φορά στην Java και πάλι σε JavaScript, κάτι που πιθανότατα θα πρέπει να κάνετε αν αποφασίσετε να μετακινήσετε την επιχειρηματική λογική που γράψατε στην Java για το διακομιστή στο πρόγραμμα περιήγησης. Ή ίσως το αφεντικό θα επιμείνει ότι η λογική που δημιουργήσατε για το πρόγραμμα περιήγησης μεταφέρεται στον διακομιστή. Και στις δύο κατευθύνσεις, το Node.js και το JavaScript διευκολύνουν τη μετεγκατάσταση κώδικα.

Το προβάδισμα του κόμβου σε αυτόν τον κόσμο φαίνεται να επεκτείνεται. Τα πιο εξελιγμένα πλαίσια ιστού, όπως το React, θα αποφασίσουν στο τελευταίο δευτερόλεπτο εάν θα εκτελέσουν τον κώδικα στο διακομιστή ή στον πελάτη. Μια μέρα θα τρέξει στον πελάτη και μια άλλη ημέρα θα τρέξει στον διακομιστή. Κάποια έξυπνη λογική θα πάρει την απόφαση σχετικά με τη μύγα με βάση το φορτίο ή την εφεδρική μνήμη RAM ή κάτι άλλο. Ορισμένα πλαίσια αποστέλλουν JavaScript στη βάση δεδομένων ως ερώτημα όπου εκτελείται. Ο κώδικάς σας θα μπορούσε να εκτελείται οπουδήποτε και δυσκολεύεται να διατηρηθεί επειδή δεν στέλνει ταχυδρομική κάρτα στο σπίτι. Απλά χαίρεστε γιατί δεν χρειάζεται να σκεφτείτε τις λεπτομέρειες.

Πού κερδίζει η Java: Καλύτερα IDE

Οι προγραμματιστές Java διαθέτουν Eclipse, NetBeans ή IntelliJ, τρία κορυφαία εργαλεία που είναι καλά ενσωματωμένα με προγράμματα εντοπισμού σφαλμάτων, αποσυμπιεστές και διακομιστές. Ο καθένας έχει χρόνια ανάπτυξης, αφοσιωμένους χρήστες και στερεά οικοσυστήματα γεμάτα πρόσθετα.

Εν τω μεταξύ, οι περισσότεροι προγραμματιστές Node.js πληκτρολογούν λέξεις στη γραμμή εντολών και κωδικοποιούν τον αγαπημένο τους επεξεργαστή κειμένου. Ναι, μερικοί από τους καλύτερους συντάκτες κειμένου όπως το Atom έχουν περίτεχνες συλλογές προσθηκών που κάνουν σχεδόν οτιδήποτε, αλλά ακόμα και τότε αισθάνεται ότι το Node.js είναι πιο παλιό σχολείο από το Eclipse. Σύντομα θα αντικαταστήσουμε το ποντίκι μας με ένα ραβδί Atari.

Ορισμένοι προγραμματιστές χρησιμοποιούν το Eclipse ή το Visual Studio, και τα δύο υποστηρίζουν Node.js. Φυσικά, η αύξηση του ενδιαφέροντος για το Node.js σημαίνει ότι φτάνουν νέα εργαλεία, μερικά από τα οποία, όπως το Node-RED της IBM προσφέρουν ενδιαφέρουσες προσεγγίσεις, αλλά απέχουν ακόμη πολύ από το να είναι τόσο ολοκληρωμένα ή τόσο κυρίαρχα όσο το Eclipse ή το IntelliJ.

Το περίεργο είναι ότι οι προγραμματιστές δεν φαίνεται να χρησιμοποιούν αυτά τα εργαλεία. Η γραμμή εντολών έπρεπε να εξαφανιστεί πριν από 35 χρόνια με την άφιξη του Mac, αλλά κανείς δεν είπε στους προγραμματιστές του Node.js. Οι επιλογές είναι εκεί. Το WebStorm, για παράδειγμα, είναι ένα συμπαγές εμπορικό εργαλείο από το JetBrains που ενσωματώνει πολλά εργαλεία κατασκευής γραμμής εντολών.

Φυσικά, αν ψάχνετε για ένα IDE που επεξεργάζεται και κάνει ζογκλέρ κώδικα, τα νέα εργαλεία που υποστηρίζουν το Node.js είναι αρκετά καλά. Αλλά αν ζητήσετε από το IDE σας να σας επιτρέψει να επεξεργαστείτε ενώ χρησιμοποιείτε τον πηγαίο κώδικα που τρέχει, όπως ένας χειρουργός φέτες ανοίγει ένα στήθος, καλά, τα εργαλεία Java είναι πολύ πιο ισχυρά. Είναι όλα εκεί και είναι όλα τοπικά.

Πού κερδίζει το Node.js: Ερωτήματα βάσης δεδομένων

Τα ερωτήματα για ορισμένες από τις νεότερες βάσεις δεδομένων, όπως το CouchDB και το MongoDB, γράφονται σε JavaScript. Η ανάμιξη του Node.js και μια κλήση στη βάση δεδομένων δεν απαιτεί αλλαγή ταχυτήτων, πόσο μάλλον να θυμόμαστε τις διαφορές σύνταξης.

Εν τω μεταξύ, πολλοί προγραμματιστές Java χρησιμοποιούν SQL. Ακόμα και όταν χρησιμοποιούν το Java DB - πρώην Derby, μια βάση δεδομένων γραμμένη στην Java για προγραμματιστές Java - γράφουν τα ερωτήματά τους σε SQL. Θα νομίζατε ότι θα καλούσαν απλώς μεθόδους Java, αλλά θα κάνατε λάθος. Πρέπει να γράψετε τον κωδικό της βάσης δεδομένων σας σε SQL και, στη συνέχεια, αφήστε το Derby να αναλύσει το SQL. Η SQL είναι μια ωραία γλώσσα, αλλά είναι εντελώς διαφορετική από την Java και πολλές ομάδες ανάπτυξης χρειάζονται διαφορετικούς ανθρώπους για να γράψουν SQL και Java.

Για να επιδεινωθούν τα πράγματα, πολλοί κωδικοποιητές Java χρησιμοποιούν περίτεχνες βιβλιοθήκες και σχήματα για να μετατρέψουν τα δεδομένα από το ερώτημα SQL σε αντικείμενα Java έτσι ώστε να μπορούν να τα αναδιαμορφώσουν σε πρότυπα. Είναι μια τρελή διαδικασία και τελικά είναι πολύ σπατάλη.

Πού κερδίζει η Java: Τύποι

Πολλά από τα εισαγωγικά μαθήματα προγραμματισμού συνεχίζουν να χρησιμοποιούν Java επειδή πολλοί σοβαροί προγραμματιστές τείνουν να αρέσουν τον στατικά δακτυλογραφημένο κώδικα τόσο για την απλότητα όσο και για την ασφάλεια. Ο κωδικός αισθάνεται πιο αυστηρός αφού ο μεταγλωττιστής πιάσει τα προφανή σφάλματα.

Το JavaScript, ωστόσο, πλησιάζει και ορισμένοι προγραμματιστές μεταβαίνουν στο TypeScript, ένα στατικό πληκτρολόγιο superset που εφαρμόζει όλη τη μαγεία ελέγχου τύπου πριν εκτοξεύσει κάτι που εκτελείται στη στοίβα JavaScript του προγράμματος περιήγησής σας. Αν σας αρέσουν οι τύποι, αυτό μπορεί να είναι αρκετό για να αγκαλιάσετε τη JavaScript. Ή θα μπορούσατε απλώς να αναγνωρίσετε την απομίμηση ως την πιο ειλικρινή μορφή κολακείας και να κολλήσετε με την Java, η οποία αγκάλιασε τη στατική πληκτρολόγηση από την αρχή.

Πού κερδίζει το Node.js: Συντακτική ευελιξία

Το JavaScript ήταν μια απλή γλώσσα για την εμφάνιση ανεπιθύμητων κουτιών ειδοποιήσεων και διπλού ελέγχου εισαγωγής φόρμας. Στη συνέχεια, η κοινότητα προγραμματιστών δημιούργησε πολλές διαφορετικές εκδόσεις της γλώσσας που θα μπορούσαν να μεταφερθούν σε κάτι για το πρόγραμμα περιήγησης. Υπάρχει το πλήθος CoffeeScript που προσφέρει μια χούφτα διαφορετικών συντάξεων που έχουν σχεδιαστεί για να ικανοποιούν ένα γούστο για καθαρότερα σημεία στίξης. Υπάρχει το πλήθος React / Vue που συνδυάζει HTML και JavaScript μόνο και μόνο επειδή είναι καθαρότερο. Υπάρχει TypeScript για τους λάτρεις του τύπου και LiveScript για τους λάτρεις της λειτουργικής γλώσσας.

Θα βρείτε τεράστια δημιουργικότητα και στον κόσμο της Java, αλλά για κάποιο λόγο δεν εκφράζεται με πολλούς προ-επεξεργαστές. Υπάρχουν πολλές γλώσσες όπως οι Kotlin, Scala και Clojure που μετατρέπονται σε κώδικα byte για το JVM, αλλά με κάποιο τρόπο αισθάνονται αρκετά διαφορετικές ώστε να ξεχωρίζουν ως ξεχωριστές γλώσσες. Όλοι οι προεπεξεργαστές κάνουν τη ζωή πιο διασκεδαστική για προγραμματιστές JavaScript που αγαπούν διαφορετικούς τρόπους για τη διαμόρφωση ή τη διάτρηση του κώδικα τους.

Πού κερδίζει η Java: Απλή διαδικασία κατασκευής

Τα περίπλοκα εργαλεία κατασκευής όπως το Ant και το Maven έχουν φέρει επανάσταση στον προγραμματισμό Java. Αλλά υπάρχει μόνο ένα ζήτημα. Γράφετε τις προδιαγραφές σε XML, μια μορφή δεδομένων που δεν έχει σχεδιαστεί για να υποστηρίζει τη λογική προγραμματισμού. Σίγουρα, είναι σχετικά εύκολο να εκφράσεις διακλάδωση με ένθετες ετικέτες, αλλά υπάρχει κάτι ενοχλητικό για την αλλαγή γραναζιών από την Java σε XML απλώς για την κατασκευή κάτι. Με το JavaScript, δεν υπάρχει εναλλαγή γραναζιών.

Το Node.js είχε την πιο απλή έκδοση. Θα επεξεργαζόσασταν απλώς τον κώδικα και έπειτα πατώντας το "run". Αυτό ήταν τότε. Καθώς οι προγραμματιστές του Node έχουν «βελτιώσει» τη διαδικασία, έχουν προσθέσει προεπεξεργαστές που λαμβάνουν την αγαπημένη σας υποδιαίρεση της JavaScript και τη μετατρέπουν σε κάτι που μπορεί να εκτελεστεί. Στη συνέχεια, ο διαχειριστής πακέτων Node πρέπει να βρει τη σωστή βιβλιοθήκη. Τις περισσότερες φορές αυτό λειτουργεί μόνο, αλλά μερικές φορές δεν λειτουργεί και τότε ξοδεύετε χρόνο αναζητώντας τον σωστό αριθμό έκδοσης κάποιου τεχνουργήματος που χτίζετε σε ένα ξεχωριστό βήμα. Και αν διαπράξετε κάποιο λάθος στο αποθετήριο αντικειμένων, λοιπόν, αυτός ο αριθμός έκδοσης τραβήχτηκε και πρέπει να γυρίσετε ξανά τους τροχούς του οδόμετρου.

Η Java έχει επίσης μια πολύπλοκη διαδικασία κατασκευής που μοιάζει πολύ με τη μέθοδο Node.js, αλλά δεν φαίνεται να έχει γίνει πιο περίπλοκη. Με κάποιον τρόπο, ο Maven και το μυρμήγκι μοιάζουν τώρα με το Ίδρυμα Java. Πολλά από τα τραχιά άκρα έχουν χαθεί πολύ και οι κατασκευές λειτουργούν πιο συχνά. Εάν υπήρχε κάποιο απόλυτο μέτρο ταλαιπωρίας, οι δύο γλώσσες μπορεί να είναι παρόμοιες, αλλά η γρήγορη έκρηξη της πολυπλοκότητας JavaScript σημαίνει ότι η Java κερδίζει.

Σχετικό βίντεο: Συμβουλές και κόλπα Node.js

Σε αυτό το εξηγητικό βίντεο, μάθετε διάφορες τεχνικές που μπορούν να βελτιώσουν την εμπειρία ανάπτυξης του κόμβου σας.

Πού κερδίζει το Node.js: JSON

Όταν οι βάσεις δεδομένων εκπέμπουν απαντήσεις, η Java πηγαίνει σε πολύπλοκα μήκη για να μετατρέψει τα αποτελέσματα σε αντικείμενα Java. Οι προγραμματιστές θα συζητήσουν για ώρες σχετικά με τις αντιστοιχίσεις POJO, την αδρανοποίηση και άλλα εργαλεία. Η διαμόρφωσή τους μπορεί να διαρκέσει ώρες ή και ημέρες. Τελικά, ο κώδικας Java λαμβάνει αντικείμενα Java μετά από όλη τη μετατροπή. Και όταν πρόκειται για διαμόρφωση, ο κόσμος της Java εξακολουθεί να προσκολλάται στο XML και προσφέρει ακόμη και δύο σημαντικούς αναλυτές για να δώσει στους προγραμματιστές περισσότερους λόγους να ανησυχούν.

Σήμερα, πολλές διαδικτυακές υπηρεσίες και βάσεις δεδομένων επιστρέφουν δεδομένα στο JSON, ένα φυσικό μέρος της JavaScript. Το JSON είναι τώρα τόσο συνηθισμένο και χρήσιμο που πολλοί προγραμματιστές Java χρησιμοποιούν τη μορφή, και αρκετοί καλοί αναλυτές JSON διατίθενται επίσης ως βιβλιοθήκες Java. Αλλά το JSON είναι μέρος της ίδρυσης του JavaScript. Δεν χρειάζεστε βιβλιοθήκες. Είναι όλα εκεί και είναι έτοιμα.

Πού κερδίζει η Java: Απομακρυσμένος εντοπισμός σφαλμάτων

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

Πού κερδίζει το Node.js: Επιφάνεια εργασίας

Μπορεί να υπάρχουν μερικές εφαρμογές Java που εκτελούνται εκεί έξω και εξακολουθώ να διατηρώ ορισμένα αρχεία Java JAR στα οποία μπορώ να κάνω κλικ για εκτέλεση, αλλά ως επί το πλείστον ο επιτραπέζιος κόσμος είναι σε μεγάλο βαθμό χωρίς Java. Η JavaScript, από την άλλη πλευρά, συνεχίζει να καταγράφει όλο και περισσότερες ενέργειες καθώς το πρόγραμμα περιήγησης καταναλώνει τους περισσότερους ρόλους για την επιφάνεια εργασίας μας. Όταν η Microsoft ξαναγράφησε το Office για να εργαστεί στο πρόγραμμα περιήγησης, η μήτρα μεταδόθηκε. Εάν εξακολουθείτε να αναρωτιέστε, υπάρχουν ενδιαφέρουσες επιλογές όπως το Electron που παίρνουν τον κώδικα ιστού σας και τον μετατρέπουν σε αυτόνομη εφαρμογή για επιτραπέζιους υπολογιστές.

Πού κερδίζει η Java: Handhelds

Οι εφαρμογές Android γράφονται συχνά στην Java και το 90% των νέων τηλεφώνων διαθέτουν κάποια έκδοση Android. Πολλοί άνθρωποι δεν χρησιμοποιούν καν επιτραπέζιους υπολογιστές, επειδή τα τηλέφωνα είναι αρκετά καλά για τα πάντα.

Φυσικά υπάρχει λίγο σύγχυση. Πολλοί προγραμματιστές γράφουν εφαρμογές ιστού Node.js που στοχεύουν τα προγράμματα περιήγησης για κινητά τόσο στο iPhone όσο και στα Android. Εάν αυτό γίνει καλά, η απόδοση είναι συχνά αρκετά καλή.