What is Happening vs. What is Interesting

Devoxx 2011 was yet another confirmation that all development everywhere is either on the web or on mobile phones. Whether you looked at the conference schedule or attended sessions or talked to speakers at any point at all, it was very clear that no development whatsoever is done anymore on the desktop.

In fact, that's something Tim Bray himself told me to my face at the speakers dinner. No new developments of any kind are happening on the desktop. Everyone who is currently on the desktop is working overtime to move all of their applications to the web. They're probably also creating a small subset of their application on an Android tablet, with an even smaller subset on their Android phone.

Then you scratch that monolithic surface and find some interesting results. Without naming any names, I asked one of these prominent "ah, forget about the desktop" people at the Devoxx speakers dinner (and I have a witness): "Yes, the desktop is dead, but what about air traffic control, stock trading, oil analysis, risk management applications? In fact, what about any back office application that needs to be usable across all operating systems? Here there is no concern whatsoever with 100% accessibility which is, after all, the only thing that the web has over the desktop, (except when there's a network failure, of course, or when you find yourself in the 3/4 of the world where there's bandwidth problems)? There are 1000's of hidden applications out there that have processing requirements, security requirements, and the requirement that they'll be available even when the network is down or even completely unavailable. Isn't that a valid use case and aren't there 1000's of applications that fall into this so-called niche category? Are you not, in fact, confusing consumer applications, which are increasingly web-based and mobile-based, with high-end corporate applications, which typically need to do massive processing, of one kind or another, for which the web and mobile worlds are completely unsuited?"

And you will not believe what the reply to the above question was. (Again, I have a witness to this discussion.)

But here it is: "Yes. But those applications are not interesting. I do not want to spend any of my time or work in any way on those applications. They are boring."

I'm sad to say that the leaders of the software development community, including those in the Java world, either share the above opinion or are led by it. Because they find something that is not new to be boring, they move on to what is interesting and start talking like the supposedly-boring developments don't even exist. (Kind of like a rapper pretending classical music doesn't exist.) Time and time again I find myself giving Java desktop development courses (at companies, i.e., not hobbyists, or students, but companies, i.e., the places where dollars are earned), where developers say to me: "The course you're giving about creating cross-platform, loosely coupled, and highly cohesive applications is really useful to us. Why do we never find information about this mission-critical corporate enterprise topic at conferences? Why can we never attend a session at a conference where the story about pluggable cross-platform Java is told? Why do we get the impression that we are uncool because we're not on the web and because we're not on a mobile phone, while the reason for that is because we're creating $1000,000 simulation software which has nothing to gain from being on the web or on the mobile phone?"

And then I say: "Because nobody knows you exist. Because you're not submitting abstracts to conferences about your very interesting use cases. And because conferences tend to focus on what is new, which tends to be web related (especially HTML 5) or mobile related (especially Android). Because you're not taking the responsibility on yourself to tell the real stories about the real applications being developed all the time and every day. Because you yourself think your work is boring, while in fact it is fascinating. Because desktop developers are working from 9 to 5 on the desktop, in secure environments, such as banks and defense, where you can't spend time, nor have the interest in, blogging your latest tip or trick, as opposed to web developers, who tend to spend a lot of time on the web anyway and are therefore much more inclined to create buzz about the kind of work they're doing."

So, next time you look at a conference program and wonder why there's no stories about large desktop development projects in the program, here's the short answer: "No one is going to put those items on the program until you start submitting those kinds of sessions. And until you start blogging. Until you start creating the buzz that the web developers have been creating around their work for the past 10 years or so. And, yes, indeed, programmers get the conference they deserve."

And what about Tim Bray? Ask yourself, as Google's lead web technology evangelist, how many desktop developers do you think he talks to and, more generally, what his frame of reference is and what, clearly, he considers to be most interesting.

Comments:

"Only a Sith deals in absolutes" - Obi wan Kenobi

Posted by Lee Chuk Munn on November 21, 2011 at 10:27 AM PST #

If you have 500 customers placing one order a day a web browser is a good tool. If you have 1 AP or AR person entering 500 orders in one day a web browser sucks in a big way! That is why I am teaching employees in our Company to maintain our desktop Swing applications and develop further capabilities going forward -- migrating to the Netbeans platform. The desktop lives, Geertjen!!

Posted by Chuck Davis on November 21, 2011 at 11:04 AM PST #

What is happening at conferences is representative only in parts.

Posted by Michael Hüttermann on November 21, 2011 at 05:01 PM PST #

I think the Cobol managers felt pretty safe too knowing their apps were used all over the place in the banking, finance and mining industries. Yet, I don't think anybody wishes now to become the next Cobol programmer or manager.

Boring does matter! If a student won't make his next 'courses schedule app' or 'neural network app' as a Swing app, but as a mobile or web app, then it will make the web or mobile even stronger. Whatever mobile or the web lacks, it will make up for it in time since all the mindshare is there.

If a new programmer will touch some language or Platform only in the corporate, then it's quite sad for everybody. SAP seems to be quite profitable, but everybody hates it. Yet, it keeps going because SAP programmers are only in it for the money.

The other thing is that if you move towards a niche, being cross-platform doesn't matter as much. A bank or military customer will buy whatever hardware is needed.

If you look at your examples, air traffic and stock trading require constant connectivity anyhow. (Stock trading is a bit special since it probably needs some high responsivness.)

Then, oil analysis and risk management seem to be a lot about number crunching, which is hardly done one a laptop. Except the CAD/GIS stuff that would need a proper workstation with a native app, everything else is moving to the backend computation server. Nobody computes their entire portfolio on a desktop, they offload it to their server farm.

Indeed, there is still a niche for desktop apps and it's perhaps profitable too, but I don't think this should be accepted.

For the NetBeans IDE in particular, it seems sad to give up the web space to projects like Cloud9 IDE. While they are hardly competitors they will only get stronger in time. NetBeans (Xelfi) was the first Java IDE made in Java -- it would be nice for it to be the first usable IDE in the browser too.

The whole usecase standard IDEs catter to has changed ever since the Internet became nearly ubiquitous and connectivity constant. If you would have people think about how to design a development environment for today's developers, they would probably come up with something closer to a browser app.

Posted by Emilian Bold on November 21, 2011 at 05:50 PM PST #

Hi Emilian, comparing music to programming, I'd say Android developers are rappers, Java desktop developers are classical musicians, while Cobol programmers are hitting sticks against rocks. My point is, classical music is still played and will always continue being played. Hitting sticks against rocks is different: probably still needed sometimes, but pretty much never. However, comparing hitting sticks against rocks with classical music seems a bit wrong and so your comparison of Cobol vs Java desktop seems a bit extreme too.

I also disagree with a number of other points you make. E.g., I just don't see software development ever taking place in anything resembling a browser. And, for the same reasons, most things that are not form-based (e.g., filling in airline reservation forms) are not going to be in the browser, either. It's just not what the browser is good for, nor is it where those kinds of applications need to be. High responsive type and mission critical simulation apps, which is such a large set of applications that it would be weird to call them a 'niche', are using the web for reporting needs and similar view purposes. But that's all. Personally, I'd be a bit concerned if NATO were doing its air traffic control in a web page.

Posted by Geertjan on November 21, 2011 at 06:56 PM PST #

Slow moving corporations make any technology have some inertia. Which is to say that there is some product being maintained now written in about any imaginable language and technology stack.

I'm not for the abolishment of desktop apps. There obviously are some big and small niches/markets where they make sense. But I call them niches because they are shrinking and becoming more hidden from the mainstream user and developer.

Now, the NetBeans Platform we have is a platform for desktop apps. As desktop apps become more niche, so will the apps using the NetBeans Platform. The next student app will not be a desktop app, but a web or mobile thing and this will reflect in the kind of apps they will develop in the future as employees.

The other idea, is that while the IDE is a niche product itself, it's being used by quite normal developer that are mainstream users in just about every other aspect. So, expectations from mainstream computing will move towards our niche.

I don't understand how it's hard for you to see software development happening in the browser when we have online source code repositories, issue trackers and build servers. The only thing missing is a good online text editor (more or less).

Posted by Emilian Bold on November 21, 2011 at 07:50 PM PST #

BTW, my initial comparison with Cobol wasn't out of spite. I just wanted to pick some old technology that moved towards a niche. Sorry if it seemed extreme.

Posted by Emilian Bold on November 21, 2011 at 08:01 PM PST #

It's exactly your "(more or less)" that is absolutely the key point! The devil lies in the details, exactly in those details that you're masking out, exactly in the way that keynote speakers at conferences talk about the web as a solution for absolutely everything. For further reading: http://java.dzone.com/why-desktop-not-webapp

Posted by Geertjan on November 21, 2011 at 08:01 PM PST #

This is interesting because JavaFX 2.0 is now very highly correlated with java ee 6.

http://www.google.com/insights/search/#q=java%20ee%206%2Cjavafx%202.0&date=today%203-m&cmpt=q

My point is, in the enterprise the desktop still counts.

From the Devoxx 2011 feedback on twitter, JavaFX 2.0 was the main game changer. I may be wrong but that was the impression I got.

Posted by gcameo on November 21, 2011 at 08:03 PM PST #

>It's exactly your "(more or less)" that is absolutely the key point

Well, I didn't want to expand the post too much. What's missing is a good project-aware text editor with syntax highlighting and completion as well as a debugger and profiler.

The "competition" in the web space don't even have the editor, that's why I've only underlined that. Give the world NetBeans' editor in a browser, hook it to github and they'll be all over it.

Posted by Emilian Bold on November 21, 2011 at 09:17 PM PST #

I see lots of use cases for desktop applications, and Geertjan shed some light on most of them. Anyway, in my opinion, a complex, business critical application can't be jailed into a single technological stack.

Our company uses lots of technologies for each customer in a single package: web interfaces, desktop clients, mobile apps and also (yes, we sometimes hit sticks against rocks;) javaSE cli apps for integration with legacy systems/scheduled tasks/webservices nightly access/data preelaboration and so on.

Now, a revealing little story: we developed some years ago - and still maintain - a web based application for the Experimental Zooprofilactic Institute - an Italian public company. This application covers their entire productive cycle - from screening requests to medical reports - and handles millions of records; it is however damn fast, so we didn't expect our customer to ask for a *desktop application* to manage medical test configurations; indeed, they asked for it! And now they want to move some other functions from web to the desktop.

Their motivations? Read what Geertjan wrote...

Posted by sergio on November 21, 2011 at 10:16 PM PST #

I agree that web/mobile applications are the most common user interface now days and that's fine. But what's behind that? A desktop application (web server, database, etc).

As mentioned above Web Application is just a window, a part of a stack of a full application. I guess "interesting" means where $ is. Right now flashy user interfaces is what has demand (HTML5, etc) due to the amount of users it has, but the admin probably won't be able to do its stuff on a browser (at least completely)

Posted by Javier Ortiz on November 22, 2011 at 12:07 AM PST #

HTML5 is over hyped and current webapps still have a long way to go before they match the capability of desktop apps in usability, performance, and reliability. Google docs is a cool toy but definitely no replacement for Word- maybe Notepad/WordPad/Text Edit. I would argue that apps for the iPhone and iPad are desktop apps- development is done in Objective-C using basically the same APIs as used on the Mac desktop. The difference is form factor and finger vs. mouse. Many apps that were written for the iPhone/iPad have been ported back to the Mac platform- recompiled. Why did Apple go this route (and now Google with Android) - because apps can manage resources (like memory), offload tasks to GPUs, etc. When you write an app in JavaScript, how do you manage memory in the browser or determine why the browser now requires 1 gig of RAM? What about figuring out how to optimize memory for an app? How do you handle people that are running older browsers? Now that computers are so powerful (and phones too), why would you offload all of the word to a back-end server? Can't the client machine do business calculations? If you do your business calculations in JavaScript, nothing like having your IP in an easy-to-download text file!
If anything there is a resurgence of desktop apps despite the propaganda about HTML5.

Posted by Ryan on November 22, 2011 at 02:37 AM PST #

I agree with Javier Ortiz. What is behind the Webview of a App?
WebSphere, Jboss,Oracle, JavaServices, EJBs etc.

So, having an App on a application server you can put on it a View whatever you like. It can be a HTML+JQuery.
Some parts of the app can be done in the client browser to get the work out of the server.

Posted by robertO on November 22, 2011 at 06:37 AM PST #

Microsoft Office, Intellij, chrome browser, safari, games, windows media player, photoshop, illustrator these are just a few examples of desktop based apps. I don't see them turning into web based apps, nor I see any advantage to that.
Also they're not boring, some are much more full of life than any web based app.

Cheers

Posted by Pedro Duque Vieira on November 23, 2011 at 07:55 AM PST #

In web applications network latency is a big problem that desktop applications don't have. If you want to have a responsive modern ui with advanced features like synchronizing parts of the application, input validation, animation and effects, and you want to make it performant and responsive, you need to move a lot of logic in your javascript. You end up with a web application that is actually executing most of the code on the client.

That's why web frameworks like GWT compile your java code to javascript. Where is this code executed? On your desktop, in your browser. And companies like Google put a lot of efforts in their JavaScript Engines, to make them faster and keep up with Desktop applications, make it possible to run your applications offline. In summary: they are heading for the desktop. The only difference is that their RCP framework is called Browser.

Still people are missing a lot of things in their web applications. Easy keybinding to actions, easy integration with native code, and good performance for example. And developers have to deal with browser incompatibilities.

A desktop application that connects to a java ee beackend is easier to create and maintain, especially if you have stable and proven frameworks like the NetBeans Platform. (The only problem I see is that Swing is practically deprecated, and JavaFX is not quite there.)

The separation between desktop and web applications is artificial, because modern web applications are actually just poorly disguised desktop applications. And they suck, because of technical incositencies and poorly implemented standards plus the ned to split application logic between technological layers.

Posted by Toni Epple on November 24, 2011 at 07:36 PM PST #

Hi Geertjan,
I really appreciate you blogging about this topic!
I also attended Devoxx and was disappointed that enhancing/improving Swing doesn’t seem to be
a topic for java 8 or 9. At least this was my impression. I fully agree with you about the advantages a fat Swing Client Application offers for enterprise projects. But
the absence of "Oracle Commitment" for Swing could make me turn my back on it for new projects. I wonder if you have more
optimism or see some new forces pushing Swing forward?

Posted by John Vieten on November 24, 2011 at 10:21 PM PST #

Hi Geertjan,

I've been a self employed consultant working with Swing for the 6 year or so and more years than I care to remember before that. A lot of the companies I work for require engineers to be security cleared, so details of the projects will never be known about outside the companies walls. What I can say is that I have worked on many projects where there really is no alternative to Swing (including the new upstart JavaFX). If you want a flexible, quick to use front end that works on many platforms, can deal with databases, xml, soap, rest ...... where do you go!!!

Personally I'm more than happy that nobody in the consumer world knows much about the number of projects using Swing because that means not that many people bother to get to know it in detail so the jobs are high paid.

I'm not surprised by the top brass in the Java world finding it boring because after talking to people at the one and only conference I ever attended it was obvious that they don't really understand real projects, proper projects so to speak, they are more interested in the latest buzz. Thats all very good but I think real development is all about solving real problems not trying to overcome problems that don't already exist.

I've been following JavaFX with interest but to be honest apart from a few fancy animations and graphic manipulation, what does it give the average joe behind the firewall??? I'll be sticking with Swing for a fair while yet by the looks of it.

Oracle like Sun still don't understand the Desktop problem area and certainly don't realise what a flexible tool they have in Swing. It needs to be extended, not brushed on the basis JavaFX will replace it because because it won't in the sectors I work in.

Posted by Steve Webb on November 27, 2011 at 09:54 AM PST #

Hi Geertjan,

I think your spot on the money. I work on lots of Swing projects as a consultant. Nobody outside the firewalls hears about them. At the moment JavaFX just won't cut it for the work I do and from what I can see never will. So with oracles continued apathy towards Swing they will eventually lose a lot of potential revenue and talent to other competitors technologies.

Posted by Steve Webb on November 27, 2011 at 09:58 AM PST #

Thanks a lot for all the supportive comments! References to this article can also be found in Jonathan Giles's "Java desktop links of the week" (http://jonathangiles.net/blog/?p=1149) and in Kevin Farnham's latest java.net editorial (http://weblogs.java.net/blog/editor/archive/2011/11/28/whats-happened-desktop-application-development).

Posted by Geertjan on November 27, 2011 at 09:40 PM PST #

I develop and use applications for ecological modelling and data analysis. This domain is dominated by desktop applications. Frequently the user base for a particular application is tiny: perhaps just one small group of researchers for which the application was developed. More general analysis and/or modelling applications will have a large user base, but individual users are working with highly specific data and research questions. At both of these ends of the scientific application spectrum, web-based tools are much less useful and/or practical compared to those on the desktop.

The situation is much as described by James Gosling, who Geertjan quoted in an earlier blog post: http://blogs.oracle.com/geertjan/entry/james_gosling_the_massive_popularity. So, I find the notion that nothing interesting is happening outside the web-application domain to be a sad example of head-in-a-bucket thinking :)

As an aside, I very much share the concern expressed in an earlier comment about Swing not being on Oracle's radar.

Posted by guest on November 28, 2011 at 01:56 PM PST #

Great writing, Geertjan. I can't agree more. My company JIDE Software focused on the component development on the Java desktop GUI client. We have been doing it for 9 years. 9 years ago, people already started to shout that the desktop Swing is dying. 9 years later, we are still growing. As you pointed out, many of our clients are large teams in companies. Many are fortune 500 companies. You can see a partial list here.

http://www.jidesoft.com/company/customers.htm

Many such applications are for internal or enterprise use only which is why not most consumers never heard about it. It is a huge area that doesn't seem to interest most developers but it exists. And so far I don't see any existing technologies can easily replace it.

Posted by David Qiao on November 28, 2011 at 02:51 PM PST #

I think one reason there is more news about web apps is that they are usually pretty simple from a GUI perspective (mostly forms) and fairly static compared to a rich client doing engineering (designing a 3D wing using a CAD system and analyzing flow solver results), defense (analyzing data and controlling stuff), GIS (check out NASA World Wind: http://goworldwind.org/demos/) or 3D gaming-related tasks, which means that there are a lot more developers that can create a web application compared to the Swing-based Java clients (I don't say "thick" since some of the current Javascript-based applications are getting pretty "thick" as well.) These richer clients may also require lots more vertical domain knowledge and application design know-how than Javascript/HTML.

We've had great successes with NetBeans based applications as well in recent years. My favorite story that I like to tell about the benefits of the NB platform and the IDE is when I spent a week with my laptop inside an airplane sitting on the tarmac for a week creating a NB application that interacted with a system on-board. At the end of the week, I had NetBeans automatically create a Windows installer of my NB platform application, copied it onto a thumb drive and handed it to the customer for installation and testing. Talk about just in time development!

I've also been disappointed that even with all the recent improvements in applets since 1.6_10 that applets still get treated as red-headed step children by developers and by the browser vendors. Applets allow lots of the work to be delegated to the local machine with super-computing chips and powerful GPUs and gives a developer the full power of the JDK. I prefer to not be hamstrung by the current web technologies and attempt remain mostly in a pure Java environment just from a productivity and reliable performance standpoint. (BTW, I have deployed very rich applets on the defense side and they have been very successful (performant and functional)!) I'm hoping that JavaFX will give applets a second chance if developers tend to use mostly Swing at first. I would love to see JavaFX multi-media applications being used to play next year's JavaOne presentations as well!

Posted by Rob Ratcliff on November 29, 2011 at 01:43 PM PST #

Nice blog.

I've always been annoyed by this. As an interesting anecdote, I'm currently working on a large enterprise app with a web based user interface. We're replacing a 1990's desktop app solution. Yesterday I spoke to users having to switch over. The biggest complaint - usability. They miss power-user keyboard shortcuts, real gui tables that allow them to quickly cursor down and view related information.

Ironically leaving the desktop for the web is less user friendly, not more user friendly.

Posted by guest on December 02, 2011 at 03:09 AM PST #

Hi. How would be boring such an application?

- Create product tree of all parts the product is assembled of? Collect which material you need to order, count costs, production time. Insert this product to production plan.

- Simulate how the financial product will look or behave during next three years. Change parameters to watch influences.

- Simulate product designe, its behaviour in 3D and create all described in the first point.

- Provide very quick data typing to the user. Banks, insurance company, industrial fabrics need to type huge amount of data each day. How to make it quick when you have many attributes with complex relations-checking? The user needs use the keyboard only without any keys-mouse skipping and rolling on the page.

Posted by silhanek on December 11, 2011 at 08:40 PM PST #

Great post!
The point about blogging is fantastic. I started to explore NetBeans platform only a month back and have been thinking of having my blog (as, I already have lot of stories to tell!)...but, I did think if these would be interesting for others. This article clears the doubts...I will use this as an inspiration to start my blog...

Posted by Ranga on December 20, 2011 at 09:38 PM PST #

For the NetBeans IDE in particular, it seems sad to give up the web space to projects like Cloud9 IDE. While they are hardly competitors they will only get stronger in time. NetBeans (Xelfi) was the first Java IDE made in Java -- it would be nice for it to be the first usable IDE in the browser too.

Posted by iphone application development india on February 25, 2012 at 12:37 PM PST #

Post a Comment:
  • HTML Syntax: NOT allowed
About

Geertjan Wielenga (@geertjanw) is a Principal Product Manager in the Oracle Developer Tools group living & working in Amsterdam. He is a Java technology enthusiast, evangelist, trainer, speaker, and writer. He blogs here daily.

The focus of this blog is mostly on NetBeans (a development tool primarily for Java programmers), with an occasional reference to NetBeans, and sometimes diverging to topics relating to NetBeans. And then there are days when NetBeans is mentioned, just for a change.

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
12
13
14
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today