Re: [netcdf-java] Low level C-like API for NetCDF-Java



Arlindo da Silva wrote:
On Mon, Dec 29, 2008 at 8:09 PM, John Caron <caron@xxxxxxxxxxxxxxxx <mailto:caron@xxxxxxxxxxxxxxxx>> wrote:


So if i understand, one compiles C apps into Java.

Although NestedVM can produce Java sources, it does not perform too well. What I've been using and works quite well is to compile C code right into Java byte code so it can run under the JVM. (In reality this is a 2 step process: first one compiles code into MIPS assembly code and from there into into Java byte code.
    The limiting problem are system calls and other libraries that your
    app uses.


You've got it.
    These are possibly hard to code in a platform-neutral way.


However, many of these can be mapped into Java classes. For example there is an elegant implementation of fork() and BSD sockets (almost) maps into Java sockets. BTW, I've been able to build curl and libcurl after tinkering with the syscals.

    The goal is simply to have a 100% Java version of your already coded
    C app, mostly for portability (?)


Basically, yes. I'd say mostly for easy deployment, web start comes to mind.


          As a stop-gap measure, I was considering wrapping your NetCDF-Java
        classes to provide an implementation of the  few low-level nc-dap
        calls that are used by grads. (Nested VM allows for you to call Java
        native methods from your "C" code.)  Since other folks might have
        already done this work, I was trying not to duplicate any effort. As
        you indicate, there is good correspondence between the Java and C
        APIs, and although tedious this seems quite doable.

         At some point I'd interested in benchmarking my NestedVM build of
        NetCDF-3 against our native implementation. I've been very surprised
        by the performance of NestedVM.


    yes, that would be quite interesting. Is the Java code readable?


Quite honestly, I never tried the .c to .java route. Apparently there are better tools out there for source code translation.

Yes, I see, it compiles to bytecode. So mature libraries are best.

BTW, does it do only C, or C++ ?


    I suppose you wouldnt have the same OO features as if you did the
    design yourself?


Precisely. NestedVM are meant for those of us that are not really Java programmers but would like to easily build their application for the JVM without having to do any Java coding. If you would like to test drive my netcdf build get this

netcdf-vm.jar <http://opengrads.org/devel/java/netcdf-vm.jar>

and then try ncdump/curl

java -cp netcdf-vm.jar ncdump -h
java -cp netcdf-vm.jar curl -h

ill give it a try when i get the chance. it would be useful for 
debugging/comparing the Java/C libraries for sure! I have a jni version 
(mostly) done that I am using to compare/debug. It would be interesting to 
compare performance/issues among these various flavors.



    very cool, thanks for the heads up!


  You are welcome and keep up the good work.

  Happy New Year!

     Arlindo




--
Arlindo da Silva
dasilva@xxxxxxxxxxxx <mailto:dasilva@xxxxxxxxxxxx>


  • 2008 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdf-java archives: