Developpez.com

Plus de 2 000 forums
et jusqu'à 5 000 nouveaux messages par jour

Google offre un SDK permettant de créer des web apps natives en C et C++
Dans son navigateur Chrome

Le , par Katleen Erna, Expert éminent sénior
Google offre un SDk permettant de créer des web apps natives en C et C++ dans son navigateur Chrome

Google vient de sortir une présentation du SDK de Native Client, sa technologie open source qui permet à des codes natifs en C et C++ de s'exécuter dans un navigateur. Ceci permettra d'utiliser des applications plus avancées sur le web, et qui pourront tourner dans Google Chrome.

Les capacités des applications web sont étendues au delà des limites imposées par l'utilisation de JavaScript.

Un aperçu vidéo du SDK vient d'être publié, il montre les bases de son utilisation : comment se lancer dans l'écriture d'une application en quelques minutes seulement.

Google offre donc un compiler C et C++ basé sur GCC, ainsi que des extraits de code source pour aider les développeurs à créer des applications conforme au code natif.

Mais alors que JavaScript est disponible pour différents navigateurs, Native Client se limite à celui de son concepteur : Chrome.

Ce qui ne satisfait pas tout le monde... Sur le blog officiel annonçant l'outil, un internaute anonyme écrit "Native Client est un grand bond en arrière pour moi", avant de continuer : "Qui voudrait utiliser Native Client quand ça empêchera ses applications de tourner sur plein de plateformes, comme les anciens Macs, les smartphones, les tablettes, les smartbooks équipés de processeurs ARM, etc... ?"

Google répond à cela que la portabilité sera sa priorité, et que la firme se concentre sur l'élaboration d'un système qui sera neutre en terme de plateformes.

Les développeurs de la compagnie travaillent également sur un autre projet, en parallèle : le V8 JavaScript Engine qui aide l'accélération des applications web.

Pour autant, les deux ne sont pas en compétition, car Google estime "qu'il y a certaines parties des applications que les gens veulent écrire en JavaScript, et d'autres qu'ils veulent écrire dans d'autres langages".

Source : La vidéo d'aperçu de Native Client :
[ame="http://www.youtube.com/watch?v=nP8Mo0jGQDk"]YouTube- Introducing the Native Client SDK[/ame]

Pensez-vous que Native Client soit "un grand bond en arrière" ?

Souhaitez-vous un élargissement de Native Client à d'autres plate-formes ?

Quels sont, selon vous, les avantages à développer des applications pour Chrome ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de - https://www.developpez.com
le 15/05/2010 à 18:07
Citation Envoyé par gb_68  Voir le message
Au contraire. J'avais plutôt peur que le projet n'aboutisse jamais, car ce que tente de proposer NaCl, c'est (enfin ?!) une sandbox pour applications natives, et ce pour tous les OS.

Salut gb 68,

Peux-tu nous en dire plus sur NaCl ?

Comment un ____.exe peut-il contenir le même code C compilé pour plusieurs processeurs cible dans le même fichier ???

Personnellement, je n'ai jamais entendu parler d'un truc pareil

Fais-je fausse route ?
Avatar de supersnail supersnail - Membre émérite https://www.developpez.com
le 15/05/2010 à 18:54
Bonjour,

On a parlé de code natif... Mais pourquoi ce serait forcément un exécutable?

Ça peut très bien être un binaire plat, voire même un format d'exécutables "made in Google" (différents du format PE ou ELF), qui n'est compatible qu'avec son navigateur (en gros,impossible de lancer le binaire sans passer par le navigateur)...

En gros, le navigateur serait "l'OS" de ces binaires, et toutes les transactions (ouvrir/fermer un fichier, etc...) passeraient par le navigateur, qui laisserait passer (ou non) les demandes de création de fichiers, etc...
Avatar de JeitEmgie JeitEmgie - Membre expert https://www.developpez.com
le 15/05/2010 à 19:01
Citation Envoyé par supersnail  Voir le message
Bonjour,

On a parlé de code natif... Mais pourquoi ce serait forcément un exécutable?

Ça peut très bien être un binaire plat, voire même un format d'exécutables "made in Google" (différents du format PE ou ELF), qui n'est compatible qu'avec son navigateur (en gros,impossible de lancer le binaire sans passer par le navigateur)...

En gros, le navigateur serait "l'OS" de ces binaires, et toutes les transactions (ouvrir/fermer un fichier, etc...) passeraient par le navigateur, qui laisserait passer (ou non) les demandes de création de fichiers, etc...

Code : Sélectionner tout
1
2
 
hello_world.nexe: ELF 32-bit LSB executable, Intel 80386, version 1, statically linked, not stripped
Avatar de JeitEmgie JeitEmgie - Membre expert https://www.developpez.com
le 15/05/2010 à 19:16
Citation Envoyé par unBonGars  Voir le message
Salut gb 68,

Peux tu nous en dire plus sur NaCl ?

Comment un ____.exe peut-il contenir le même code C compilé pour plusieurs processeurs cible dans le même fichier ???

Personnellement, je n'ai jamais entendu parler d'un truc pareil

Fais-je fausse route ?

ce qu'on appelle souvent des "FAT binaries"…

vous mettez ce que vous voulez dans un fichier…
simplement il faudra un loader adapté à ce format de fichier…

mais apparemment la solution de Google est de mettre les binaires dans une structure de directory…

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
  <script type="text/javascript"> 
    contentDiv = document.getElementById('nacl_helloworld_content'); 
    if (window.location.hash == '#develop') { 
      // Load the develop version of the module. 
      contentDiv.innerHTML = '<embed name="nacl_module" ' 
                             + 'id="hello_world" ' 
                             + 'width=0 height=0 ' 
                             + 'type="pepper-application/hello_world" />'; 
      moduleDidLoad(); 
    } else { 
      // Load the published .nexe.  This includes the 'nexes' attribute which 
      // shows how to load multi-architecture modules.  The relative URLs in 
      // the following table should be matched with a similar directory 
      // structure on your server. 
      // TODO(dspringer): This feature is not yet supported in Chrome.  Pull 
      // the src= attrib when this becomes available. 
      var nexes = 'x86-32: hello_world.nacl/x86_32/hello_world.nexe\n' 
                  + 'x86-64: hello_world.nacl/x86_64/hello_world.nexe\n' 
                  + 'ARM: hello_world.nacl/arm/hello_world.nexe '; 
      contentDiv.innerHTML = '<embed name="nacl_module" ' 
                             + 'id="hello_world" ' 
                             + 'width=0 height=0 ' 
                             + 'src="hello_world.nexe" ' 
                             + nexes 
                             + 'type="application/x-nacl-srpc" ' 
                             + 'onload=moduleDidLoad() />'; 
    } 
  </script>
Avatar de - https://www.developpez.com
le 16/05/2010 à 11:39
Citation Envoyé par JeitEmgie  Voir le message
ce qu'on appelle souvent des "FAT binaries"…

vous mettez ce que vous voulez dans un fichier…
simplement il faudra un loader adapté à ce format de fichier…

mais apparemment la solution de Google est de mettre les binaires dans une structure de directory…

Okay merci JeitEmgie

Le bout de code parle mieux qu'un long discours
Avatar de - https://www.developpez.com
le 16/05/2010 à 16:38
D'après ce que j'ai compris, on a donc :

Un IDE genre eclipse ou plus probablement un codeblocks de chez google labs
Une série de cross-compilers : autant de portages de gcc que de processeurs cibles
Une arborescence de répertoires à copier sur le serveur (1 sous-repertoire = 1 proc cible)

Ensuite , au moment du GET HTTP (2 hypothèses)

1. Un code javascript teste la config hôte et charge le code natif correspondant
2. Le serveur http se débrouille pour analyser le get et décide lui même quelle version envoyer. Dans ce cas , il me semble quand même que l'info du get http est insuffisante, en particulier en ce qui concerne le matériel (seul l'os et le navigateur sont renseignés)

Une remarque : La compilation en mode release consiste en une série de compilations successives (une par config matérielle supportée), puis un upload de tous les .nexe, ??exe, ... Ce processus me semble bien lourd à effectuer si on inclut les archis embarquées ce qui devra bien arriver un jour...

Cela résout le truc qui m'a toujours embété en java : la résolution du multiplateformes au moment du runtime. Ici on résout tout au design time.
Selon moi, il n'y a pas d'autre moyen de mieux utiliser les cpu clients et donc produire une appli de même qualité que les applis locales installées via setup (ce dont java est incapable)

Outre le fait que mon esprit cartésien aime l'optimisation du c++, il faut dire aussi que ça s'inscrit très bien dans les efforts d'économie d'énergie qu'on demande à la fois aux datacenters et aux développeurs de solutions nomades (batterie).

Bref, ça n'a pas que des avantages mais moi je dis BANCO, c'est l'architecture du futur !! je déteste le gâchis qu'on a fait des ressources systèmes au nom de l'interopérabilité. Je préfère de très loin profiter des perfs des cpu's récents - sans pour autant vendre mon âme aux évangiles activeX et autres trucs ultra-propriétaires. Google est capable de faire consensus là où Ms n'a créé que des conflits. Même un pro-Ms est bien obligé de reconnaitre qu'il y a du bon dans le client en code natif, sauf à désavouer activeX
Avatar de valkirys valkirys - Membre expérimenté https://www.developpez.com
le 16/05/2010 à 18:24
Citation Envoyé par unBonGars  Voir le message
2. Le serveur http se débrouille pour analyser le get et décide lui même quelle version envoyer. Dans ce cas , il me semble quand même que l'info du get http est insuffisante, en particulier en ce qui concerne le matériel (seul l'os et le navigateur sont renseignés)

En rajoutant une nouvelle ligne avec des infos sur le code à renvoyer, dans le GET comme nescape et les cookies en son temps.
Avatar de themadmax themadmax - Membre confirmé https://www.developpez.com
le 17/05/2010 à 16:32
Google chrome rajoute une fonctionnalité présente chez les concurrents :
IE : ActiveX (1996)
FireFox/Xul : XPCOM
Donc rien de très nouveau, mais une architecture nouvelle pour créer des UI en langage simple et de mixer avec du code natif.
Avatar de Eric Pasquier Eric Pasquier - Membre du Club https://www.developpez.com
le 19/05/2010 à 14:02
ENFIN ! une alternative crédible à Javascript.
Un compilateur qui vous donne accès à un "vrai" language et pleins de messages d'erreurs à la compilation et donc, beaucoup moins à l'exécution.

Ceux qui utilisent un Framework javascript essayant d'émuler un véritable language moderne (classe, héritage, ...) comprendrons.

La sécurité n'est pas un problème. Il suffit de limiter les API à des manipulations HTML ou DOM comme avec du js actuellement.
Avatar de dtrosset dtrosset - Membre averti https://www.developpez.com
le 19/05/2010 à 14:29
Dans me délires les plus fous, j'avais imaginé un jour qu'on embarquerait le compilateur C ou C++ dans le navigateur. Comme cela, il serait possible de créer des pages HTML avec des scripts en C dedans (au lieu du Javascript). Le compilateur se charge de … les compiler puis il les exécute.

Cela ne me semble pas si fou finalement. Nos machines sont capables de compiler du C et du C++ très, très rapidement. Alors pourquoi pas ?

Didier
Avatar de Luc Hermitte Luc Hermitte - Expert éminent https://www.developpez.com
le 19/05/2010 à 15:35
NaCl n'est pas limité à chrome (ex: une appli Qt sous firefox via NaCl)
C'est juste que chrome intègrera le ... truc[*] ... par défaut (si j'ai bien suivi), pour les autres navigateurs, il faudra l'installer.
[*] quand j'avais regardé il y a quelques mois, il m'avait semblé qu'il s'agissait en fait d'une VM, à lire vos interventions, cela n'a pas vraiment l'air d'être le cas.
Offres d'emploi IT
Ingénieur développement fpga (traitement vidéo) H/F
Safran - Ile de France - 100 rue de Paris 91300 MASSY
Architecte technique des systèmes d'information H/F
Safran - Ile de France - Évry (91090)
Chef projet big data - pse flotte H/F
Safran - Ile de France - Évry (91090)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil