Le cœur de Linux bat au rythme d'Android

Anthony Nelzin-Santos |
skitchedLe noyau Linux 3.3 est disponible et réintègre les pilotes Android, qui en avaient été exclu en 2009 à cause de « désaccords » avec Google. Les systèmes de gestion et de partage de la mémoire, de communication entre processus et d'infrastructure des logs de l'OS de Google ont aussi été intégrés : dans le futur et à l'occasion de l'intégration de nouveaux mécanismes, un kernel Linux vanilla pourrait faire tourner des applications Android.

Le kernel 3.3 intègre nombre de nouveautés et améliorations, notamment dans la gestion du système de fichiers Btrfs (le système développé par Oracle pendant que Sun développait le ZFS), la prise en charge du protocole LLCP (qui indique l'intégration de la NFC au niveau du noyau), ou encore la gestion de l'extension d'adresse physique que des processeurs ARM Cortex A-15 (qui permet aux systèmes ARM de gérer 3,8 To de mémoire). Ce ne sont que quelques uns des nouveautés les plus significatives — et les plus accessibles — parmi des dizaines.
Tags
avatar ericb2 | 
C'est une très bonne chose, car si toutes ces fonctionnalités sont intégrées dans le noyau Linux, ce sont les autres distributions qui vont en profiter (et cela va bien aider). Exemple : Debian armhf. Parce qu'en fait, Androïd n'est pas vraiment Linux. Au fait, la dernière fois que j'ai regardé (à propos d'Androïd), on était obligé de se taper Java pour faire fonctionner une application. Est-ce toujours le cas ?
avatar oomu | 
Android est en gros Linux+java. Un java fait en touuuuute indépendance de la normalisation et propriété intellectuelle de son/oracle (jsuis pas convaincu)
avatar hawker | 
bien dommage ce ce langage pourri soit si present dans android. Ce serait un system ideal si il avait des api C / C++ uniquement.
avatar ErGo_404 | 
Je vois pas trop ce que vous reprochez à Android, les applis Java fonctionnent très bien, le C++ est utilisable pour les fonctions les plus consommatrices ou pour se rendre un peu plus indépendant de la plateforme mais dans l'ensemble on peut s'en passer allègrement si on ne souhaite développer que pour Android. Les performances sont très bonnes, le langage est simple à apprendre, disponible partout depuis bien longtemps et bien connu de beaucoup de développeurs, où est le problème ?
avatar ericb2 | 
@ErGo_404 Comment intégrer une application écrite en C++, qui est déjà très lourde (toute optimisation est la bienvenue), mais sans passer par Java et la faire fonctionner sous Androïd ? D'avance merci pour la recette :-)
avatar ErGo_404 | 
@ericb2 : Le Java reste obligatoire ne serait-ce que pour l'UI. Pour le reste, il faut passer par la JNI pour faire des appels C++ depuis le Java. Ca me semble un bon compris, ton moteur tourne en C++ et est multiplateformes, et l'UI doit être intégrée aux recommandations du système et peut donc aussi bien être écrite dans la langue de prédilection de celui-ci : le java.
avatar yoa | 
@hawker "ce langage pourri". Vision très personnelle surtout quant on sait que Java est l'un des langages les plus utilisé et populaire. Mais bon, à part lancer un troll j’imagine que tu as de bon arguments. @ericb2 Il est possible d'écrire des routines en C++ (via le "NDK") exécuter via des appels JAVA (JNI). Donc si une application C++ est bien structurée elle fonctionne sous Android, mais pas sans ajout.
avatar Anonyme (non vérifié) | 
Donc j'aurais apprit un truc aujourd'hui : parce-qu'un langage est populaire, c'est bien. Aller en parallèle je vais citer Call of Duty : Modern Warfare 3. Ce jeu est super populaire, pour autant que je sache c'est un beau tas de merde fait à l'arrache bordélique au possible pas terminé et surtout chiant à mourir si on réfléchit plus de dix secondes. On viendra me dire "C'est pas comparable.", moi je trouve que si : d'un certain point de vue les deux se ressemblent…
avatar ErGo_404 | 
@Subs_255: Comparer un produit fait pour la masse du grand public à un langage choisi par des entreprises de pointe pour gérer leurs tâches quotidiennes, c'est un peu fort. Ce qui est SUR c'est qu'un langage n'est pas mauvais parce qu'il y a trois personnes qui vont vomir leur bile dessus parce qu'ils ne l'ont jamais utilisé et qu'ils ne comprennent pas qu'on ne fasse pas les mêmes choix qu'eux.
avatar Anonyme (non vérifié) | 
Et on ratterrit sur ce passage que j'aime tant : la tolérance. Une autre certitude c'est que les gens la prônant autant ne le sont certainement pas tant dans leur vie privée, ce qui me fera toujours bien marrer, mais passons j'suis pas là pour jouer les J.L.M. philosophes, c'est pas mon but. Le Java c'est justement pas assez exigeant comme certains autres langages. Ce qui fait que les développeurs ne se font la plupart du temps vraiment pas chier et codent des trucs mal optimisés, lourds, etc… L'exemple le plus flagrant à ce niveau-là est le monstre de popularité qu'est Minecraft. Ce jeu est en Java et si t'as pas un PC à minimum 750€ de config. pièce par pièce montage non inclus, le premier circuit de redstone/la première explosion de T.N.T. va te le faire planter. Mh, magnifique, quand on voit la gueule du jeu (avec son soit-disant aspect graphique "voulu et travaillé", ça me fera toujours rire ça), on se demande si ce n'est pas un petit peu abusé quand même. Ah j'dis pas de bons trucs en Java y'en a un paquet faut pas être de mauvaise foi, mais la plupart du temps ce n'est pas fameux et on est très loin d'un résultat aussi pointu qu'un truc fait en C ou en C++. Certes c'est simple et très compatible parce-que c'est bon si t'as le plug-in à jour sur ton ordinateur c'est parti ça se lance tout seul, mais la raison qui me fait détester ce langage qui est à mes yeux (comme ça les petits prônants-tolérants ne seront pas vexés, tenons-nous la main mes amis) merdique est clairement le manque de soin flagrant que la majorité des développeurs apportent à leurs programmes lorsqu'ils le codent dans ce langage. J'dis pas qu'un programme en C sera parfait mais en tout cas mieux optimisé ça c'est clair… (Du moins de ce que j'ai pu tester depuis que je suis né.)
avatar Anonyme (non vérifié) | 
Par contre j'pense que gérer le lancement du programme en Java et le reste en C peut donner d'excellents résultats, mais je n'en ai personnellement jamais vu (ou alors pas remarqué).
avatar Mabeille | 
@hawker qu'est ce qui est pourri? tu as une mauvaise synthaxe et ton code est rejeté? apprend a coder sous java et tu auras un code propre, java ne pardonne pas grand chose. ensuite java est universelle, mais plus lent c'est vrai. Et? des arguments meilleurs que pourri?
avatar ErGo_404 | 
Chacun ses besoins, et le Java s'adapte très bien à beaucoup de besoins. Si t'as envie de faire du prototypage rapide, pas besoin de te prendre trop la tête à gérer des trucs dont tu n'as rien à faire, comme il le faudrait dans d'autres langages. Si t'as besoin d'un truc très stable, tu peux aussi le faire, sans aucun soucis. Et si t'as besoin de performance extrême, tu peux toujours plugguer du code plus bas niveau derrière tout en ayant une couche haut niveau plus facile à gérer et maintenir, comme, par exemple, pour l'IHM. Ce que tu détestes c'est visiblement les développeurs, mais pas le langage. Le fait que le langage s'adapter à chaque situation est une force et pas une faiblesse. Devoir se taper la gestion de la mémoire quand on veut coder un simple prototype c'est une perte de temps pure et dure. Vouloir coder parfaitement c'est noble, mais inutile. Le code rapide n'est pas forcément un code sale, et le Java permet de faire du code très rapide.
avatar yoa | 
@Subs_255, Franchement épargne toi un long discours. Dans les débats Java il y'a une règle ultime : celui qui critique Java sous le prisme des applications "bureautique" n'y connait absolument rien. Java c'est avant tout le middleware. Dans ce secteur colossale, Java est clairement la technologie dominante et pour cause.
avatar aldry | 
je pense aussi que hawker ne sait pas coder en java car dire que c'est pourri c'est juste ne pas connaitre java. Donc hawker donne nous un argumentaire qui te permet de dire que Java c'est pourri et ne prends pas les accès mémoires car l'argument mémoire est facilement réfutable juste avec la notion de garbage collecter que c/c++ n'ont pas et ne parle pas de la performance car une appli java bien codé est tout aussi performante sauf si pour toi 0.00456 sec sont une perte de performance impardonnable.
avatar elamapi | 
Il n'y à pas de "langage" pourrit, juste des développeurs incompétents. J'ai vu des projets enormes dont la maintenance du code était irreprochable grace à une organisation sans faille ecrit en php ou perl (langage dis "de merde") et j'ai vu d'autre projet tout aussi enorme ou le devellopeurs lui même se perdait ecrit en C, C++ ou Python. J'ai également vu l'inverse. Un "bon" developpeur fera du bon code en basic ... un developpeur du dimanche fera du code de merde avec n'importe quel langage.
avatar Le docteur | 
Dire Java, c'est pourri, c'est juste avoir eu à l'expérimenter comme utilisateur final. Maintenant le mépris des applications dites "bureautiques" et le "rend doit obscur" n'explique pas pour autant pourquoi tout ce qu'on peut croiser en Java correspond à cette équation : fait pour fonctionner partout mais ne fonctionne nulle part.
avatar Anonyme (non vérifié) | 
Juste comme ça, le NDK d'Android est moisi. Y'a une seule personne ici capable de citer une appli Android qui tourne en C++ ? Sérieusement ? JAVA, quand à lui, est ultra verbeux, lent, buggé, et souffre de manques sacrément flagrants quand on code un peu sérieusement. Ça se saurait si les choix techniques des grandes entreprises étaient fait justement en fonction de la technique. JAVA a l'avantage d'être facile à appréhender, connu de tous et portable. C'est à peu près tout. Mais ça suffit pour être majoritaire. @eric2b : Android est autant Linux que Debian. C'est juste ce qu'il y a autour du noyau qui change. Dans le cas de Debian on parle de GNU/Linux, dans le cas d'Android de Dalvik/Linux (Dalvik étant la machine virtuelle JAVA made in Google).
avatar Le docteur | 
Accessoirement j'apprécie l'élégance des sophismes : 1. C'est populaire donc c'est bien 2. Tu donnes des exemples populaires, donc c'est mal parce que les entreprises c'est mieux. Il faut donc conclure : "populaire oui, mais dans les entreprises" et même "les grosses entreprises"... C'est populaire, effectivement, parce qu'elles achètent n'importe quoi..
avatar joneskind | 
@yoa ""ce langage pourri". Vision très personnelle surtout quant on sait que Java est l'un des langages les plus utilisé et populaire." Tu veux dire populaire comme Flash et Windows ? Populaire comme l'iPhone ? Populaire comment ? Comme le nazisme en 39-45 (et je gagne un point godwyn) ? Où vois-tu le rapport entre popularité et qualité ? T'es à court d'argument ?
avatar joneskind | 
@ErGo_404 Beh je vais me répéter, mais flash a été très populaire partout, et de l'aveu même d'adobe c'est une bouse. Alors encore une fois, la popularité d'un langage ne fait pas sa qualité.
avatar ErGo_404 | 
[quote]Eftwyrd [21/03/2012 11:05] Juste comme ça, le NDK d'Android est moisi. Y'a une seule personne ici capable de citer une appli Android qui tourne en C++ ? Sérieusement ? JAVA, quand à lui, est ultra verbeux, lent, buggé, et souffre de manques sacrément flagrants quand on code un peu sérieusement. Ça se saurait si les choix techniques des grandes entreprises étaient fait justement en fonction de la technique. JAVA a l'avantage d'être facile à appréhender, connu de tous et portable. C'est à peu près tout. Mais ça suffit pour être majoritaire. [/quote] Juste comme ça, j'utilise le NDK tous les jours pour l'appli de ma boîte, ça fonctionne parfaitement bien, aucun problème de consommation ou de perfs, et le code est simple à maintenir. La situation est telle que je l'avais décrite : un moteur multiplateformes en C++ (le gros de l'application) et une couche en Java pour gérer l'UI. Encore une fois, aucun problème de performance, quand on prend la peine de bien coder. Par contre quand on a besoin d'un prototype rapide pour faire une démo à un client, on se prend un peu moins la tête avec la propreté du code et on fait ça rapidement, ce qui est le gros avantage du Java. Sinon tu as de nombreux jeux qui utilisent le NDK, ce qui leur permet d'avoir le même moteur que la version iOS. Et ça marche très bien. Comme quoi, c'est pas si moisi le NDK ...
avatar fakoly33 | 
+1 pour Java. Nous on l'utilise pour des applications industrielle de contrôle-commande...que dire, l'installation du bouzin c'est 120 Mo, prends 1' pour être installé (serveur d'applications web) et est multi plateforme et ultra complet. A la concurrence, c'est euh...plusieurs dvd, des heures sinon jours d'installation... quelques images http://goo.gl/ceTV1 Mais je ne suis pas spécialiste du dev...
avatar ErGo_404 | 
@joneskind: le flash est populaire parce qu'il n'a eu pas de concurrents sérieux pendant longtemps, tout simplement. Mais Java a des concurrents sérieux, si on le choisit c'est pas par défaut.
avatar joneskind | 
Sinon moi le Java j'm'en fous, mais de vos propres aveux, le manque d'optimisation d'Android vient de là. Et je trouve que Linux gagnerai bien plus si Android était un vrai micro-Linux, parce que quelqu'un qui sait coder pour Android sait alors coder pour du Linux natif. Comme c'est le cas sur OSX/iOS. Apple a réussi le tour de force d'apporter des millions de devs à son OS desktop par le biais d'iOS et peut aujourd'hui se permettre de virer Carbon. Si tous les devs Android pouvaient arriver sur Linux, on aurait encore plus de programmes de qualité, et surement moins d'usines à gaz à la OpenOffice. Ce qui est triste, c'est que c'est Linux qui va du coup intégrer le noyau d'Android, et du même coup perdre en homogénéité.
avatar Yo Eight | 
Y'a beaucoup de développeur du dimanche ici qui se font passer pour des pros. Rien que le fait de confondre le langage et le runtime qui l'exécute après compilation indique le niveau de compétence. D'un point de vue langage, il est atroce pour sa verbosité et a des API incohérentes comme le fait que les Arrays soient par erreur covariant ou encore cette distinction avec les types primitifs. (y'a encore beaucoup d'autre à dire) Par contre, son runtime est très performant et robuste du côté serveur. Pour preuve, le site des impôts français et Twitter sont des applications JEE.
avatar Yo Eight | 
Par contre pour de l'embarqué, c'est vrai que la JVM reste moins performante car l'empreinte mémoire est plus importante et le GC même s'il est en parallèle coûte en temps processeur. Une solution en C reste plus performante à leur actuelle.
avatar Yo Eight | 
* heure actuelle :)
avatar Domsou | 
@Le docteur : + 1
avatar ErGo_404 | 
@Yo Eight : Il y a beaucoup de gens qui pinaillent sur des détails qui en pratique n'ont aucun intérêt : les défauts que tu cites n'empêchent personne de coder efficacement en Java tous les jours. Ce sont des choses que TU n'aimes pas parce que tu es habitué à autre chose, mais en aucun cas des défauts qui en font un mauvais langage. C'est comme si je disais que le C c'était de la merde parce que tu dois gérer ta mémoire toi même, ça serait ridicule, le C ne correspond pas à mes attentes mais c'est pas pour autant que c'est un mauvais langage, loin de là. Globalement le Java sera toujours moins performant que le C, c'est normal, c'est plus haut niveau. Mais les avancées dans le domaine (compilation JIT notamment) réduisent l'écart. Sur Android notamment on a de moins en moins besoin du NDK, sauf dans les cas où on veut une base commune multiplateformes. Pour le reste le code Java suffit très largement et est très performant, bien plus que ce que les détracteurs en disent.
avatar Anonyme (non vérifié) | 
@yoa Merci de compatir, j'avais vraiment pas envie de faire un long discours (surtout avec la crève). Moi quand j'attaque le Java c'est pas sur les applications de bureautique mais de divertissement, comme la plupart des applications pour Android… Je veux dire, les applications qu'elles soient Android ou iOS peuvent être axées bureautique de manière utile (qui a déjà utilisé ou utilise fréquemment Pages sur iPhone sans déconner) sur un terminal je dirais de type tablette, au minimum. Je ne vois aucun intérêt d'avoir de telles applications sur un téléphone ou un lecteur multimédia, clairement. Dans le domaine de la bureautique je ne suis pas très avancé alors je vais éviter de l'ouvrir sur ce sujet, mais dans le domaine du divertissement virtuel et plus particulièrement du jeu-vidéo je m'y connais un peu et très franchement les jeux en Java, même s'ils sont bons, sont des catastrophes d'optimisation la plupart du temps… Ayant eu à un moment un PC très puissant (faisant tourner Crysis 2 avec DX11 d'activé et le pack de textures HD officiel, je dis ça pour vous situer le truc car j'me souviens plus de la configuration) je peux affirmer que les jeux en Java (et particulièrement Minecraft) sont des catastrophes et bouffent beaucoup pour pas grand chose. Et dans le cas d'Android, on parle plus souvent de smartphones ou de lecteurs multimédias comme pour l'iOS (on commence de plus en plus à arriver sur les tablettes mais pour l'instant on ne baigne pas dedans) et je ne vois pas l'intérêt d'une application de bureautique là-dessus, sauf peut-être sur un Galaxy Note, et encore. Après continue, éclaire-moi de ta lanterne si tu veux bien, développe car ça m'intéresse. Je savais que le Java était très présent mais jusqu'à quel point ? Dans quels logiciels de bureau le retrouvons-nous en particulier ? J'en connais quelques uns mais bon… Parce-que bon, les entreprises n'utilisent pas non plus toujours l'excellence hein. Donc ça en revient un peu à ce que je disais. Je n'ai jamais vu (pour ma part) un programme en Java fonctionner correctement et de manière aussi pointue que celle d'un programme en C++, qu'on se le dise. Si pour le codeur le Java est bien, je trouve très personnellement que pour l'utilisateur c'est une belle daube.
avatar Yo Eight | 
@ErGo_404 J'utilise Java tous les jours. (Dev JEE). Il y a des erreurs (comme celle concernant le fait que les Arrays soient par erreur covariant) qui peuvent avoir de grosses conséquences. Ce bout de code compile en Java Object[] arr = new int[1]; arr[0] = "Hello, there!"; Or, en runtime tu auras un beau ArrayStoreException ! Cette même erreur a été produite dans la version 6 du serveur WebSphere d'IBM. qui empêchait de faire tourner certaines applications qui étaient construites avec Spring ver. 2.5. (Le démarrage de l'application devenait impossible) IBM a fourni un patch de 700Mo... Ceci c'est produit chez une des entreprise du CAC40 où je travaillais, dans une application sensible de plusieurs millions de lignes de code en Java. Quand tu penses au prix d'une license WebSphere 6 et au temps durant laquelle l'application était down. C'est cher payé pour une erreur qui aurait du être détecté à la compilation d'un langage qui se targue d'être à typage fort !
avatar rom54 | 
C est un langage générateur de bug se rapprochant le plus d'un assembleur portable(ref B.Meyer) C++ est une usine a gaz, une tentative de rattraper les conneries du C en mettant en place un typage fort, que le reste du langage tente de contourner ou de compenser... Java est un langage verbeux et tournant sur une machine virtuelle... Objective-c a une syntax melant C et Smaltalk sans arriver a exploiter la puissance des deux Eiffel permet de faire du code hyper optimise, sécurise, fiable, lisible, modifiable mais a deux contraintes: il est propriétaire et il nécessite des compétences d'ingénieur... Javascript est une approximation de langage de prototype et interpréter Ruby permet de faire la meme chose de diverses manières Python ne permet de faire une chose que d'une seule manière Lisp permet de tout faire, de toutes les manières, que ça ait existe ou que ça n'existe pas encore, mais c'est une enfer de parenthèses Chaque langage a ses intérêts et ses inconvénients... il reste qu'un bon programmeur, c'est avant tout quelqu'un qui sait faire de l'algorithmique, qui sait analyser ses données et les structurer, de même avec les problèmes et les fonctions, qui sait concevoir des modèles, qui maitrise une méthodologie et sait s'y tenir, qui sais faire un synopsis et une documentation, et qui apres maitrise un langage et un environnement... Ceci dit on parle de Linux la et du fait qu'il (re) intègre les apports d'Android. C'est très important comme news car cela veut dire que si Linux est encore confidentiel pour le GP, le développement fulgurant d'Android pourrait bien profiter maintenant a Linux. Et aujourd'hui Linux, a travers plusieurs distributions, devient une alternative crédible et rentable face a l'évolution d'Apple, toujours plus inquiétante chaque jours... Demain on aura peut être si la communauté opensource se bouge un peu plus, un environnement Linux/Android face a OS X/iOS. Et comme on peut faire tourner Linux sur toute machine, on est plus contraint d'accepter les diktats d'Apple
avatar Marc Duchesne | 
Pas pour rien que les appareils sous android sont gonflé á bloc côté hardware. Les apps rament au max...
avatar lmouillart | 
@marc duchesne certaines version de Linux tournent avec 4mo de RAM, sur des motorola dragonball (ex 68k), on dira plutôt que Linux est très léger et s'adapte à toutes les situation puisque certaines version du noyau tournent également sur les machines de HPC.

CONNEXION UTILISATEUR