Jason LaDere reports on the progress of his Blender Java port.
Jason LaDere writes:
Blender Java is back and the source code is now available. A Google code project has been created and we are looking for interested developers.
This is a Java/JOGL/Jython wip port of Blender version 2.57 and soon to be updated to 2.63.
Let us know what you think.
I asked Jason some further questions about his project:
Why are you coding this in Java? What are the advantages of Java?
I am coding this in Java because I am very familiar with Java (since it was first released) and I really like to push the boundaries of Java and see what it can do.
Some advantages of Java:
- It's the most popular and accessible managed language (one of the reasons it was chosen for Android apps.)
- Cross platform with no changes needed in the code itself (just different VMs and native libraries.)
- It has a very large developer base and is simpler to understand for most people with no pointers and auto garbage collection etc. (one reason universities have switched to it for teaching.)
How does Blender Java performance compare to the original Blender?
Java by itself is comparable in speed to c/c++ nowadays for most projects. Java combined with JOGL (openGL) is also very fast. One of my other open source projects is Jario64: a Nintendo64 emulator written in Java/JOGL, and it is comparable in speed to n64 emulators written in c. Jython however, I believe is still slower than python. Blender Java is still at the initial porting stages and has had no optimizations done yet. Java has great performance profilers available and I am sure that Blender Java will be comparable in speed to Blender at least for medium sized projects (It is yet to be seen how it will do with very large production files and if Jython is going to be a problem.)
Is the Java port manual work, or do you use automated tools?
The 400-600 core Blender DNA objects are auto generated from a Blender file and the RNA objects are auto generated just like they are in the original Blender. I also have some Java libraries that help when porting certain things like c style string manipulation but everything else is just manually ported.
Did you port all existing functionality?
No. This is still in the initial stages and so far only the framework (UI, event system, DNA, RNA, Jython, etc,) mesh/object editing, and simple rendering have been ported and are still being worked on. After the base functionality of creating 3d models and rendering them is mostly stable then the rest will be added in like rigging, animating, painting/sculpting, compositing/nodes, etc. The last things to be added would probably be stuff like video editing, game engine, and audio.
What are your future plans? How will you keep up with changes in Blender?
I don't really have any specific future plans. If all goes well then maybe I could use it in my own studio's pipeline with our own in-house modifications. Or maybe it will end up as just an educational tool. I think it would probably be too hard to keep up with all the changes in Blender and I am not sure that is the best destiny for this project anyway. Maybe, after the core functionality is there, the user community will take it in it's own direction with it's own unique functionality.
I have a passion for 3d modeling, animating, and rendering. I also have a passion for Java and other similar managed languages like C#, so this project is a natural choice for me. I like to push the boundaries and learn in the process. I like to try to create things that people didn't think could be created and make them work. I hope others who have similar passions will enjoy this project as much as I do. The fun is in creating the impossible and the possibilities are yet to be discovered.