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

Java στις 20: Πώς άλλαξε τον προγραμματισμό για πάντα

Η ανάμνηση του κόσμου προγραμματισμού το 1995 δεν είναι εύκολη υπόθεση. Ο αντικειμενοστρεφής προγραμματισμός, για ένα, ήταν ένα αποδεκτό αλλά σπάνια ασκήθηκε παράδειγμα, με πολλά από αυτά που πέρασαν ως τα λεγόμενα αντικειμενοστρεφή προγράμματα να είναι λίγο περισσότερο από τον επαναπροσδιορισμό κώδικα C που χρησιμοποιούσε >> αντί εκτύπωση και τάξη αντί δομ. Τα προγράμματα που γράψαμε εκείνες τις μέρες αποτελούσαν τακτικά πυρήνα λόγω αριθμητικών σφαλμάτων δείκτη ή εξαντλήθηκαν η μνήμη λόγω διαρροών. Ο πηγαίος κώδικας θα μπορούσε σχεδόν να μεταφερθεί μεταξύ διαφορετικών εκδόσεων του Unix. Η εκτέλεση του ίδιου δυαδικού σε διαφορετικούς επεξεργαστές και λειτουργικά συστήματα ήταν τρελή συζήτηση.

Η Java άλλαξε όλα αυτά. Ενώ εξαρτάται από την πλατφόρμα, διατίθεται με μη αυτόματο τρόπο, ο διαδικαστικός κώδικας C θα συνεχίσει να είναι μαζί μας για τα επόμενα 20 χρόνια τουλάχιστον, η Java απέδειξε ότι αυτή ήταν μια επιλογή, όχι μια απαίτηση. Για πρώτη φορά, ξεκινήσαμε να γράφουμε πραγματικό κώδικα παραγωγής σε μια πλατφόρμα, συλλογή απορριμμάτων, αντικειμενοστραφής γλώσσα. και μας άρεσε ... εκατομμύρια από εμάς. Οι γλώσσες που ακολουθούν τη Java, κυρίως το C #, έπρεπε να διαγράψουν τη νέα υψηλότερη γραμμή για την παραγωγικότητα του προγραμματιστή που καθιέρωσε η Java.

Ο James Gosling, ο Mike Sheridan, ο Patrick Naughton και οι άλλοι προγραμματιστές στο Sun's Green Project δεν εφευρέθηκαν τις περισσότερες από τις σημαντικές τεχνολογίες που η Java χρησιμοποίησε σε ευρεία χρήση. Τα περισσότερα από τα βασικά χαρακτηριστικά που περιλαμβάνονται σε αυτό που ήταν τότε γνωστό ως Oak βρήκε την προέλευσή του αλλού:

  • Μια βασική κλάση αντικειμένου από την οποία κατεβαίνουν όλες οι τάξεις; Ψιλοκουβέντα.
  • Ισχυρός στατικός έλεγχος τύπου κατά τη μεταγλώττιση; Άντα.
  • Πολλαπλή διεπαφή, κληρονομιά μιας εφαρμογής; Στόχος-Γ.
  • Ενσωματωμένη τεκμηρίωση; CWeb.
  • Εικονική μηχανή πολλαπλών πλατφορμών και κώδικας byte με σύνταξη just-in-time; Smalltalk πάλι, ειδικά η διάλεκτος του Sun's Self.
  • Συλλογή απορριμάτων? Ψελλίζω.
  • Πρωτόγονοι τύποι και δομές ελέγχου; ΝΤΟ.
  • Σύστημα διπλού τύπου με πρωτόγονους τύπους χωρίς αντικείμενα για απόδοση; C ++.

Η Java, ωστόσο, πρωτοστάτησε στη νέα περιοχή. Τίποτα σαν ελεγμένες εξαιρέσεις δεν υπάρχει σε οποιαδήποτε άλλη γλώσσα πριν ή μετά. Η Java ήταν επίσης η πρώτη γλώσσα που χρησιμοποίησε το Unicode στον εγγενή τύπο συμβολοσειράς και τον ίδιο τον πηγαίο κώδικα.

Αλλά το βασικό πλεονέκτημα της Java ήταν ότι δημιουργήθηκε για να είναι ένα πρακτικό εργαλείο για την ολοκλήρωση της εργασίας. Διαπέρασε καλές ιδέες από παλαιότερες γλώσσες επανασυσκευάζοντάς τις σε μια μορφή που ήταν οικεία στον μέσο C κωδικοποιητή, αν και (σε ​​αντίθεση με το C ++ και το Objective-C) η Java δεν ήταν ένα αυστηρό υπερσύνολο του C. Πράγματι ήταν ακριβώς αυτή η προθυμία να μην προσθέσει μόνο αλλά επίσης αφαιρέστε λειτουργίες που έκαναν την Java τόσο απλούστερη και ευκολότερη στην εκμάθηση από άλλες αντικειμενοστρεφείς απογόνους C.

Η Java δεν είχε (και εξακολουθεί να μην έχει) δομές, συνδικάτα, γραφομηχανές, και επί κεφαλής αρχεία. Μια αντικειμενοστρεφής γλώσσα που δεν έχει δεσμευτεί από την απαίτηση για εκτέλεση κώδικα παλαιού τύπου δεν τις χρειάστηκε. Παρομοίως, η Java παρέλειψε με σύνεση ιδέες που είχαν δοκιμαστεί και βρέθηκε ότι θέλουν σε άλλες γλώσσες: κληρονομιά πολλαπλών εφαρμογών, αριθμητική δείκτη και υπερφόρτωση χειριστή. Αυτή η καλή γεύση στην αρχή σημαίνει ότι ακόμη και 20 χρόνια αργότερα, η Java εξακολουθεί να είναι σχετικά απαλλαγμένη από τις προειδοποιήσεις «εδώ να δράκους» που απορρίπτουν τους οδηγούς στυλ για τους προκατόχους της.

Αλλά ο υπόλοιπος κόσμος προγραμματισμού δεν έχει σταματήσει. Χιλιάδες γλώσσες προγραμματισμού έχουν αυξηθεί από τότε που ξεκινήσαμε τον προγραμματισμό της Java, αλλά οι περισσότερες δεν πέτυχαν ποτέ περισσότερο από ένα μικρό κλάσμα συλλογικής προσοχής προτού τελικά εξαφανιστούν. Αυτό που μας πούλησε στην Java ήταν μικροεφαρμογές, μικρά προγράμματα που εκτελούνται μέσα σε ιστοσελίδες που θα μπορούσαν να αλληλεπιδράσουν με τον χρήστη και να κάνουν περισσότερα από την εμφάνιση στατικού κειμένου, εικόνων και φορμών. Σήμερα, αυτό δεν ακούγεται πολύ, αλλά θυμηθείτε - το 1995, η JavaScript και το DOM δεν υπήρχαν και μια φόρμα HTML που μίλησε σε ένα σενάριο CGI από διακομιστή γραμμένο στο Perl ήταν υπερσύγχρονο.

Η ειρωνεία είναι ότι οι μικροεφαρμογές δεν λειτούργησαν ποτέ πολύ καλά. Απομονώθηκαν εντελώς από το περιεχόμενο της σελίδας, δεν μπόρεσαν να διαβάσουν ή να γράψουν HTML όπως θα μπορούσε τελικά το JavaScript. Οι περιορισμοί ασφαλείας εμπόδισαν την αλληλεπίδραση των μικροεφαρμογών με το τοπικό σύστημα αρχείων και διακομιστές δικτύου τρίτων. Αυτοί οι περιορισμοί έκαναν τις μικροεφαρμογές κατάλληλες για πολύ περισσότερα από απλά παιχνίδια και κινούμενα σχέδια. Ακόμη και αυτές οι ασήμαντες αποδείξεις της αντίληψης παρεμποδίστηκαν από την κακή απόδοση των αρχικών εικονικών μηχανών του προγράμματος περιήγησης. Και από τη στιγμή που οι ελλείψεις των μικροεφαρμογών διορθώθηκαν, τα προγράμματα περιήγησης και οι προγραμματιστές front-end είχαν περάσει από καιρό από την Java. Το Flash, το JavaScript και πιο πρόσφατα το HTML5 μας έβλεπε πολύ πιο αποτελεσματικές πλατφόρμες για την παράδοση του δυναμικού περιεχομένου Ιστού που είχε υποσχεθεί από την Java, αλλά απέτυχε να το παραδώσει.

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

Αρχικά προοριζόταν ως βιβλιοθήκη πελατών πολλαπλών πλατφορμών, η Java βρήκε πραγματική επιτυχία στο χώρο του διακομιστή. Servlets, Java Server Pages και μια σειρά από βιβλιοθήκες με επίκεντρο την επιχείρηση, οι οποίες συνδυάζονταν περιοδικά μαζί και επαναπροσδιορίστηκαν σε ένα συγχέοντας ακρωνύμιο ή άλλο λύθηκαν πραγματικά προβλήματα για εμάς και για τις επιχειρήσεις. Αποτυχίες μάρκετινγκ στην άκρη, η Java πέτυχε σχεδόν τυπικό καθεστώς σε τμήματα πληροφορικής σε όλο τον κόσμο. (Γρήγορη: Ποια είναι η διαφορά μεταξύ Java 2 Enterprise Edition και Java Platform Enterprise Edition; Εάν μαντέψατε ότι το J2EE είναι ο διάδοχος του JEE, το πήρατε ακριβώς πίσω) εναλλακτικές πηγές και συμπληρώματα όπως το Spring, το Hibernate και το Tomcat, αλλά όλα αυτά χτίστηκαν πάνω από το θεμέλιο Sun set.

Αναμφισβήτητα η πιο σημαντική συμβολή του ανοιχτού κώδικα στην Java και το ευρύτερο πρόγραμμα προγραμματισμού είναι το JUnit. Η δοκιμαστική ανάπτυξη (TDD) είχε δοκιμαστεί νωρίτερα με το Smalltalk. Ωστόσο, όπως πολλές άλλες καινοτομίες αυτής της γλώσσας, το TDD δεν πέτυχε ευρεία γνωστοποίηση και υιοθέτηση μέχρι να γίνει διαθέσιμο στην Java. Όταν οι Kent Beck και Erich Gamma κυκλοφόρησαν το JUnit το 2000, το TDD ανέβηκε γρήγορα από μια πειραματική πρακτική μερικών προγραμματιστών στον τυπικό τρόπο ανάπτυξης λογισμικού τον 21ο αιώνα. Όπως είπε ο Martin Fowler, "Ποτέ στον τομέα της ανάπτυξης λογισμικού δεν οφείλονταν τόσα πολλά σε τόσο λίγες γραμμές κώδικα", και αυτές οι λίγες γραμμές κώδικα γράφτηκαν στην Java.

Είκοσι χρόνια από την ίδρυσή της, η Java δεν είναι πλέον η δυσάρεστη αρχή. Έχει γίνει η εδραιωμένη κατεστημένη και άλλες γλώσσες που επαναστατούν. Ελαφρύτερες γλώσσες όπως η Ruby και η Python έχουν κάνει σημαντικές επιδρομές στην επικράτεια της Java, ειδικά στην κοινότητα εκκίνησης όπου η ταχύτητα ανάπτυξης μετράει περισσότερο από την ευρωστία και την κλίμακα - μια ανταλλαγή που εκμεταλλεύτηκε η ίδια η Java τις πρώτες μέρες όταν η απόδοση εικονικών μηχανημάτων με πολύ καθυστερημένο μεταγλωττισμένο κώδικα.

Η Java, φυσικά, δεν σταματά. Η Oracle συνεχίζει να ενσωματώνει καλά αποδεδειγμένες τεχνολογίες από άλλες γλώσσες, όπως generics, autoboxing, απαριθμήσεις και, πιο πρόσφατα, εκφράσεις lambda. Πολλοί προγραμματιστές αντιμετώπισαν για πρώτη φορά αυτές τις ιδέες στην Java. Δεν γνωρίζουν όλοι οι προγραμματιστές την Java, αλλά είτε το γνωρίζουν είτε όχι, κάθε προγραμματιστής σήμερα έχει επηρεαστεί από αυτήν.

Σχετικά Άρθρα

  • Ανασκόπηση: Συγκρίθηκαν τα μεγάλα 4 IDE Java
  • Java για πάντα! 12 κλειδιά για τη διαρκή κυριαρχία της Java
  • Java εναντίον Node.js: Μια επική μάχη για το μερίδιο του προγραμματιστή