It's not a secret anymore!
The moose likes Java in General and the fly likes JNI - static variables vs. instance variables Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "JNI - static variables vs. instance variables" Watch "JNI - static variables vs. instance variables" New topic

JNI - static variables vs. instance variables

Frank Hale
Ranch Hand

Joined: Mar 25, 2000
Posts: 230
Okay I am having a hell of a time trying to figure out why my native method can change static variables and not instance variables in a java class.
Basically I have a native method which returns a new class which holds a long value. Its how purpose in life is to hold one long variable.
The class is like this:

Now I have a method inside another class which returns a Window object with its handle;

I wanna do something like below, but it only works if I use a static variable in my Window class.

When CreateWindow is called it returns a new Window object with its handle. The problem is if I make the handle static then the handle gets passed from C to java. If I leave off the static because I would rather not have it static then the handle doesn't get passed to java from the C function.
Any help would be greatly appreciated.
Should I be so worried about using a static versus an instance variable? Does it make that much of a difference if I leave it as static?
Amit Zzz Kulkarni
Ranch Hand

Joined: Jul 05, 2000
Posts: 30
It is definitely worse to access it as a static, why not make an object and access it as an instance ? I recall that I had faced the same problem and I made an object.
Frank Hale
Ranch Hand

Joined: Mar 25, 2000
Posts: 230
Yes I finally figured out how to access instance variables from C. I just stuff my C pointer into a Java int and then pass it back to C from Java in subsequent calls and cast it to its type. It works just like I expect it to.
I'm well on my way to a Xlib interface for Java. WooHoo!!!
If you've ever seen the Aewm window manager then I am converting it to Java using my interface, it should be pretty slick. And best of all the memory foot print has been relatively small.
I agree. Here's the link:
subject: JNI - static variables vs. instance variables
jQuery in Action, 3rd edition