I will be making a cross-platform, graphical mathematical modeling application, for example, a user can drop a bunch of nodes on a canvas, specify some mathematical relationships between them, and run a simulation. I’m also interested in seeing in this being a web app.
I have had some programming experience in Java, MATLAB, Python, but I have never made a large application, thus I know very little about software architecture, and how multiple languages work together.
I am trying to figure out the best IDE, language(s), etc., to work in. The previous work done by my group has a lot of C/C++ libraries to draw from for back-end work, like simulation. I was told by my boss that Java is an “island” for development, meaning the Java app has difficulty using libraries from other languages and making its own libraries usable to other languages.
Is this true? Can someone shed some light on this topic?
Also, then what tools should I be using? I am ready to learn anything, but I’m trying to go for what would be the most productive route. Learning and then programming everything in C/C++ does not seem like a very productive route to me currently.
Things I’ve looked at so far include WindowBuilder/GWT Designer (this seems like a way to make both desktop and web apps), Mono/GTK+/MonoDevelop, and Delphi
Please feel free to be as verbose as you can, thanks!
I fear this post may get closed as off-topic. But it seems a little too specific to toss, IMHO.
Java interoperates with a lot of non-Java projects, products, etc. However, a major feature of it is portability, so you’ll find that folks go out of their way to stay within the JVM environment. In that sense it’s an “island”.
I suggest you think about exactly what you want to interoperate with and get specific – see whether the hooks are there or not.
For your back-end C/C++ libraries, you’ll need to implement JNI interfaces. I’d describe this as having a small but moderately steep learning curve – not a lot to learn, but it takes a little thought – especially if the amount of data passed back and forth is so large that performance is an issue.
You may find that you don’t have what you need with GWT for the graphical aspects of what you’re doing.
I’d think hard about how much you need the web aspect. If you do, consider skipping a desktop-only solution (and maybe Java/GWT) altogether, and just going to the web. This is especially viable if you don’t need to support older browsers.
I’m not going to touch the “what tools” question – it’s too broad.