Mathematica has features Java programmers can only dream about. But Java is OO, and if you are used to that paradigm ( like me ) switching is hard. Switching may be no problem in the case of simple stored calculation type of programs, it is hard for any large data processing programs or games. Thankfully there are solutions which add OOP features to Mathematica like Objectica. There is however a free option which is called An OO System for Mathematica, Version 3. I have tried it and it works. See how it compares to Java, Ruby and others on this comparison matrix for OOP languages.
What does it do? It adds the possibility to ( externally ) define ( and store ) classes. Classess basically have constructors, properties and methods. In Mathematica through the OO package objects can be created from a class. There is only one featur that is available in Java and not in Mathematica OO which is Access Control. Through Access Control certain properties are made public, default or private. Maybe this will be added in some new version, I don't know.
13-2016 Open letter to Open Source for You (OSFY)
6 months ago