I am starting a research project and need to nail down a programming language and 3D graphics API where I will be creating an environment in the field of molecular cell biology where I will be simulating a large range of experiments in silico. This will be an ongoing project which will keep expanding and growing in size. The experiments will be done in discrete time and will encompass a complex physics engine. Pretty graphics are not of importance nor is is audio. I run Ubuntu and this is the environment I will be developing in.

The pairs I have investigated thus far are:

java : flexible,scalable,lib/dependency organization (maven),oo

  • jogl: full control of graphics
  • jMonkeyEngine: full game library, includes jBullet, maybe a bit overkill for what I need.

c++ : High speed, low level, oo

  • opengl:full control of graphics
  • maya:built in physics engine, infrastructure already in place, proprietary, not free

matlab : Heavily math based, but difficult to maintain and scale

  • simulink : proprietary, not free

I am least familiar with Maya but it was suggested to me by a friend as a good approach. When would Maya be a good solution and would it be a good selection for this type of case? Just as thinking jMonkey would be overkill this is kinda my feeling on Maya.

Are there any other pairings I should investigate?

Also has anyone had any experience modifying an existing physics library and the flexibility or complexity of doing so (ie Bullet, JBullet, jinngine)? Unsure at this point if I should start from scratch or try and modify/expand an existing one.

Any thoughts, feedback, input or any other suggestions would be greatly appreciated.


  • You should always clarify what OS(s) the program must run on. Feb 15, 2012 at 19:04
  • Have you considered Mathematica? In an academic setting a site license may be available.
    – user1249
    Feb 15, 2012 at 21:14
  • Maya (assuming you mean the program from Autodesk) is primarily a 3D modelling and animating package; it has a physics engine in it for dynamics, but I'm not aware if that piece can be used seperately. I like maya, but I'd look for a dedicated simulation engine if graphics wasn't the primary concern; as it is, you'd end up with way too many features that you wouldn't even need. Feb 15, 2012 at 22:26
  • @ThorbjørnRavnAndersen Thank you for the suggestion. I looked into it and although it has powerful analytical characteristics the built in laungauge itself would hold much of the same issues as coding in Matlab. Although they have an interface to call Java in there language and also have a Java API I think isn't elegant or as efficient as just using OpenGL. For example in the Java API you just call a .waitForAnswer() which blocks until a response is received from Mathematica.
    – wi1
    Feb 16, 2012 at 20:20
  • @X-Zero, Yea Autodesk Maya. I agree with you. There would probably be way to much extra that I would not need. However I wanted to investigate every possibility and I have friends trying to convince me that it is great for simulating. Just wanted to make sure I wasn't leaving something out that Maya does that may make everything much easier.
    – wi1
    Feb 16, 2012 at 20:23

2 Answers 2


First, what you are doing sounds as though it matches up VERY closely with Chandrajit Bajaj's ([email protected]) research work in computational biology and molecular visualization. Bounce an email off of him and see what suggestions he has. (I suspect he will say C++ and OpenGL.) (Full Disclosure: During a period of refresher work while between jobs, I took the undergrad computer graphics class from him. I learned quite a bit and had a great time.)

Also, Jim Browne ([email protected]) did his very early work in computational physics, and might have some valuable insights. I think Jim is retired now, and he may not answer the email. (Full Disclosure: I took a graduate operating systems class from him, and learned a LOT. He is, PERSONALLY, the reason UT Austin first built their Computer Science department. It was establish the department or lose him to Queen's University of Belfast.)

Second, whenever some describes something as "expensive", you should ALWAYS ask "Compared to what?" MATLAB is dirt-cheap compared to what it would cost you to develop and debug all their code from scratch.

Third, if interactivity is not a big deal, it is not that hard to rig a C++ program to write a file that can then be fed to MATLAB for intense number-crunching. During the aforementioned refresher work, I repeated the undergrad introductory numerical methods class. We crunched numbers in C++ and plotted results with MATLAB. (I had a LOT of fun in that class!) That was with Todd Arbogast ([email protected], I think). He is SHARP, and he might have some suggestions as well.

  • Oh man, thanks for the connections! I will definitely reached out to them.Mind if I reference that I obtained there email from you?Yes I agree that C++/OpenGL is probably the best option due to speed,control, flexibility, scalability but since I am a stronger Java programmer I was leaning towards Java/JOGL which I believe will be similar maybe just not as fast but I am not about to get into the batter of what language is better. Valid point about the cost of Matlab, I will update my post. However, user interaction will eventually need to be integrated so it probably isnt best for my app.
    – wi1
    Feb 16, 2012 at 20:31
  • Absolutely you can use my name! They're both great people, who genuinely enjoy passing knowledge along. Feb 20, 2012 at 17:37

I am not a regular practitioner on this, but has been involved in development that begins with research (in Image/Video processing and related areas) and goes on towards deployment.

I would suggest don't rush into pro/cons analysis. There are two fundamental questions that will set your priorities straight.

1. How much likely (and you are willing) to throw away code?
If there is a sizable research involved, you will have tough time dealing with lower level language problems just to throw away every Monday morning. However, if there is already is a PoC (proof of concept) or prototypical in fornt, than your path is rather straight forward; you should avoid duplicate work.

2. What other elements you depend on?
You want be developing everything straight forward from scratch. Are there specific tool kits, APIs, frameworks you are going to use as dependency? If so, your choices are limited right here in

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.