Computers have been my hobby since I was 12. Now I'm a freelance Java developer. Like many other developers I am working on various private projects. Some are open source components (Butterfly Components - DI container, web ui, persistence api, mock test api etc.). Some are the tutorials at tutorials.jenkov.com. Yet others are web projects. I hold a bachelor degree in computer science and a master degree in IT focused on P2P networks. Jakob has posted 35 posts at DZone. You can read more from them at their website. View Full User Profile

Better, Faster, Lighter Components... But Where are the Applications?

07.31.2008
| 6782 views |
  • submit to reddit

Sometimes it seems to me as if most developers (open source developers at least) are concerned with component development. Like development is driven by questions and statements like:

 - How can we speed up development by 5%? 10% 100% ?

 - Component oriented web frameworks are much greater than Model 2 frameworks

 - AJAX is better than blabla...

 

I too have developed a few components and frameworks, and they do make my life easier when developing applications. But sometimes I can't help but wonder:

Is it really worth the time? How about just settling for what works, and go with that, and get an application done instead?

When was the last time you heard about a really cool open source application? Compared to how many times you hear about framework this, framework that?

Personally I have wanted to develop an app for simple project management since 2001. I have started the project about 3-4 times at least, everytime starting over with a "better technology". Sometimes I am wondering how far I could have gotten if I had just stuck with Struts as it started with, in 2002. Instead, here in 2008 I still only have fragments of an application, but a lot of components laying around. But what good are they, unless I use them in an app?

What is your opinion? Am I totally wrong? Am I visiting the wrong websites? (if yes, please give me links). Sometimes it just seems to me as if all the community cares about is "technology" itself, and not what we can build with it.

For instance, what was Facebook built with? PHP? What about LinkedIn? MySpace? YouTube? Hotmail? GMail?

Published at DZone with permission of its author, Jakob Jenkov.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Kevin Daly replied on Thu, 2008/07/31 - 2:29pm

Totally agree with you, I've played with Tapestry, Wicket, Echo, JMaki, JavaFX, IceFaces and many others as "Application" frameworks, and while they are all good, I've come to the conclusion that for me and my team, we're going to develop a bunch of Jersey (JAX-RS) webservices, and then build a Dojo app (http://www.dojotoolkit.org/) on top of it.

No web frameworks, just simple technology, we'll have to do a title more hand wiring, but we'll gain some overall architecture simplicity and control.

As well,I think a lot of these frameworks cater to the "afraid of JavaScript" camp, and though I hate JavaScript, I'm resigned to the fact that I'll have to master it just like I've had to master so many other technologies. I personally believe I will be much more productive as a developer if I simply stick to the basics, learn the underlying technologies, and work with them.

PS. By the way GMail was built with GWT and Yahoo's mail app was build with their YIU framework, it's very nice.

Jakob Jenkov replied on Thu, 2008/07/31 - 2:39pm

what's even worse... we spend tons of time discussing all these technologies rather than building apps, and discussing the apps.

Where is the killer desktop Java app? Java's been out for 10+ years. Desktop Java apps have been possible for a looong time. Can anyone mention any other Java Desktop apps than Azureus? QNext perhaps? That's about what I can remember.

Jason Young replied on Thu, 2008/07/31 - 3:08pm

I don't think Gmail is built on GWT. Maybe you are thinking of Google Reader?

Armando Mazon replied on Thu, 2008/07/31 - 3:24pm in response to: Jakob Jenkov

 Take a look at this thread for a very good response to your question about Java on the desktop.

http://www.artima.com/forums/flat.jsp?forum=106&thread=234900

 

carlemueller replied on Thu, 2008/07/31 - 4:29pm

Oh sure, the component frameworks are awesome...once you understand each one's gigantic UI API.

 And that's the problem. While UI frameworks are always essentially the same, but each is different enough that you have to basically do the same level of learning as picking up an entirely new UI library.

 And all component frameworks have this horrid duplication of state between the representation of the page and the page that is sent off to the browser, often making AJAX and simple extensions much more difficult

 Simpler struts-type frameworks generally are all the same: templating system (Velocity, JSP-EL, OGNL, Webmacro), controller with mapping xml, and boom, you're done. Granted these are usually half-frameworks that involve some basic architecture/framework creation on top of it,but in reality that always happens.

  Long term, new programmers can maintain struts-like frameworks much more easily than component-based ones, and can accomodate the crazy requirements idiot users ask for better than "components" which might as well be codename for "painted in a corner". 

Jakob Jenkov replied on Thu, 2008/07/31 - 4:41pm

Well, I don't quite share you dislike for component oriented web frameworks. I switched from a model 2 (struts-style) to a component oriented (wicket style) framework just recently, and I must say that there are a lot of things that are just easier to do with the component oriented framework. It's a lot more flexible.

For instance, a component in the middle of a page or template can decide to send a response.sendRedirect(...) to the browser. You can't really do that with a JSP tag that is placed in the middle of a page or template, since the page is already half done rendering the HTTP headers have already been sent. This is not so with component oriented frameworks. All components are first requested to "doRequest()". When that succeeds they are requested to "doResponse()".

 Anyways, that exactly *NOT* the intention of this post, to discuss technology, but rather the app's we build with it. Show me apps!

 

 

Yanic Inghelbrecht replied on Thu, 2008/07/31 - 6:04pm

> Show me apps

Ok, but only because you insist :o)

Here's a 30 sec demo of Trace Modeler, a UML sequence diagram editor (100% Java + Swing), or download it here if you want to try it out yourself.

I've had similar experiences during the development and often paused to consider a different approach (Regular swing app or switch to Eclipse RCP/plugin? Keep using Swing or switch to SWT? Expand my own graphics lib or start using GEF or Piccolo? ...). All very tempting and interesting from a technical standpoint, but looking back I'm glad I kept to my first choices and pushed forward.

John Denver replied on Thu, 2008/07/31 - 9:51pm

I love Java and I use right now Tapestry5 with Spring and Hibernate very simple and easy to use, To create a component is very easy it just a POJO with Ajax support and all the bells and whistles.

 Anyway also I'm interested in Comet style apps, I using for it Python and Django with Dojo or Flex3/PyAMF. But also Im starting to learn Erlang and using ErlyComet with Dojo or Flex 3. The stack is like this:

Mnesia->Yaws->ErlyComet->Dojo

Mnesia is a distributed database, Yaws the webserver and ErlyComet push the Comet functionality, Everything is created with Erlang and everything in just one language, you dont need configurations or xml, Just need to learn Erlang the language.

Erlang with the Distributed, Concurrency and fault tolerant mechanism it have on a Grid really Rocks!. Try Erlang on a EC2 Cloud and you will see what I'm talking about.

 

Regards.

PS.For Desktop apps I'm still using plain Java and Swing, I'm not interested on JavaFX or the continued marketing of SUN it does not work anymore.

Artur Karazniewicz replied on Fri, 2008/08/01 - 2:08am

HTML is not composed based language (it's not supposed to ba appliaction hosting platform also, but this is different story). As simple as this. Thus failure of all so called "component" frameworks, IMHO. All those frameworks tries to hide HTML/HTTP from the developer, but are doomed to fail - because at the end of the day it's really, really painful. Doesn't matter if it's JSP, ASP.NET/Whatever. At the end of the day You end up with HTML. And clients demanding what they exactly want, not what "component" provides. Component are good at doing non-demanding work. In reallife - You have to obey corporate style guidelines, detailed look, feel and behavior, pixel-accurate design. All this is supposed to be done by Web Designer, not developer. And Web Desgners doesn't need "magical components". It's my experience.. 

See why- so called action frameworks (MVC Model2/3) are so popular recently - take a lookat Rails or Grails. Compare their momentum with JSF o ASP.NET. They are magnitude better than "components" framework.

Jakob Jenkov replied on Fri, 2008/08/01 - 2:29am

:-)

Interestingly, several of the posts in this thread seems to confirm my impression. That we'd rather discuss technology than build apps. I start out asking: "where are the apps?", then get several answers discussing various technologies. Yes also 2 or 3 posts about applications, but that's not much.

Ritesh Chitlangi replied on Fri, 2008/08/01 - 3:46am

There are good open source _apps_ too. Maybe not Java ones.

Trac (http://trac.edgewall.org/) is good software for software project management. As is dot project, I think.

While I fully agree with the sentiment that there is an overabundance of similar tools (web frameworks being the most obvious) in comparisonto applications, a decent choice of competent open source apps for common types of software is also available.

Emeric Vernat replied on Fri, 2008/08/01 - 4:26am

I disagree.

There are open source applications in java : i can think of NetBeans / Eclipse or Tomcat / Glassfish (they are pretty good ones) and others like blueMarine, azureus, jEdit, rssOwl.

Yes it would be good to have more of these, it's up to us to do applications (I just have made one) and to stop adding comments on this blog.

Konstantin Chikarev replied on Fri, 2008/08/01 - 4:42am in response to: Jakob Jenkov

[quote=jj83777]

:-)

Interestingly, several of the posts in this thread seems to confirm my impression. That we'd rather discuss technology than build apps. I start out asking: "where are the apps?", then get several answers discussing various technologies. Yes also 2 or 3 posts about applications, but that's not much.

[/quote]

Here you are

Plus my young swing app: epictetus

Why do you try to prove that swing is useless?

Thomas Baldwin replied on Fri, 2008/08/01 - 4:44am

I think one of the reason that people love creating frameworks for Java is because Java is a simple language and it has the best IDE for refactoring. Imagine how hard to extract code for a new framework from other language code.

I have been working with Swing and Spring everyday for a few years. I love Swing MVC but I never feel Swing can ever create a pure native L&F desktop application. It always has subtle differences. The approach of SWT seems to make more sense although its API design is far behind Swing.

If JRE plugin is as small as Flash player,  I bet it will win more attention. If JavaFX is a brand new tiny UI component library rather than a new way to create swing application, it will be more likely to succeed. Am I wrong?

Jakob Jenkov replied on Fri, 2008/08/01 - 5:07am

Konstantin, I never said anything about Swing being useless. Re-read my posts if you like. What I was saying was merely: Where are the cool desktop apps? Azureus is one for sure.

Let me be more specific: END USER APPLICATIONS !!

IntelliJ IDEA, NetBeans, Eclipse, Tomcat, Jetty, Glassfish, DBVisualizer etc. are all just tools to help us build applications. Real, end user applications. Applications like:

RssOwl 
Azureus
JEdit   - to some extend
QNext 

I could mention at least 20-30 different component libraries off the top of my head, but only these 4 end user apps... why is it not the other way around? 20-30 cool Java apps, and 3-4 component techonologies?

Daniel Jue replied on Fri, 2008/08/01 - 5:35am

Where are the apps?  My clients own the apps I build, and they are not open to the public eye.  I use Tapestry 5 as the main framework, along with it's IoC container.   T5 is still beta as I write this, but I am using it in a production app because it's so stable.

IIRC, Zillow was written in Tapestry (version 4 I believe) That's a neat site I used to help buy my house.

http://wiki.apache.org/tapestry/PoweredByTapestry

 There's a similar page for Wicket, but I'll let their users post it.

 If you have the time to invest in yourself, as a programmer, then by all means explore these newer frameworks.  At the very least you'll gain a new perspective.  There's no long term benefit to burying your head in the sand.

Yanic Inghelbrecht replied on Fri, 2008/08/01 - 6:07am

To the person that posted the link to Swing Sightings : the last entry is dated August 18th, 2005.

So much for Sun promoting java on the desktop...

I actually tried getting mine listed there, but (if I remember correctly) the entry form was broken and my emails went unanswered. Mind you, that was in the filthy rich clients buzz period when their more prominent engineers had their books to plug and bloggers all proclaimed a revival of Sun's support for java on the desktop.

Judging from their front page, the most recent article at the Swing connection is dated Jan. 2006.

 

John Denver replied on Fri, 2008/08/01 - 6:18am in response to: Ritesh Chitlangi

Trac is created with Python is not a dot project, actually the more succesfully projects are created with the LAMP stack PHP, Python and Perl and now also Ruby on Rails and now also Erlang check the messaging service of Facebook is based on Erlang.

 I think Java and .Net are more successfully in the Enterprise corporation custom projects and not so on the startups world.

All the startups start with a lightweight technology to get first or the more soon possible the project out of the door so they usally use LAMP/Rails stack, just few I have seen with Java(Ebay) or .Net(MySpaces).

Maybe for Java is great what the Grails team is doing with Groovy and Grails bringing to Java the easy of use and fast development of Rails or LAMP style.

 Regards.

John Denver replied on Fri, 2008/08/01 - 6:27am in response to: Daniel Jue

And for the record as Daniel said try Tapestry5 or Wicket or Stripes are so lightweight and very RAD for Java development that can aproach the level of productivity of LAMP or Rails.

Me I use as I posted before Tapestry5 with Spring and Hibernate and has been a great experience also Check Django, Erlang and Grails very interesting technologies.

Jakob Jenkov replied on Fri, 2008/08/01 - 6:28am

Maybe exactly because Java is mostly used in enterprise environments, there are fewer end user Java apps. Development in large corporations take sooo long time, that perhaps we Java developers tend to forget how fast we can develop when only being 1-2 developers on a small project with no enterprise tie-ins. And forgetting that, we may think development takes too long to even bother starting a little web/desktop end user project.

I know I have been guilty of thinking like this from time to time. I get surprised by how much I can get done when I have no-one else to "slow me down", and no old code base to take into consideration.

Kasper Graversen replied on Fri, 2008/08/01 - 8:05am in response to: Jakob Jenkov

Hi Jacob,

 The reason why so many people like to develop and discuss frameworks is because frameworks is about being CREATIVE and exercise your ABSTRACTION skills going.... things you hardly get to exercise at work, where you write your screen number 1000 with the same boring validation,minimum 1 char, maximum 30 char.. check the input field, that its a number. Then on the server do the same validation steps. Then call dao-method SaveFoo(). Yaawn. Many applications are, even at their core, infinitely boring...

 

:)

 

Kasper, http://www.firstclassthoughts.co.uk

Armando Mazon replied on Fri, 2008/08/01 - 8:28am in response to: Jakob Jenkov

<quote>

I could mention at least 20-30 different component libraries off the top of my head, but only these 4 end user apps... why is it not the other way around? 20-30 cool Java apps, and 3-4 component technologies?

</quote>

But see. You missed the point I was trying to make by posting the link to the Artima post. Java is very alive in the desktop. It is just that a lot of the apps that are being developed are internal and very specialized. You also mentioned that you could only see 2 or 3 apps listed in that link... read the entries again :-) there are quite a few examples from people developing very interesting swing apps.

 I think it is easy to get the impression that more frameworks are being developed than not apps, in part because you are more likely to see articles and posts on the Internet about such frameworks than having "Joe Smuck" post an article or a web page with information about an internal application.

Frank Silbermann replied on Fri, 2008/08/01 - 8:37am

I'm not sure what you're asking about.

Are you asking for shrinkwrapped software written in Java?  Apparently, vendors of such products would rather get the precise look-and-feel they desire than to enlarger their market by 10% by using a language whos products are easily ported to the Mac and Linux users.

Are you asking where are all the client Java applications handcrafted for individual businesses?  Why, they're at the individual businesses; few outside the business know or care about them.

Are you asking where are all the Java-technology open-source end-user applications?  I don't know that there are so many open-source end-user applications written in _any_ language.  Developers create open-source projects for unserviced needs that are shared among developers (i.e., tools), not for needs shared by the general population (developers being a very small subset of that).  If an individual developer creates something that is useful to people in general, he tries to sell it, doesn't he?

Ritesh Chitlangi replied on Fri, 2008/08/01 - 10:13am in response to: Frank Silbermann

Are you asking where are all the Java-technology open-source end-user applications?  I don't know that there are so many open-source end-user applications written in _any_ language.  Developers create open-source projects for unserviced needs that are shared among developers (i.e., tools), not for needs shared by the general population (developers being a very small subset of that).  If an individual developer creates something that is useful to people in general, he tries to sell it, doesn't he?

Maybe you should check out some end user open source applications. As far as common applications go (office suites, instant messengers, mail clients, text editors, address books, etc.) there's a boatload of them.

Few people in the open source world use Java because up until recently the licence for Java's runtime made it unsuitable for distribution with open source software.

There are other loads of easy-to-use managed languages, and they're firmly entrenched into the open source world. Python, for example. Loads of open source software written in it (music players, linux package managers, configuration front ends). And yes, despite the myth that nothing except Java scales, Python apps scale as well. For example, youtube is written in Python. So do PHP apps (see Yahoo, Wikipedia, Facebook).

Java is just too corporate for most developers. It's that Byzantine, verbose language that managers decide upon and is controlled by companies, steeped in meaningless buzzwords and acronyms and for which you need to read 700 page long books to use "properly". It's just not cool.

 

EDIT: And from what I've heard GMail is written using GWT.

Torbjörn Gannholm replied on Fri, 2008/08/01 - 11:55am

I think the apps are what you sell or build in a corporate environment for money, while the frameworks are what you open source to get help in maintaining them.

Tarun Ramakrish... replied on Sun, 2008/08/03 - 3:51pm in response to: Jakob Jenkov

[quote=jj83777]

Where is the killer desktop Java app? Java's been out for 10+ years. Desktop Java apps have been possible for a looong time. Can anyone mention any other Java Desktop apps than Azureus? QNext perhaps? That's about what I can remember.

[/quote]

This is coming a bit late...

 

There are lots of desktop Java apps out there. Some of them are real "killer" apps and no-one knew they were Java apps. Look at Maple from Maplesoft for example. An amazing  math environment that has everything you can dream of and is becoming a bit of a rage. Saw Maple 11 (not the latest) at a colleague's place and it took my breath away. It costs helluva lot though. UI in good old Java Swing.

Romen Law replied on Tue, 2008/08/05 - 1:49am

Yes, I see the same phenomenon - the communities (such as this one) talk about frameworks and technologies more than applications. And I think it is natural. Naturally, as a developer, one tends to value technical knowledge more than domain knowledge. Also, developers tend to job-hop from industry to industry so the perception of 'killer app' changes. By the way, the killer app I am talking about here is something you really believe in and will develop in your own time, not as your day job (unless you are extremely lucky).

Even when you stay in the same industry for years, this perception changes also as you change your focus on your business/domain knowledge. e.g. When I worked for telco OSS (operational support systems) vendor, my killer app was a graphical network diagrammer and editor, which I developed using Eclipse GEF. When I worked for a billing vendor, my killer app was my own flexible and open billing and rating system. Now, I am more interested in mobile games and applications. So the search for truth continues.

David Lee replied on Tue, 2008/08/05 - 2:30pm

I think the authors point is proven out by javalobby itself.  It runs on drupal.  Spring's website runs or was running on php as well.  Nuff said.  At this point, I avoid most frameworks that don't provide an absolute productivity boost.  Most  have some nice features but don't ultimately make you more productive, so what's the point ?  Servlets, JSPs and JSTL and JDBC and/or iBatis is all I need for webdevelopment. 

Developers in IT shops often forget that productivity is more important than the perfect solution. 

Tonny Kohar replied on Tue, 2008/08/12 - 2:19am in response to: Jakob Jenkov

[quote]Konstantin, I never said anything about Swing being useless. Re-read my posts if you like. What I was saying was merely: Where are the cool desktop apps? Azureus is one for sure.

Let me be more specific: END USER APPLICATIONS !!

[/quote]

Here are the Java END USER APPLICATIONS that we wrote

Are the above Java End User (Desktop) Applications cool enough :)

 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.