Polish, consolidate and fix bugs.
Polish, consolidate and fix bugs.
There goes my vote. I can't really see that I need new language features, what I want is to have a major look at all the old features and fill in the 5% that is missing from many of them.
To explain what I mean I will make a couple of examples below. These may not be the most important ones but you'll get the idea of what type of things I miss.
*) Make the Actions framwork so it can handle checkbox items as well (in menus). Including a common buttonmodel so they all change when one changes, with only one event fired. Add som more values to customize the components created with an Action, for example the initial state of the checkbox and multiple icon sizes. I mean is there anyone who wwants the same sized Icon in a menu as in a toolbar!?
*) Add translucent top-level windows and, which is a must, some way to have a non-rectanglular hit-area for mouse events in those windows (at least) but even better if that could go for all JComponents.
*) Accelerate everything in Java2D and produce a document that specifies what is accelerated when and on which platforms. It doesn't have to be mathematically exact, it just have to resonably correct and include a road map for when things will be accelerated (non binding of course). Finding this info now is hard at best.
*) Fix Windows L&F to the spec of Winlaf and JGoodies windows XP. Combined.
*) Add/fix really good font support. This includes AA-fonts that looks good (subpixel as well). No, they don't look good at the moment. No they don't!! ;) Use an Integer in the properties to set a cut-boundary over which font-size to AA automatically in a GUI. A value of null would indicate platforma preference and no value at all would (maybe) make all be as today. This way the developer can easilly decide what he wants, AND old programs will look the same. Cut-of values for (bold/plain/italic) and (aa/sub-pixel aa) means six properties in all.
Hope you understand what I mean, I use this techniqe a lot and it works.
*) Add a type of Stroke that draws the inside of a shape and not always a bottom/right offset as BasicStroke does. This way a drawn rectangle can be of equal size as a filled rectangle... If you have done a lot of Java2D (making a drawing application for instance) you know what I'm talking about. ;)
*) Add a good (not good enough) docking layout manager (not a docking framwork!). I often miss this compared to .NET, which has an ok docking layout manager. Great for laying out those first level container panels. If you give me a budget, I'll make one for you. :)
*) Add support for standard plugins via internet auto-loading. A lot can then be plugins instead of in the JRE core download. Corba and RMI comes to mind as potential optional packages...
*) Make the warning when running an unsafe JWS application less hostile. I crap my pants every time it's shown... It makes me REALLY want to press no, and it's darn ugly. Or add som kind of intermediate trust that only shows a very small warning, including what functions (when pressing 'advanced') are required.
*) Hire some designers that can't type a single row of code. They are recognized by their colorful clothing (or totally black) and they will have a flower on their desktop. They will care about the environment a little too much and have a very loose handshake. You have none of those currently emplyed, I know that for a fact. ;)
*) Start a project where people can show of their synth themes and make them easilly downloadable. A graphically oriented site that is layed out by one of the guys in the paragraph above and not tuched by any of the coders.
*) Hire a 10 year old kid who's only job is to try to understand the applications (such as the auto-update three paragraphs up, the Java panel and installtion program) you provide with the JDK. On his desk he has two buttons, "GO" and "NO GO". All releases must pass through him and he ONLY presses the GO button if he can explain for his grandmother hos it works. Btw, the guys in colorful clothing should have similar buttons. A hint: His grandmother would probably have a hard time understanding the classpath concept...)
*) Fix, wrap or redo Calendar/Date.
*) Add an applications to the install package of the JRE that (optionally) keeps all Java dll:s in memory for faster startup first time. All other important software have it, why not Java? (which has been plagued by bad publicity for slow startups for ages).
*) Create an application (or start a OS-project) that benchmarks the speed and quality of all types of Java2D operations and saves the inforamtion in an XML-file. This should include driver versions, OS and graphics hardware. This way people can download it, run it, and send you the data. JWS:able of course. It should include testing of OpenGL and fullscreen. I think the information would be invaluable for the Java2D team.
Stop adding buzz-word features and clean up old code!