Accueil / Articles PiApplications. / Sujets autour de la programmation

Choix techniques de PiApplications.

Nous réalisons des logiciels depuis 1984, cela fait un bout de chemin...

Une histoire brève et riche.

A cette époque, l'informatique était encore le monde réservé des "docteurs" et des ingénieurs en blouse blanche. Ainsi nous avons vécu l'arrivée des premières machines "grand public" , ZX81 (16 ko de RAM) avec son assembleur Z80 puis son grand frère le ZX spectrum (48 ko de RAM et périphérique de stockage minibande). Les langages étaient alors les "Basic" et l'assembleur. En 1986, nous avons acquis le premier PC avec l'Amstrad 1512 avec 512 ko de RAM et deux lecteurs de disquettes 5"1/4. Apple développait ses première machines dont le fameux Apple II... Le langage Pascal commençait alors à s'imposer face au langage C plus rustique. Les années 90 ont vu l'informatique prendre un nouvel essor sous l'action de plusieurs facteurs :

  1. l'accroissement rapide, continu et d'importance des performances matérielles tant pour les microprocesseurs que pour les mémoires ou les disques durs ;
  2. l'extension capacités des réseaux publics et locaux accompagnée de la chute des coûts de communication liée à leur privatisation ;
  3. l'arrivée des Ateliers de Génie Logiciel (AGL) visant à augmenter la productivité des développements ;
  4. la disponibilité de nombreux systèmes d'exploitation concurrents sur PC dont les UNIX (System V et Solaris en particulier), Windows 3.1 et NT 3, OS2, Linux, etc. ;
  5. l'essor du commerce électronique sur Internet avec le navigateur qui commence à s'imposerr comme "client universel".

Cette époque pourrait être qualifiée aujourd'hui de "grande pagaille" tant elle a été riche d'innovations et d'espoirs. Un marché immense (planétaire même) se découvrait et chacun y allait de son projet inovant certains aussi brillants et éphémères que les papillons.

Les années 2000 sont marquées par deux évolutions majeures :

  1.  l'explosion de la téléphonie mobile et de sa conséquence : les smartphones ;
  2. l'arrivée d'un nouveau concept ou plutôt la reprise d'un concept initial : la plate-forme virtuelle (ou encore plate-forme "logique").

L'explosion de la téléphonie mobile entraîne la révision complète du concept d'ordinateur. Les smartphones ont des capacités limitées dans tous les domaines et ne peuvent pas exécuter un des système d'exploitation existants. Aussi existe-t-il aujourd'hui 3 grands acteurs majeurs dans ce domaine :

Il est probable que la politique commerciale de coût et de captivité fera qu'Apple retournera rapidement à son marché de niche une fois son avance technique consommée (ce qui est quasiment le cas en 2015). Microsoft ayant déjà une mauvaise réputation de système propriétaire et n'affichant rien de vraiment original devrait végéter sur ce segment d'autant que sa politique de rachat de Nokia ne semble pas conduire à des périphériques bon marché. Il est d'ailleurs assez ironique de constater que Nokia très innovateur dans les années 2000 et qui avait fait le choix de Java sur ces téléphones (ancêtre d'Android) soit désormais contraint de concevoir des smartphones Windows en raison de son rachat par Microsoft. Ainsi va la dure loi du marché...

C'est donc Google avec Android qui équipera le maximum de smartphones dans les prochaines années. En effet, en dehors d'Apple et Microsoft, tous les constructeurs ne disposent que d'Android pour équiper leurs appareils. Ceux qui ont fait le pari de concevoir et déployer leur propre système n'ont pas récoltés le fruit de leurs efforts et il est peu probable que des constructeurs se lancent aujourd'hui dans cette course.

L'autre avancée majeure des années 2000 est la plate-forme logique. Cette plate-forme est un pseudo système d'exploitation "logique" qui se substitue au système d'exploitation "physique" en offrant une interface de communication avec le monde extérieur "normalisée" au travers d'une API. Ce concept était déjà peu ou prou celui offert dès les débuts par le langage Basic. dont l'interpréteur venait s'intercaler entre le code source et l'exécution du code machine. De plus, cette nouvelle plate-forme n'est pas née de la volonté de s'intégrer aux PC ou aux ordinateurs existants mais celle d'équiper des systèmes électroniques intelligents disposant de faibles ressources (l'avènement des smartphones saura se souvenir de ces débuts). Ce fut la société Sun (Oracle désormais) avec sa plate-forme Java (ou JVM pourJava Virtual Machine) qui lança cette innovation majeure. Très vite Sun et d'autres sociétés telle IBM ont vu l'intérêt de porter ce concept au monde du développement sur PC. Cela permettait d'abstraire le système d'exploitation et donc le matériel à condition de détenir une JVM pour la plate-forme ciblée. Leur slogan reflète assez bien l'intérêt de la JVM : Write once, run everywhere (écrit une seule fois, exécuté partout). Linux fut l'un des premiers système cible de la JVM en raison des gains fabuleux liés à l'absence de coût sur les licences. De plus le concept orienté objet du langage, s'il est plus difficile à appréhender, tend naturellement vers la factorisation du code et donc facilite la réutilisation (vaste sujet encre incomplètement résolu).

Notons que Java a su évoluer de belle manière malgré les péripéties commerciales de Sun, chaque nouvelle version enrichissant la plate-forme de concepts majeurs. Cela est sans doute lié pour une part à l'excellence du concept initial et pour une autre part au recueil planétaire des besoins d'évolution via le JCP. S'ajoute également à ceci, que Java est plus exigeant en matière de compétences que ses rivaux. Si cela présente quelques inconvénients sur le coût en ressource humaine, il est plus "pro" et donc moins sujet à la pollution issus des débats stériles. La version 1.8 des spécifications de la plate-forme enrichi la programmation impérative de la capacité de programmation fonctionnelle (expressions lambda et flux d'opérations [stream]). Cette programmation fonctionnelle permet en outre l'exécution des traitements en parallèle (multithreading) en s'appuyant de manière transparente sur le modèle fork-join de la version 1.7.

Microsoft, alors leader incontesté du monde "grand public" en a très vite compris les enjeux au plan de la productivité et lançait quelques années après son initiative .Net basé sur son Common Language Runtime (CLR) qui n'est autre que le pendant de la JVM. Le projet Go-Mono a par ailleurs montré la capacité de portage du CLR sur LINUX avec le frein naturel lié aux applications graphiques puisque le CLR tire avantage des plates-formes Windows qui intègrent le graphisme au système d'exploitation (même si WPF tend à s'écarter de cette capacité).

Le moins que l'on puisse dire c'est que quand IBM, Oracle et Microsoft convergent, il y a intérêt à suivre le débat autour de cette convergence. Si de plus, le choix de Google pour son système Android repose sur Java on peut légitimement penser que l'avenir se situe autour de ces plates-formes "logiques". Nous les appelons logiques pour éviter la confusion avec les machines virtuelles. Une machine virtuelle est un système d'exploitation "invité" qui s'exécute sur un système d'exploitation "hôte" qui lui "prête" ses périphériques. Le système d'exploitation hôte peut bien évidemment exécuter plusieurs machines virtuelles "invité". Comme on peut en avoir l'intuition immédiate, les machines "logiques" sont particulièrement bien adaptées pour s'exécuter sur des machines virtuelles.

Derrière tout cela, il y a bien entendu un modèle économique qui touche surtout au coût de possession :

Ce modèle économique de back end se double d'une approche commerciale très discutable vis-à-vis du grand public : les "stores" (Apple Store, Windows Store, Google Play). En effet, dans ce modèle, le système qui s'exécute exige une connexion à un compte chez un de ces éditeurs. Ce compte de connexion est ni plus ni moins qu'un mécanisme d'espionnage très fin du client connecté (localisation, habitude d'achat, sociétés bancaires détenant ses comptes, sociétés de crédit auxquelles il fait appel, activité quotidiennes, etc.). Il n'est pas exagéré de prétendre que les systèmes experts d'analyse de ces éditeurs en savent plus sur un utilisateur non averti du risque que lui-même.

Pour Apple, c'est presque excusable car cette démarche fait partie intégrante de leur modèle de captivité : une fois chez Apple, on ne peut qu'acheter chez Apple. Chez Microsoft, le Windows Store à débarqué avec Windows 8 et se poursuit de plus belle avec Windows 10. Toutefois, le choix est encore laissé à l'utilisateur à condition de refuser les propositions de configuration par défaut de son système et d'être assez averti pour effectuer cette configuration soi-même. Avec Android, la seule certitude revient à couper téléphone et wi-fi !

La position de PiApplications.

L'observation depuis plus de 30 ans de ces batailles de chiffonniers (pour l'essentiel Nord Américaine) nous a conduit à une démarche pragmatique : faire robuste et évolutif. Pour cela, il convient d'analyser le modèle économique sous-jacent au produit pour en déterminer non seulement les capacités techniques mais aussi sa pérennité probable. Pour cela, nous intégrons plusieurs critères dont les principaux sont :

Ces exigences nous amènent à nous tourner majoritairement vers les produits "libres" et disposant de capacité multi plates-formes. Multi plates-formes signifie ici  intégrant Windows et Linux. Il se trouve que nos choix sont généralement compatibles également avec Mac OS.

ProduitChoixDepuis
Système d'exploitationLinux (Distribution Debian)1991
NavigateurFirefox, Chromium, icedtea2002
Langage de développementJava1995
Outil de développementNetBeans1996
Serveur d'applicationTomcat2000
Client graphique localJavaFX2009
Programme consoleJava1995
SGBDRPostgreSQL1986
Certification - chiffrementOpenSSL1998
 

Aucun de ces produits n'exige d'acheter une licence et ils permettent donc la distribution de logiciels dont le coût se limite à celui de son développement. Il est ainsi possible de faire du sur-mesure sans avoir à se ruiner au déploiement. Certains peuvent s'étonner de choix comme PostgreSQL plutôt que MySQL ou de NetBeans plutôt qu'Eclipse ou d'autres encore. Nous ne détaillons pas ici les raisons de ces choix mais ils ont tous leur justification technique ou non. De toute façon il n'existe pas dans ce domaine de "certitudes". La seule règle qui compte vraiment c'est d'utiliser le produit que l'on connaît et dont on sait qu'il convient pour ce qu'on lui demande.

Nous essayons de maintenir un choix limité d'outils et de familles de développement afin d' :

Adopter des choix techniques ne signifie pas d'être incapable de travailler avec d'autres langages, outils ou produits. Il faut pouvoir travailler avec les produits qui correspondent aux souhaits des demandeurs. Toutefois, se contraindre à cet éventail de choix c'est l'assurance :

(c) PiApplications 2016