Bringing the J2EE Cathedral to the Bazaarby Satya Komatineni
While Sun is quite diligently planning, coordinating, and building infrastructure for building cathedrals around J2EE, Microsoft's .NET is poised to steal the marketplace and own the bazaar, as they did with VB and the component market in the client-server wars. We have some parallels to go by. While CORBA focused on rearing thoroughbreds, COM stole the market with a mule called VB.
The only way out of this quandary is to wake up and invite the J2EE cathedral to the bazaar. (Both words are used in a positive sense in this article.) I believe there is a lot at stake; not only for Sun and Java, but also for regular programmers like you and me. The potential of enabling programmers of all kinds to this work in this wonderful world of the Web is a prize worth contending for.
Skill Sets of the Bazaar
Web programming flourished even before Java entered the market space. CGI, Perl, PHP, and ColdFusion have dominated this space. Programmers are eager to build systems that are driven by relational databases. There are millions of programmers who understand the Web space very well and are looking for scalable and robust architectures. Here is a list of the kinds of APIs, tools, and facilities used in the Web bazaar on a daily basis, and a general description of the kind of developers who use these tools.
- Development tools
- Developers have been very productive with such tools as PHP, ColdFusion,
and Crystal Reports, and know how to build Web sites that can do credit card processing and produce reports.
- Some might know how to install simple databases and
the basic administration of databases.
- Data Modelling
- Some might know about creating tables and their cross
- Stored Procedures
- A sophisticated user may also know about stored procedures, in databases that offer them.
- Developer knows how to work with basic databases, such as Access,
MySQL etc. Knows how to do basic SQL-related stuff.
- Knows such concepts as Flash/SVG animation, etc.
- Knows that the HTTP protocol is stateless and knows how to
maintain sessions using such concepts as cookies and URL rewriting.
- Knows what Web security means. Knows authentication,
authorization, etc. Knows about SSL and certificates.
- Knows how to do form processing, HTTP request headers, HTTP
response headers, and such. Knows how to program CGI with Perl and other
Unix programming tools.
- Web Servers
- Knows about Web servers, such as Apache. Knows how to set up
Web sites and knows such concepts as virtual hosts, URLs, and URIs.
- Some sophisticated users might even know XSLT to transform
XML documents to HTML.
processing. Knows how to work with frames.
- Knows style sheets to standardize the look and feel
of HTML tools. Accustomed to using a productivity tool such as DreamWeaver or FrontPage
to work with HTML pages.
- Understands HTML syntax and knows the significance of each
of the HTML tags.
J2EE is an enterprise-level framework that can do a stellar job of providing solutions to the IT market space. The increasing levels of complexity of J2EE with each release meant that only IT departments with large budgets could make the most of J2EE. J2EE, without the right tools, is not approachable by a common programmer. Let us take a look at the series of things that a programmer has to know to effectively utilize J2EE:
- Java programming language
- Programmer needs to be familiar
with server-side Java programming, which luckily is not the most difficult task. Complex things like threading are taken care of.
- An implementation of the CGI protocol. With about four or five
central classes and a handful of methods, this can be taught in a week.
- A Java API allowing you to call databases. It appears simple, but to enginner
systems, it takes a ton of experience to do well.
- Java Server Pages. Paralleling ASP, this API is intended to
- Introduced to further simplify JSP and improve MVC (model-view-controller). It
hasn't really achieved the levels of programmer productivity expected so
- An application server to exercise what you
have learned so far.
- Enterprise Java Beans (EJB)
- The idea is that server-side components can relieve the programmer from threading and transactional issues.
- Entity BeansM
- An EJB standard where relational data can be represented
as objects. Expected to relieve the programmer from the nuances of SQL and
relational databases. It is in full debate whether the intended benefits
of this approach have been fully realized.
- Message beans
- The transactional paradigm is extended to asynchronous
messages. A great help to an IT-level programmer, but it does not carry the
same significance for day-to-day Web programming needs. (In
other words, not used in a bazaar setting.)
- Other APIs
- There are other API stacks that a Java programmer could take
As a Java programming community, we are at best disingenuous when we propose: "Come on in, it is a piece of cake. Let us do Servlets, JDBC, JSP, and J2EE." To design good J2EE systems (with the existing J2EE infrastructure) you not only need good designers but good Java programmers. And good Java programmers don't come cheap. Companies end up spending lots of money to produce systems. It is not difficult to prove a 5x increase in cost from failure to realize this.
The question at hand is, how can you make J2EE accessible to your everyday programmer who is not steeped in Java experience? And "everyday programmer" is not a homogenous group. It includes database programmers, Unix system administrators, fresh college grads (both computer science majors and otherwise), and legacy programmers (transitioning from mainframe disciplines to Web-centric programming).
How can we take the J2EE infrastructure and make it palatable to this varied set of communities? The key is to distill the minimum they need know so that it can be taught in a matter of weeks as opposed to months and years. We should start out with teaching the bazaar skills first. The only complex skill set among the bazaar skills is database programming. If you already know database programming, you are already way ahead of the game. A database programmer knows the following important skills:
- How to model your problem domain in terms of tables and relationships.
- How to enquire, update, and in general manipulate the data.
- How to write business logic using stored procedures.
Similarly, Unix system admins have an inherent advantage as well. They usually know how to set up Web servers and are fully aware of URLs and CGI. The only skills they need to learn are a set of database skills.
For the other two categories, you have to teach both the Web programming skills and the database skills. This could be easily done in a couple of weeks. The next question is, how can we take J2EE and allow these programmers to be effective immediately?
Pages: 1, 2