The currently available option on javagaming are JOGL and similar opengl direct bindings. Java3d which is discontinued by Sun and is now open source.
The problems i have with these solutions are many:
--> JOGL is a very low direct binding to opengl that suffers of some problems that even C does not have. For instance they use ints to emulate enum arguments on the opengl C side. The problem is that they loose type checking. On the other side Java enums are full objects and cannot be used without performance problem.
To make things better Java programmers usually build an extra layer on top of JOGL. This makes for another layer that i think it is unnecessary. The problem is that binding directly to opengl is a very low-level binding that forces Java programmers to use C similar coding style and prevents using Java language features.
--> Java3d as been discontinued by Sun. It suffered from blockiness, verbosity and it was very inflexible to opengl expansion. The OO model was a mix of well designed classes with feature creapling classes that didn't help and were not pratical at all.
This is what im planning:
--> A two layer solution based on java and an Irrlicht core engine. The irrlicht core functinality would provide, irrlicht device (2d/3d), basic event management (mouse/keyboard), timer device, basic os operations related to irrlicht device window (like clipboard), drop/grab Irrlicht objects from Java, using a smaller core set of features from the scene and video namespaces only.
--> What would be done by Java: io, file format coding/decoding, video playing, audio playing, scene graph management, gui high-level event management (logical events, event filtering/registering, etc).
--> The binding with an Irrlicht core is an high-level one. Not a low-level binding that limits Java programmers from using the language features.
--> The java top layer is similar to the Irrlicht namespaces gui, core (including a fast math package that does not exist in java), io (based on java nio). Avoiding bad OO programming with excess of verbosity and feature creapling is essential.
--> Very well documented, using UML whenever neccessary, contract programming, Java refactoring and code analises tools, using a good OO design (similar to Irrlicht) not too verbose and not too simplistic.
--> For mesh data, audio and graphics i was thinking on doing something suporting the best free and open source tools like Blender, Gimp, Audigy, etc Im not a rich person so i prefer working with solid opensource tools or at least have good support for it.
The reasons why i choosed Irrlicht:
--> The simplicity and pratical OO aproach of the engine.
--> Being well-documented which shows that person who designed Irrlicht was more than an hacker toying with code but he knew what he was doing.
--> The funcionality of the engine.
--> Being opensource and available to linux.
--> Being usable with commonly accessible or opensource tools data formats that are accessible for people without money to buy 3dstudio or Photoshop.
--> An opensource engine that can be used to make professional games.
--> An opensource engine that can be used to make games that can compete with HL2 and Doom3 and show the opensource side of the force
