Nuiton-j2r-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
September 2006
- 1 participants
- 5 discussions
08 Sep '06
Author: thimel
Date: 2006-09-08 12:56:46 +0000 (Fri, 08 Sep 2006)
New Revision: 10
Added:
src/resources/JRI-sources.zip
src/resources/jri.dll
Removed:
src/resources/JRI.zip
Modified:
doc/installation.rst
Log:
librairie compil?\195?\169e Windows
Modified: doc/installation.rst
===================================================================
--- doc/installation.rst 2006-09-07 17:53:48 UTC (rev 9)
+++ doc/installation.rst 2006-09-08 12:56:46 UTC (rev 10)
@@ -70,9 +70,9 @@
Heureusement, la proc�dure est simple :
-Les sources � compiler font partie de l'archive src/resources/JRI.zip
+Les sources � compiler font partie de l'archive *JRI-sources.zip* (http://lutinj2r.labs.libre-entreprise.org/libsys/JRI-sources.zip)
-Pour compiler la librairie, d�zippez dans un premier temps l'archive JRI.zip. Ensuite, exc�cutez le script nomm� "configure" de mani�re � pr�parer votre syst�me � la compilation. Enfin, effectuez la compilation � l'aide de la commande "make".
+Pour compiler la librairie, d�zippez dans un premier temps l'archive *JRI-sources.zip*. Ensuite, exc�cutez le script nomm� "configure" de mani�re � pr�parer votre syst�me � la compilation. Enfin, effectuez la compilation � l'aide de la commande "make".
La compilation effectu�e, un fichier a �t� g�n�r�, dont le nom est propre � la plateforme (libjri.so, jri.dll, ...). Il ne reste plus qu'� configurer le syst�me comme indiqu� � l'�tape suivante.
Copied: src/resources/JRI-sources.zip (from rev 8, src/resources/JRI.zip)
===================================================================
(Binary files differ)
Property changes on: src/resources/JRI-sources.zip
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Deleted: src/resources/JRI.zip
===================================================================
(Binary files differ)
Added: src/resources/jri.dll
===================================================================
(Binary files differ)
Property changes on: src/resources/jri.dll
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
1
0
Author: thimel
Date: 2006-09-07 17:53:48 +0000 (Thu, 07 Sep 2006)
New Revision: 9
Added:
doc/index.rst
Modified:
doc/etude.rst
doc/installation.rst
doc/module.rst
pom.xml
site/site.xml
Log:
Deploiement du site
Modified: doc/etude.rst
===================================================================
--- doc/etude.rst 2006-09-07 00:26:13 UTC (rev 8)
+++ doc/etude.rst 2006-09-07 17:53:48 UTC (rev 9)
@@ -2,12 +2,14 @@
Etude et comparaison des moyens d'acc�der � R en Java
=====================================================
+
.. contents::
Introduction
============
+
Ce document a pour but de comparer les diff�rentes solutions envisageables pour
l'utilisation de R en Java.
@@ -37,6 +39,7 @@
R�sultats attendus
==================
+
Chacune des solutions a ses avantages et ses inconv�nients qui entreront dans la
d�cision finale. Avant m�me de commencer, la nature m�me des solutions sugg�re
certains r�sultats qu'il faudra v�rifier :
@@ -55,21 +58,26 @@
Consid�rations techniques
=========================
+
R�seau
------
+
Par d�faut, R n'int�gre aucune interface r�seau, et ne peut donc �tre utilis� �
distance. Il existe une extension du nom de 'Rserve' permettant d'ajouter � R la
possibilit� de recevoir et traiter des requ�tes TCP/IP, le rendant ainsi
accessible � tous types de langages.
+
- Avantages : R non n�cessaire sur la machine cliente, d�l�gation des calculs �
une machine tierce, appli 100% portable
- Inconv�nient : Rserve � installer sur le serveur
+
JNI
---
+
L'utilisation de JNI implique la cr�ation d'une librairie d�pendante du syst�me.
On perd donc un peu de la portabilit� du Java.
@@ -82,12 +90,15 @@
D�roulement (protocole) des tests
=================================
+
Le but des tests est de faire ressortir le co�t de chacune des solutions de
mani�re � d�terminer laquelle pourrait �tre la meilleure, mais surtout les
conditions, s'il y en a, dans lesquelles telle ou telle solution est meilleure.
+
Deux types de tests ont �t� effectu�s.
+
- Le premier consiste � envoyer de tr�s petits calculs � R et ce beaucoup de
fois de suite. On obtient donc une moyenne pour chacune des solutions ce qui
permettra d'�valuer le co�t de chaque m�thode.
@@ -108,63 +119,71 @@
R�sultats des tests
===================
-Tous les temps sont mesur�s en milli-secondes :
Test A - Calculs rapides
------------------------
+Les temps sont exprim�s en milli-secondes.
+
+------------+--------+--------+--------+--------+
-| | Java | Net | JNI | R |
+| _ | Java | Net | JNI | R |
+============+========+========+========+========+
-| Moyenne | | 241,06 | 233,56 | 230,83 |
+| Moyenne | _ | 241,06 | 233,56 | 230,83 |
+------------+--------+--------+--------+--------+
-| Ecart-type | | 18,65 | 11,99 | |
+| Ecart-type | _ | 18,65 | 11,99 | _ |
+------------+--------+--------+--------+--------+
Test B - Volumes importants
---------------------------
+Les temps sont exprim�s en milli-secondes.
+
+------------+--------+--------+--------+--------+
-| | Java | Net | JNI | R |
+| _ | Java | Net | JNI | R |
+============+========+========+========+========+
-| 50 | 0,00 | 1,00 | 1,33 | |
+| 50 | 0,00 | 1,00 | 1,33 | _ |
+------------+--------+--------+--------+--------+
-| 500 | 0,00 | 3,00 | 1,33 | |
+| 500 | 0,00 | 3,00 | 1,33 | _ |
+------------+--------+--------+--------+--------+
-| 5000 | 1,00 | 13,00 | 3,33 | |
+| 5000 | 1,00 | 13,00 | 3,33 | _ |
+------------+--------+--------+--------+--------+
-| 50000 | 24,20 | 33,50 | 8,00 | |
+| 50000 | 24,20 | 33,50 | 8,00 | _ |
+------------+--------+--------+--------+--------+
-| 100000 | 60,20 | 118,00 | 79,00 | |
+| 100000 | 60,20 | 118,00 | 79,00 | _ |
+------------+--------+--------+--------+--------+
-| 200000 | 66,60 | 142,00 | 116,00 | |
+| 200000 | 66,60 | 142,00 | 116,00 | _ |
+------------+--------+--------+--------+--------+
-| 500000 | 89,00 | 330,00 | 189,00 | |
+| 500000 | 89,00 | 330,00 | 189,00 | _ |
+------------+--------+--------+--------+--------+
-| 1000000 | 94,00 | 620,00 | 282,00 | |
+| 1000000 | 94,00 | 620,00 | 282,00 | _ |
+------------+--------+--------+--------+--------+
Test C - Temps d'initialisation
-------------------------------
+Les temps sont exprim�s en milli-secondes.
+
+------------+--------+--------+--------+--------+
-| | Java | Net | JNI | R |
+| _ | Java | Net | JNI | R |
+============+========+========+========+========+
-| Init. | | 22,10 | 571,10 | |
+| Init. | _ | 22,10 | 571,10 | _ |
+------------+--------+--------+--------+--------+
Exploitation des r�sultats
==========================
+
Les tests �tant effectu�s, il faut maintenant les interpr�ter et en tirer des
conclusions.
+
Test A - Calculs rapides
------------------------
+
Le premier test avait pour but d'isoler le co�t de chaque appel � R.
La comparaison avec du Java pur n'avait ici aucun int�ret dans la mesure ou le
but est de calculer le temps d'appel � R.
@@ -183,15 +202,15 @@
exemple.
Pour ce test, l'�cart-type �tait mesur� afin d'estimer la r�partition des
-valeurs.
-L'�cart-type nous permet ici de constater que la r�partition des valeurs avec
-JNI est plus proche de la moyenne que par le r�seau. La solution r�seau est donc
-plus sensible aux variations de temps.
+valeurs. L'�cart-type nous permet ici de constater que la r�partition des
+valeurs avec JNI est plus proche de la moyenne que par le r�seau. La solution
+r�seau est donc plus sensible aux variations de temps.
Test B - Volumes importants
---------------------------
+
La deuxi�me s�rie de tests veut mettre en valeur l'�volution des temps
n�cessaires avec l'augmentation du volume de donn�es.
Inversement au pr�c�dent test, c'est la solution R pur qui n'a ici pas de sens
@@ -230,9 +249,11 @@
souffre simplement de temps de transfert trop longs qui sont le reflet habituel
de l'utilisation des r�seaux.
+
Test C - Temps d'initialisation
-------------------------------
+
Le temps d'initialisation repr�sente le temps n�cessaire � la premi�re
utilisation de l'application avant de pouvoir acc�der � R. Il peut parraitre
annodin, mais en r�alit� il peut s'av�rer primordial dans le choix de la
@@ -243,9 +264,11 @@
l'initialisation du r�seau. Cette diff�rence peut s'av�rer cruciale si les
calculs � effectuer sont petits et peu r�p�t�s.
+
Notes
-----
+
Certains faits n'apparaissent pas dans les chiffres pr�c�demment cit�s mais
peuvent �galement faire pencher la balance.
@@ -276,6 +299,7 @@
| duration: 326ms |
+-----------------+
+
La diff�rence entre le premier et le dernier test atteint quasiment la demi
seconde soit plus de 150% du temps n�cessaire au final pour l'op�ration.
@@ -283,11 +307,14 @@
R�capitulatif
-------------
+
Les tests effectu�s se sont montr�s r�v�lateurs.
+
Net
----
+~~~
+
Cette solution s'est montr�e moins efficace que les autres. La diff�rence n'est
pas pour autant dramatique puisque les temps restent tout � fait corrects.
@@ -300,9 +327,11 @@
signifie que la solution perd de son inter�t seulement si quelques rares appels
sont effectu�s.
+
JNI
----
+~~~
+
La solution JNI a fait ses preuves sur les diff�rents tests. Il s'est av�r� que
les temps d'appels �taient toujours inf�rieurs � la solution r�seau.
@@ -312,9 +341,11 @@
initialisation de JNI s'av�re particuli�rement longue (une demi seconde) surtout
si elle est compar�e � la solution r�seau.
+
Java
-----
+~~~~
+
La comparaison n'a que peu d'inter�t mais permet de faire ressortir la puissance
de Java qui par le biais d'optimisations parvient � devancer R sur de nombreux
calculs.
@@ -324,9 +355,11 @@
fonctions plus optimis�es de R voire des librairies sp�cifiques, Java ne
pourraient certainement plus rivaliser avec R.
+
Conclusion
==========
+
Les deux principales solutions �tudi�es (JNI et r�seau) ont toutes deux montr�s
des avantages et inconv�nients et fait ressortir des cas dans lesquels elles
sont pr�f�rables � l'autre.
@@ -335,3 +368,4 @@
l'utilisateur avec la librairie LutinJ2R qui propose une interface unifi�e pour
acc�der aux fonctionnalit�s de R permettant ainsi de choisir � la vol�e quelle
solution utiliser.
+
Added: doc/index.rst
===================================================================
--- doc/index.rst 2006-09-07 00:26:13 UTC (rev 8)
+++ doc/index.rst 2006-09-07 17:53:48 UTC (rev 9)
@@ -0,0 +1,7 @@
+========
+LutinJ2R
+========
+
+
+La librairie LutinJ2R a pour but de fournir une passerrelle unifi�e d'acc�s � R.
+
Modified: doc/installation.rst
===================================================================
--- doc/installation.rst 2006-09-07 00:26:13 UTC (rev 8)
+++ doc/installation.rst 2006-09-07 17:53:48 UTC (rev 9)
@@ -2,49 +2,69 @@
Installation
============
+
Le pr�sent document a pour but de faciliter les diff�rentes installations n�cessaires en vue d'utiliser la librairie LutinJ2R.
+
.. contents::
Installation
============
+
Premi�rement il est n�cessaire d'avoir R d'install� sur la machine qui devra effectuer les calculs R. Chaque solution a des particularit�s.
+
Solution r�seau
---------------
+
Il est possible d'utiliser R en local (machine locale) ou de confier les calculs � une tierce machine (machine distante).
Que ce soit sur la machine locale ou distante, il faut installer R. Le plus simple est de consulter la documentation en ligne de R :
+
+::
+
http://wiki.r-project.org/rwiki/doku.php?id=getting-started:installation:pa…
La proc�dure suivante diff�re selon la plateforme :
+
Sous Linux
~~~~~~~~~~
+
Il faut installer le serveur qui va r�ceptionner et traiter les requ�tes TCP/IP. Dans l'ordre, il faut :
- - T�l�charger les sources de la version 0.4-3 (http://rosuda.org/Rserve/dist/Rserve_0.4-3.tar.gz) ou � defaut la derni�re disponible � l'adresse ;
- - Se logguer en root ;
- - Exc�cuter la commande "R CMD INSTALL Rserve_0.4-3.tar.gz".
+
+- T�l�charger les sources de la version 0.4-3 (http://rosuda.org/Rserve/dist/Rserve_0.4-3.tar.gz) ou � defaut la derni�re disponible � l'adresse ;
+- Se logguer en root ;
+- Exc�cuter la commande "R CMD INSTALL Rserve_0.4-3.tar.gz".
+
+
A noter que l'�tape d'installation requiert un compilateur C/C++. Une intervention suppl�mentaire est peut-�tre donc n�cessaire !
+
Sous Windows
~~~~~~~~~~~~
+
Les �tapes � suivre :
- - T�l�charger la version 0.4-3 pr�compil�e (http://rosuda.org/Rserve/dist/w32bin/0.4-3/2.3.1/Rserve.exe) ou � d�faut la derni�re disponible � l'adresse http://rosuda.org/Rserve/dist/rserve-win.html ;
- - Il faut ensuite copier le fichier t�l�charg� dans le dossier 'bin' de l'installation de R. Par d�faut pour la version 2.3.1 de R, ce dossier est "C:\Program Files\R\R-2.3.1\bin".
+
+- T�l�charger la version 0.4-3 pr�compil�e (http://rosuda.org/Rserve/dist/w32bin/0.4-3/2.3.1/Rserve.exe) ou � d�faut la derni�re disponible � l'adresse http://rosuda.org/Rserve/dist/rserve-win.html ;
+- Il faut ensuite copier le fichier t�l�charg� dans le dossier 'bin' de l'installation de R. Par d�faut pour la version 2.3.1 de R, ce dossier est "C:\Program Files\R\R-2.3.1\bin".
+
+
Solution JNI
------------
+
Il faut avant tout que R soit install�. Le plus simple est de consulter la documentation en ligne de R :
http://wiki.r-project.org/rwiki/doku.php?id=getting-started:installation:pa…
+
Concr�tement R est pr�t.
Cependant, si la plateforme ou l'architecture de la machine est particuli�re, il reste � compiler les sources natives (non-Java) du projet et cr�er une librairie adapt�e.
@@ -56,12 +76,15 @@
La compilation effectu�e, un fichier a �t� g�n�r�, dont le nom est propre � la plateforme (libjri.so, jri.dll, ...). Il ne reste plus qu'� configurer le syst�me comme indiqu� � l'�tape suivante.
+
Configuration
=============
+
Solution r�seau
---------------
+
Il n'y a de configuration � faire que s'il s'agit d'une utilisation sur une machine distante. Dans le cas contraire, la configuration de la solution r�seau est termin�e.
Dans le cas d'une machine distante, il faut autoriser les connections entrantes. Par d�faut, Rserve rejette ces connections.
@@ -69,37 +92,62 @@
Pour contrer cela, il faut �diter un fichier de configuration.
Sous Linux, il s'agit du fichier
+
+::
+
/etc/Rserv.conf
+
+
alors que sous Windows, il s'agit du fichier
+
+::
+
Rserv.cfg - qui doit se trouver au m�me endroit que l'exc�cutable Rserve.exe. (Par d�faut : C:\Program Files\R\R-2.3.1\bin)
Si ce fichier n'existe pas, il faut le cr�er et ajouter la ligne suivante :
+
+::
+
remote enable
+
Solution JNI
------------
+
La librairie compil�e ou obtenue � l'�tape pr�c�dente doit �tre plac�e au bon endroit sur le syst�me pour pouvoir �tre utilis�e.
Quelque soit la plateforme, il faut positionner des variables d'environnement.
+
- R_HOME : doit pointer sur le dossier d'installation de R (soit /usr/lib/R sous Linux ou C:\Program Files\R\R-2.3.1 sous Windows ou ...)
- LD_LIBRARY_PATH : doit pointer sur le dossier lib contenu dans R_HOME (soit R_HOME/lib/ sous Linux ou R_HOME\lib sous Windows ou ...)
Il faut ensuite copier la librairie (libjri.so ou jri.dll ou ...) dans le dossier LD_LIBRARY_PATH
+
D�marrage
=========
+
Cette �tape n'est n�cessaire que pour la solution r�seau.
+
Solution r�seau
---------------
+
La derni�re �tape de pr�paration est le lancement de Rserve.
Sous Linux, tapez la commande :
+
+::
+
R CMD Rserve
Sous Windows, double-cliquez sur :
+
+::
+
Rserve.exe dans le dossier d'installation de R (par d�faut : C:\Program Files\R\R-2.3.1\bin)
+
Modified: doc/module.rst
===================================================================
--- doc/module.rst 2006-09-07 00:26:13 UTC (rev 8)
+++ doc/module.rst 2006-09-07 17:53:48 UTC (rev 9)
@@ -2,96 +2,124 @@
Documentation du module
=======================
+
.. contents::
+
La librairie LutinJ2R est une passerelle d'acc�s � R. Ceci sous-entend qu'�
-l'utlisation, il n'est pas n�cessaire de se soucier de la technologie � employer
+l'utilisation, il n'est pas n�cessaire de se soucier de la technologie � employer
pour contacter R.
Utilisation
===========
+
Principes
---------
-Il n'est donc pas n�cessaire pour l'utilisateur de se soucier de la mani�re d'acc�der � R. Pour se faire, l'utilisateur ne s'adresse qu'� un proxy auquel il revient de d�terminer la technologie � employer.
+Pour acc�der � R, l'utilisateur ne s'adresse qu'� un proxy auquel il revient de d�terminer la technologie � employer.
+
Ce proxy est repr�sent� par la classe *org.codelutin.j2r.RProxy*. La librairie LutinJ2R inclut plusieurs moyens d'acc�s � R.
-Chacun de ses moyens est regroup� sous une interface commune qui d�finit la interactions possibles avec R : *org.codelutin.j2r.REngine*.
+Chacun de ses moyens est regroup� sous une interface commune qui d�finit les interactions possibles avec R : *org.codelutin.j2r.REngine*.
Le RProxy implante �galement cette interface, il s'utilise donc de la m�me mani�re.
+
Instanciation
-------------
+
La cr�ation du proxy est une simple instanciation.
+::
+
new RProxy();
+
Dans la mesure o� la classe *RProxy* implante l'interface *REngine*, il est pr�f�rable de passer par cette interface :
- | REngine engine;
- | engine = new RProxy();
+::
+ REngine engine;
+ engine = new RProxy();
+
Note :
En fonction des cas, il peut �tre n�cessaire de rajouter des import en d�but de classe :
- | import org.codelutin.j2r.RProxy;
- | import org.codelutin.j2r.REngine;
+::
+ import org.codelutin.j2r.RProxy;
+ import org.codelutin.j2r.REngine;
+
ou utiliser directement le nom complet des classes :
- | org.codelutin.j2r.REngine engine;
- | engine = new org.codelutin.j2r.RProxy();
+::
+ org.codelutin.j2r.REngine engine;
+ engine = new org.codelutin.j2r.RProxy();
+
Utilisation
-----------
+
Une fois que le proxy a �t� instanci�, il est alors possible d'utiliser R.
Deux principales m�thodes sont � disposition :
- - **Object eval(String expr)** : Cette m�thode prend une expression en param�tre sous forme de String, d�l�gue le calcul � R et renvoie le r�sultat. Le type de retour est d�termin� automatiquement et converti pour plus de simplicit�. Ainsi si le r�sultat est un tableau de double, l'objet de retour sera un double[].
- - **void voidEval(String expr)** : Cette m�thode est la m�me que la pr�c�dente � ceci pr�s qu'elle ne renvoie pas de r�sultat. Ceci permet d'�conomiser des temps de transfert et conversion lorsque ce n'est pas n�cessaire. Par exemple, lors d'une assignation *t<-0*, il n'est pas n�cessaire d'attendre de r�sultat. Cette fonctionnalit� est surtout utile pour la solution r�seau qui souffre de temps de transfert longs.
+- **Object eval(String expr)** : Cette m�thode prend une expression en param�tre sous forme de String, d�l�gue le calcul � R et renvoie le r�sultat. Le type de retour est d�termin� automatiquement et converti pour plus de simplicit�. Ainsi si le r�sultat est un tableau de double, l'objet de retour sera un double[].
+- **void voidEval(String expr)** : Cette m�thode est la m�me que la pr�c�dente � ceci pr�s qu'elle ne renvoie pas de r�sultat. Ceci permet d'�conomiser des temps de transfert et conversion lorsque ce n'est pas n�cessaire. Par exemple, lors d'une assignation *t<-0*, il n'est pas n�cessaire d'attendre de r�sultat. Cette fonctionnalit� est surtout utile pour la solution r�seau qui souffre de temps de transfert longs.
+
A noter que ces deux m�thodes sont suceptibles de lever des exceptions de type *org.codelutin.j2r.RException* si un traitement a �chou�.
Le mode d'utilisation est donc :
- | engine.voidEval("t<-sin(0)");
- | double d = (Double)engine.eval("t");
+::
+ engine.voidEval("t<-sin(0)");
+ double d = (Double)engine.eval("t");
+
Param�trage
===========
+
Par d�faut, le proxy essaye de se connecter en r�seau sur la machine locale. N�anmoins il peut �tre n�cessaire de changer de technologie ou encore d'utiliser une machine distante.
-Le param�trage se fait par le biais d'une option au niveau de la JVM. Les options de la JVM permettent de positionner des param�tres qui ne sont pas directement li�s � l'application mais plut�t � son environnement d'�x�cution, comme la quantit� de m�moire allou�e, ...
+Le param�trage se fait par le biais d'une option au niveau de la JVM. Les options de la JVM permettent de positionner des param�tres qui ne sont pas directement li�s � l'application mais plut�t � son environnement d'�x�cution, comme la quantit� de m�moire allou�e, ...
+
Choix de la technologie
-----------------------
+
Pour informer l'application du type de technologie � utiliser, il faut rajouter l'option *R.type* :
- | **-DR.type=net** : pour une utilisation par le r�seau.
- | **-DR.type=jni** : pour une utilisation pas JNI.
+::
+ -DR.type=net : pour une utilisation par le r�seau.
+ -DR.type=jni : pour une utilisation pas JNI.
+
La d�tection de la technologie � employer est ensuite faite au niveau du *RProxy*.
+
Param�tres suppl�mentaires
--------------------------
-Aucun param�tre suppl�mentaire ne peut �tre utile � JNI, cette section concerne donc la solution r�seau.
+Aucun param�tre suppl�mentaire ne peut �tre utile � JNI, cette section concerne donc la solution r�seau.
+
Par d�faut, la solution r�seau s'adresse � la machine locale (127.0.0.1) et sur le port par d�faut (6311), mais il est possible de sp�cifier une autre adresse de machine ou un autre port.
L'option de JVM peut �tre suffix� des mani�res suivantes :
- | **-DR.type=net://192.168.99.122** : De cette mani�re, la connection est �tablie sur la machine *192.168.99.122* sur le port par d�faut.
- | **-DR.type=net://:9999** : De cette mani�re, la connection est �tablie sur la machine locale sur le port *9999*. Notez la pr�sence du *:* suppl�mentaires.
- | **-DR.type=net://192.168.99.122:9999** : De cette mani�re, la connection est �tablie sur la machine *192.168.99.122* et sur le port *9999*. Notez la pr�sence du *:* entre l'adresse et le port.
-
\ No newline at end of file
+::
+
+ -DR.type=net://192.168.99.122 : De cette mani�re, la connection est �tablie sur la machine *192.168.99.122* sur le port par d�faut.
+ -DR.type=net://:9999 : De cette mani�re, la connection est �tablie sur la machine locale sur le port *9999*. Notez la pr�sence du *:* suppl�mentaires.
+ -DR.type=net://192.168.99.122:9999 : De cette mani�re, la connection est �tablie sur la machine *192.168.99.122* et sur le port *9999*. Notez la pr�sence du *:* entre l'adresse et le port.
+
Modified: pom.xml
===================================================================
--- pom.xml 2006-09-07 00:26:13 UTC (rev 8)
+++ pom.xml 2006-09-07 17:53:48 UTC (rev 9)
@@ -1,58 +1,116 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <!--The version of maven's project object model-->
- <modelVersion>4.0.0</modelVersion>
-
- <!--lutinproject.xml-->
- <parent>
- <groupId>lutinlib</groupId>
- <artifactId>lutinproject</artifactId>
- <version>2.0</version>
- </parent>
-
- <!--A unique name for this project-->
- <artifactId>lutinj2r</artifactId>
- <name>Lutin Java-2-R library</name>
-
- <!--ejb, jar, war...-->
- <packaging>jar</packaging>
-
- <!--Version-->
- <version>0.1</version>
-
- <!--Description-->
- <description>
- Librairie permettant d'utiliser R en Java, que ce soit par le Network ou en JNI.
- </description>
- <inceptionYear>2006</inceptionYear>
-
- <!--Tracking-->
- <issueManagement>
- <url>http://labs.libre-entreprise.org/tracker/?group_id=109</url>
- </issueManagement>
-
- <!--Librairies-->
- <dependencies>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>1.1</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>externallib</groupId>
- <artifactId>JRclient</artifactId>
- <version>RF503</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>externallib</groupId>
- <artifactId>JRI</artifactId>
- <version>0.2-4-cl</version>
- <scope>compile</scope>
- </dependency>
- </dependencies>
-
+ <!--The version of maven's project object model-->
+ <modelVersion>4.0.0</modelVersion>
+
+ <!--lutinproject.xml-->
+ <parent>
+ <groupId>lutinlib</groupId>
+ <artifactId>lutinproject</artifactId>
+ <version>2.0</version>
+ </parent>
+
+ <!--A unique name for this project-->
+ <artifactId>lutinj2r</artifactId>
+ <name>Lutin Java-2-R library</name>
+
+ <!--ejb, jar, war...-->
+ <packaging>jar</packaging>
+
+ <!--Version-->
+ <version>0.1</version>
+
+ <!--Description-->
+ <description>
+ Librairie permettant d'utiliser R en Java, que ce soit par le
+ Network ou en JNI.
+ </description>
+ <inceptionYear>2006</inceptionYear>
+
+ <!--Tracking-->
+ <issueManagement>
+ <url>
+ http://labs.libre-entreprise.org/tracker/?group_id=109
+ </url>
+ </issueManagement>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-site-plugin</artifactId>
+ <configuration>
+ <outputEncoding>UTF-8</outputEncoding>
+ <!--siteDirectory>${basedir}/target/site-build</siteDirectory-->
+ <locales>fr</locales>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <!--Librairies-->
+ <dependencies>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>externallib</groupId>
+ <artifactId>JRclient</artifactId>
+ <version>RF503</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>externallib</groupId>
+ <artifactId>JRI</artifactId>
+ <version>0.2-4-cl</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+ <!--Any mailing lists for the project-->
+ <mailingLists>
+ <mailingList>
+ <name>lutinj2r-cvscomit</name>
+ <!--subscribe>http://lists.labs.libre-entreprise.org/mailman/listinfo/lutinj2r-commits</subscribe-->
+ <unsubscribe>
+ http://lists.labs.libre-entreprise.org/mailman/listinfo/lutinj2r-commits
+ </unsubscribe>
+ <archive>
+ https://lists.labs.libre-entreprise.org/mailman/private/lutinj2r-commits
+ </archive>
+ </mailingList>
+
+ <mailingList>
+ <name>lutinj2r-devel</name>
+ <!--subscribe>http://lists.labs.libre-entreprise.org/mailman/listinfo/lutinj2r-devel</subscribe-->
+ <unsubscribe>
+ http://lists.labs.libre-entreprise.org/mailman/listinfo/lutinj2r-devel
+ </unsubscribe>
+ <archive>
+ https://lists.labs.libre-entreprise.org/mailman/private/lutinj2r-devel
+ </archive>
+ </mailingList>
+
+ <mailingList>
+ <name>lutinj2r-user</name>
+ <!--subscribe>http://lists.labs.libre-entreprise.org/mailman/listinfo/lutinj2r-user</subscribe-->
+ <unsubscribe>
+ http://lists.labs.libre-entreprise.org/mailman/listinfo/lutinj2r-user
+ </unsubscribe>
+ <archive>
+ https://lists.labs.libre-entreprise.org/mailman/private/lutinj2r-user
+ </archive>
+ </mailingList>
+ </mailingLists>
+ <distributionManagement>
+ <site>
+ <id>labs</id>
+ <url>
+ scp://labs.libre-entreprise.org/home/groups/${pom.artifactId}/htdocs/
+ </url>
+ </site>
+ </distributionManagement>
</project>
Modified: site/site.xml
===================================================================
--- site/site.xml 2006-09-07 00:26:13 UTC (rev 8)
+++ site/site.xml 2006-09-07 17:53:48 UTC (rev 9)
@@ -16,15 +16,21 @@
<item name="Code Lutin" href="http://www.codelutin.com/"/>
</links>
- ${reports}
+ <menu name="Survol">
+ <item href="/etude.html" name="Etude"></item>
+ </menu>
<menu name="Utilisateur">
- <item href="http://lutinbuilder.labs.libre-entreprise.org/maven2/lutinlib/lutinutil/" name="Téléchargement"/>
+ <item href="installation.html" name="Installation"/>
+ <item href="module.html" name="Utilisation"/>
</menu>
- <menu name="Developpeur">
- <item name="Todo" href="Todo.html"/>
+ <menu name="T�l�chargement">
+ <item href="http://lutinbuilder.labs.libre-entreprise.org/maven2/lutinlib/lutinj2r/" name="Librairies Java"/>
+ <item href="/libsys/" name="Librairies Syst�me"/>
</menu>
+ ${reports}
+
</body>
</project>
1
0
07 Sep '06
Author: thimel
Date: 2006-09-07 00:26:13 +0000 (Thu, 07 Sep 2006)
New Revision: 8
Added:
src/resources/JRI.zip
Modified:
doc/etude.rst
doc/installation.rst
doc/module.rst
Log:
- doc 100%
- sources pour compilation des librairies syst?\195?\168me
Modified: doc/etude.rst
===================================================================
--- doc/etude.rst 2006-09-01 10:42:50 UTC (rev 7)
+++ doc/etude.rst 2006-09-07 00:26:13 UTC (rev 8)
@@ -4,6 +4,7 @@
.. contents::
+
Introduction
============
Modified: doc/installation.rst
===================================================================
--- doc/installation.rst 2006-09-01 10:42:50 UTC (rev 7)
+++ doc/installation.rst 2006-09-07 00:26:13 UTC (rev 8)
@@ -6,6 +6,7 @@
.. contents::
+
Installation
============
@@ -47,11 +48,14 @@
Concr�tement R est pr�t.
Cependant, si la plateforme ou l'architecture de la machine est particuli�re, il reste � compiler les sources natives (non-Java) du projet et cr�er une librairie adapt�e.
-Heureusement, la proc�dure est simple
+Heureusement, la proc�dure est simple :
-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+Les sources � compiler font partie de l'archive src/resources/JRI.zip
+Pour compiler la librairie, d�zippez dans un premier temps l'archive JRI.zip. Ensuite, exc�cutez le script nomm� "configure" de mani�re � pr�parer votre syst�me � la compilation. Enfin, effectuez la compilation � l'aide de la commande "make".
+La compilation effectu�e, un fichier a �t� g�n�r�, dont le nom est propre � la plateforme (libjri.so, jri.dll, ...). Il ne reste plus qu'� configurer le syst�me comme indiqu� � l'�tape suivante.
+
Configuration
=============
Modified: doc/module.rst
===================================================================
--- doc/module.rst 2006-09-01 10:42:50 UTC (rev 7)
+++ doc/module.rst 2006-09-07 00:26:13 UTC (rev 8)
@@ -8,6 +8,7 @@
l'utlisation, il n'est pas n�cessaire de se soucier de la technologie � employer
pour contacter R.
+
Utilisation
===========
Added: src/resources/JRI.zip
===================================================================
(Binary files differ)
Property changes on: src/resources/JRI.zip
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
1
0
[LutinJ2R-commits] r7 - src/test/org/codelutin/j2r
by thimel@users.labs.libre-entreprise.org 01 Sep '06
by thimel@users.labs.libre-entreprise.org 01 Sep '06
01 Sep '06
Author: thimel
Date: 2006-09-01 10:42:50 +0000 (Fri, 01 Sep 2006)
New Revision: 7
Modified:
src/test/org/codelutin/j2r/JNITest.java
src/test/org/codelutin/j2r/NetTest.java
Log:
Amelioration des tests
Modified: src/test/org/codelutin/j2r/JNITest.java
===================================================================
--- src/test/org/codelutin/j2r/JNITest.java 2006-09-01 10:41:55 UTC (rev 6)
+++ src/test/org/codelutin/j2r/JNITest.java 2006-09-01 10:42:50 UTC (rev 7)
@@ -43,11 +43,13 @@
private static Log log = LogFactory.getLog(JNITest.class);
private REngine engine;
+ private String savedRType;
@Override
protected void setUp() throws Exception {
LutinTimer init = new LutinTimer();
init.startTiming();
+ savedRType = System.getProperty("R.type", "");
System.setProperty("R.type", "jni");
if (engine == null) {
engine = new RProxy();
@@ -60,10 +62,14 @@
@Override
protected void tearDown() throws Exception {
engine.terminate();
+ System.setProperty("R.type", savedRType);
}
public void testDouble() throws Exception {
assertEquals(5.0, engine.eval("5.0"));
+ engine.voidEval("t<-sin(0)");
+ double d = (Double)engine.eval("t");
+ assertEquals(0.0, d);
}
public void testIntArray() throws Exception {
Modified: src/test/org/codelutin/j2r/NetTest.java
===================================================================
--- src/test/org/codelutin/j2r/NetTest.java 2006-09-01 10:41:55 UTC (rev 6)
+++ src/test/org/codelutin/j2r/NetTest.java 2006-09-01 10:42:50 UTC (rev 7)
@@ -50,12 +50,14 @@
private static Log log = LogFactory.getLog(NetTest.class);
private REngine engine;
+ private String savedRType;
@Override
protected void setUp() throws Exception {
LutinTimer init = new LutinTimer();
init.startTiming();
-// System.setProperty("R.type", "net://192.168.99.122:6312");
+ savedRType = System.getProperty("R.type", "");
+ System.setProperty("R.type", "net://:6311");
if (engine == null) {
engine = new RProxy();
}
@@ -64,8 +66,17 @@
}
}
+ @Override
+ protected void tearDown() throws Exception {
+ engine.terminate();
+ System.setProperty("R.type", savedRType);
+ }
+
public void testDouble() throws Exception {
assertEquals(5.0, engine.eval("5.0"));
+ engine.voidEval("t<-sin(0)");
+ double d = (Double)engine.eval("t");
+ assertEquals(0.0, d);
}
public void testIntArray() throws Exception {
1
0
[LutinJ2R-commits] r6 - doc src/java/org/codelutin/j2r/net
by thimel@users.labs.libre-entreprise.org 01 Sep '06
by thimel@users.labs.libre-entreprise.org 01 Sep '06
01 Sep '06
Author: thimel
Date: 2006-09-01 10:41:55 +0000 (Fri, 01 Sep 2006)
New Revision: 6
Added:
doc/module.rst
Modified:
doc/etude.rst
doc/installation.rst
src/java/org/codelutin/j2r/net/RNetEngine.java
Log:
- Doc 98%
- Amelioration de la detection des params
Modified: doc/etude.rst
===================================================================
--- doc/etude.rst 2006-08-31 17:12:15 UTC (rev 5)
+++ doc/etude.rst 2006-09-01 10:41:55 UTC (rev 6)
@@ -1,3 +1,9 @@
+=====================================================
+Etude et comparaison des moyens d'acc�der � R en Java
+=====================================================
+
+.. contents::
+
Introduction
============
Modified: doc/installation.rst
===================================================================
--- doc/installation.rst 2006-08-31 17:12:15 UTC (rev 5)
+++ doc/installation.rst 2006-09-01 10:41:55 UTC (rev 6)
@@ -1,3 +1,7 @@
+============
+Installation
+============
+
Le pr�sent document a pour but de faciliter les diff�rentes installations n�cessaires en vue d'utiliser la librairie LutinJ2R.
.. contents::
Added: doc/module.rst
===================================================================
--- doc/module.rst 2006-08-31 17:12:15 UTC (rev 5)
+++ doc/module.rst 2006-09-01 10:41:55 UTC (rev 6)
@@ -0,0 +1,96 @@
+=======================
+Documentation du module
+=======================
+
+.. contents::
+
+La librairie LutinJ2R est une passerelle d'acc�s � R. Ceci sous-entend qu'�
+l'utlisation, il n'est pas n�cessaire de se soucier de la technologie � employer
+pour contacter R.
+
+Utilisation
+===========
+
+Principes
+---------
+
+Il n'est donc pas n�cessaire pour l'utilisateur de se soucier de la mani�re d'acc�der � R. Pour se faire, l'utilisateur ne s'adresse qu'� un proxy auquel il revient de d�terminer la technologie � employer.
+
+Ce proxy est repr�sent� par la classe *org.codelutin.j2r.RProxy*. La librairie LutinJ2R inclut plusieurs moyens d'acc�s � R.
+Chacun de ses moyens est regroup� sous une interface commune qui d�finit la interactions possibles avec R : *org.codelutin.j2r.REngine*.
+
+Le RProxy implante �galement cette interface, il s'utilise donc de la m�me mani�re.
+
+Instanciation
+-------------
+
+La cr�ation du proxy est une simple instanciation.
+
+ new RProxy();
+
+Dans la mesure o� la classe *RProxy* implante l'interface *REngine*, il est pr�f�rable de passer par cette interface :
+
+ | REngine engine;
+ | engine = new RProxy();
+
+Note :
+
+En fonction des cas, il peut �tre n�cessaire de rajouter des import en d�but de classe :
+
+ | import org.codelutin.j2r.RProxy;
+ | import org.codelutin.j2r.REngine;
+
+ou utiliser directement le nom complet des classes :
+
+ | org.codelutin.j2r.REngine engine;
+ | engine = new org.codelutin.j2r.RProxy();
+
+
+Utilisation
+-----------
+
+Une fois que le proxy a �t� instanci�, il est alors possible d'utiliser R.
+
+Deux principales m�thodes sont � disposition :
+
+ - **Object eval(String expr)** : Cette m�thode prend une expression en param�tre sous forme de String, d�l�gue le calcul � R et renvoie le r�sultat. Le type de retour est d�termin� automatiquement et converti pour plus de simplicit�. Ainsi si le r�sultat est un tableau de double, l'objet de retour sera un double[].
+ - **void voidEval(String expr)** : Cette m�thode est la m�me que la pr�c�dente � ceci pr�s qu'elle ne renvoie pas de r�sultat. Ceci permet d'�conomiser des temps de transfert et conversion lorsque ce n'est pas n�cessaire. Par exemple, lors d'une assignation *t<-0*, il n'est pas n�cessaire d'attendre de r�sultat. Cette fonctionnalit� est surtout utile pour la solution r�seau qui souffre de temps de transfert longs.
+
+A noter que ces deux m�thodes sont suceptibles de lever des exceptions de type *org.codelutin.j2r.RException* si un traitement a �chou�.
+
+Le mode d'utilisation est donc :
+
+ | engine.voidEval("t<-sin(0)");
+ | double d = (Double)engine.eval("t");
+
+
+Param�trage
+===========
+
+Par d�faut, le proxy essaye de se connecter en r�seau sur la machine locale. N�anmoins il peut �tre n�cessaire de changer de technologie ou encore d'utiliser une machine distante.
+
+Le param�trage se fait par le biais d'une option au niveau de la JVM. Les options de la JVM permettent de positionner des param�tres qui ne sont pas directement li�s � l'application mais plut�t � son environnement d'�x�cution, comme la quantit� de m�moire allou�e, ...
+
+Choix de la technologie
+-----------------------
+
+Pour informer l'application du type de technologie � utiliser, il faut rajouter l'option *R.type* :
+
+ | **-DR.type=net** : pour une utilisation par le r�seau.
+ | **-DR.type=jni** : pour une utilisation pas JNI.
+
+La d�tection de la technologie � employer est ensuite faite au niveau du *RProxy*.
+
+Param�tres suppl�mentaires
+--------------------------
+
+Aucun param�tre suppl�mentaire ne peut �tre utile � JNI, cette section concerne donc la solution r�seau.
+
+Par d�faut, la solution r�seau s'adresse � la machine locale (127.0.0.1) et sur le port par d�faut (6311), mais il est possible de sp�cifier une autre adresse de machine ou un autre port.
+
+L'option de JVM peut �tre suffix� des mani�res suivantes :
+
+ | **-DR.type=net://192.168.99.122** : De cette mani�re, la connection est �tablie sur la machine *192.168.99.122* sur le port par d�faut.
+ | **-DR.type=net://:9999** : De cette mani�re, la connection est �tablie sur la machine locale sur le port *9999*. Notez la pr�sence du *:* suppl�mentaires.
+ | **-DR.type=net://192.168.99.122:9999** : De cette mani�re, la connection est �tablie sur la machine *192.168.99.122* et sur le port *9999*. Notez la pr�sence du *:* entre l'adresse et le port.
+
\ No newline at end of file
Modified: src/java/org/codelutin/j2r/net/RNetEngine.java
===================================================================
--- src/java/org/codelutin/j2r/net/RNetEngine.java 2006-08-31 17:12:15 UTC (rev 5)
+++ src/java/org/codelutin/j2r/net/RNetEngine.java 2006-09-01 10:41:55 UTC (rev 6)
@@ -53,6 +53,7 @@
public class RNetEngine implements REngine {
public static final int DEFAULT_PORT = 6311;
+ public static final String DEFAULT_HOST = "127.0.0.1";
private Log log = LogFactory.getLog(RNetEngine.class);
@@ -64,7 +65,7 @@
public boolean init() {
String typeProp = System.getProperty("R.type", "net");
int urlPos = typeProp.indexOf("net://");
- String host = "127.0.0.1";
+ String host = null;
String portAsString = null;
if (urlPos != -1) {
String url = typeProp.substring(urlPos + 6);
@@ -76,6 +77,9 @@
host = url;
}
}
+ if (host == null || "".equals(host)) {
+ host = DEFAULT_HOST;
+ }
int port = DEFAULT_PORT;
if (portAsString != null) {
try {
1
0