Forum OpenACS Q&A: Response to Open ACS kernel + ACS modules

Posted by Bryan Quinn on

You've got good reasoning; pick the right tool for the problem you're solving. But if you do get a change to check out ACS 4.6, please let us know what you like and don't like about it.

We started using Java because we needed language features that a robust OO language like Java has and wanted to leverage existing Java components. For instance, inheritance and interfaces are very useful for building maintainable and upgradeable components. We found that several existing Java components, like the log4j system, the Xerces XML parser and the Xalan XSLT processor worked quite well and it was pragmatic for us to use Java to leverage code like this.

Maintaining a single language platform has some pragmatic advantages over doing the integration. Its easier to maintain the system since its in one language. Overall, Java is well suited for web development and I've found that its quite easy to start using it. I programmed parts of ACS 3.4 and ACS 4.0 that OpenACS is building on. After this experience, and working with two versions of ACS Java, I believe that doing it in Java leads to better tested and maintainable code. One of the big drawbacks with the Tcl framework is that there isn't a good unit testing system. The JUnit framework solves this problem nicely. There are other frameworks built on top of it for more sophisticated testing, such as HttpUnit and Cactus.

You can integrate Java with Tcl, but I personally haven't tried to do it. I believe Ben Adida has written about that. Scripting languages are designed to be integrated, so I'm sure its possible, and the common language runtime of .NET will make this commonplace. That being said, the J2EE framework gives you a lot of flexibility and power, a large repository of code to use, and all it runs on a platform-independent language with multiple support opportunities and vendor choices.

Those are some of the reasons for going with Java and not trying to do a Tcl/Java blend. In any case, both systems are free and open source, so the user gets a great and open choice.


p.s. Don, since you said it was ok to talk about this here, I will, but let me know if you'd rather I not start posts like this here.