Fog Creek Software
Discussion Board




No new desktop applications

Every so often I see, on this forum and elsewhere, a flame war about Java versus Windows or C#/.Net and people inevitably raise the point that Swing sucks, in that it is slow compared to a native windowing toolkit.  One would never write a word processor in Java and shrink-wrap it and try to sell it at CompUSA.  It will always seem slow compared to Word and no one would use it.  Conclusion...Java is a failure as a language/development platform.

My question is, why do so many people assume that the ability to rewrite a word processor or spreadsheet for the nth time, is the test of a true programming language?  Why do we think we must always have the option of writing the next huge desktop application?

Ask yourself- what was the last great, new desktop application?  I'm talking shrink-wrapped, sell to the masses, make me a millionaire at 30, way-cool gotta have it application?  I'm talking about an application which is of value to a non-programmer/systems administrator user.  Not a development tool or a security tool or something to keep the computer from crashing.  Forget about video games- I admit we can make new ones forever.

Unless I am forgetting something, I would say it was the web browser.

In the early days of the PC new desktop apps sprung up all the time.  We used them, then improved them, then used them some more.  I don't care what Joel says about someone needing every feature of the latest version of every microsoft office program- I haven't noticed anything of benefit to me since Word 97.

Forget about it.  From about 10 years ago and into the near future, you as programmers should not be expecting to develop new shrink-wrapped applications.  No, the future will be mobile apps, and applications custom written for specific businesses. The latter are programs which will be used only within a company, to accomplish specific business tasks.  The users will not be comparing the speed and responsiveness of the GUI (unless it is pathetic, and that's just bad programming on either platform), they will be looking at ease of use, stability and just plain task accomplishment.

Management will look at these and also cost of development and deployment, and maybe, someday, extensibility (which on either platform is a matter of good design).

I guess what I'm saying is that when we have these enjoyable little flame wars, we are often arguing about the wrong thing, i.e. the apropriateness of the platform to tasks most of us will not be performing.

thoughts?

Erik Lickerman
Tuesday, April 29, 2003

Very good post.  Hopefully that will end the "well if java is so good, why can't you write an OS with it...etc" posts.

Mike
Tuesday, April 29, 2003

General Use software (if you count general business users) are Spread Sheets (78-79) Word Processing (same time) and General use databases for single PC (early 80's), email programs and finally Browsers(early 90's).  By your defination these are the Get rich software.  And all of it is dominated by Microsoft presently. 
What is the Next Killer General purpose, my Grandma will use as well as the Marketing Manager I would be very hard pressed to say.  Thinking about it would have to something every would need and want automated and I just cannot think of any thing.  So niche programming is the way of the future.
On the Java front Some here would also say Star Office is usable ( I personally find it differnent and not very quick).

A Software Build Guy
Tuesday, April 29, 2003

For something more recent, how about winamp?
Its pretty much a must have way cool app for everyone.  Probably made someone a pretty penny too.

It seems to me though that the main thrust of innovation has been directed towards web based apps such as hotmail, google, amazon, yahoo, slashdot, eBay etc.

Interesting topic.

cheers,
Peter

Peter McKenzie
Wednesday, April 30, 2003

I use MusicMatch but I'll second that mp3 jukeboxes are a killer app. on the desktop for me.

Recent killer apps. (in the last 10 years) have been the web browser and email client.

Matthew Lock
Wednesday, April 30, 2003

While I no longer use them much, I'd add instant messaging clients to the list of recent big apps used by the general public. They're used by everyone, teenagers, family members of all ages, and business people (even the armed forces).

I never liked the UI on WinAmp or MusiMatch, I've always used WMP.

JWA
Wednesday, April 30, 2003

Napster.

Szasz Attila
Wednesday, April 30, 2003

Every year, I think Taxcut is the best killer app I've bought.  Yes, they've been around awhile, but every year you have to buy the new version.

The next killer app's that I'm looking forward to:

- A voice recognition program with near 100% accuracy using natural, fluid speech. I can talk much faster than I can type.  This only gets me into trouble when I talk faster than I can think :-)

- A lower cost digital videocam with editing software (they're still out of my price range).

Nick
Wednesday, April 30, 2003

"A voice recognition program with near 100% accuracy using natural, fluid speech. I can talk much faster than I can type.  This only gets me into trouble when I talk faster than I can think :-)"

Interesting you should say that. When Microsoft ditched OS/2 in favour of Windows NT, IBM actually had the core of their voice recognition software working. I've often thought that they really missed the boat by not integrating (what later became) ViaVoice into the heart of OS/2. This could have completely changed the desktop user interface paradigm and, I think, have engendered real competition in the desktop OS market. Microsoft had, by admitting the need for OS/2 or WinNT, effectively admitted that the then current versions of Windows were ineffective and unsustainable. IBM, on the other hand, had in OS/2 a pretty good 32-bit, multi-tasking OS.

-"A lower cost digital videocam with editing software (they're still out of my price range)."

Isn't this exactly what Apple are focusing on with iPhoto, iMovie and the consumer version of Final Cut Pro? What I've noticed in the UK is that, although Apple themselves don't discount their hardware, it's easy to find retailers who offer bundles that include DV cameras etc. I suspect, but I don't know, that these are 'authorised' in the sense that Apple co-operates with the dealers, rebating their prices to allow the dealer to bundle the camera.

David Roper
Wednesday, April 30, 2003

OS/2 was killed by a lack of applications for OS/2, which was caused because originally the SDK was ludicrously expensive compared to the equivalent for Windows. Voice recognition in the OS wouldn't have changed squat.

John Topley
Wednesday, April 30, 2003


Desktop software does not (or should not necessarily) equal mass-market shrink-wrap software!  Am I in denial?

I want to write stuff that offers wholly original and vastly more productive interfaces to relatively straightforward data.  From past projects I've got a backog of at least 3 really cool GUI control ideas that I never got to pursue because of lack of time or expertise.  (Click here, drag there, see the graphic results instaneously, performance piggy sort-of-stuff).

The products I was working on were all niche-market, and the development time to do something original could never be justified.  My idea has always been that the industry would mature, and the tools would improve, and hardware would help, and I might find someone to split the work with...

I'm much pissed off at Mr Bill for trying to make all my hard-won WinAPI & COM knowledge obsolete just when I thought I might really capitalise on it.  Yeah, dotNet is cool in some ways, but thanks not very much.

Are we all really doomed to a future of MS wizards &  by the book e-business apps... forever and ever ad infinitum?  Pls say it ain't so!

John Aitken
Wednesday, April 30, 2003

Just saw what I'd written.

Correction: the projects I was working on were all one-off custom jobs.  I thought there might be a niche (but not single client) market for a better solution.

John Aitken
Wednesday, April 30, 2003

Pinnacle's video editing stuff starts very cheap - it's not excellent, but you get what you pay for.

n
Wednesday, April 30, 2003

You're right Java is great for Web Development (But so is VB.net & C#).

But Web Interfaces are primitive compared to a client application. Some user requirments want a client app not a browser interface.

Solution: Write everything as Web Services (J2EE or .NET)and throw any front end on it you want, windows client, java client, J2EE Web Site, ASP.Net Web Site, Flash front end whatever.

Then you have the flexibility of both worlds (J2EE & .NET)

KenB
Wednesday, April 30, 2003

I'm not talking about improvements to existing programs.

Email clients have been around a long time, long before windows.  WinAmp, MP3s napster etc. are improvements in the ability to listen to music on a computer but I recall first seeing this ability on a Mac in the late 1980s.  The machines didn't have near enough RAM to play much of a song, but I recall a few verses of "Dark Side of the Moon" sounding pretty decent given the speakers.

Tax software goes way back.  Voice recognition too, and, BTW doesn't really imply a GUI.  Digital video editing also goes back at least a decade.  I think with this it's more a matter of processing power getting cheap enough for the masses to do it.

Instant messaging, i.e. AOL instant messaging, I think was after the web browser, but only a little.  This might be the most recent example- though it strikes me that this is essentially email with good server capacity. 

Oh- and StarOffice is not written in Java. I think it is a relatively old C or C++ program.  I think they are trying to make Java the VB of StarOffice.

As for the person angry that Microsoft is deprecating his Windows API knowledge, my sympathies, but from what I have heard both of win API and .Net, you are in for a vast improvement and it will be well worth learning for you.  This is one of the things I really like about Java- good object oriented libraries for just about anything.

Erik Lickerman
Wednesday, April 30, 2003

I think when people moan about Java not being good for writing word processors, etc. it's not because most of us are interested in building these types of apps. Let's be honest: the majority of us are writing cusotom apps/code for companies. And this market has nothing to do with killler-app's.

The issue is that so-called killer apps such as word processors, browsers, image-processing apps, etc. set the standard for user expectations for all apps. So even though I'm not going to write the next killer app, if my app has a GUI, my users will invariably expect it to be as responsive and intuitive as the killer apps they normally use.

So from a user perspective, if your Swing app doesn't resemble and behave like a native app, it will not pass the taste-test. Sure, the other factors (reliability, simplicity, etc.) might outweigh the fact that your mouse pointer doesn't change to a hand over links, or your attempts at a clever icon (see CityDesk for examples). But on a purely superficial level, if users judge on looks and responsiveness alone, your app may lose out to competitors C++/C# application.

There will be plenty of cool new desktop applications. Plenty!! Maybe not ones that appeal to a very broad audience, but if the tools are good, there will be nice surprises down the road.

Edoc
Wednesday, April 30, 2003

Erik:

Disruptive applications come along every zillion years or so, and they will continue to do so. I believe that just when everyone is saying "stick a fork in it, software's done," along comes something new and we rev up all over again.

For example, I bought a Tablet PC just to run Journal. That's my definition of a killer app: something so desirable you'll go out and buy hardware just to run it.

Will the next big thing be shrink-wrapped, distributed in stores? I don't know. Maybe not. My take is that the very latest shiny new toy in applications is social software like blogs. And, AFAIK, blogware can be written in a scripting language and run on a web browser (CityDesk notwithstanding).

What I'm saying is that first, the opportunity for a new, disruptive application is as alive today as it was in the 80s.

Second, I'm saying that some of the opportunities for disruptive applications are still on desktops... but some are not.

So third, I'm saying that programming environments that ease the development of extremely powerful, computationally intensive applications are still necessary.

And fourth, I'm saying that programming environments that ease the development of extremely rich, OS native applications are still necessary.

But fifth, there's certainly a need for programming environments that ease the development of threadbare applications that are just barely functional... provided they are extremely cheap to create.

Reginald Braithwaite-Lee
Wednesday, April 30, 2003

>Ask yourself- what was the last great, new desktop application?

Groove.

M
Wednesday, April 30, 2003

What's so great about Groove? What makes it new compared to lets say Lotus Notes/Domino & Sametime (Instant Messaging) that have been around for 'ages'?

Notes has been a groupware solution for quite a while and Groove may just be a 'clean-slate' implementation of such a system (I haven't messed with Groove much)

GiorgioG
Wednesday, April 30, 2003

I didn't want this to be specifically a Java issue, but in response to some other posts, and in defense of Swing:
Java apps are not "barely functional".  It is possible, I'm pretty sure, to make a cursor appearance change when you float over a hyper-link.  Also, in response to earlier criticism in other topics, I am pretty sure you can make the key bindings do just about anything you want, including emulate a current windows platform.

A simple Swing app may be clunky and non-standard (relative to Windows) but with some work you can make them pretty good.  I dare say the same applies to all other GUI toolkits (Though, not having used all of them I cannot say for sure).

Good programming is good programming and it is necessary no matter which language and platform you choose.

Erik Lickerman
Wednesday, April 30, 2003

Actually just emulating desktop software "look and feel" isn't enough. Using the actual APIs is very important, not only from a performance standpoint, but also from a future standpoint. If the UI changes, and your application doesn't, then you lose. This is more important now with the skinnable UI changes in Windows XP/2003.

There are very few purely horizontal applications. It's no wonder that people think the web browser was the last big one. That doesn't mean there have been no desktop apps being made since 1993. There's a LOT of semi-horizontal and vertical application development going on, and it's not all web based. People are really starting to push back against web UIs because they're so poor compared to rich UIs.

Brad Wilson (dotnetguy.techieswithcats.com)
Wednesday, April 30, 2003

My comments were only loosely directed at Java and Swing. I think Swing is pretty good for creating native-like UIs if the developer puts in the effort.

Scripting languages (Tk, Squeak, Rebol, etc.) are far more challenged when it comes to creating robust native-like UIs. It's a shame, because I think we might see more interesting apps if simple scripting languages could be used to build apps rivalling those built by more industrial-strength languages. If I could build near-identical clones of killer-apps in under 1MB of source it'd be a whole different world, for me at least.

Edoc
Wednesday, April 30, 2003

Well, if you think the differences between Java's threading support are troublesome, you should compare the native UI systems of a bunch of OSes! :-p

Brad Wilson (dotnetguy.techieswithcats.com)
Wednesday, April 30, 2003

It is possible to make a Java GUI app look good, just as it's possible to make a native Windows GUI app look bad. The company I work for has developed an application with a Swing GUI front end that sells for over $100,000 -- certainly not a toy application. Customer's can't tell it's Swing.

But the point isn't that Swing can work, or that a native code could be faster or look better. When developing software, a good team will decide on a language or platform based on the needs of the application and the customer -- not just what the programers used last, or the hot new language of the day. Not even what the last killer app was written in.

Jeremy
Wednesday, April 30, 2003

New desktop application: RSS news aggregator. Not a coincidence that about the half of them out there are written in C#.

easily scared person witholding his name
Wednesday, April 30, 2003

I agree with whoever said Napster.  Sure, it never made any money, but few desktop apps have made a bigger impact on the world.  Look at what it did (and it's ancestors continue to do) to the music (and now movie) industry.

Think of how many computers, CD-ROM burners, blank CD-ROMS, etc. have been sold because of what Napster made possible.

Think of the myriad uses of p2p that have come about because of what Napster showed was possible.

We are a long way from the death of killer-aps.  There will always be another.

David
Wednesday, April 30, 2003

Erik, I think the reason people discuss Java's sluggishness for desktop applications is simply as a reaction to the exagerated claims of Java zealots. At one time, this was an important part of Java's credentials as a cross-platform language.

Java has many virtues, but developing desktop apps is not one of them.

Moving on to mobile apps, I actually think you're used the wrong analogy. With mobile apps, the performance issues you're talking about are even more important.

I actually think performance will become much more important as we venture further into mobile. Again, poor old Java has lost this one too.

Must be a manager
Wednesday, April 30, 2003

Kazaa.

Now regarding Java, people use the word processor example because it's a good test example, and because someone tried to do it (and failed).

Java sucks for about anything. No matter what application, and how revolutionary it may be, doing it in Java will make it more difficult, slower, buggier. There may be some specialised areas where Java is the only option, but as long as there is an alternative, you should use that instead.

Dimitri.
Wednesday, April 30, 2003

I also create non-tricial, shrink-wrapped, client-side applications. By using a carefully constructed custom look and feel, my customers don't know it's Java.

It doesn't seem to run any slower than native applications, and is quite a bit faster than the native VB version that it replaced. Though, I've found more ways to optimize my own algorithms while porting it to Java.

The only actual Java-related speed issue I have is startup time, and it's not really that bad.

As an added bonus, the core parts of my software run unchanged when I attach a web-based interface. Two for the price of one!

Scotty
Wednesday, April 30, 2003

I don't recall claiming that performance is unimportant in mobile apps, just that there is a lot more potential top create new mobile apps than desktop apps.

As for the person who claims "java sucks for everything" but there might be some rare case in which it is the only choice, I think the opposite is true.  I have found Java projects to be easier than other and I can't really think of a situation in which Java would be the only option (contrast with C for which this might be true).

I don't understand people who make blanket statements like this.  How does one get experienced enough with a language to know that it sucks in all situations?  Isn't it possible that Java just isn't a good fit for you?  I am loathe to suggest it, but not everyone who reads this site is automatically a very good programmer.  I would hazard a guess that many of us are pretty bad at it.  I think I am good, but how would I really know?  If I thought Java was as bad as the poster claims, my first thought would be that either Bill Joy and the millions of java lovers are just idiots, or maybe I am missing something.

Possibly your criteria are different.  If you jusge a platform by it's similarity to windows than all plateforms, except windows, will be found wanting.

Erik Lickerman
Wednesday, April 30, 2003

Also, despite failures in the past, I'm not so sure it's impossible to write a good Java based word processor.  The key, I think, would be not to use most of the provided text facilities but to write your own and do more non-object oriented low level optimizing.  Of course it would still consume more memory than a native app. 

Once again I'm not sure what the point would be except to prove something to the non-Java crowd.

Erik Lickerman
Wednesday, April 30, 2003

Java can be very elegant, and it is of course possible to write nice desktop applications with it.

The problem comes when users experience sluggish startup, enormous downloads and problematic dependencies. Those are enough to kill the value of the application for all but tightly controlled internal use.

It is a great shame that Sun made several mistakes with Java.

To the person who claims his Java app loads faster than a VB app, I suspect he is not comparing with professionally written VB. Amateurs using VB often use all the assistants and find their app performing lengthy data initialisations at startup, when it's nto necessary.

I've developed all sorts of apps, including Java ones since 1995, and am confident in my comparisons.



Must be a manager
Wednesday, April 30, 2003

Erik said:

"...If I thought Java was as bad as the poster claims, my first thought would be that either Bill Joy and the millions of java lovers are just idiots, or maybe I am missing something."

Someone said some day: "Every unanimity is stupid."

But looking at it from a different POV, unanimity are great markets :-)

Cheers

Dewd
Thursday, May 01, 2003

Dewd,

Not sure how this would apply.  There is no unanimity either on the side of Java greatness, or Java suckiness.  Thus it is the opposite of unanimous, with a lively debate ongoing.

Erik Lickerman
Thursday, May 01, 2003

You could think that Java supporters think unanimously that Java is good enough to whatever kind of programming is needed.

Of course a lot of Java programmers jumped ship or at least started looking for other ways to do the same old developments.

My point was that simply saying that everybody does something or thinks something isn't  proof that they are right and the others are wrong.

But at the same time we have to look at if from more than one angle.

Cheers

Dewd
Thursday, May 01, 2003

Strangely, the best examples of desktop apps using the Java GUI are the Java IDEs. Almost all the Java IDEs are written as pure java applications (to prove a point, I suppose) and they generally perform just as well as native GUI applications.

Bill Tomlinson
Thursday, May 01, 2003

Java (not really new)
http://www.moneydance.com

MAC
http://ranchero.com/netnewswire/
http://www.karelia.com/watson/

and watch Chandler, which is not an email client but a modern implementation of an even older program, Agenda (severely cool).  And yes it does email too.

Groove is not just a clean-slate Notes. It's better than that;-) The defense dept LOVE$ it. It might even be illegal;-)

The desktop space is where most innovation is happening. Yes, desktop apps now have to interop with network resources even easier than with local resources, but that's just the price of admission these days.

The innovation in the Enterprise Black Hole is around cost reduction and performance/uptime. It's all about developer productivity and infrastructure costs. "Our accounting system is now up to 99.5% uptime from 99.4% and it costs 10k/year less to operate!"  BO-RING!!!!!!!!!!!!!!!!!!!!!

Since the web took of it's all been about the server. The cool stuff is now happening on the client. there are plenty of good servers to program against (amazon, ebay) and the boring infrastructure stuuf is someone elses problem. Web Services baby. No, not the enterprise 'web services products'...the real user-level stuff that you can use today (see MAC links above and amazon, ebay etc..) from CLIENT software.

Enterprise problems are not user problems!

The new rule: When developeing software, use OPS (Other People's Servers). >rant off

fool for python
Thursday, May 01, 2003

I remember when JBuilder made the move from native to Java. we almost abandoned it overnight because what had been a nice IDE until then went completely down the drain.
BTW: Do any of these modern Java IDE's run on top of Swing?

Just me (Sir to you)
Friday, May 02, 2003

Ditto on JBuilder. I used it for a short while, as we were porting a semi-running project from Java to C#. The guy who was using JBuilder really liked it, until he used VS.NET. There was a HUGE speed difference in the IDE itself.

I think the only thing he really misses (and I'd really like to see, too) is built in refactoring support.

Brad Wilson (dotnetguy.techieswithcats.com)
Friday, May 02, 2003

GiorgioG

>>What's so great about Groove?
...
>>(I haven't messed with Groove much)

Heh. I'd argue that the former is a product of the latter. Groove is waaaay more than instant messaging.

Being able to set up ad-hoc group collaboration across enterprises with no IT support is frankly a miracle. Being able to work while commuting and share the results with a bunch of other who are all doing the same thing is another.

TheWeasel
Friday, May 02, 2003

I'll reiterate what Szasz Attila wrote:


Napster


Erik's comment that Napster is just an "improvement in the ability to listen to music on a computer" ignores why Napster was innovative:  peer-to-peer filesharing.

There was nothing like that before Napster.  And now it's huge.

Brent P. Newhall
Friday, May 02, 2003

[BTW: Do any of these modern Java IDE's run on top of Swing? ]

Idea ( http://www.intellij.com ) does, with a custom L&F, and it's an absolutely amazing java IDE.  Responsive, usable, and an exceptional IDE.  Easily the best IDE I've seen and the best Java GUI app I've seen.

schmoe
Friday, May 02, 2003

I must admit, I never used Napster.  I had assumed it was just a web based file sharing service.  Was it really peer to peer?  Does that mean that everyone suing Napster put a file server on his PC?  Was there a special standalone client application written in the Windows API?

Also to "Dewd"- you seem to be arguing that among Java supporters there is unanimity that Java is good.  Isn't that the operational definition of a "Java supporter"?  Would this be true even if there were only two Java supporters?

Yes, the fact that a lot of people believe something doesn't make it so but you are being overly simplistic and general here.  If millions of professionals use a brand or type of tool to do their dailly work for several years, that tool must work pretty well.

Erik Lickerman
Saturday, May 03, 2003

My experience reading the comments on TheServerSide.com (J2EE forum for those that dont know it),
is that many people that use(d) Java on the server dont like Java on the desktop at all.

That with the advent of dotnet , brought confusion to those that really like(d) the idea of Java everywhere (me included).

You see, even among those that use Java everyday, there isnt all that support that one could imagine.

I can add that every once in a while I see someone saying that they have to use Java, even though they would prefer to use something else (like python, perl, ruby, etc.).

In the end of the day Java isnt so cross-platform as some would like, due to all the differences among JVMs and platforms. I dare you to use the latest SWING application on your mobile phone.

I still like Java, though.

Cheers

Dewd
Saturday, May 03, 2003

Mobile phones use Java2 micro edition.  I don't think that supports Swing.  I dare say that if you wrote a desktop application and wanted a version of it for a mobile phone, you would find that many of the objects from the desktop app would work on the phone.

I have experience with non-graphical portability and Java and it is very good.  I have only tried my Swing app on Windows because, really, that is what any near-term customer will be using it on.

It is really nice though, to be able to develop an application on a single Windows box and slowly transform it into a distributed app by moving some of the objects to a Linux machine

Erik Lickerman
Saturday, May 03, 2003

Next killer app: a generic X-Internet application platform that combines the best attributes of a web-application (trivial client deployment, access anywhere) with the best attributes of a desktop-application (good look-and-feel, uniform programming model, a rich set of controls -- tables, spreadsheets, etc).

Applications are run on the server. Client machines have a small player application. Basically, just the next generation of the web-server/browser combination, providing a better interface rather than a bunch of clever hacks layered ontop of HTML.

There's a little company called Droplets (http://www.droplets.com) that has something working right now (hi Lou!). There are a bunch of other companies pushing the same thing, although many were casualties of the .com crash.

And Macromedia is/was pushing along these lines too. They're probably the ones with the magic combinanation of product, capital, marketing and sales to succeed (sorry Lou!).

I'm also betting this type of thing will not take off until the economy improves. And it will be used for business applications.

Gustavo W.
Monday, May 05, 2003

*  Recent Topics

*  Fog Creek Home