简体   繁体   中英

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,

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.

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

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM