
Comparatif des langages Python et JavaLangage de développement trÚs populaire ! sur plusieurs aspects (prise en main, performances, environnement, maintenance, etc.)
Seul un nĂ©ophyte non averti nâa jamais entendu parler de JavaLangage de dĂ©veloppement trĂšs populaire ! ou de Python, respectivement 1er et 3Ăšme langages les plus populaires du monde Ă ce jour. A eux deux rĂ©unis, ils accumulent tout de mĂȘme plus de 25% de cĂŽte de popularitĂ© au TIOBE index !
Connus et aimés par les développeurs, ce sont 2 langages qui ont fait leur preuves, et qui, en 2020, se vouent une sacrée bataille !
AprĂšs avoir fait pas mal de projets de dĂ©veloppement avec Java et Python, nous vous proposons aujourdâhui de comparer ces deux grands langages sur plusieurs aspects : prise en main, performances, maintenance, etc. ! Câest parti pour le versus : Python VS JAVA !
Java est nĂ© Ă peu prĂšs en mĂȘme temps que le Web. Créé en 1995 par James Gosling et dâautres confrĂšres, il avait pour but de devenir un langage de programmation indĂ©pendant de la plateforme hardware.
Java connaĂźt rapidement un franc succĂšs et se hisse parmi les langages les plus populaires (3Ăšme place) dans les annĂ©es 2000, pendant que Python nâen est "quâĂ " la 22Ăšme place.
Python est nĂ© plus tĂŽt que Java. Créé en 1991 par Guido Van Rossum, il nâa connu son essor que bien plus tard, notamment aprĂšs la sortie de la version 2.
Avec lâavĂšnement du Machine Learning, Python connaĂźt un deuxiĂšme saut de popularitĂ© qui le fait passer devant le cĂ©lĂšbre C++.
Java et Python sont tous deux des langages dont la prise en main est "globalement" simple. Cependant, Python a tendance Ă ĂȘtre plus facile Ă apprĂ©hender et Ă comprendre.
Python est beaucoup moins verbeux que Java. Rien quâĂ regarder la dĂ©monstration avec le trĂšs simple "Hello World" pour comprendre quâavec beaucoup moins de lignes de code, Python fait beaucoup ! De plus, le formatage est obligatoire en Python. Il nây a ni accolades, ni points virgules, ce qui augmente naturellement la facilitĂ© de lecture du code.
Voici un exemple du fameux "Hello World"Â :
Java :
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
Python :
print ("Hello World")
Python fait la part belle Ă lâinfĂ©rence de type, qui permet, comme dans lâexemple suivant, de "mixer" les types de variables dans un mĂȘme tableau. Certes, cette fonctionnalitĂ© possĂšde des avantages et des dĂ©fauts sur lesquels nous pouvons dĂ©battre pendant longtemps...
Pour rĂ©sumer, lâinfĂ©rence de type :
Java :
public class ArrayTest {
public static void main(String[] args) {
String tab[] = {"Hello World", "6"};
for (String i : tab) {
System.out.println(i);
}
}
}
Python :
tab = ["Hello World", 6]
for i in tab:
print(i)
Python, avec sa syntaxe simple et ses variables dynamiquement typĂ©es, nĂ©cessite moins de lignes de code que Java. Qui dit moins de lignes de code, dit moins de temps passĂ© Ă coder et la productivitĂ© ne peut quâen ĂȘtre augmentĂ©e.
Vous voulez un autre exemple pour voir à quel point Python est rapide ? Intervertissons deux variables. X devient Y et Y devient X :
Java :
int x = 5;
int y = 6;
int temp;
temp = x;
x = y;
y = temp;
Python :
y, x = x, y
Python est définitivement plus simple à prendre en main et est idéal comme premier langage pour découvrir le développement informatique. Concis, productif et facile à apprendre, Python remporte cette manche !
Avantage : Python
Les deux langages utilisent des machines virtuelles pour exĂ©cuter leur code. Cependant, concernant lâinstallation et lâutilisation de lâenvironnement, Python sâavĂšre plus facile Ă utiliser.
Dâune part, lâinstallation de lâenvironnement est beaucoup plus lourde cĂŽtĂ© Java avec la plĂ©thore de versions (OpenJDK, AdoptOpenJDK, Oracle...), JRE et JDK, etc... Il est alors plus difficile de sây retrouver quand on est nĂ©ophyte, comparĂ© au site de Python oĂč un seul bouton permet lâinstallation de lâenvironnement.
Python est un langage interprĂ©tĂ© et la compilation est effectuĂ©e pendant lâexĂ©cution du programme (avec lâinterprĂ©teur classique CPython). CĂŽtĂ© Java, le code est compilĂ© en avance puis, durant lâexĂ©cution, la JVM (Java Virtual Machine) exĂ©cute directement le code compilĂ©.
Ces deux systÚmes ont chacun leurs avantages :
| Python (Interprété) | Java (Compilé) |
|---|---|
| Meilleure gestion des erreurs | RapiditĂ© dâexĂ©cution aprĂšs compilation |
| Rapidité de compilation | Meilleures performances |
| Portabilité |
Notons que Python a Ă©galement lâavantage de pouvoir ĂȘtre intĂ©grĂ© dans dâautres langages.
Exemple de lâintĂ©gration de Python dans Java :
import org.python.util.PythonInterpreter;
public class JythonHelloWorld {
public static void main(String[] args) {
try(PythonInterpreter pyInterp = new PythonInterpreter()) {
pyInterp.exec("print(âHello Python World!â)");
}
}
}
Java est gourmand en mĂ©moire, câest bien connu ! Mais le fait que Python soit un langage interprĂ©tĂ© le rend plus lent que Java sur de nombreuses tĂąches.
Un exemple est le calcul de Ï par la formule de Leibniz dĂ©montre que Python via son interprĂ©teur basique Cpython est bien plus lent que Java (243.5 ms pour Python et 76 ms pour Java).
Il existe nĂ©anmoins un interprĂ©teur (PyPy) Python qui permet, comme Java, de prĂ©-compiler le code et dâoffrir ainsi de trĂšs bonnes performances (41 ms !). Mais, cet interprĂ©teur nâest pas exempt de faiblesses : il fonctionne sur moins dâarchitectures que Cpython, il consomme un peu plus de CPU et est plus efficace sur des opĂ©rations rĂ©pĂ©tĂ©es.
Environnement : Avantage pour Python et sa simplicité de mise en place.
Performances : Avantage pour Java. MalgrĂ© quâil soit plus lourd (et donc lent) Ă compiler, il est tout de mĂȘme plus rapide que Python en temps dâexĂ©cution.
Les deux langages possĂšdent chacun une Ă©norme communautĂ© qui leur ont permis de se dĂ©velopper tous deux dans de nombreux domaines dâapplications.
Mais les deux langages ont quelques domaines de prédilection :
| Python | Java |
|---|---|
| Machine Learning (IA) avec TensorFlow, SciKitLearn | Applications WEB avec Spring |
| IOT (implémenté par défaut sur les Raspberry) | Applications multithreads |
| Scripts simples | Applications Ă long terme |
| Applications Web avec Django, Flask | Applications Android |
Java est spĂ©cialisĂ© dans toutes les applications dâentreprises que ce soit Web, Mobile, traitement de donnĂ©es et certains clients lourds.
Python quant Ă lui est expert pour les prototypes, applications de Machine Learning et pour lâIoT (Internet of Things).
Câest donc match nul pour cette partie, les deux langages nâentrant pas totalement en concurrence.
Java possÚde un avantage indéniable sur de trÚs nombreux langages : la rétro-compatibilité des versions.
Cela permet Ă ce langage dâĂȘtre mis Ă jour en minimisant les effets de "code cassĂ©" dâune version Ă lâautre et donc de dĂ©velopper des applications qui seront maintenables Ă long terme.
Python met fin au support de la version 2 en 2020 et le passage à la version 3 ne se fait pas sans déboires !
Reprenons lâexemple de notre "Hello World"Â :
En Python 2, on Ă©crivait print âHello Worldâ alors que maintenant les parenthĂšses sont obligatoires et cela devient print (âHello Worldâ). De prime abord, cela peut paraĂźtre simple. Pourtant, beaucoup de choses ont changĂ© dans cette Ă©volution et beaucoup de librairies, qui ont fait la force des programmes Python, ne sont plus compatibles ou nâont pas Ă©tĂ© mises Ă jour.
Câest cette diffĂ©rence qui fait de Java notre grand gagnant de cette section. Un programme dĂ©veloppĂ© en Java 8 par exemple, pourra ĂȘtre compilĂ© et exĂ©cutĂ© par un Java plus rĂ©cent (thĂ©oriquement bien sĂ»r, il y a toujours des petites modifications Ă effectuer :) )
CÎté maintenance, avantage : Java ! Java gagne haut la main avec sa maintenabilité connue et reconnue.
Python et Java sont deux trĂšs beaux langages, lâun focalisĂ© sur la vitesse de dĂ©veloppement et sa portabilitĂ© et lâautre sur sa maintenabilitĂ© Ă long terme. Ils sont finalement difficilement comparables car, comme nous lâavons vu cĂŽtĂ© projets, leur utilisation est gĂ©nĂ©ralement diffĂ©rente, voir complĂ©mentaire.
Si nous devions choisir de notre cĂŽtĂ©, nous opterions gĂ©nĂ©ralement pour Java, qui permet de dĂ©velopper des applications avec une vision sur le long-terme, mais ce nâest pas non plus le choix dĂ©finitif !
Java 9, quelques méthodes utiles pour la gestion des strings
PrĂ©sentation de la solution de traitement dâimage OPENCV et retour sur expĂ©rience.
Les MOOC (ou Massive Open Online Courses) sont devenus en quelques années une véritable tendance de fond sur les domaines de la formation personnelle, académique et professionnelle.