Forum OpenACS Q&A: Response to Questions on AD's restructuring.
In my experience, Java is a match for both business and engineering interests. There are some good APIs defined by Sun in the J2SE and J2EE specifications that have done much to consolidate enterprise development knowledge. The J2EE standards provide a solid means of education and adoption by developers and companies. The standards process is open and there are open-source reference implementations.
Java is not a perfect programming language, becuase no programming language is perfect. I could list some things that I like better about LISP, ML, and Ruby. I program in these languages for fun. Maybe some day they'll become more commerically viable. Part of what makes Java useful is its relatively simple (compared to C++) OOP framework. Java's real value is in building reusable software. When combined with regression testing frameworks like JUnit and a modeling language like UML, one can design, implement, and maintain enterprise class software in an cost-effective manner. Its also fun.
It did take some time for Java to be adopted by the OSS world. However, its adoption is now wide. The Apache group, Enhydra, numerous SourceForge projects, IBM's alphaworks, CoolServlets.com. There is so much open-source Java code out there its almost overwhelming.
A couple of technical advantages that I find personally compelling:
- People often complain about the annoying "compile step," of Java because it is slow or interrupts the write/run/debug cycle. Scripting langauges, such as Perl, Tcl, and Ruby don't require this. However, Java compilers are fast and produce code that runs faster than any of these languages. If you prototype code in a JSP, you don't even need to invoke the compiler manually.
- Maybe people can write neater code than me, but I'm a sloppy coder. When writing Tcl, I can't believe how many times I had to re-evaluate a page or a library file because of yet another syntax error or misspelling. The compiler has saved me lots of time as it can usually tell me what my problem is. Java compilers tend to be much smarter than C/C++ compilers.
- Java gives you the ability to use rich datastructures and object oriented programming. This allows you to write code that is more modular, functional, and maintainable.
- Between J2SE and J2EE, the platform has a lot of usable APIs. This increases the speed of development.
Java isn't perfect, but I do find it a better match for building enterprise software than Tcl. I hope that we'll do a good enough job on ACS 5 to convince people to make the upgrade. In any case, language choice doesn't really matter. Enterprise software must solve an enterprise's business problems. In many cases, Java is a great tool to use, but its not a perfect fit for everyone. However, Java is a workable tool, and its more workable than the alternatives for what we're trying to accomplish with the ACS: provide a flexible, enterprise-class, and open-source e-business platform.