Rich client platforms & IDE agnosticism

Hi,

I’m about to start properly developing GUI and general application infrastructure for an existing JOGL program of moderate size which currently runs a bit more like a game. I’m thinking about building it on some kind of rich client platform type system, since they seem to facilitate the style of GUI I’m after and probably provide sensible structures for managing other aspects of the program. I’m leaning towards Netbeans at the moment as I’ve read a few recommendations here, done a reasonable amount of work with Swing before and getting JOGL to work with SWT would entail some extra work.

Also I’d prefer to remain IDE agnostic. At the moment, the project only exists within an Eclipse structure. I don’t really know much about build systems… reading about them tends to put me to sleep :). From what I’ve read, Maven should be a good build / configuration system to use, and it should be possible to do the main development of a Netbeans platform application from a different IDE. Are there any particular gotchas to this approach that I should be aware of?

Cheers,
Peter

Normally it doesn’t really matter what IDE you use for your project. Getting just about any project to run in either Netbeans or Eclipse is trivial. However, I don’t think you would want to do Eclipse RCP development in anything other than Eclipse since they have specialized tools for plugins, etc. Eclipse RCP is a bit of a monster API to dive into. I assume Netbeans is similar. If Netbeans is easier to use JOGL and you prefer Swing, go for it.

IDE and build systems are separate. You can use Eclipse (and I assume) Netbeans to generate a JAR, but that isn’t really a build system. I think both IDEs can also export an Ant script so you can build without the IDE, integrate your build with scripts or whatever. Ant is a godawful abomination, but pretty standard, really.

Maven sucks. You have been warned!

IMHO keep thing simple. organizing something well does not means to make it complexe.

what’s a java ( and also true for most languages ) project ? a source directory, a build directory, some ressource files & some requiered files/libraries that’s all, maven will just make thing more complexe.

my opinion about IDE is the same, keep thing simple, I ve used JCreator for severals years now and always being very happy with it but any IDE/editor should/must to the JOB ( as a side note : all my java coworker have now all switch to it few months after I get into my new company and would never come back to netbean wich is damnly slow to compile (and even slow on executing :o … ) and produce tens of unneededs/obscure files and tends to freeze/crash some times.)

so you say you dont really know about build structure ? there is nothing to know more than what you already know clicking one button have to produce a destination working directory (without extra file that are not needed) from a source directory, that’s all , and this destination directory or parts of it will be sent later for validation and than for production, nothing more.

also keep in mind that’s may be better if anybody can still work on your project or make few modifications without having to use the same tools as you, and for that keeping the project clear is the key.

so here is my final advice : until you plan to make cross language compiling, I dont think you need any specific build tools. Using any specific IDE features may make your project linked to this IDE forever.

nowadays, lot of tools tends to make things appears complexe when they are not…

EDIT: about ant ? hum… I dont think that your project will become a day more complexe to compile than something like “javac … -cp jogl.jar … @sourcesfiles” so what’s the need ?

Thanks for the feedback. I take the warning about Maven seriously… my appetite for fiddling with these things is limited. FWIW it’s moderately likely I’ll want to link the work with some other C# and/or C++ stuff; I don’t imagine that will particularly change anything we’re discussing here.

Setting the project up in another IDE is pretty trivial as you both say; I’m comfortable enough with the normal Java type stuff… it just seems like these rather IDE oriented RCP type things start to necessitate other configuration systems and such that I’m not so sure about. Maybe I don’t really stand to gain much by using such a technology after all… obviously I’m trying to make things simple, it’s just that frequently in computing I find simpler in one dimension is more complex in another (hence others’ opinions being useful). Or maybe I’m just a sucker for shiny looking complex things. I guess I’ll do some more playing with the Netbeans platform stuff and see how I get on… maybe just make a more basic Swing GUI for my ap.

I’m kind of in the same situation. I’ve got an game editor type of application that uses swing for it’s ui. There is split panes, tab panes, etc. I’ve want to use the Netbeans platform to get those tabs that you can drag around and place at different locations. However I do not want to use all the other stuff that comes with the platform, like their module system. I’m afraid that using just the ui stuff will be difficult.

Is there anyone that has used the Netbeans platform and has any experiences to share?

[quote]Is there anyone that has used the Netbeans platform and has any experiences to share?
[/quote]
I’m developping Gephi, based on top of Netbeans Platform and using JOGL. I’m familiar with Netbeans Platform for more than one year now and I can say it is a very comfortable place to develop a Swing & JOGL application. In two days I was able to start with the platform, thanks to efficient documentation, in one week I had integrated JOGL and in one month I had a cuple of modules that were using Netbeans API.

Thank you. The Netbeans OpenGL pack, Gephi and some of the comments in the Gephi thread were factors in my considering that I may well want to use this platform.

I see that http://platform.netbeans.org/articles/diff-nb-eclipse.html explicitly mentions

[quote]A feature specific to the NetBeans Platform is the fact that its build system is based on Ant. Ant is a standard, non-vendor specific build tool. As a result, you are not locked into NetBeans IDE but can, instead, use the command line to build your NetBeans Platform applications. In fact, you can build NetBeans Platform applications out of the box with Ant, and also fairly easily with Maven.
[/quote]
It makes me feel a lot happier to know that this is apparently an intentional part of the design, rather than something that can be achieved with a little effort. Having an Ant based build probably won’t do the project any harm. Having dipped my toes into both Netbeans and Eclipse (as well as a few other GUI libraries over the years), Netbeans seems like it should be a good way forward.

If you are already sure that you want to use a RCP its usually easy to decide between Eclipse and NetBeans:
if you like swing use NetBeans Platform
if you don’t or prefer SWT/JFace use eclipse RCP :wink:

there are at least two non trivial NetBeans Platform based projects I am aware of which reuse parts of the NetBeans OpenGL Pack.
Campbell Prediction System and Bluemarine.