simao
simao

Reputation: 15509

Calling a Java Program from a Cocoa Application

I can't find a decent Cocoa Charting Library so I would like to use JFreechart.

Is there any way to call a Java program from a Cocoa Application? I was thinking in writing a java application that returns an image of the chart and I would display it inside my Cocoa app.

Thank you,

Upvotes: 4

Views: 1844

Answers (3)

Todd Ditchendorf
Todd Ditchendorf

Reputation: 11337

Apple has a very good (but somewhat old) sample code project of how to create an app that uses JNI in Xcode:

http://developer.apple.com/java/jniuniversal.html

Be sure to check out the sample code associated with that:

http://developer.apple.com/samplecode/MyFirstJNIProject/MyFirstJNIProject.html

Also this Tech Q&A:

http://developer.apple.com/mac/library/qa/qa2005/qa1295.html

I used that example to successfully create an app which uses JNI to launch and communicate with a single JVM instance at runtime (rather than spawning lots of NSTasks as Pablo mentioned in #2 below). Basically, i took the approach of Pablo's 1st suggestion below with this app:

http://ditchnet.org/xslpalette

Upvotes: 5

Barry Wark
Barry Wark

Reputation: 107754

You may want to look at the Core Plot framework, a Cocoa-native plotting framework for Mac and iPhone. It's relatively new--not as mature as JFreeChart--but it may do what you need. It would certainly save you the pain of JNI or inter-process hackery.

Upvotes: 6

Pablo Santa Cruz
Pablo Santa Cruz

Reputation: 181270

As far as I know you have two options:

  1. Use Java Native Interfaces (JNI) and call your Java classes from C (Cocoa).
  2. Launch a separate java process within your COCOA application to create graphics for you. You can use NSTask for that.

In my opinion, even though first option is tougher to implement, it's more elegant and probably faster. But second option will definitely take less time to implement.

Hope it helps.

Upvotes: 4

Related Questions