Archives du mot-clé Java

Java et Mac OS X… et Scilab

Les utilisateurs de Scilab sur Mac ont fait entendre leurs voix ces derniers temps.

Tout d’abord à cause d’une incompatibilité avec OS X 10.10 Yosemite. Scilab Enterprises a réagit rapidement en fournissant une version spécifique de Scilab.

Ensuite, à propos du fait que Scilab utilise encore une version de Java qui n’est plus fournie (par défaut) par Apple avec les versions récentes de Mac OS X. C’est ce point qui va être développé ici.

Autant vous le dire tout de suite, ce billet de blog ne vous donnera pas de solution pour utiliser une version plus récente de Java avec Scilab. Je vais plutôt essayer de vous expliquer pourquoi Scilab a besoin de Java et vous montrer les éventuelles limitations de la version 6.

Java

Java est un langage de programmation dont le but est de simplifier la portabilité du code sur les systèmes d’exploitation courants (Windows, Linux, Mac OS X).

Commençons par expliquer brièvement certains acronymes de l’univers Java.

SE ? EE ? ME ?

  • SE (Standard Edition) : distribution « classique »
  • EE (Enterprise Edition) : distribution destinée aux applications d’entreprise
  • ME (Micro Edition) : distribution destinée aux applications embarquées

C’est donc la distribution SE que nous retrouvons sur la plupart de nos machines.

JRE ? JDK ?

Contrairement à un langage compilé, le code Java a besoin d’un interpréteur pour être exécuté par le système. On parle de machine virtuelle (ou JVM). La distribution de Java est également fournie avec des bibliothèques standards. La JVM et ces bibliothèques composent le JRE (Java Runtime Environment). Le JRE permet d’exécuter du code Java sur une machine.

Si vous souhaitez écrire et/ou compiler du code Java, il vous faut des outils supplémentaires. Ces outils constituent le JDK (Java Development Kit ou encore Java SE Development Kit). Pour simplifier la vie du développeur, le JDK inclu le JRE.

Pour résumer, vous avez besoin du JRE pour exécuter du code Java. Si vous avez déjà installé le JDK, vous n’avez normalement pas besoin d’installer un JRE supplémentaire.

Numérotation des versions

Vous en savez maintenant un peu plus sur les acronymes SE, JDK et JRE. Qu’en est-il des numéros de versions : 6, 7, 8 ? 1.6, 1.7, 1.8 ? Cette double numération désigne soit la version de la distribution SE, soit celle du JDK (ou du JRE).

  • Java SE 6 -> JDK 1.6 -> JRE 1.6
  • Java SE 7 -> JDK 1.7 -> JRE 1.7
  • Java SE 8 -> JDK 1.8 -> JRE 1.8

Java et Mac OS X

Intéressons nous au cas particulier de Java sur Mac OS X. Java est développé par la société Oracle (après rachat de Sun). Or, Apple a développé en parallèle sa propre version de Java. Du moins jusqu’à la version 6. La dernière version de Java publiée par Apple est la 1.6.0_65 publiée le 15 octobre 2013 (Java pour OS X 2014-001). Pour une version plus récente, rendez-vous sur le site d’Oracle (Java SE Downloads).

Et Scilab dans tout ça

Pourquoi Scilab utilise Java ?

Scilab utilise Java entres autres pour les affichages graphiques. Voir à ce sujet la liste des dépendences de Scilab 5.X. Pour fonctionner correctement, Scilab a donc besoin d’un JRE.

Linux et Windows

Il n’y a aucun soucis avec Linux et Windows, puisque l’installateur de Scilab inclut un JRE. Après l’installation, ce JRE se trouve dans le dossier SCI+'/java' pour Windows et SCI+'/../../thirdparty/java' pour Linux. Pour Scilab 5.5.1, il s’agit de la version 1.6.0_41.

Mac OS X

L’installateur de Scilab pour Mac OS X ne contient pas de JRE. Les développeurs de Scilab ont sans doute jugé plus simple d’utilisé le JRE fourni par Apple. Sauf qu’avec les versions récentes de OS X, Apple a décidé de ne plus installer de JRE par défaut. Donc Scilab ne peut plus démarrer.

La seule solution consiste donc à installer soi-même un JRE. Et de préférence le bon : Java pour OS X 2014-001 !

Les développeurs de Scilab connaissent bien entendu ce problème depuis longtemps. Comme le montre ce commentaire tiré des sources (/modules/jvm/src/c/JVM_Unix.c) :

/* Under Mac OS X, we are using the JVM provided by the distribution.
* However, this might change with Java 7 since Apple will no longer provide
* Java with Mac OS X */

Pourquoi le JRE 1.6 et pas le 1.7 ou le 1.8 ?

Le passage d’un JRE à un autre n’est pas anodin. La version 1.7 nécessite par exemple au minimum Mac OS X 10.7.3. Passer du JRE 1.6 au JRE 1.7 demande également de relancer toute la batterie de tests pour s’assurer de la compatibilité. Et il faut bien entendu des développeurs disponibles.

Il faut donc mettre en rapport les gains (bibliothèques, performances…) apportés par la nouvelle version, face à la quantité de travail que nécessite la migration.

Limitation du JRE 1.6 pour Scilab

Le JRE 1.6 limite-t-il l’utilisation de Scilab ? On l’aura compris, cela limite juste la capacité de Scilab à exécuter du code Java récent (voir la section « Java depuis Scilab » dans la documentation de Scilab).

Le problème surviendra donc si le code Java utilise des instructions non prises en charge par le JRE 1.6. Ou bien si le code a été compilé avec une version plus récente du JDK (1.7 ou 1.8).

Dans les deux cas, voici l’erreur qui sera renvoyée par Scilab (jimport) :

jimport: An error occured: Exception when calling Java method : ******* : Unsupported major.minor version 51.0

A quand la prise en charge d’une version plus récente du JRE ?

D’après un tweet du 22 octobre 2014 de @Scilab :

Java sera mis à jour dans la prochaine famille de Scilab. En attendant pour pouvoir lancer Scilab 5.5.1 vous avez besoin de Java 6

Conclusion

Vous en savez maintenant un peu plus sur Scilab et Java sur Mac OS X. L’utilisation du JRE 1.6 n’est pas une limitation pour la plupart des utilisateurs de Scilab.

Installer Scilab 5.5.1 sur Mac OS X 10.10 (Yosemite)

Vous avez essayé en vain de lancer Scilab après une mise à jour vers Mac OS X 10.10 ou bien sur une machine récente fournie avec Yosemite. Heureusement, Scilab Enterprises vient tout juste de publier une version spécifique : Scilab 5.5.1 – Mac OS X 10.10.

Installez donc cette version sans hésiter.

Au lancement de Scilab, vous obtiendrez peut être ce message d’erreur :

Pour afficher ce contenu web, installez l’environnement Java Runtime Environment.

Ou bien alors celui-ci :

L’installation de l’ancien moteur d’exécution Java SE 6 est nécessaire pour ouvrir « cette application Java ».

Dans les deux cas, la solution consiste à installer Java pour OS X 2014-001

Voila Scilab devrait fonctionner normalement sur votre Mac.

Note : n’installez pas une version plus récente de Java (7 ou 8), seule la version 6 est prise en charge par Scilab.

Pour ouvrir « MATLAB », il vous faut un moteur d’exécution Java SE 6

Je ne me suis pas servi de MATLAB sur mon Mac depuis une (récente) mise à jour vers OS X 10.9 (Mavericks).

Et ce matin, surprise : impossible d’ouvrir MATLAB. :sad:

Erreur relative à Java SE 6

Voici le message d’erreur qui apparait :

Pour ouvrir MATLAB, il vous faut un moteur d'execution Java SE 6

Le problème vient semble-t-il du fait que Java n’est plus fournit avec les dernières versions de OS X.

C’est ce que j’ai constaté en ouvrant une console :

Mac-mini-de-Jerome:~ jerome$ java -version
No Java runtime present, requesting install.

J’ai tenté l’installation proposée en cliquant sur « Installer », mais sans succès.

La solution a donc consisté à télécharger Java SE 6 sur cette page : Java for OS X 2013-005

Après installation :

Mac-mini-de-Jerome:~ jerome$ java -version
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)

Erreur relative à X11

A la première exécution de MATLAB, j’ai eu droit à un nouveau message d’erreur, cette fois pour X11.

Pour ouvrir MATLAB_maci64, vous devez installer X11.

En cliquant sur « Continuer », on accède à cette page : About X11 and OS X

On peut y lire :

X11 is no longer included with OS X, but X11 server and client libraries for OS X are available from the XQuartz project

Je suis donc allé dans le Launchpad et j’ai ouvert XQuartz.
Ce dernier m’a proposé une mise à jour et j’ai enfin pu ouvrir MATLAB.

:mrgreen: