First, some bad news.
There are a lot of people who think that building web applications with Java just plain sucks!
Not only is this opinion really unfortunate, we think it is also a bit misplaced.
On this page, we'll dig into what we believe is the root cause of this, and how we think Tagger Cat can help change that opinion.
As is often the case, the best technology does not always win in the market; and the web application marketplace has spoken.
Here is some analysis of the web technology market share by file extension. It is based upon a search of many millions of sites using dynamic file name extensions.
Admittedly, this is not a super scientific approach to detecting the underlying technology used, since some sites hide their real file extensions, and many use multiple technologies. But this analysis is close enough for our discussion here.
Not surprisingly, PHP has the bulk of the market share; with MS ASP in a close second place.
Combining the .do and .jsp bits, Java has less than 10%. And, just out of interest .jsf is effectively non-existent at 0.03%. If you are a Java developer, never, ever show this chart to any of your executives, as you'll likely find yourself living in a MS hell for the rest of your career :(.
These numbers also closely resemble what we intrinsically see in our local marketplace. Unfortunately, it is actually a bit worse when we consider what we call the corporate market space; the non-ISVs. Specifically, for internal corporate application development, we think that our local marketplace is about 90% MS based.
For us Java guys, that sounds pretty bleak. But, it is the current reality. So, we need to face that fact, and try to understand what's the real underlying reason for it.
Firstly, we think the underlying reason is simple; actually perfectly simple. Historically speaking, yes, building web applications with Java is just far too complex. Furthermore, building database backed applications with Java could be viewed as being ridiculously complex.
On one hand we can claim that Java web application development is just more sophisticated, and not necessarily more complicated. And we do believe that is actually true. But, we think that depends upon your application's scope, and where you are in the development cycle. Then, on the other hand, it does not matter, as we are reminded of this quote:
Albert Einstein.
Here is a really smart guy who understood that complex things need to be made simple if they are to to be consumable by most people, and if you can't explain it, you probably don't really understand it.
All right; PHP is really quite simple; so it wins with the mass market. Microsoft has always completely understood this concept too; and ASP.NET is pretty simple, so they win too. Basically, what has happened is that web developers have taken the path of least resistance. Project owners, and the corporate guys have taken the path with the least risk, and with the most proven results. Most of them actually don't care (at least initially) that they may have chosen the less sophisticated solution.
But, there is also a paradox here. The paradox is that most database backed web applications by their very nature are complex things, and need complex supporting solutions. The Java ecosystem is the best in the business for complex database apps. Additionally, Java has tons of fantastic other open source frameworks, and tooling that should melt any developer's heart.
Eclipse - the beyond totally awesome IDE and more - free
Apache - totally awesome frameworks, and Tomcat - free
AspectJ - a totally cool, mind altering way to think, and code - free
Hibernate - an awesome Persistence framework and tooling - free
Ehcache - a totally awesome multi-purpose cache - free
JSP and JSTL - totally awesome, high-performance web page authoring and templating - free
jFreeChart - a totally awesome general purpose charting framework - free
Lucene - awesome full-text search engine, and much more. What web app does not need this? - free
Quartz - a super slick scheduling framework - free
Super Fast JVMs - the JVM is blazingly fast
MySQL - not specifically Java, but it has very good support for Java and MySQL is also free
Tons of others - Rome, Jetty, Restlets, Hudson, and on and on
There are hundreds of free open source frameworks and solutions in the Java space. All combined, the above listing represents literally thousands of man-years of effort. So, where's the rub; what's going on? Why not Java?
While a bunch of awesome frameworks can definitely make developers vastly more productive, there is still something missing for Java based web development. Oddly enough, all of the above has not made developing Java web and database applications easy enough nor productive enough for a very wide audience.
If you don't have hands-on Java web app development experience, you might have some confusion as to how this is possible. Well, don't get us completely wrong.
That 10% in the chart above still represents millions of deployed Java applications. For examples, there are many big retailers using Java for their primary customer facing web sites. There are also many very big success stories in the business application space such as Sales Force, LinkedIn and Google using Java. So, of course, it is entirely doable.
It's just that a lot of folks feel there is too much initial pain and that the productivity levels are too low with Java. They need some help to get over the big initial hurdles and accelerate to the really productive part of the development curve. We also know teams on that high side of the productivity curve with Java web apps, and they totally love it. So, we think that it is mostly the initial hurdles that need to be smoothed out, and letting developers focus on and delivering real business results sooner.
Of course, when you get down to the specifics, you'll get different answers from different people. Never-the-less, here are our top picks that we think most people can agree on.
Naturally, these are also some of the top features provided by Tagger Cat.
You need to be able to build a basic, initial database application in minutes, with a login
page, and native user security settings, etc. If you can build a data model, you should be able to easily build an initial working version of the app. from that model. Just to repeat
it, literally, in minutes.
And we are not talking some cheesy horrible code generated stuff. We are talking production quality, as good as hand-crafted code. The Eclipse Web-Tools Platform is great, but we need
to go further with metadata driven web page generation.
Web Page Development must be visual. Typically, JSP, and JSF page development is done none-visually, in a text editor. That just simply does not scale. Hand-crafting hundreds and hundreds of pages in a large business application using a Text editor is a complete non-starter. Yes, there is always a need for a good HTML text editor, but the bulk of the page work needs to be visual.
Web application frameworks need to be highly integrated with the persistence framework. Regardless, of how great Hibernate is, it is also a big complex framework to master. It can take a team months of effort to get it right. The web frameworks need to provide the pre-integrated stack, and to streamline that experience.
The database is King. For most business applications the No-SQL initiative is does not apply. That initiative is targeted at solving massive scalability, and possibly a bit of a backlash to perceived complexity. We are the YES, of course, SQL! guys. We think we just need to make it easier.
Web application frameworks need to be highly productive for developing database backed apps.
This includes support for common database constructs such as code tables, many-to-many, and multi-level master-detail pages, sub classed entities etc. The frameworks must also have intrinsic support, and management, for property and entity permissions. Putting a table or an individual data field on a page, and round-tripping it to the database, needs to be absolutely trivial; and ideally needing zero additional code.
The application must be driven by metadata, both at design time and at runtime. All relational databases have a system catalog because they are essential. We think most business apps need one too, and that they are just as fundamental there.
As much as possible, or wanted, the application development should be automated with code generation, both at design time, and runtime. This includes code generation for the Persistence layers, as well as big hunks of JSP content.
Once again, this needs to be production quality code. We strongly feel that Code-Generation is a very "good-thing".
Nobody wants to work in a clunky, or low productivity environment. A Java web framework must simply be fast, slick, and super productive. In a nutshell, the frameworks need to have a lot of respect for real ease-of-use and productivity.
The process for deploying high performance production Java web applications needs to be simplified and streamlined.

Tagger Cat let's you get serious about productivity.
It enables your team to be as efficient and business centric as possible.
Using the best tools for the job is super important not only so that the applications can get built quickly but they must also be a pleasure to use and easily maintained in the long run.
We'd love for there to be a lot of people who think that building web applications with
Java just plain rocks!
We hope Tagger Cat proves to be some more of the good news for folks building
business applications with Java.
We would love to talk to you about how Tagger Cat can be applied to your projects, or answer any questions that you might have about it.
Email: |
Hours: 8:30 - 4:30 MST |
|---|---|
Phone: 1-403-220-0126 |