So Java 1.6
supports splash screens. Apparently there is pent up demand
from developers, and "Splash screens are a standard part of any
modern graphical user interface (GUI) application.". Indeed,
"An application that displays a polished and
professional-looking splash screen can occupy the user's attention
and gain the user's confidence that the application is
starting.". What else, oh "In addition, splash screens may
provide marketing information."
No.
Splash screens are an egocentric form of damage limitation for
apps that take too long to start up. Damage limitation, because if
you ask users which they prefer, (a) apps that start immediately or
(b) a polished and professional looking splash screen with
marketing information, only a few deranged idiots would pick (b)
and they need to be taken outside and soundly beaten. Actually,
maybe they should be cherished as the kind of person who would
actually run Java rich client apps.
Why egocentric? Because when I boot my PC up I normally bring
the dev apps for the day, say jedit, firefox, idea, switch to the
next X11 virtual window and boot vmware (fast) then restore an XP
image (slow), then flip to the mail window and start reading my
mail. Only I can't because there about four different splash
screens following me around, many with the always-on-top attribute
set so that I cannot do other things. Yet that is exactly what I
need to do, as both vmware OS restore and IDEA dataset reloads do
take ages, because of the sheer amount of data being thrown
about.
What should an app do? Well, how about displaying progress in
the actual toplevel window frame. That way if it is in front of me,
I can look at it, and if I am doing other work, it is
irrelevant.
As it is, I am now scared about how every little java JAR file
is going to add splash screens? Should we add one for Ant? What
about the javac team? That and javadoc takes forever, of course
they need splash screens. This new feature reminds me of when the
Win32 MFC wizard built splash screens into every app: Suddenly
every app had them. But they didnt make sense then, and they dont
know. If your app has complex things to do, do them in a background
thread. It is what they are there for.