Using SJava?

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Using SJava?

Roger Bivand
Administrator
Is anyone on this list using SJava or any R/Java connection? Not only is
the JTS Topology Suite that Tim just mentioned interesting, but so is the
upcoming GeoTools2 at http://www.geotools.org/. Both are likely to be used
quite a lot, and thus probably well-maintained.

At the recent Association of American Geographers meeting, Frank Hardisty
asked me about this, and while I was able to install SJava (from
http://www.stats.ox.ac.uk/pub/RWin) on a Win XP laptop, we were not able
to see how to get Java within R to see GeoTools in its classpath.  Both of
these Java resources are potentially useful, and R opinions two or three
years ago, that Java is slow, may need revision given increased machine
capacity. I feel we could benefit from mobilizing Java insight (but I feel
personally Java-challenged!).

I believe that Duncan Temple-Lang was playing with/working on object
discovery - this could be very relevant in terms of matching R-internal
object representations with those in existing software that we could - if
SJava worked - link to. I also think that we could ask him for advice if
we discussed it first here. What do others think?

--
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Breiviksveien 40, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
e-mail: Roger.Bivand at nhh.no



Roger Bivand
Department of Economics
Norwegian School of Economics
Helleveien 30
N-5045 Bergen, Norway
Reply | Threaded
Open this post in threaded view
|

Using SJava?

Tim Keitt
Another way to go is to embed R in other applications. I stumbled on
JUMP (http://www.vividsolutions.com/jump/) the other day. Looks like the
dawn of quality open source GIS is around the corner.

T.

On Fri, 2004-04-02 at 12:56, Roger Bivand wrote:

> Is anyone on this list using SJava or any R/Java connection? Not only is
> the JTS Topology Suite that Tim just mentioned interesting, but so is the
> upcoming GeoTools2 at http://www.geotools.org/. Both are likely to be used
> quite a lot, and thus probably well-maintained.
>
> At the recent Association of American Geographers meeting, Frank Hardisty
> asked me about this, and while I was able to install SJava (from
> http://www.stats.ox.ac.uk/pub/RWin) on a Win XP laptop, we were not able
> to see how to get Java within R to see GeoTools in its classpath.  Both of
> these Java resources are potentially useful, and R opinions two or three
> years ago, that Java is slow, may need revision given increased machine
> capacity. I feel we could benefit from mobilizing Java insight (but I feel
> personally Java-challenged!).
>
> I believe that Duncan Temple-Lang was playing with/working on object
> discovery - this could be very relevant in terms of matching R-internal
> object representations with those in existing software that we could - if
> SJava worked - link to. I also think that we could ask him for advice if
> we discussed it first here. What do others think?
--
Timothy H. Keitt
Section of Integrative Biology
University of Texas at Austin
http://www.keittlab.org/



Reply | Threaded
Open this post in threaded view
|

Using SJava?

Tim Keitt
In reply to this post by Roger Bivand
I'm just starting to look at java. The big win is people report 100%
productivity (lines per hour) increase over C++. Eclipse is a great tool
for learning java. I was using vector/list classes within minutes (you
can easily find object in the base libraries by browsing or with
autocompletion). I agree, performance is less of an issue these days. In
the long run, if distributed vm's become available that implement
transparent thread migration, then java progs will get really easy to
scale-up to large problems (modulo the normal caveats about the problem
domain). Someone should really port R onto the java vm. (Not optimal for
R-like languages, but the ease of integrating with java, jpython, etc.
might make it worth while.)

Tim

On Fri, 2004-04-02 at 12:56, Roger Bivand wrote:

> Is anyone on this list using SJava or any R/Java connection? Not only is
> the JTS Topology Suite that Tim just mentioned interesting, but so is the
> upcoming GeoTools2 at http://www.geotools.org/. Both are likely to be used
> quite a lot, and thus probably well-maintained.
>
> At the recent Association of American Geographers meeting, Frank Hardisty
> asked me about this, and while I was able to install SJava (from
> http://www.stats.ox.ac.uk/pub/RWin) on a Win XP laptop, we were not able
> to see how to get Java within R to see GeoTools in its classpath.  Both of
> these Java resources are potentially useful, and R opinions two or three
> years ago, that Java is slow, may need revision given increased machine
> capacity. I feel we could benefit from mobilizing Java insight (but I feel
> personally Java-challenged!).
>
> I believe that Duncan Temple-Lang was playing with/working on object
> discovery - this could be very relevant in terms of matching R-internal
> object representations with those in existing software that we could - if
> SJava worked - link to. I also think that we could ask him for advice if
> we discussed it first here. What do others think?
--
Timothy H. Keitt
Section of Integrative Biology
University of Texas at Austin
http://www.keittlab.org/



Reply | Threaded
Open this post in threaded view
|

RE: Using SJava?

Benjamin.STABLER@odot.state.or.us
In reply to this post by Roger Bivand
Hopefully, I'm not too late on this one....when you initialize the JVM you
need to set the class path as follows:

.JavaInit(config=javaConfig(classPath="StringDirectoryPathReference"))

or

.JavaInit(config=javaConfig(classPath=c("String1", "String2")))

for example:

.JavaInit(config=javaConfig(classPath="C:\javastuff"))

where javastuff contains my class files.  You need to specify the jar file
name if you are trying to include class files within jars.  I have used it
with some classes that I wrote.  

I too am excited about linking Java and R, as there is so much useful code
in the Java community.

Benjamin Stabler
Transportation Planning Analysis Unit
Oregon Department of Transportation
555 13th Street NE, Suite 2
Salem, OR 97301  Ph: 503-986-4104


>Message: 5
>Date: Fri, 2 Apr 2004 20:56:50 +0200 (CEST)
>From: Roger Bivand <Roger.Bivand at nhh.no>
>Subject: [R-sig-Geo] Using SJava?
>To: r-sig-geo at stat.math.ethz.ch
>Cc: Frank Hardisty <HardistF at gwm.sc.edu>
>Message-ID: <Pine.LNX.4.44.0404022042580.28093-100000 at reclus.nhh.no>
>Content-Type: TEXT/PLAIN; charset=US-ASCII
>
>Is anyone on this list using SJava or any R/Java connection?
>Not only is
>the JTS Topology Suite that Tim just mentioned interesting,
>but so is the
>upcoming GeoTools2 at http://www.geotools.org/. Both are
>likely to be used
>quite a lot, and thus probably well-maintained.
>
>At the recent Association of American Geographers meeting,
>Frank Hardisty
>asked me about this, and while I was able to install SJava (from
>http://www.stats.ox.ac.uk/pub/RWin) on a Win XP laptop, we
>were not able
>to see how to get Java within R to see GeoTools in its
>classpath.  Both of
>these Java resources are potentially useful, and R opinions
>two or three
>years ago, that Java is slow, may need revision given increased machine
>capacity. I feel we could benefit from mobilizing Java insight
>(but I feel
>personally Java-challenged!).
>
>I believe that Duncan Temple-Lang was playing with/working on object
>discovery - this could be very relevant in terms of matching
>R-internal
>object representations with those in existing software that we
>could - if
>SJava worked - link to. I also think that we could ask him for
>advice if
>we discussed it first here. What do others think?
>
>--
>Roger Bivand
>Economic Geography Section, Department of Economics, Norwegian
>School of
>Economics and Business Administration, Breiviksveien 40, N-5045 Bergen,
>Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
>e-mail: Roger.Bivand at nhh.no
>
>
>



Reply | Threaded
Open this post in threaded view
|

RE: Using SJava?

Roger Bivand
Administrator
On Mon, 5 Apr 2004 Benjamin.STABLER at odot.state.or.us wrote:

> Hopefully, I'm not too late on this one....when you initialize the JVM you
> need to set the class path as follows:
>
> .JavaInit(config=javaConfig(classPath="StringDirectoryPathReference"))
>
> or
>
> .JavaInit(config=javaConfig(classPath=c("String1", "String2")))
>
> for example:
>
> .JavaInit(config=javaConfig(classPath="C:\javastuff"))
>
> where javastuff contains my class files.  You need to specify the jar file
> name if you are trying to include class files within jars.  I have used it
> with some classes that I wrote.  

Yes, and Sys.putenv("CLASSPATH"="String1") can be used too, but what do
you put in .Java() to get into your own jars? Are there escaping issues in
the path to the jars? (backslash twice? forwardslash?) Could we put up
some jars and some instructions for use on a website? Frank Hardisty sent
me an example off-list that works from the command line but which I can't
find from within R/SJava (Windows XP, the SJava examples that I've tried
work for me).

The idea would be to see if GeoTools2 can be reached from within R,
because it could provide (another) way to import/export multiple GIS
formats.

Roger

>
> I too am excited about linking Java and R, as there is so much useful code
> in the Java community.
>
> Benjamin Stabler
> Transportation Planning Analysis Unit
> Oregon Department of Transportation
> 555 13th Street NE, Suite 2
> Salem, OR 97301  Ph: 503-986-4104
>
>
> >Message: 5
> >Date: Fri, 2 Apr 2004 20:56:50 +0200 (CEST)
> >From: Roger Bivand <Roger.Bivand at nhh.no>
> >Subject: [R-sig-Geo] Using SJava?
> >To: r-sig-geo at stat.math.ethz.ch
> >Cc: Frank Hardisty <HardistF at gwm.sc.edu>
> >Message-ID: <Pine.LNX.4.44.0404022042580.28093-100000 at reclus.nhh.no>
> >Content-Type: TEXT/PLAIN; charset=US-ASCII
> >
> >Is anyone on this list using SJava or any R/Java connection?
> >Not only is
> >the JTS Topology Suite that Tim just mentioned interesting,
> >but so is the
> >upcoming GeoTools2 at http://www.geotools.org/. Both are
> >likely to be used
> >quite a lot, and thus probably well-maintained.
> >
> >At the recent Association of American Geographers meeting,
> >Frank Hardisty
> >asked me about this, and while I was able to install SJava (from
> >http://www.stats.ox.ac.uk/pub/RWin) on a Win XP laptop, we
> >were not able
> >to see how to get Java within R to see GeoTools in its
> >classpath.  Both of
> >these Java resources are potentially useful, and R opinions
> >two or three
> >years ago, that Java is slow, may need revision given increased machine
> >capacity. I feel we could benefit from mobilizing Java insight
> >(but I feel
> >personally Java-challenged!).
> >
> >I believe that Duncan Temple-Lang was playing with/working on object
> >discovery - this could be very relevant in terms of matching
> >R-internal
> >object representations with those in existing software that we
> >could - if
> >SJava worked - link to. I also think that we could ask him for
> >advice if
> >we discussed it first here. What do others think?
> >
> >--
> >Roger Bivand
> >Economic Geography Section, Department of Economics, Norwegian
> >School of
> >Economics and Business Administration, Breiviksveien 40, N-5045 Bergen,
> >Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
> >e-mail: Roger.Bivand at nhh.no
> >
> >
> >
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://www.stat.math.ethz.ch/mailman/listinfo/r-sig-geo
>

--
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Breiviksveien 40, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
e-mail: Roger.Bivand at nhh.no



Roger Bivand
Department of Economics
Norwegian School of Economics
Helleveien 30
N-5045 Bergen, Norway
Reply | Threaded
Open this post in threaded view
|

RE: Using SJava?

Benjamin.STABLER@odot.state.or.us
In reply to this post by Roger Bivand
Frank and Roger,

Sorry about the path reference - I just added the example on the fly in the
email and forgot about the R escape character.  Attached is the simply class
that I used to test the link.  It just takes a string as an input and
returns my email signature with the string substituted for the name.

The R code to run it:

library(SJava)
.JavaInit(config=javaConfig(classPath="F:/_ben/java"))
.Java("sig","print","Ben Stabler")


In terms of the jar file, it seems to work for me.  Note that I moved the
jar file to a different directory so it did not find the class file by
itself as well.

> library(SJava)
using JAVA_HOME = C:\j2sdk1.4.2\jre
> .JavaInit(config=javaConfig(classPath="F:/_ben/sig.jar"))
> .Java("sig","print","Ben Stabler")
[1] "Ben Stabler"                         "Oregon Department of
Transportation"
[3] "Mill Creek Office Building"          "555 13th Street NE Suite 2"

[5] "Salem, OR 97301-4178"              
>

The print method of the sig class is static so I'm not having any difficulty
using static methods and I did not need to create a constructor first.  You
shouldn't need a constructor/object for a static method (that is the point
of static methods).  Unfortunately my IS department blocked the zip file you
sent.  Could you send me the code as text or maybe just copy into email?
Thanks.  

Ben


>-----Original Message-----
>From: Frank Hardisty [mailto:HardistF at gwm.sc.edu]
>Sent: Monday, April 05, 2004 1:07 PM
>To: Roger.Bivand at nhh.no
>Cc: STABLER Benjamin
>Subject: Re: [R-sig-Geo] RE: Using SJava?
>
>
>Roger and Benjamin,
>
>Benjamin, your advice is good and the test class does work. Roger, one
>difficulty is that we were calling a static method of the class, which
>does NOT work for some reason. However, the class can be instantiated
>and used from within R. Here's my session with my mistakes edited out:
>
>[Previously saved workspace restored]
>
>> library(SJava)
>using JAVA_HOME = C:\programs\j2sdk_nb\j2sdk1.4.2
>> .JavaInit(config=javaConfig(classPath="C:/temp/javatest/test.jar"))
>> testClass <- .JavaConstructor("TestJava")
>> .Java(testClass,"getMessage")
>[1] "Hi Roger!"
>>
>
>Benjamin, do you also find that static methods don't work in SJava?
>It's hard to understand, because calls to static methods in the Java
>runtime libraries work just fine, for example,
>
>> .Java("Math","random")
>[1] 0.07714792
>
>regards,
>-Frank
>
>>>> Roger Bivand <Roger.Bivand at nhh.no> 04/05/04 03:36PM >>>
>On Mon, 5 Apr 2004 Benjamin.STABLER at odot.state.or.us wrote:
>
>> Hopefully, I'm not too late on this one....when you initialize the
>JVM you
>> need to set the class path as follows:
>>
>>
>.JavaInit(config=javaConfig(classPath="StringDirectoryPathReference"))
>>
>> or
>>
>> .JavaInit(config=javaConfig(classPath=c("String1", "String2")))
>>
>> for example:
>>
>> .JavaInit(config=javaConfig(classPath="C:\javastuff"))
>>
>> where javastuff contains my class files.  You need to specify the jar
>file
>> name if you are trying to include class files within jars.  I have
>used it
>> with some classes that I wrote.  
>
>Yes, and Sys.putenv("CLASSPATH"="String1") can be used too, but what do
>
>you put in .Java() to get into your own jars? Are there escaping issues
>in
>the path to the jars? (backslash twice? forwardslash?) Could we put up
>
>some jars and some instructions for use on a website? Frank Hardisty
>sent
>me an example off-list that works from the command line but which I
>can't
>find from within R/SJava (Windows XP, the SJava examples that I've
>tried
>work for me).
>
>The idea would be to see if GeoTools2 can be reached from within R,
>because it could provide (another) way to import/export multiple GIS
>formats.
>
>Roger
>
>>
>> I too am excited about linking Java and R, as there is so much useful
>code
>> in the Java community.
>>
>> Benjamin Stabler
>> Transportation Planning Analysis Unit
>> Oregon Department of Transportation
>> 555 13th Street NE, Suite 2
>> Salem, OR 97301  Ph: 503-986-4104
>>
>>
>> >Message: 5
>> >Date: Fri, 2 Apr 2004 20:56:50 +0200 (CEST)
>> >From: Roger Bivand <Roger.Bivand at nhh.no>
>> >Subject: [R-sig-Geo] Using SJava?
>> >To: r-sig-geo at stat.math.ethz.ch
>> >Cc: Frank Hardisty <HardistF at gwm.sc.edu>
>> >Message-ID:
><Pine.LNX.4.44.0404022042580.28093-100000 at reclus.nhh.no>
>> >Content-Type: TEXT/PLAIN; charset=US-ASCII
>> >
>> >Is anyone on this list using SJava or any R/Java connection?
>> >Not only is
>> >the JTS Topology Suite that Tim just mentioned interesting,
>> >but so is the
>> >upcoming GeoTools2 at http://www.geotools.org/. Both are
>> >likely to be used
>> >quite a lot, and thus probably well-maintained.
>> >
>> >At the recent Association of American Geographers meeting,
>> >Frank Hardisty
>> >asked me about this, and while I was able to install SJava (from
>> >http://www.stats.ox.ac.uk/pub/RWin) on a Win XP laptop, we
>> >were not able
>> >to see how to get Java within R to see GeoTools in its
>> >classpath.  Both of
>> >these Java resources are potentially useful, and R opinions
>> >two or three
>> >years ago, that Java is slow, may need revision given increased
>machine
>> >capacity. I feel we could benefit from mobilizing Java insight
>> >(but I feel
>> >personally Java-challenged!).
>> >
>> >I believe that Duncan Temple-Lang was playing with/working on object
>
>> >discovery - this could be very relevant in terms of matching
>> >R-internal
>> >object representations with those in existing software that we
>> >could - if
>> >SJava worked - link to. I also think that we could ask him for
>> >advice if
>> >we discussed it first here. What do others think?
>> >
>> >--
>> >Roger Bivand
>> >Economic Geography Section, Department of Economics, Norwegian
>> >School of
>> >Economics and Business Administration, Breiviksveien 40, N-5045
>Bergen,
>> >Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
>> >e-mail: Roger.Bivand at nhh.no
>> >
>> >
>> >
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> R-sig-Geo at stat.math.ethz.ch
>> https://www.stat.math.ethz.ch/mailman/listinfo/r-sig-geo 
>>
>
>--
>Roger Bivand
>Economic Geography Section, Department of Economics, Norwegian School
>of
>Economics and Business Administration, Breiviksveien 40, N-5045
>Bergen,
>Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
>e-mail: Roger.Bivand at nhh.no
>
>
>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: sig.class
Type: application/octet-stream
Size: 476 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20040405/3931ed6a/attachment.class>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sig.java
Type: application/octet-stream
Size: 342 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20040405/3931ed6a/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sig.jar
Type: application/octet-stream
Size: 809 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20040405/3931ed6a/attachment-0001.obj>

Reply | Threaded
Open this post in threaded view
|

RE: Using SJava?

Roger Bivand
Administrator
Again, very promising, the simple jars can be accessed - what is the next
step?

So far we have SJava (the Windows binary downloaded from
http://www.stats.ox.ac.uk/pub/RWin) talking to itself, and to two simple
Java examples. There are two issues, the classpath one, and whether or not
to call .JavaConstructor() to create a copy on the R side of the class. Is
there a way of asking a jar to reveal the class names it contains - are
the class structures "discoverable". Could I ask "sig" for its length, for
example?

I'm keeping this discussion on the list for now, because accessing
geotools (and other Java resources) is at least worth trying, and to do
that more hands and eyes are needed.

Roger


On Mon, 5 Apr 2004 Benjamin.STABLER at odot.state.or.us wrote:

> Frank and Roger,
>
> Sorry about the path reference - I just added the example on the fly in the
> email and forgot about the R escape character.  Attached is the simply class
> that I used to test the link.  It just takes a string as an input and
> returns my email signature with the string substituted for the name.
>
> The R code to run it:
>
> library(SJava)
> .JavaInit(config=javaConfig(classPath="F:/_ben/java"))
> .Java("sig","print","Ben Stabler")
>
>
> In terms of the jar file, it seems to work for me.  Note that I moved the
> jar file to a different directory so it did not find the class file by
> itself as well.
>
> > library(SJava)
> using JAVA_HOME = C:\j2sdk1.4.2\jre
> > .JavaInit(config=javaConfig(classPath="F:/_ben/sig.jar"))
> > .Java("sig","print","Ben Stabler")
> [1] "Ben Stabler"                         "Oregon Department of
> Transportation"
> [3] "Mill Creek Office Building"          "555 13th Street NE Suite 2"
>
> [5] "Salem, OR 97301-4178"              
> >
>
> The print method of the sig class is static so I'm not having any difficulty
> using static methods and I did not need to create a constructor first.  You
> shouldn't need a constructor/object for a static method (that is the point
> of static methods).  Unfortunately my IS department blocked the zip file you
> sent.  Could you send me the code as text or maybe just copy into email?
> Thanks.  
>
> Ben
>
>
> >-----Original Message-----
> >From: Frank Hardisty [mailto:HardistF at gwm.sc.edu]
> >Sent: Monday, April 05, 2004 1:07 PM
> >To: Roger.Bivand at nhh.no
> >Cc: STABLER Benjamin
> >Subject: Re: [R-sig-Geo] RE: Using SJava?
> >
> >
> >Roger and Benjamin,
> >
> >Benjamin, your advice is good and the test class does work. Roger, one
> >difficulty is that we were calling a static method of the class, which
> >does NOT work for some reason. However, the class can be instantiated
> >and used from within R. Here's my session with my mistakes edited out:
> >
> >[Previously saved workspace restored]
> >
> >> library(SJava)
> >using JAVA_HOME = C:\programs\j2sdk_nb\j2sdk1.4.2
> >> .JavaInit(config=javaConfig(classPath="C:/temp/javatest/test.jar"))
> >> testClass <- .JavaConstructor("TestJava")
> >> .Java(testClass,"getMessage")
> >[1] "Hi Roger!"
> >>
> >
> >Benjamin, do you also find that static methods don't work in SJava?
> >It's hard to understand, because calls to static methods in the Java
> >runtime libraries work just fine, for example,
> >
> >> .Java("Math","random")
> >[1] 0.07714792
> >
> >regards,
> >-Frank
> >
> >>>> Roger Bivand <Roger.Bivand at nhh.no> 04/05/04 03:36PM >>>
> >On Mon, 5 Apr 2004 Benjamin.STABLER at odot.state.or.us wrote:
> >
> >> Hopefully, I'm not too late on this one....when you initialize the
> >JVM you
> >> need to set the class path as follows:
> >>
> >>
> >.JavaInit(config=javaConfig(classPath="StringDirectoryPathReference"))
> >>
> >> or
> >>
> >> .JavaInit(config=javaConfig(classPath=c("String1", "String2")))
> >>
> >> for example:
> >>
> >> .JavaInit(config=javaConfig(classPath="C:\javastuff"))
> >>
> >> where javastuff contains my class files.  You need to specify the jar
> >file
> >> name if you are trying to include class files within jars.  I have
> >used it
> >> with some classes that I wrote.  
> >
> >Yes, and Sys.putenv("CLASSPATH"="String1") can be used too, but what do
> >
> >you put in .Java() to get into your own jars? Are there escaping issues
> >in
> >the path to the jars? (backslash twice? forwardslash?) Could we put up
> >
> >some jars and some instructions for use on a website? Frank Hardisty
> >sent
> >me an example off-list that works from the command line but which I
> >can't
> >find from within R/SJava (Windows XP, the SJava examples that I've
> >tried
> >work for me).
> >
> >The idea would be to see if GeoTools2 can be reached from within R,
> >because it could provide (another) way to import/export multiple GIS
> >formats.
> >
> >Roger
> >
> >>
> >> I too am excited about linking Java and R, as there is so much useful
> >code
> >> in the Java community.
> >>
> >> Benjamin Stabler
> >> Transportation Planning Analysis Unit
> >> Oregon Department of Transportation
> >> 555 13th Street NE, Suite 2
> >> Salem, OR 97301  Ph: 503-986-4104
> >>
> >>
> >> >Message: 5
> >> >Date: Fri, 2 Apr 2004 20:56:50 +0200 (CEST)
> >> >From: Roger Bivand <Roger.Bivand at nhh.no>
> >> >Subject: [R-sig-Geo] Using SJava?
> >> >To: r-sig-geo at stat.math.ethz.ch
> >> >Cc: Frank Hardisty <HardistF at gwm.sc.edu>
> >> >Message-ID:
> ><Pine.LNX.4.44.0404022042580.28093-100000 at reclus.nhh.no>
> >> >Content-Type: TEXT/PLAIN; charset=US-ASCII
> >> >
> >> >Is anyone on this list using SJava or any R/Java connection?
> >> >Not only is
> >> >the JTS Topology Suite that Tim just mentioned interesting,
> >> >but so is the
> >> >upcoming GeoTools2 at http://www.geotools.org/. Both are
> >> >likely to be used
> >> >quite a lot, and thus probably well-maintained.
> >> >
> >> >At the recent Association of American Geographers meeting,
> >> >Frank Hardisty
> >> >asked me about this, and while I was able to install SJava (from
> >> >http://www.stats.ox.ac.uk/pub/RWin) on a Win XP laptop, we
> >> >were not able
> >> >to see how to get Java within R to see GeoTools in its
> >> >classpath.  Both of
> >> >these Java resources are potentially useful, and R opinions
> >> >two or three
> >> >years ago, that Java is slow, may need revision given increased
> >machine
> >> >capacity. I feel we could benefit from mobilizing Java insight
> >> >(but I feel
> >> >personally Java-challenged!).
> >> >
> >> >I believe that Duncan Temple-Lang was playing with/working on object
> >
> >> >discovery - this could be very relevant in terms of matching
> >> >R-internal
> >> >object representations with those in existing software that we
> >> >could - if
> >> >SJava worked - link to. I also think that we could ask him for
> >> >advice if
> >> >we discussed it first here. What do others think?
> >> >
> >> >--
> >> >Roger Bivand
> >> >Economic Geography Section, Department of Economics, Norwegian
> >> >School of
> >> >Economics and Business Administration, Breiviksveien 40, N-5045
> >Bergen,
> >> >Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
> >> >e-mail: Roger.Bivand at nhh.no
> >> >
> >> >
> >> >
> >>
> >> _______________________________________________
> >> R-sig-Geo mailing list
> >> R-sig-Geo at stat.math.ethz.ch
> >> https://www.stat.math.ethz.ch/mailman/listinfo/r-sig-geo 
> >>
> >
> >--
> >Roger Bivand
> >Economic Geography Section, Department of Economics, Norwegian School
> >of
> >Economics and Business Administration, Breiviksveien 40, N-5045
> >Bergen,
> >Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
> >e-mail: Roger.Bivand at nhh.no
> >
> >
> >
>
>

--
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Breiviksveien 40, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
e-mail: Roger.Bivand at nhh.no



Roger Bivand
Department of Economics
Norwegian School of Economics
Helleveien 30
N-5045 Bergen, Norway
Reply | Threaded
Open this post in threaded view
|

RE: Using SJava?

Benjamin.STABLER@odot.state.or.us
In reply to this post by Roger Bivand
Roger,

To read the contents of a JAR use the java.util.jar package.  In terms of
the first two issues - 1) you shouldn't need to create an object to call a
static method and 2) referencing classes within jars should work.  Let me
first say that I am no Java expert.  I will just share what I (think I) have
figured out over time.  In order for class references to work within jars
and within nested packages you need to reference the class correctly.  I
like to think of packages as just fancy names for folders.  So if I add
"package tools;" to the top of sig.java and then I compile it, I must
reference that folder correctly.  First I have to create a folder in the
folder that I added to the class path and copy sig.class to that folder.  To
call the class in R, I must refer to the class within the tools package.

.JavaInit(config=javaConfig(classPath="F:/_ben/java"))

> .Java("tools.sig","print","Ben Stabler")
[1] "Ben Stabler"                         "Oregon Department of
Transportation"
[3] "Mill Creek Office Building"          "555 13th Street NE Suite 2"

[5] "Salem, OR 97301-4178"            

When you put classes inside jars, the packages (folders) must be included.
So I put the sig.class file in the jar and refer to tools.sig in the method
call.  Note also that I created the jar file with the following command:

jar -cvf sig.jar tools

This added the tools folder to the jar.

> library(SJava)
using JAVA_HOME = C:\j2sdk1.4.2\jre
> .JavaInit(config=javaConfig(classPath="F:/_ben/sig.jar"))
> .Java("tools.sig","print","Ben Stabler")
[1] "Ben Stabler"                         "Oregon Department of
Transportation"
[3] "Mill Creek Office Building"          "555 13th Street NE Suite 2"

[5] "Salem, OR 97301-4178"              
>

If I add the tools folder to the jar by referring to the class via the
folder then it gets added:

jar -cvf sig.jar tools/sig.class

> library(SJava)
using JAVA_HOME = C:\j2sdk1.4.2\jre
> .JavaInit(config=javaConfig(classPath="F:/_ben/sig.jar"))
> .Java("tools.sig","print","Ben Stabler")
[1] "Ben Stabler"                         "Oregon Department of
Transportation"
[3] "Mill Creek Office Building"          "555 13th Street NE Suite 2"

[5] "Salem, OR 97301-4178"              
>

But if I just add the file (the current working directory is tools)

jar -cvf sig.jar sig.class

then I lost the folder reference and I can't get to the class within the jar

> library(SJava)
using JAVA_HOME = C:\j2sdk1.4.2\jre
> .JavaInit(config=javaConfig(classPath="F:/_ben/tools/sig.jar"))
> .Java("sig","print","Ben Stabler")
NULL
> .Java("tools.sig","print","Ben Stabler")
NULL
>

So hopefully that should help clear up some of the classpath and package
reference issues.  There are probably better ways to work with the packages
and classpath - I just don't know them.  These notes work and that is good
enough for my purposes.  

Benjamin Stabler
Transportation Planning Analysis Unit
Oregon Department of Transportation
555 13th Street NE, Suite 2
Salem, OR 97301  Ph: 503-986-4104

>-----Original Message-----
>From: Roger Bivand [mailto:Roger.Bivand at nhh.no]
>Sent: Tuesday, April 06, 2004 5:01 AM
>To: STABLER Benjamin
>Cc: r-sig-geo at stat.math.ethz.ch
>Subject: Re: [R-sig-Geo] RE: Using SJava?
>
>
>Again, very promising, the simple jars can be accessed - what
>is the next
>step?
>
>So far we have SJava (the Windows binary downloaded from
>http://www.stats.ox.ac.uk/pub/RWin) talking to itself, and to
>two simple
>Java examples. There are two issues, the classpath one, and
>whether or not
>to call .JavaConstructor() to create a copy on the R side of
>the class. Is
>there a way of asking a jar to reveal the class names it
>contains - are
>the class structures "discoverable". Could I ask "sig" for its
>length, for
>example?
>
>I'm keeping this discussion on the list for now, because accessing
>geotools (and other Java resources) is at least worth trying,
>and to do
>that more hands and eyes are needed.
>
>Roger
>
>
>On Mon, 5 Apr 2004 Benjamin.STABLER at odot.state.or.us wrote:
>
>> Frank and Roger,
>>
>> Sorry about the path reference - I just added the example on
>the fly in the
>> email and forgot about the R escape character.  Attached is
>the simply class
>> that I used to test the link.  It just takes a string as an input and
>> returns my email signature with the string substituted for the name.
>>
>> The R code to run it:
>>
>> library(SJava)
>> .JavaInit(config=javaConfig(classPath="F:/_ben/java"))
>> .Java("sig","print","Ben Stabler")
>>
>>
>> In terms of the jar file, it seems to work for me.  Note
>that I moved the
>> jar file to a different directory so it did not find the
>class file by
>> itself as well.
>>
>> > library(SJava)
>> using JAVA_HOME = C:\j2sdk1.4.2\jre
>> > .JavaInit(config=javaConfig(classPath="F:/_ben/sig.jar"))
>> > .Java("sig","print","Ben Stabler")
>> [1] "Ben Stabler"                         "Oregon Department of
>> Transportation"
>> [3] "Mill Creek Office Building"          "555 13th Street
>NE Suite 2"
>>
>> [5] "Salem, OR 97301-4178"              
>> >
>>
>> The print method of the sig class is static so I'm not
>having any difficulty
>> using static methods and I did not need to create a
>constructor first.  You
>> shouldn't need a constructor/object for a static method
>(that is the point
>> of static methods).  Unfortunately my IS department blocked
>the zip file you
>> sent.  Could you send me the code as text or maybe just copy
>into email?
>> Thanks.  
>>
>> Ben
>>
>>
>> >-----Original Message-----
>> >From: Frank Hardisty [mailto:HardistF at gwm.sc.edu]
>> >Sent: Monday, April 05, 2004 1:07 PM
>> >To: Roger.Bivand at nhh.no
>> >Cc: STABLER Benjamin
>> >Subject: Re: [R-sig-Geo] RE: Using SJava?
>> >
>> >
>> >Roger and Benjamin,
>> >
>> >Benjamin, your advice is good and the test class does work.
>Roger, one
>> >difficulty is that we were calling a static method of the
>class, which
>> >does NOT work for some reason. However, the class can be
>instantiated
>> >and used from within R. Here's my session with my mistakes
>edited out:
>> >
>> >[Previously saved workspace restored]
>> >
>> >> library(SJava)
>> >using JAVA_HOME = C:\programs\j2sdk_nb\j2sdk1.4.2
>> >>
>.JavaInit(config=javaConfig(classPath="C:/temp/javatest/test.jar"))
>> >> testClass <- .JavaConstructor("TestJava")
>> >> .Java(testClass,"getMessage")
>> >[1] "Hi Roger!"
>> >>
>> >
>> >Benjamin, do you also find that static methods don't work in SJava?
>> >It's hard to understand, because calls to static methods in the Java
>> >runtime libraries work just fine, for example,
>> >
>> >> .Java("Math","random")
>> >[1] 0.07714792
>> >
>> >regards,
>> >-Frank
>> >
>> >>>> Roger Bivand <Roger.Bivand at nhh.no> 04/05/04 03:36PM >>>
>> >On Mon, 5 Apr 2004 Benjamin.STABLER at odot.state.or.us wrote:
>> >
>> >> Hopefully, I'm not too late on this one....when you initialize the
>> >JVM you
>> >> need to set the class path as follows:
>> >>
>> >>
>>
>>.JavaInit(config=javaConfig(classPath="StringDirectoryPathReference"))
>> >>
>> >> or
>> >>
>> >> .JavaInit(config=javaConfig(classPath=c("String1", "String2")))
>> >>
>> >> for example:
>> >>
>> >> .JavaInit(config=javaConfig(classPath="C:\javastuff"))
>> >>
>> >> where javastuff contains my class files.  You need to
>specify the jar
>> >file
>> >> name if you are trying to include class files within jars.  I have
>> >used it
>> >> with some classes that I wrote.  
>> >
>> >Yes, and Sys.putenv("CLASSPATH"="String1") can be used too,
>but what do
>> >
>> >you put in .Java() to get into your own jars? Are there
>escaping issues
>> >in
>> >the path to the jars? (backslash twice? forwardslash?)
>Could we put up
>> >
>> >some jars and some instructions for use on a website? Frank Hardisty
>> >sent
>> >me an example off-list that works from the command line but which I
>> >can't
>> >find from within R/SJava (Windows XP, the SJava examples that I've
>> >tried
>> >work for me).
>> >
>> >The idea would be to see if GeoTools2 can be reached from within R,
>> >because it could provide (another) way to import/export
>multiple GIS
>> >formats.
>> >
>> >Roger
>> >
>> >>
>> >> I too am excited about linking Java and R, as there is so
>much useful
>> >code
>> >> in the Java community.
>> >>
>> >> Benjamin Stabler
>> >> Transportation Planning Analysis Unit
>> >> Oregon Department of Transportation
>> >> 555 13th Street NE, Suite 2
>> >> Salem, OR 97301  Ph: 503-986-4104
>> >>
>> >>
>> >> >Message: 5
>> >> >Date: Fri, 2 Apr 2004 20:56:50 +0200 (CEST)
>> >> >From: Roger Bivand <Roger.Bivand at nhh.no>
>> >> >Subject: [R-sig-Geo] Using SJava?
>> >> >To: r-sig-geo at stat.math.ethz.ch
>> >> >Cc: Frank Hardisty <HardistF at gwm.sc.edu>
>> >> >Message-ID:
>> ><Pine.LNX.4.44.0404022042580.28093-100000 at reclus.nhh.no>
>> >> >Content-Type: TEXT/PLAIN; charset=US-ASCII
>> >> >
>> >> >Is anyone on this list using SJava or any R/Java connection?
>> >> >Not only is
>> >> >the JTS Topology Suite that Tim just mentioned interesting,
>> >> >but so is the
>> >> >upcoming GeoTools2 at http://www.geotools.org/. Both are
>> >> >likely to be used
>> >> >quite a lot, and thus probably well-maintained.
>> >> >
>> >> >At the recent Association of American Geographers meeting,
>> >> >Frank Hardisty
>> >> >asked me about this, and while I was able to install SJava (from
>> >> >http://www.stats.ox.ac.uk/pub/RWin) on a Win XP laptop, we
>> >> >were not able
>> >> >to see how to get Java within R to see GeoTools in its
>> >> >classpath.  Both of
>> >> >these Java resources are potentially useful, and R opinions
>> >> >two or three
>> >> >years ago, that Java is slow, may need revision given increased
>> >machine
>> >> >capacity. I feel we could benefit from mobilizing Java insight
>> >> >(but I feel
>> >> >personally Java-challenged!).
>> >> >
>> >> >I believe that Duncan Temple-Lang was playing
>with/working on object
>> >
>> >> >discovery - this could be very relevant in terms of matching
>> >> >R-internal
>> >> >object representations with those in existing software that we
>> >> >could - if
>> >> >SJava worked - link to. I also think that we could ask him for
>> >> >advice if
>> >> >we discussed it first here. What do others think?
>> >> >
>> >> >--
>> >> >Roger Bivand
>> >> >Economic Geography Section, Department of Economics, Norwegian
>> >> >School of
>> >> >Economics and Business Administration, Breiviksveien 40, N-5045
>> >Bergen,
>> >> >Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
>> >> >e-mail: Roger.Bivand at nhh.no
>> >> >
>> >> >
>> >> >
>> >>
>> >> _______________________________________________
>> >> R-sig-Geo mailing list
>> >> R-sig-Geo at stat.math.ethz.ch
>> >> https://www.stat.math.ethz.ch/mailman/listinfo/r-sig-geo 
>> >>
>> >
>> >--
>> >Roger Bivand
>> >Economic Geography Section, Department of Economics,
>Norwegian School
>> >of
>> >Economics and Business Administration, Breiviksveien 40, N-5045
>> >Bergen,
>> >Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
>> >e-mail: Roger.Bivand at nhh.no
>> >
>> >
>> >
>>
>>
>
>--
>Roger Bivand
>Economic Geography Section, Department of Economics, Norwegian
>School of
>Economics and Business Administration, Breiviksveien 40, N-5045 Bergen,
>Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
>e-mail: Roger.Bivand at nhh.no
>
>