Comparaison machines virtuelles Java/C#
Historique
Cette page présente succinctement l'historique des langages Java et C# de 1995 jusqu'à 2014. Nous détaillerons les fonctionnalités dans les parties suivantes
1995
- Java 1.0: Sun sort en 1995 la première version de Java.
- C'est un langage typé orienté objets prévu pour être exécuté sur tous les systèmes possédant une implémentation de la JVM.
- il est rapidement devenu populaire nottament au seins des navigateurs webs grâce à ses Applets qui permettent à une classe Java d'être télécharger depuis le serveur de la page web visité pour être ensuite exécuté en local (Repose sur l'utilisation des ClassLoader)
2002
- Java 1.4: Introduit deux concepts fondamentaux que C# reprendra (nous les verrons plus en détails lorsque nous comparerons les machines virtuelles)
- La compilation Just In Time: permet aux machines virtuelles de ne pas avoir à compiler tout le code avant de l'exécuter
- Les optimisation hotspot: sont des optimisation qui se font directement au moment de l'éxécution du programme
- C# 1.0: Sortie de la première version du langage C# (basé sur le .NET Framework). Son nom est un clin d'oeuil au C++, dont il est un incrémentation (le # représente des ++ sur deux lignes)
- Il est appellé imitation du Java dont il est fortement inspiré
- Sa syntaxe se veut plus proche de celle du C++
2004
- Java 5: Les numéros de version majeur disparait. Cette version apporte beaucoup de nouvelle fonctionnalités dont nous allons voir seulement les principales
- Types génériques: Permettent à des methodes de s'appliquer à des objets sans se soucier de leurs types (lorsque l'implémentation ne dépend pas du type de l'objet, par exemple les Collection: List<>, ...)
- Auto unboxing: Permet de passer d'un type englobant à un type primitif sans effectuer de cast (Integer vers int, Double vers double...)
- Annotation: Donne des informations complémentaires sur les fonctions et les classes (Override, Deprecated, SuppressWarnings, ...)
- Varargs: Methodes peuvent avoir un nombre variable d'arguments.
- C# 2.0:
- Types génériques: Idem qu'en Java
- Delegates: Pointeur de fonctions
2006
- Java 6: Les précédentes version de Java sont reprochés pour leur lenteurs, cette version apporte de nombreuse optimisation HostSpot qui le rendent environ 58% plus rapide.
2008
- C# 3
- Typage implicite(mot clef var): permet, comme dans certains autre langages comme le PHP de ne pas avoir à définir le type des variables (exemple: var foo = 3)
- Lambda: Permet d'écrire des fonction sans avoir à les déclarer
- Linq (Langage Integrated Query): permet d'effectuer de requêtes ressemblant à la syntaxe SQL directement sur des collections
2010
- Java 7:
- Operateur Diamond: Plus besoins de donner le type dans les constructeurs des types dynamiques
- String dans les switch
- C# 4.0:
- Typage dynamique: On peut connaitre le type d'une classe en apellant l'opérateur typeof
- Arguments nommés: Valeurs par default pour une variable
2014
- Java 8:
- Lambda: Idem qu'en C# 3.0
- Amélioration Date et Time API: plus simple à utiliser