Βασική διαφορά: Η Java είναι μια γλώσσα προγραμματισμού, η οποία έχει επηρεαστεί από τη γλώσσα C. Αποδίδει μεγάλο μέρος της σύνταξής του από το C και το C ++, ωστόσο έχει λιγότερες εγκαταστάσεις χαμηλού επιπέδου από τις δύο. Η Java είναι μια γενική γλώσσα προγραμματισμού που έχει σχεδιαστεί για να έχει λιγότερες εξαρτήσεις εφαρμογής σε σύγκριση με προηγούμενες γλώσσες. Το C #, επίσης γνωστό ως C sharp, είναι μια γλώσσα προγραμματισμού προσανατολισμένη σε αντικείμενα. Το C # είναι μια γλώσσα προγραμματισμού πολλών παραδειγμάτων. Το C # βασίζεται στη γλώσσα προγραμματισμού C. Αρχικά αναπτύχθηκε από τον Anders Hejlsberg για τη Microsoft για χρήση στο πλαίσιο .NET.
Η Java αναπτύχθηκε από τον James Gosling στην Sun Microsystems και κυκλοφόρησε το 1995. Αρχικά κυκλοφόρησε ως βασικό στοιχείο της πλατφόρμας Java της Sun Microsystems. Από τότε η Sun έχει εκχωρήσει εκ νέου την πλειοψηφία των τεχνολογιών Java της βάσει της Γενικής Δημόσιας Άδειας GNU. Αυτό σημαίνει ότι όλη η τεχνολογία που έχει άδεια χρήσης υπό την GNU General Public License είναι ανοιχτού κώδικα και γενικά διατίθεται χωρίς κόστος. Η Sun Microsystems συγχωνεύθηκε τελικά με την Oracle Corporation.
Η Java έχει σχεδιαστεί για να επιτρέπει στον ίδιο κώδικα να εκτελείται σε διάφορες πλατφόρμες. δηλαδή, οι προγραμματιστές επιτρέπεται να "γράψουν μία φορά, να τρέξουν οπουδήποτε" (WORA). Ως εκ τούτου, οι εφαρμογές Java συνήθως μεταγλωττίζονται σε bytecode. Ένα αρχείο κλάσης που περιέχει ένα Java bytecode μπορεί στη συνέχεια να εκτελεστεί σε οποιαδήποτε Java Virtual Machine (JVM). Αυτό θα ήταν ανεξάρτητα από την αρχιτεκτονική υπολογιστών.
Από το 2012, η Java έχει γίνει μια από τις πιο δημοφιλείς γλώσσες προγραμματισμού για χρήση. Αυτό ισχύει ιδιαίτερα για εφαρμογές ιστού πελάτη-διακομιστή. Πολλά άλλα συστήματα έχουν αναπτύξει εναλλακτικές εφαρμογές τεχνολογιών Sun, όπως το GNU Compiler για Java και το GNU Classpath.
Το C #, επίσης γνωστό ως C sharp, είναι μια γλώσσα προγραμματισμού προσανατολισμένη σε αντικείμενα. Το C # είναι μια γλώσσα προγραμματισμού πολλών παραδειγμάτων. Περιλαμβάνει ισχυρούς δακτυλογραφητικούς, επιτακτικούς, δηλωτικούς, λειτουργικούς, διαδικαστικούς, γενικούς, αντικειμενοστρεφείς (βασισμένους σε τάξη) και έμμεσους κλάδους προγραμματισμού.
Το C # βασίζεται στη γλώσσα προγραμματισμού C. Αρχικά αναπτύχθηκε από τον Anders Hejlsberg για τη Microsoft για χρήση στο πλαίσιο .NET. Η γλώσσα C # εγκρίθηκε αργότερα ως πρότυπο από Ecma (ECMA-334) και ISO (ISO / IEC 23270: 2006). Το C # είναι μία από τις γλώσσες προγραμματισμού που έχουν σχεδιαστεί για την Κοινή Γλωσσική Υποδομή. Το C # προορίζεται να είναι μια απλή, σύγχρονη, γενικής χρήσης, αντικειμενοστραφή γλώσσα προγραμματισμού.
- Η γλώσσα C # προορίζεται να είναι μια απλή, σύγχρονη, γενικής χρήσης, αντικειμενοστραφή γλώσσα προγραμματισμού.
- Η γλώσσα και οι εφαρμογές της, πρέπει να παρέχουν υποστήριξη για αρχές μηχανικής λογισμικού όπως ισχυρός έλεγχος τύπων, έλεγχος ορίων συστοιχιών, ανίχνευση προσπαθειών για χρήση μη αρχικών μεταβλητών και αυτόματη συλλογή απορριμμάτων. Η ευρωστία του λογισμικού, η ανθεκτικότητα και η παραγωγικότητα του προγραμματιστή είναι σημαντικά.
- Η γλώσσα προορίζεται για χρήση στην ανάπτυξη εξαρτημάτων λογισμικού κατάλληλων για ανάπτυξη σε κατανεμημένα περιβάλλοντα.
- Η φορητότητα του πηγαίου κώδικα είναι πολύ σημαντική, όπως και η φορητότητα του προγραμματιστή, ειδικά για εκείνους τους προγραμματιστές που είναι ήδη εξοικειωμένοι με το C και το C ++.
- Η υποστήριξη της διεθνοποίησης είναι πολύ σημαντική.
- Το C # προορίζεται να είναι κατάλληλο για την εγγραφή εφαρμογών τόσο για φιλοξενούμενα όσο και για ενσωματωμένα συστήματα, που κυμαίνονται από τα πολύ μεγάλα που χρησιμοποιούν εξελιγμένα λειτουργικά συστήματα μέχρι τα πολύ μικρά με ειδικές λειτουργίες.
- Αν και οι εφαρμογές C # προορίζονται να είναι οικονομικές όσον αφορά τις απαιτήσεις ισχύος μνήμης και επεξεργασίας, η γλώσσα δεν προορίζεται να ανταγωνιστεί άμεσα την απόδοση και το μέγεθος με τη γλώσσα C ή τη συναρμολόγηση.
Δεδομένου ότι βασίζεται στη γλώσσα C, είναι αρκετά παρόμοια με αυτή. Μοιράζεται μάλιστα και μερικές συντακτικές συμβάσεις με το C. Ωστόσο, ένα μειονέκτημα του C # είναι ότι, όπως αναπτύχθηκε από τη Microsoft για χρήση στο πλαίσιο .NET, λειτουργεί μόνο σε λειτουργικά συστήματα της Microsoft.
Ορισμένες διαφορές μεταξύ Java και C #:
- Το C # παρέχει περισσότερους τύπους δεδομένων σε σύγκριση με την Java.
- Το C # περιέχει περισσότερους πρωτόγονους τύπους δεδομένων από την Java.
- Το C # υποστηρίζει την υπερφόρτωση του χειριστή, ενώ η Java δεν το κάνει.
- Το C # υποστηρίζει τον τύπο δοκού ενώ η Java δεν το κάνει.
- Όλοι οι τύποι δεδομένων στο C # είναι στύλος.
- Το C # παρέχει καλύτερη έκδοση από την Java.
- Το C # επιτρέπει την παράδοση παραμέτρων μέσω παραπομπής χρησιμοποιώντας τη λέξη ref, ενώ η Java επιτρέπει την παράδοση παραμέτρων από την τιμή.
- Το C # επιτρέπει μεταβλητό αριθμό παραμέτρων χρησιμοποιώντας τη λέξη-κλειδί param.
- Το C # παρέχει στατικούς κατασκευαστές για αρχικοποίηση.
- Το C # παρέχει εντολή goto αντί της εντολής break.
- Η δήλωση των συστοιχιών είναι διαφορετική σε C # σε σύγκριση με την Java.
- Η σύμβαση για την Java είναι να βάλουμε μία δημόσια τάξη σε κάθε αρχείο και ορισμένοι μεταγλωττιστές το απαιτούν. Το C # επιτρέπει οποιαδήποτε διάταξη αρχείου προέλευσης.
- Η Java δεν υποστηρίζει συμβάντα και αντιπροσώπους.
- Στην Java, οι μέθοδοι είναι εικονικές από προεπιλογή, αλλά μπορούν να γίνουν τελικές. Ενώ, στο C # είναι σφραγισμένα από προεπιλογή, αλλά μπορούν να γίνουν εικονικά.
- Το C # δεν έχει ελέγξει τις εξαιρέσεις.
- Η Java δεν επιτρέπει τη δημιουργία τύπων τιμών καθορισμένων από το χρήστη.
- Η Java δεν έχει υπερφόρτωση από τον χειριστή και τη μετατροπή.
- Η Java δεν διαθέτει μπλοκ iterator για απλή εφαρμογή των iterators.
- Η Java δεν έχει κάτι σαν LINQ.
- Εν μέρει λόγω της έλλειψης εκπροσώπων, η Java δεν έχει κάτι αρκετά σαν ανώνυμες μεθόδους και εκφράσεις lambda.
- Η Java δεν έχει δέντρα έκφρασης.
- Το C # δεν έχει ανώνυμες εσωτερικές τάξεις.
- Η Java δεν έχει καμία ισοδυναμία με τους ανώνυμους τύπους C # 3.0.
- Η Java δεν έχει πληκτρολογήσει σιωπηρά τοπικές μεταβλητές.
- Η Java δεν διαθέτει μεθόδους επέκτασης.
- Η Java δεν έχει εκφράσεις αρχικοποίησης αντικειμένων και συλλογής.
- Η Java δεν έχει ιδιότητες ως μέρος της γλώσσας. είναι μια σύμβαση των μεθόδων get / set / είναι.
- Η Java δεν έχει το ισοδύναμο του "μη ασφαλούς" κώδικα.
- Τα τεύχη της Java είναι πολύ πιο αντικειμενοστρεφείς.
- Η Java δεν έχει οδηγίες προεπεξεργασίας (#define, #if κ.λπ. στο C #).
- Η Java δεν έχει καμία ισοδυναμία με την αναφορά και τη διαγραφή του C # για τη μετάβαση παραμέτρων με παραπομπή.
- Η Java δεν έχει ισοδύναμο μερικών τύπων.
- Οι διεπαφές C # δεν μπορούν να δηλώσουν πεδία.
- Η Java δεν έχει ακέραιους τύπους ακέραιων χαρακτήρων.
- Η Java δεν υποστηρίζει γλώσσα για έναν δεκαδικό τύπο.
- Η Java δεν έχει κανέναν ισοδύναμο τύπων μηδενικής αξίας