James Gosling, le père de Java, l’un des langages de programmation les plus utilisés au monde, s’est entretenu avec le chercheur Lex Fridman sur les origines de Java et ses motivations pour créer un langage qui serait utilisé sur des dizaines de milliards d’appareils et deviendrait central pour le développement d’Android chez Google.
Gosling a conçu Java il y a 25 ans alors qu’il travaillait chez Sun Microsystems. En 2009, Java serait l’une des principales raisons de l’acquisition de Sun par Oracle. Selon Oracle, il y a aujourd’hui 51 milliards de machines virtuelles Java (JVM) actives déployées dans le monde.
Mais bien avant l’acquisition de Sun par Oracle, Gosling a déclaré que lui et une équipe de Sun « s’inquiétaient en quelque sorte qu’il y ait des choses qui se passent dans l’univers de l’informatique que l’industrie informatique manquait » – ce qui deviendrait aujourd’hui l’Internet des objets.
SEE : Kit d’embauche : Développeur Python (TechRepublic Premium)
« Il s’agissait de ce qui se passait en termes de matériel informatique, de processeurs et de mise en réseau qui était en dehors de l’industrie informatique », a-t-il déclaré.
« C’était tout, des premières lueurs des téléphones cellulaires qui se produisaient alors à – vous regardez les ascenseurs et les locomotives et les systèmes de contrôle des processus dans les usines et toutes sortes d’équipements audio et vidéo.
« Ils avaient tous des processeurs en eux, ils faisaient tous des choses avec eux et on sentait qu’il y avait quelque chose qui se passait là que nous devions comprendre. »
À ce stade, C et C++ « possédaient absolument l’univers » et tout était écrit dans ces langages.
Gosling dit que son équipe a fait plusieurs « voyages épiques sur la route » autour de 1990 pour visiter Toshiba, Sharp, Mitsubishi et Sony au Japon, Samsung et plusieurs autres entreprises sud-coréennes, et est allé « partout en Europe » pour visiter des entreprises comme Philips, Siemens et Thomson.
« Une des choses qui a sauté aux yeux, c’est qu’ils faisaient toutes les choses informatiques habituelles que les gens faisaient 20 ans auparavant », se souvient-il.
« Ils réinventaient les réseaux informatiques et ils faisaient toutes les erreurs que les gens de l’industrie informatique avaient faites.
« Comme j’ai beaucoup travaillé dans le domaine des réseaux, nous allions visiter l’entreprise X qui décrivait cette chose de mise en réseau qu’elle faisait, et juste sans rien, je pouvais leur dire comme 25 choses qui allaient être des désastres complets. »
Découvrir que l’industrie en dehors du monde informatique traditionnel répétait maintenant les erreurs antérieures était l’une des principales raisons pour lesquelles Gosling et ses collègues ont pensé qu’ils pouvaient offrir quelque chose d’utile en Java.
Mais il a également réalisé que l’industrie de l’électronique grand public et l’industrie informatique avaient une vision très différente des clients, ce qui a contribué à informer la façon dont il allait concevoir Java.
« En haut de la liste, il y avait ceux qui considéraient leur relation avec le client comme sacrée. Ils n’étaient jamais prêts à faire des compromis pour la sécurité. Une des choses qui m’a toujours rendu nerveux dans l’industrie informatique était que les gens étaient prêts à faire des compromis en matière de fiabilité pour obtenir des performances », a déclaré Gosling.
« Il faut juste trouver… comment s’assurer que si vous mettez un morceau de pain grillé dans le grille-pain, il ne va pas tuer le client. Il ne va pas s’enflammer et brûler la maison », a-t-il ajouté.
Après ces voyages sur la route, Gosling et l’entreprise ont construit un prototype de système de contrôle en code C et C++ pour des biens électroniques domestiques, comme un téléviseur et un magnétoscope. La sécurité était une considération clé dans ses objectifs pour ce qui allait devenir Java.
« Au début des années 1990, il était bien compris que la source numéro un des vulnérabilités de sécurité était juste les pointeurs, était juste les bogues, comme 50% à 60% à 70% étaient des bogues et la grande majorité d’entre eux étaient comme des débordements de tampon. Nous devons nous assurer que cela ne peut pas arriver. Et c’était la chose originale pour moi était ‘Cela ne peut pas continuer’. »
Mais plus tôt cette année, Gosling a lu un reportage sur l’équipe de Chromium qui a constaté que 70% des bogues de sécurité dans la base de code de Chrome étaient des bogues de gestion de la mémoire et de sécurité.
« Chrome est comme un morceau géant de code C++. Et 60% à 70% de toutes les vulnérabilités de sécurité étaient des astuces de pointeurs stupides. Et je me suis dit que c’était 30 ans plus tard et que nous en étions toujours là », a déclaré Gosling.
Au delà des considérations de sûreté et de sécurité pour Java, il voulait assurer la « vélocité des développeurs ».
« Je suis devenu vraiment religieux à ce sujet parce que j’avais passé une quantité impensable de temps de ma vie à chasser les bugs de pointeur mystère. Les bugs de pointeur mystère ont tendance à être les plus difficiles à trouver parce que… ceux qui font mal ont une chance sur un million « , note-t-il.
« Lorsque vous effectuez un milliard d’opérations par seconde, cela signifie que cela va se produire. Je suis devenu religieux sur le fait que si quelque chose échoue, cela se produit immédiatement et visiblement. L’une des choses qui était une véritable attraction de Java pour beaucoup d’ateliers de développement était que nous savons que nous obtenons notre code opérationnel deux fois plus vite. »
SE : Stephen Hawking avait tort sur l’IA qui tue les humains (dit le robot)
La programmation orientée objet était également un concept important pour Java, selon Gosling.
« L’une des choses que vous obtenez de la programmation orientée objet est une méthodologie stricte sur ce que sont les interfaces entre les choses et d’être vraiment clair sur la façon dont les parties se rapportent les unes aux autres. »
Cela permet d’aborder les situations où un développeur essaie de « se faufiler sur le côté » et casse le code pour un autre utilisateur.
Il admet avoir contrarié certaines personnes en empêchant les développeurs d’utiliser des portes dérobées. C’était une chose « d’ingénierie sociale », mais dit que les gens ont découvert que la restriction faisait une différence lors de la construction de grands morceaux complexes de logiciels avec beaucoup de contributeurs à travers plusieurs organisations. Cela a donné à ces équipes une clarté sur la façon dont ces choses sont structurées et « vous sauve la vie ».
Il a offert une brève critique de l’ancien patron d’Android Andy Rubin sur la gestion de Java dans le développement d’Android. Gosling en 2011 avait fait un bref passage chez Google suite à l’acquisition de Sun par Oracle. Le procès intenté par Oracle à Google concernant son utilisation des API Java n’est toujours pas entièrement réglé après une décennie d’audiences.
« Je suis heureux que cela ait été fait », a déclaré Gosling, faisant référence à son utilisation de Java dans Android. « Java fonctionnait sur les téléphones portables depuis pas mal d’années et cela fonctionnait vraiment, vraiment bien. Il y avait des choses sur la façon dont ils l’ont fait, en particulier diverses façons dont ils ont en quelque sorte violé toutes sortes de contrats. »
« Le gars qui l’a dirigé, Andy Rubin, il a franchi beaucoup de lignes. Des lignes ont été franchies qui ont depuis poussé comme des champignons dans des affaires judiciaires géantes. n’avait pas besoin de faire cela et en fait, il aurait été tellement moins cher pour eux de ne pas franchir les lignes », a-t-il ajouté.
« J’en suis venu à croire que peu importe ce que faisait Android, ça allait exploser. J’ai commencé à le considérer comme un fabricant de bombes. »