I still believe that Java is ideal for the back end portion of a web site or Internet application. When I say “back end”, I am referring to the data manipulation including the use of business rules and data persistence.

Its the use of Java on the front end, the web gui, that I’m not so sure I’m convinced of at this point. When JSP first came out, it seemed so simple, but then we began to get so concerned over separating roles and markup, content, and logic. Now creating a web site is just too much work. Lately, I’ve been using Word Press to do my blogs, and using Open Reports to create a reporting web site. Both of these are great examples of the simplicity in creating web sites. Open Reports creates forms to fill out with a simple web gui interface. Both of them require no “coding” in order to add further pages, change the look and feel, etc. They aren’t as custom as would be needed for most of the web applications I’ve worked on, but, I think we should be able to get to a point where the web front end is as simple as using Word Press, Open Reports, or any of the other CMS type web tools.

While at IBM, I co-designed a central billing application. To this day, that is my favorite architecture that I’ve ever created. I’ll explain it in another post in more detail, and you can read a bit about it on my projects page. The hub received xml and returned xml. Sort of a web service, though we didn’t have time to make it an official J2EE web service. It received XML messages, determined the type of message, and based upon that, followed a defined set of tasks on that XML. I am hoping that this code will soon be released as an open source project so I can continue to work on developing it into a backend framework solution.

To feed this back end app, we needed to create a web gui that would create XML. The front end really had to do nothing, except create XML, feed it to the hub, receive a result in XML, and render it to the user. The more I think about that, the more I think that’s how all front ends/web guis should be. If Java were used for a backend, and received XML and returned XML, as a web service, then the web gui portion could be written in any language: PHP or Java. The gui would simply be responsible for creating valid xml messages to be sent to the back end, and then rendering xml responses. This would give you the separation we crave, but would also allow for PHP to be used on a front end instead of Java. It would greatly simply the web gui. All the gui would need to do, is provide security, navigation, display forms, and render xml. When a user entered data into a form, the gui would create XML from it, and submit it to the backend.

Today we are, as Java developers very used to implementing n-tier architectures. But let’s take it one step further, and make it so separate that any web scripting language could be used on the front end, including CMS apps that already exist that are based on XML content. Those apps could be used to provide the entire front end, and be altered to receive the XML content from a web service instead of the database.