The Source for Java Technology Collaboration
User: Password:



Chet Haase

Chet Haase's Blog

Consumer JRE: Leaner, Meaner Java

Posted by chet on May 18, 2007 at 02:04 PM | Comments (60)

Coming soon to a Java SE 6 update release near you

Recently, Thorsten Laux and I gave a talk at JavaOne 2007 about where we are and where we're going in Desktop Java. We covered the download numbers (awesome!), statistics on how many PCs have Java installed (excellent!), and highlighted various desktop applications that use our Desktop Java technologies (fantastic!). We then quickly covered some of the larger features that were implemented in the recent Java SE 6 release (which I won't go into here; check out the various blogs and articles on the topic for more on those features). We concluded with the following technical diagram:

victory-sm.gif

Clearly, the combination of growing ubiquity, power of the platform, and features in the latest release means that we are done, right?

Well, perhaps not. There are still some outstanding issues that need to be addressed, as we can see in the following diagram:

attack-sm.gif

The reality is, we have several outstanding issues with Java as a consumer desktop platform, which need to be fixed soon in order to make us competitive now and in the future.

The good news is that we are, in fact, aware of these issues. The better news is that we're working on the problems. The best news is that we are close to solutions and intend to delilver them as an update to the SE 6 release, in a release that we call the Consumer JRE.

What's In It?

The Consumer JRE consists of several important pieces of functionality, some of which are depicted in detail in the above diagram. One of the keys to getting this release out quickly as an update to an existing release is to only make changes that do not affect API. So, for example, we can add functionality to make startup faster without affecting the APIs or functionality that an application is using. But we cannot add a new animation API in an update release. Fortunately, this constraint is not too cumbersome since the major problems we are trying to solve now are below the level of API changes, and are thus completely suitable for this release.

Here are the main items that we are shooting for in this release:

Quickstarter: Radically reduce the startup time for Java applications and applets.

Java Kernel: Reduce the time-to-install-and-launch when the user needs to install the JRE in order to run an application.

Deployment Toolkit: Enable easy detection and installation of the JRE.

Installer Improvements: Improve the user experience of installation.

Windows Graphics Performance: Enable default graphics acceleration for simple and advanced 2D rendering.

Nimbus Look & Feel : Release a new cross-platform look & feel based on Synth.

Quickstarter

This is probably going to be the most popular item in the mix, making the launch of any Java application or applet much faster. This is one of the most serious holdups to further applet development and deployment today, as the launch of the first applet in a browser can take several seconds. Quickstarter will cut down the launch time significantly, vastly improving the first-launch experience for consumer Java applications.

There are actually 2 issues with Java application startup: warm start and cold start. We define warm start as the time that it takes for a Java application to start when you have recently run Java recently on your system. Cold start, on the other hand, refers to the time that it takes to launch the first Java application after a fresh reboot.

Warm start times are reasonable these days, due to plenty of ongoing work on improving performance, in addition to machines simply getting faster over Java's lifetime. A simple application or applet will take 1-2 seconds to start up, which is in the same ballpark as standard web pages and within an acceptable range for the user.

Cold start, on the other hand, continues to take an unreasonably large amount of time. It is not unusual to see an applet take 5-10 seconds, or even longer, to start. While such a delay might be acceptable for a large desktop application, such as an IDE that's going to run all day after cranking it up in the morning, startup times like this for applets are unacceptable and limit applet viability for lightweight consumer content.

The problem turns out to be at the operating system (OS) level. Don't misunderstand me: I'm not saying, "It's not our fault!, " as tempting as that route always is for any hard problem. Instead, I'm saying that the Java platform is running into some basic physical constraints at the OS and hardware level that we must work within. In particular, the files that make up the complete Java platform are, well, large. For example, a recent version of Java SE 6 that I have sports an rt.jar file of over 40 MB alone. If you add in the various other jarfiles, native libraries, and resource files that get touched at startup, regardless of any application-specific code, that's a lot of data that has to be read in.

At the OS level, this means that all of these megabytes (or, rather, tens of megabytes) have to be read from disk, which is a very (to use a technical hardware term) slow operation. Actually, it's the seek time of the disk that's the killer; reading large files sequentially is relatively fast, but seeking the bits that we actually need is not.  So even though we only need a small fraction of the data in these large files for any particular application, the fact that we're seeking all over within the files means that there is plenty of disk activity. No wonder it takes so long for Java to start up, since we are dependent upon the speed of such an inherently slow operation to begin with.

The reason that warm start is so much faster is that once some data has been read off of disk, the OS places it in the disk cache. The next time that memory is needed, the OS can retrieve it from the disk cache, which is a significantly (again, a technical term here) faster operation.

The fix, then, is for us to take advantage of the disk cache to make sure that the memory pages on disk that we must read at startup have already been loaded before we need them. How do we do this? We cannot magically pre-load the pages just prioir to launching; unfortunately, the VM currently lacks the ability to see into the future to detect when the user will be launching Java (we would love to have this feature in the future, but it is not yet present). But we can pre-load at some earlier time, such as Windows boot or login time. And we can keep the pages warm in the disk cache as machine and memory conditions allow.

Note that this approach is not the same as running a full Java VM. That approach would solve some of the same problems, but in a less efficient manner, locking up the memory in a less OS-friendly way. Our approach will work just with the disk cache itself, allowing the operating system to use the system memory and disk cache as it sees fit.

Java Kernel

The Java Kernel project addresses the time-to-launch problem for users that do not have the proper JRE installed. For example, if your application requires the user to hava Java SE 6 and they do not currently have it, then you require that they install that full release prior to launching the application. Given the size of the JRE, and depending on the amount of bandwidth available to the user, the download and installation time can take anywhere from tens of seconds to tens of minutes. The Java Kernel project will cut this time down dramatically, allowing the application to install just what it needs to launch itself.

Just like QuickStarter, the main issue behind the time that download and installation takes is size: Java is large, even when zipped and Pack200 compressed, and there are physical realities to bandwidth and bit copying that we cannot overcome. Of course, one solution would be to simply shrink the platform, but in a world where Java is backward compatible and any Java application compiled to a particular release can expect to run on any release of that version or later, the idea of breaking up the Java runtime into subsets simply doesn't work.

The big idea behind Java Kernel is to take the sub-setting approach, breaking up the monolithic Java platform into discrete chunks of functionality that get downloaded and installed according to what any specific application needs, but to then stream down the rest of the platform in the background. Taking this approach ensures that an application that installs the Java Kernel will have the functionality that it needs with a much faster install and startup, but that any future application can still take advantage of the entire Java platform for that release, since the Java Kernel installation process will ensure that all of the proper bits get installed eventually.

The basic workings of Java Kernel are as follows:

  • Download base functionality that every application needs (VM, garbage collector, security, classloader, and enough basic networking functionality to be able to download the rest of the bits)
  • Download additional dependencies that this application specifies
  • Download any "Class not found" exception culprits as needed
  • Download the rest of the JRE in parallel until the entire release exists on the user's system

Work is still ongoing on Java Kernel (Ethan Nicholas is madly cranking away at it), but initial results show that it is possible to cut the download size by over 60% for mid-sized Swing applications. For example, here are [very] preliminary numbers for some sample applications to show how applications-specific bundle sizes compare with the complete size of the JRE:

KernelComparison-sm.png
Comparison of various Swing application download sizes with the full JRE

Deployment Toolkit

Wouldn't it be nice to be able to detect, from the browser, whether the user has Java installed, and what version they have? The Deployment Toolkit feature will make this process much easier, allowing detection of Java from either JavaScript or browser plugins.

To date, the main mechanism for automatic detection of Java on the user's system was the ActiveX control called Auto-Install that we released in J2SE 5.0. This mechanism was necessarily limited to Internet Explorer, and only if the user allowed that ActiveX control to run. Other than that, the process was quite manual and usually involved sending the user off to java.com to optionally install Java, from which adventure they might never return. For an example of how the current system works, check out the article Auto-Install: Easier Launching of Java Web Start Applications.

The Deployment Toolkit project is about enabling a much more powerful and ubiquitous system to run across multiple browsers and platforms, allowing developers to more automatically detect what the user has, what to do about it, and how to launch the application when Java is then installed.

There is still a browser plugin that provides a high level of detection, installation, and launching support, but now that plugin has been ported to also work in Firefox on Windows. But if the plugins can not be used, there is also a JavaScript solution, hosted primarly on Sun's site with a small piece of code that runs on the deployer's site, that can do far more than the current manual approach. The plugins can detect Java versions down to the update release, and can automatically trigger an installation of Java, launching the application when installation completes. The JavaScript solution is not as powerful, but still enables detecting Java versions down to the family level (i.e., J2SE 5.0, Java SE 6, etc.). The JavaScript version also cannot start the Java installer directly, but it can redirect the user to the appropriate download page and then poll in the background, waiting to return to the original page and launch the application when installation is complete.

Installer Improvements

The installation process for a new JRE should be simpler and more user-friendly. Besides the size+time issue that we plan to address with Java Kernel, there needs to be a better overall experience that users have during the installation process. Here are example before and after views of the first installation dialog:

 

OldInstaller.png
Current installation dialog  

NewInstaller.png
New installation dialog

Graphics Performance on Windows

We are re-writing the default graphics pipeline on Windows to take advantage of Direct3D for performing everything from simple rectangular fills and copies, which is what you get now by default, to translucency, gradients, arbitrary transformations, and other more advanced 2D operations. Swing applications simple and complex should benefit from much better runtime performance on Windows as a result.

Swing performs its rendering through Java 2D, and is therefore dependent upon the graphics rendering speed of Java 2D for fast Swing performance. In J2SE 1.4, we started accessing native hardware acceleration through DirectX on Windows, but only for the basic operations of filling and copying rectangular areas and horizontal and vertical lines. These simple primitives end up being quite important for Swing rendering, since much of the UI is comprised of these primitives, and the ability to cache the Swing back buffer as a VRAM image enables very fast double-buffering. But UIs are getting more complicated and the ability to accelerate more advanced operations, such as translucency, anti-aliased text, gradients, and scaling operations, is becoming increasingly important.

We have continued to work on the DirectX rendering pipeline in Java 2D, and have the ability to accelerate a wide variety of operations through the native Direct3D library on Windows. However, we have not been able to enable these performance improvements by default due to a combination of speed and robustness issues. Meanwhile, we have also implemented a parallel OpenGL rendering pipeline for Java 2D with even more advanced capabilities, but once again we cannot enable it due to robustness issues on various platforms.

Now we are finally rewriting the DirectX pipeline to mirror the capabilities that we have with our OpenGL pipeline, with fixes for robustness that make it a more viable default rendering pipeline. We should finally be able to enable this feature by default, exposing Swing to extremely fast hardware acceleration through the graphics processor. This should enable faster performance for current Swing applications, but will also enable much more powerful Swing applications to run fast as well, even those incorporating much richer and more dynamic, animated effects in their GUIs.

Nimbus Look & Feel

The Metal look & feel was good in its day. And Ocean was a decent theme for Metal, especially given the backward-compatible constraint of maintaining the metrics used by the UI components. But these cross-platform look & feels are, frankly, dated, and we need a more modern look for Swing applications. Of course there are other look & feels out there, some quite good, and we encourage developers to look to those products and projects as well for possible usage in their applications. But in the meantime, we also feel that we should provide a decent default for Swing developers in the core platform. Nimbus will be that new look & feel.

Here some samples of the the Nimbus look & feel so far:

NimbusWidgets.png
Sample Nimbus components

nimbus-swingset-1.png
SwingSet2, using the Nimbus look & feel

For more information on the Nimbus project, check out Jasper Pott's blog.

When Will It Ship?

As I mentioned earlier, the Consumer JRE will be an update for Java SE 6, which means that we will be able to deliver it much more quickly than we could if we waited for another major release like Java SE 7. But it's still a lot of work, and we're not done yet. Our best estimates now put the release date in early 2008, although we are trying to pull in the date if at all possible. Given the amount and type of changes in this release (especially Java Kernel), we need to send this release through extensive testing to make sure that it's as solid as you should expect it to be.

We will roll out some features as they are available, so that you don't have to wait for early 2008 to get everything here. For example, the improved installation experience should be out in update 2 of Java SE 6, which is currently set for late June.

The Fine Print

Most of these features are still very much in-development, and are thus apt to change scope or be removed from the release if our goals for them are not reachable. One of the main priorities for the release is getting it out to you as soon as we possibly can, with as much of these features as are doable in that timeframe. So if it looks like any particular feature would stall the release too long, we will have to weigh cutting or changing it in order to still keep our tight timeline. One of the things that is very clear to us is that the features we are providing are not things that would be nice to have in the future; they are necessary pieces of functionality that our developers and users want now. So we hope you'll agree that keeping strict control over the timeline is as important as the functionality of any particular feature we've discussed.

And who knows? Maybe we will also get the chance to add other cool and powerful features along the way, as long as they do not mess with our all-important timeline.

Stay Tuned

I will try to post updates to my blog as we know them, so stay tuned. And look forward, as I will, to a new era of consumer-enabled Desktop Java. In the meantime, check out the slides for the relevant talks at JavaOne when they become available. Some of these items were discussed at our Desktop Java overview, Danny Coward's Java SE: Present and Future, and Ethan's Easy Deployment sessions.


Bookmark blog post: del.icio.us del.icio.us Digg Digg DZone DZone Furl Furl Reddit Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment

  • Great! Good luck in the work. Let's finally make Java a fast platform for RIAs! What about multimedia support (video codecs + sound recording) is there anything being done?
    Carl Antaki

    Posted by: carcour on May 18, 2007 at 03:29 PM

  • Oh no!! Not the dreaded media support question again.

    Posted by: mikeazzi on May 18, 2007 at 03:30 PM

  • The media problem may be a really easy one to solve. There exists pure Java codecs for Ogg Vorbis and ogg Theora available under the GPL, this might be a great start .

    Theora and Ogg are great codecs that are patent and royalty free.

    http://www.flumotion.net/cortado/

    Posted by: kedaly on May 18, 2007 at 05:06 PM

  • Please reconsider your Nimbus scrollbar. To me, it is confusing - it appears to be very much like a tab with its rounded corners top and bottom - and you click tabs, you don't drag them (typically). A normal scrollbar would visually convey "slidability" - which the Nimbus scrollbar doesn't at all.

    This is your chance to fix things so please hire a really great GUI person to help make this as good as it can possibly be. Please copy the Apple OS X GUI as much as is possible without infringing copyrights.

    Posted by: hutchike on May 18, 2007 at 11:34 PM


  • Wow, great stuff, Chet! As someone touting running Java DB in the browser and in Internet clients in general, this is great news.

    One more thing I'd like to add to your plate -- although I'm not sure it's possible without API changes. Like Flash, I'd like the ability to store a small amount of data in a specific directory on the local machine without having to sign my applet and where the user doesn't have a security screen flash in their face.

    I know JNLP provides a specialized persistence API, but that doesn't work with Java DB (although somebody's working on a storage engine that uses JNLP persistence). Is there a way to get this to work with standard Java IO?

    Barring that, we should at least make the security popup more friendly and less scary. One look at what we have today and grandma is going to say "no thank you" and that's the end of that.

    Posted by: davidvc on May 18, 2007 at 11:56 PM

  • personally I live for the day when the new D3D pipleline is enabled by default....

    Posted by: benloud on May 19, 2007 at 01:27 AM

  • If you do all that it will be a good START. I don't know if it will be enough. If all these little things finally add up they might create a great user experience. We'll see that when it is finished. And please remember that you are not trying to please me (a developer) but a much more exigent, non-technical public. These people don't care about the technology. They only care about the experience, the feeling. In that regard, they will benchmark the experience you will give them against their experience with Flash.

    Posted by: imjames on May 19, 2007 at 02:07 AM

  • Yes, it should also be possible to use Java3D without having to get 'all-permissions' at the JNLP/JWS level. Please, away with these spurious annoying interruptions to the user, and have the run-time vet the calls for safety instead.

    Rgds

    Damon

    Posted by: damonhd on May 19, 2007 at 02:11 AM

  • "So even though we only need a small fraction of the data in these large files for any particular application, the fact that we're seeking all over within the files means that there is plenty of disk activity."

    In the case of jar files like rt.jar, can't you just reorder them so that the stuff that is always loaded during startup is collected together at the beginning?

    Posted by: mthornton on May 19, 2007 at 03:40 AM

  • I am definitely interested in helping improve the end user installation experience. My team over at Cool Album have managed to get some superb performance out of Java 6, but as the time for our initial 1.0 release comes closer and closer, I am starting to think about how in the world we are going to deploy this poor thing!

    We have a lean application, and so far we are not using anything that is explicitly from Java 6, as I want to maintain Java 5 backwards compatibility as well. The fact that even within my CS department, a fair number of machines are still running on Java 5 makes me hesitant to use anything from Java 6.

    But the end user install experience makes me kind of wonder... how am I going to make an easy to use cross platform install experience that doesn't just up and die if Java 5+ is not installed?

    It is nice to see that Sun is thinking about these same issues, and that work is being done towards resolving them! With the awesome medium-term improvements for Java 7, and the short team improvements for Java 6 that you have outlined, Java keeps looking better and better!

    Posted by: devlinbentley on May 19, 2007 at 05:57 PM

  • In the case of jar files like rt.jar, can't you just reorder them so that the stuff that is always loaded during startup is collected together at the beginning?

    Yes, this is done already.

    Dmitri

    Posted by: trembovetski on May 19, 2007 at 10:14 PM

  • This is great news. I love it! Especially love the new look & feel.

    Posted by: jattardi on May 19, 2007 at 11:34 PM

  • Really great news. However I am wondering if these improvements will find their way into Apple's Java 6 VM... Hey we still run a preview version event though it seems to work quite well :(

    Posted by: jmborer on May 20, 2007 at 02:50 AM

  • @devlinbentley I'd say, go with Java 6 and JWS, configuring it for explicitly requesting Java 6 and - as further sanity check - put a try / catch (Throwable) in your main, so you can get all the possible ClassNotFoundError etc... and at least give a warning to the user. We know that at the moment there are possibly troubles with the runtime installation of a new runtime, but it's the best we can do now in simply terms. Alternatively there's the IzPack, launch4j, jsmooth stuff...

    Posted by: fabriziogiudici on May 20, 2007 at 08:10 AM

  • You forgot another important outstanding issue: memory consumption. Although it has improved it should be improved even further. Almost everyone I know complains about Java's ugly habit of hogging a lot of system memory. It is of particular importance for the Consumer JRE (not so much for the sever side java). People like to run a lot of different application at the same time, doing various tasks: video edditing, blogging, music players, video players, games.. etc. When they run a java app it pretty much hogs a lot of system memory and they are forced to run few of these other apps concurrently. Hence they stay away from Java programs. If this issue can be resolved. It would be perfect.

    Posted by: rizzix on May 20, 2007 at 11:20 AM

  • Also note the time spent by antiviruses on some platforms. The jar files are scanned (sometimes more than once) which uses a lot of CPU power and also have a significant impact on the startup time.

    Posted by: tdeleeuw on May 20, 2007 at 06:31 PM

  • Why dont you put the default look and feel to be the native L&F of the platform on which the app is running? That seems far more sensible than trying to come up with a gui that may seem foreign to users on a particular platform.

    Posted by: pdeva on May 20, 2007 at 09:21 PM

  • I already hate the jusched.exe on my system, I dont need yet another java background job. Quickstart means, make the start quick, it does not mean make it start earlier.

    My notebook already takes too much disk seeks while it is booting, I dont need to page in another 10MB rt.jar files...

    Gee, when do ppl realize that Flash is the better applet...

    Greetings
    Bernd

    Posted by: ecki on May 20, 2007 at 11:11 PM

  • tdeleeuw said: "The jar files are scanned (sometimes more than once) which uses a lot of CPU power and also have a significant impact on the startup time."

    I want to add that even if it seems that it is not Java's fault, it is not the user's fault either. The final conclusion for a non-technical person is that Java is slow. You can do something about it (implement something, talk to all antivirus companies in the world, etc...)

    Posted by: imjames on May 20, 2007 at 11:31 PM

  • Chet first off I'm glad to see that all our whining and complaining have not gone unheard and sun employees can, at least you, have a humorous approach when talking about it. I am a little fuzzy about one thing, when talking about the JRE are you talking about the "rt.jar" or the complete "Java Platform" that is installed on users systems? If, talking about the "rt.jar" when approaching the user install experience fix, then will the rest of the binaries just get updated or are they just installed next to the current ones during updates the user may download or jusched.exe downloads? I, for one would like to see some sort of diff or patch applied to the native binaries so a user does not end up with 10 slightly different version of the same software clogging their system. This also renders some of the extensions that maybe installed unusable (Java 3D, JAI, add your favorite ext directory items here). So, what I am trying to ask is this problem being addressed and if I totally missed it in this post I apologize.

    Posted by: badapple on May 21, 2007 at 03:57 AM

  • "Even better: you don't have to wait for the next major release of the JDK to get these features. "
    Most of our users are still on 1.3, they've been waiting for years to get permission from high up to introduce 1.4 into their environments. So they'll have a LONG time to wait for this :) :( Not that I know many people who use 1.6 at all, unless it came installed on their systems (and most of them upgraded from 1.6 to 1.4 or 1.5 because that's what customers use).

    Posted by: jwenting on May 21, 2007 at 06:40 AM

  • "Also note the time spent by antiviruses on some platforms. The jar files are scanned (sometimes more than once) which uses a lot of CPU power and also have a significant impact on the startup time. " Nothing can be done about that. Most virus scanners now scan inside archives and packed executables by default (and rightly so, as many trojans and virusses come in such a form) and jars just happen to be archives.

    Posted by: jwenting on May 21, 2007 at 06:43 AM

  • jwenting, If nothing can be done about virus scanners, then Flash wins.
    chet, Don't forget that any improvements to startup time, JNLP handling, and such like are needed on Mac as much as on Windows. Is Java just for Windows and Linux? It used to be just for Windows, but the new licensing might get it onto Linux now, too. Java is _starting_ to become cross-platform. It has some hurdles to jump yet. As for Consumer JRE, please keep this momentum strong inside of Sun. Thanks for the detailed report here.

    Posted by: tompalmer on May 21, 2007 at 08:39 AM

  • That Nimbus scroll bar is hideous. The way most of it looks is just bad but, that is just plain ugly.

    Posted by: jmonroe on May 21, 2007 at 08:44 AM

  • I agree with the dislike of the Nimbus scroll bar. Other than that, though, it looks good. Ship it.

    Maybe to help with rt.jar scanning and the virus software, rt.jar needs to be converted to a binary file and accessed like a database. Databases bumped into file system limitations a couple of decades ago and solved the problem.

    Your second picture needs a Mac OS X lightening bolt. Apple's poor Java support has certainly contributed to non-proliferation of client-side Java. My current thinking on client-side Java is, if Java is Windows only (which Java 6 pretty much is) and it doesn't provide much in the way of Windows integration, then why shouldn't I go with WPF?

    Posted by: neilweber on May 21, 2007 at 09:03 AM

  • Oh, one other thing. Enhance the applet API! It has not changed since, what, 1997. Like with WebStart, it should be easy to store data across applet sessions.

    Posted by: neilweber on May 21, 2007 at 09:06 AM

  • this is really amazing. i can't believe all this stuff is coming so soon! finally, a great reason to ditch developing on 1.5 only :)
    its not everyday a software company you work with gives you pretty much everything you want.

    Posted by: ilazarte on May 21, 2007 at 09:19 AM

  • I'm not too excited about longer boot/login times with quick start. This will force a decision for many users about whether they want Java installed at all. At least now people can install it and pay the slow start penalty when they are going to use Java. If you compel people to pay that penalty regardless, many will jettison Java completely.

    Posted by: erickson on May 21, 2007 at 12:04 PM

  • Requirements for Java to be viable as a desktop solution for developers to code on:
    1. A GUI toolkit that lets you embed heavyweight objects.
    2. Once you have #1, on Windows it needs to allow ActiveX embedding (although with #1 perhaps you can leave this critical functionality to third parties)
    3. A GUI toolkit with a frame that can render a modern web page.
    4. Media. JMF is really awful... it's very fragile and takes days to debug anything. Any hope of a successful desktop Java will require dusting off and integrating some form of cleaned up JMF.
    5. Fixing the major JVM-crashing, screen-munging, and memory leaking bugs in the AWT and Java2D that have been there for years. Java6 made some progress, but there's still a lot of random ductus rendering crashes.
    6. A RAD environment for GUIs.
    7. Replace JNI with something that appears to bind to native code more directly for integration with all the other desktop infrastructure out there.
    8. Integration of a real text editor widget that can represent styled text, receive pastes from Word, paste to Word, and some toolkit for saving this to some standard document format. JEditorPane doesn't cut it, since it dumps all formatting (tab, space, etc). The rest don't accept copy and paste. Everyone shouldn't have to roll their own.
    9. The end-user shouldn't know they're using Java.

    Posted by: samkass on May 21, 2007 at 02:39 PM

  • ugh, sorry about the formatting...


    A GUI toolkit that lets you embed heavyweight objects.
    Once you have #1, on Windows it needs to allow ActiveX embedding (although with #1 perhaps you can leave this critical functionality to third parties)
    A GUI toolkit with a frame that can render a modern web page.
    Media. JMF is really awful... it's very fragile and takes days to debug anything. Any hope of a successful desktop Java will require dusting off and integrating some form of cleaned up JMF.
    Fixing the major JVM-crashing, screen-munging, and memory leaking bugs in the AWT and Java2D that have been there for years. Java6 made some progress, but there's still a lot of random ductus rendering crashes.
    A RAD environment for GUIs.
    Replace JNI with something that appears to bind to native code more directly for integration with all the other desktop infrastructure out there.
    Integration of a real text editor widget that can represent styled text, receive pastes from Word, paste to Word, and some toolkit for saving this to some standard document format. JEditorPane doesn't cut it, since it dumps all formatting (tab, space, etc). The rest don't accept copy and paste. Everyone shouldn't have to roll their own.
    The end-user shouldn't know they're using Java.


    (Once you do all this, I think you'll have caught up to where C# already is today...)

    Posted by: samkass on May 21, 2007 at 02:41 PM

  • Concerning Nimbus, I don't mind the scrollbars. (Side comment: I think both native look-and-feel and CSS-like stylability are both more important than another hey-it-looks-cool. But Nimbus does look much better than Metal/Ocean.) It's the tabs that get to me. Why not make them as big and spread them out as much as possible? Wasting real estate and drawing attention to side details _is_ fun. Seriously now, I think Firefox 2.0 tabs in Windows look just great. Nimbus people might want to take a look at them.

    Posted by: tompalmer on May 21, 2007 at 03:54 PM

  • I don't understand why Swing is getting a new look & feel. I thought Swing now uses the OS to render widgets etc...? From an earlier blog entry, here's a quote:

    "In Java SE 6, the Swing native look & feel for both Windows and GTK was re-written to use the native platform rendering engine to draw Swing widgets. Instead of our old approach of using the native resources and doing our own rendering, we actually call the native rendering system to draw the widgets for us (on Windows, this is done through the UXTheme API). This means that we are finally able to achieve true native fidelity for these components because, by definition, our components are drawn in the same way that the native components are."

    For your readers, an other useful quote from that blog entry is:

    "It is also worth mentioning that we are still aggressively pursuing OEM deals. We have distribution agreements with over 20 PC manufacturers, including all the top 10. They have all been helping us test Java SE 6 as they prepare their new lines of Vista-based systems for shipment, so that Java SE 6 will just be there on any of their new systems running Vista."

    That is EXCELLENT. My last question is about apple. I'm not a Mac user yet but have been considering it. I see that they maintain their own JVM and I've heard that it sucks. What sucks about it, and why doesn't Sun's JVM run on it? Sun's JVM runs on everything BUT Mac OSX? I would say it's more important to run on Mac than Linux when talking about desktop apps, though Linux is still very important. I doubt Apple has gone out of their way to improve their JVM like Sun has been doing.

    Posted by: rdelaplante on May 21, 2007 at 05:26 PM

  • "jwenting, If nothing can be done about virus scanners, then Flash wins." The problem is people still believing that Java classfiles are prone to being virusses, so AV software considers them potential risks and scans all of them. There's no real technical reason for it (though I assume you could use an applet for a phishing scam). It's psychological, aftereffects of the security problems with JNI and some early VMs nearly a decade ago.
    " Java is _starting_ to become cross-platform" It always has been. The only thing holding back acceptance (NOT applicability) on Linux has been politics and overzealous license fanatics, not technology.
    "Like with WebStart, it should be easy to store data across applet sessions. " I kinda disagree, unless maybe for signed applets. The sandbox is there for a very good reason, security. By letting data leak between applets you give up a good deal of the things that make applets secure.
    "A RAD environment for GUIs. " There are quite a few of those already. Netbeans, JBuilder, IntelliJ, etc. etc.
    "Once you have #1, on Windows it needs to allow ActiveX embedding (although with #1 perhaps you can leave this critical functionality to third parties) " AFAIK third parties have already taken care of that years and years ago.
    "Replace JNI with something that appears to bind to native code more directly for integration with all the other desktop infrastructure out there. " Why the heck would you want that? With platform independence ever more important why are you advocating making it easier to code platform dependent code (which would only lead to more complaints that "Jav zux" and "Jav no is platform independent" by people who now only get stuck coding fixed Windows paths into their applications and wondering why they don't find the files on Linux...
    "The end-user shouldn't know they're using Java. " And quite often they don't, which makes them think there are no Java applications on the desktop... Flash is recognisable instantly, so people do realise they're using it and think Flash is far more important than anything else. Check out the forums, someone was asking what IntelliJ was written in a few days ago and wouldn't believe the answer that it's a Swing application. In his mind Java applications are always slow and ugly, a leftover from AWT that's very hard to get rid of.

    Posted by: jwenting on May 21, 2007 at 11:17 PM

  • Nice post - looking forward to the Consumer JRE.

    Are there any plans to allow the replacement of the standard applet splash screen?

    In my opinion, a major contributor to perceived slow starting of an applet is the Java logo presented at load time. It just makes the whole initialisation process so obvious. If I can be a bit more creative in keeping my users informed of progress rather that having a big orange blob coercing them to visit all the fun things at java.com then I'll be very happy.

    Posted by: lowecg on May 22, 2007 at 03:46 AM

  • Thank you for these good news.
    I have an other proposal : JDK could provide a tool that would build directly install files of a Java application for Windows, Linux and Mac OS X. These install files would contain the application files and a JRE for the target system (excepted for Mac OS X, where the JRE is always available).
    These files would be big on Windows and Linux, but most people won't care as fast Internet connections become more and more available. By the way, a lot of people are used to install an application thanks to an installer for their system, not by clicking on a JNLP link !

    For Windows, that tool could be based on Launch4j and Inno Setup.
    For Mac OS X, you just have to create an .app directory containing the required files for a Java application and then a .dmg file.
    For Linux, I let people propose a solution.

    Posted by: puybaret on May 22, 2007 at 04:16 AM

  • "Warm start times are reasonable these days, due to plenty of ongoing work on improving performance, in addition to machines simply getting faster over Java's lifetime. A simple application or applet will take 1-2 seconds to start up, which is in the same ballpark as standard web pages and within an acceptable range for the user"


    Mmmm... except that people compare. (especially concurrent solutions).
    People compare F3/javaFX with Flash for instance: for the moment, 1-2 seconds of warm startup is very visible for the user.


    I pretty understand this is definitely another challenge starting code based on very generalist Java VM compared to a much simpler and specialized Flash VM. Perhaps we could say "simple apps" like interactive ads will stay in Flash for a long time, and place for JavaFX/F3 is for "non micro apps" which anyway take +3 seconds downloading, even before starting.

    Posted by: djocal on May 22, 2007 at 06:29 AM

  • I have to disagree with your assessment of the startup time issue, Chet.

    "For example, a recent version of Java SE 6 that I have sports an rt.jar file of over 40 MB alone...At the OS level, this means that all of these megabytes (or, rather, tens of megabytes) have to be read from disk, which is a very (to use a technical hardware term) slow operation."

    It IS our problem: we have 40MB of bloat in rt.jar. Scripting engines, web servers, xml parsers, multimedia drivers, etc. If we could get back to rt.jar actually being the ESSENTIAL REQUIREMENTS, we might not have to load 40MB at startup!

    Posted by: cmreigrut on May 22, 2007 at 11:24 AM

  • Great stuff!!!

    It is a great step in the right direction.

    But there is another big problem (that will get bigger if the Consumer JRE caches on) that I didn't hear anything about it for the last while. The one application - one VM approach, specially when the VM is so memory hungry

    Any news about the MVM (http://mvm.dev.java.net/) or a similar solution?
    Cheers
    JD

    Posted by: jdavi on May 22, 2007 at 05:59 PM

  • Sorry if I say something awfully stupid, because I'm still a newbee but:

    Wouldn't it be possible to only pack those parts of java you need with an application so that you don't load all the unused stuff? This would certainly reduce those ugly loading times.

    For example something that would "configure" the jvm loading, like "ok, load only these parts because I don't care about the rest".

    About the idea of a background service to start java faster, no thanks, as mentionned previously, justched.exe is already too much :/

    And for Nimbus, I think it's really nice looking, glad it's available soon ;)

    Posted by: lechtitseb on May 23, 2007 at 03:01 AM

  • jwenting: "Like with WebStart, it should be easy to store data across applet sessions. " I kinda disagree, unless maybe for signed applets. The sandbox is there for a very good reason, security. By letting data leak between applets you give up a good deal of the things that make applets secure.

    I didn't say across applets, I said across applet sessions. That is if my applet runs on your computer today, I should be able to save data that can be used when the same applet runs on your computer tomorrow.

    Posted by: neilweber on May 23, 2007 at 12:01 PM

  • Problem: Our application is too slow starting up.

    Solution: Let's just have a service in the background continuously and repeatedly starting it up (or at least perform the most expensive part of the startup) AT ALL TIMES, whether it will ever be used or not.

    I generally have a high esteem for the Java Engineering team, but this Quickstarter has to be one of the dimmer ideas ever to see the light. It seems to assume that oh-so-important Java has some priviledged right to the disk cache and can therefore constantly throw out other programs' files from it and replace them with its own. It would do this even while those other programs are actually being used and Java is not. By acknowledging that the disk cache is an important factor for program performance, it accepts that the performance of all other programs will be significantly degraded by having Java installed.

    Instead of for just being slow, Java will be known for making the whole machine slow, as soon as it is installed. That problem is an order of magnitude bigger than just being slow and causing it is sure to get yourself banned by corporate IT teams and hated by consumers. The first order of business for any software wanting to add whizzbang features still needs to be: Do no harm to whatever was working fine before it came along.

    To have faster startups I don't think there is an alternative to try ever harder to make your software lean and only read the bytes from disk you're truly going to need. So I'm with cmreigrut on this: If you see a 40MB file being read from disk, don't just take this as a god-given fact and blame the OS for not doing it faster. Maybe you just need to analyze harder what the 40MB are being used for and what could possibly be spared.

    Quickstarter is a Non-starter in my book.

    Posted by: loeli on May 27, 2007 at 01:24 PM

  • That will be a good start.
    - Webcams and microphones are now ubiquitous, I'd like to be able to use these within applets without the user having to manually install JMF, it should be downloaded as just another "module", Flash has had this for a while now.
    - Likewise for Java3D and other extensions to the core JRE.

    Posted by: fatbatman on May 29, 2007 at 12:24 PM


  • The improvements in the installer are certainly welcome and needed, but I don't think you've gone far enough.

    We want a web page containing applets or JNLPs to be as painless as possible to Java-less users. This means the installer must be incredibly minimal. No asking which directory should be used for installation; no asking which components to install. There must, in fact, be only one step to installation. Anymore than that, and users will feel like something is being "done" to their computer, and they won't feel comfortable proceeding with the installation steps. I'm not saying it's reasonable behavior; I'm just repeating my understanding of the mindset of non-technical users, as it's been repeatedly described to me.

    In the screenshot of the improved install dialog, the command buttons' texts are "Decline License" and "Accept License". They should be "Decline License" and "Install Now". Limit it to one step, or users will feel uncomfortable.

    Posted by: vgr on May 29, 2007 at 02:36 PM

  • Agree with everything vgr said.

    Posted by: loeli on May 30, 2007 at 05:00 AM

  • Agree also with vgr.
    Make it a nice modern picture plus a simple nice round button like "Go man !".
    If Sun people could be inspired by all the mashup web service they would benefit from it.
    why?
    Because all those "web services" have all in comun a few things:
    - They are incredibly "Nice looking",
    - They are very simple to use : reduce dramaticly the idiotic questions like "de you accept to do that ", if they fell 99% of people will click yes.
    no
    - The all ultra minimize the legal smalltalk that interst 0.0001 % of users

    Chet Haase : Go for it ! Make java jre a simple, neet and quick service

    It is the projest jabva plaform needs dramaticaly today.


    Posted by: tmilard on May 31, 2007 at 02:09 AM

  • Awesome list Chet. Sure all we were waiting for those features to be available. I would suggest to include a request that has been going on for more than 2 years (I believe), that is to have the Java plugin for 64 bits platforms, this will be really useful for people like me that need to deploy java applications on 64bit clients.

    Posted by: mvillarroel on May 31, 2007 at 12:51 PM

  • Did the Deployment Toolkit find it's way into Java 6 update 2? if so where is it, I couldn't find it or any documentation on it. I'm just trying to auto-install on Firefox...

    Posted by: fatbatman on July 12, 2007 at 08:29 AM

  • I'm extremely happy that Sun is finally looking at the requirements of the desktop user.

    The only thing I'm really wondering is whether these improvements will be made available to all platforms that Sun's JRE supports (Solaris, Linux and Windows)? Right now the installer for non-RPM Linux is nothing more than a self-extracting archive. This doesn't even make the necessary links for using Java plug in in browsers by default. We are having to create the symbolic link manually.

    Generally Linux distributors do not always provide the latest JRE in their repositories. So the installer for Linux must be modified so that Linux users are not denied of these improvements. At least, quick starter and Java kernel facilities must be made available on Linux without any complex setup instructions which will scare new users (remember Linux is no more a OS meant only for the geeks).

    If not GPL of Java may not really help it to replace Flash on Linux. Flash has a really simple method to install and configure the Flash plugin for browsers on Linux.

    Posted by: chandru_in on September 21, 2007 at 02:57 AM

  • Seems that it does't work fine on Windows Vista.By the way,the language of my system is Simplified Chinese.

    Posted by: shepherd108 on April 14, 2008 at 06:38 AM

  • IMJames , A bolish statement if I do say so myself.

    Users also want to see the backend evolve as well , like any project they want options not limitations.

    If all you give to someone is eye candy , eventualy you will give them a tooth ache.


    Regards,
    XAVIER T P.

    Posted by: xaviertpnolan on May 15, 2008 at 04:47 PM

  • Back to Home
    Welcome to tangjewelry.com Our tangjewelry.com is a Wholesale Jewelry website where

    you will find the highest quality Jewelry conveniently that with

    outstanding costume jewelry, designer jewelry and body jewelry.Otherwise,Yahoo! we have our special jewelry stores widespread distribute in china.Since2004,Yahoo! our original website aypearl.com has established long-term cooperation

    relationship with thousands of customers from dozens of countries. Fashion jewelry 99% of costumers expressed their satisfaction with our products and service.
    Now our fresh website tangjewelry.Google com also looks forward to your patronageGoogle Canada In this potential website, you will find Silver Jewelry,Beaded jewelry,Jewelry Boxes,Swarovski crystal jewelry,precious stone jewelry,Materials ofjewelry supplies,imitation jewelry supplies ,Glass jewelry ,Pearl jewelry,Turquoise Jewelry,Wire jewelry,handcrafted jewelry. Yale-Yale, bridal jewelry,discount jewelry,vintage jewelry,Jewelry scaleseasily. We may as far as possible meet your need. Good jewelry can give you good mood and also can improve temperament.烛光
    Our sincere desires will build an ordinary but not stodgy life for you.Google Canada Now, let us start a section of beautiful jewelry journey!Jewelry Wholesale.
    pasing OICQ:80810487 博客

    找人网
    网赚
    成人用品
    性保健品
    性用品
    基因检测
    签证信息
    烛光


    烛光

    饰品
    烛光
    小饰品
    饰品批发
    水晶
    饰品
    小饰品
    烛光
    饰品批发
    chinese
    Google UK
    Wholesale Jewelry
    pearl jewelry
    learn chinese
    Jewelry
    Academic exchanges
    烛光
    Medicine
    Jewelry Wholesale
    Wholesale Jewelry
    Jewelry Wholesale
    Yahoo!
    Pharmaceutical
    Jewelry Wholesale
    Wholesale Jewelry
    Jewelry Wholesale
    jewelry stores
    designer jewelry
    烛光
    Google
    body jewelry
    costume jewelry
    silver jewelry
    beaded jewelry
    jewelry boxes
    swarovski crystal jewelry
    Materials ofjewelry supplies烛光
    Google Canada
    precious stone jewelry
    imitation jewelry supplies
    glass jewelry

    turquoise jewelry烛光 wire jewelry fashion jewelry unique handcrafted jewelry Yale-Yale bridal jewelry discount jewelry vintage jewelry烛光 jewelry scales Biological Chemical Polytechnic Material Economy English Retrieval English directory Arts News Automobiles Fooddrink烛光 Business Legal Finance health Exercise Slimming help 烛光Plasticexperts Beauty guidance Health Alert Bulletin Parental guidance Mental health A healthy diet烛光 Google China。

    Posted by: tangjewelry24 on May 21, 2008 at 04:15 AM

  • My web :http://www.yufuzi.com/

    Posted by: pasing on May 22, 2008 at 07:32 PM

  • The fourth wow power leveling latest game in wow power leveling Warcraft series is ‘wow power leveling’. Also known as wow power leveling, it represents a wow power leveling multiplayer online wow power leveling game, the best of wow power leveling kind. Initially, it was wow gold it be released in 2001, but wow powerleveling was delayed wow powerleveling 2004, thus wow powerleveling the 10 years ofwow powerleveling franchise of thiswow gold series. The world of warcraft power leveling was not world of warcraft power levelingfulfilling, because wow power levelproblems with wow power level server’s stability power leveling wow performance occurred, but power leveling wow game still power leveling wow a financial success powerleveling wow the most powerleveling wow game of its kind. The number cheap wow power leveling users that play Maple Story mesos, exceeds 8.5 MapleStory mesos, worldwide.As a form ms mesos,recognition for mesos,outstanding popularity, the game SilkRoad Gold, received aSRO Gold, of awards. Now the question eq2 plat, why is eq2 gold, game eq2 Platinum, popular? For anyoneEverQuest 2 Platinum, played the previous EverQuest 2 gold, and EverQuest 2 plat, already initiated lotro gold, the mysterious world lotr gold, the breathtaking Lord of the Rings online Gold, this Rolex Replica nothing but an Replica Rolex adventure that continues the story of ‘Warcraft III: Frozen Throne’, four years after conclusion, in the world of Azeroth. The game is online role-playing, the previous versions being online and offline strategy games. The major thrills and unique features are present as in every Blizzard game.

    Posted by: liwan on May 27, 2008 at 02:37 AM

  • dofus
    dofus kamas
    dofus kamas
    dofus
    lotro
    lotro gold
    buy lotro gold
    lotro
    lotro gold
    buy lotro gold
    guild wars
    guild wars gold
    buy guild wars gold
    guild wars
    guild wars gold
    buy guild wars gold
    guild wars
    guild wars gold
    buy guild wars gold
    maplestory mesos
    maple story mesos
    maple story
    maple story
    maple story mesos
    maplestory mesos
    maple story
    maple story mesos
    maplestory mesos
    runescape
    runescape money
    buy runescape money
    runescape
    runescape money
    buy runescape money
    runescape
    runescape money
    buy runescape money
    runescape
    runescape money
    buy runescape money
    buy runescape money
    runescape money
    runescape
    runescape
    runescape money
    buy runescape money
    runescape
    runescape money
    buy runescape money
    runescape
    runescape money
    buy runescape money

    Posted by: maplestory on June 01, 2008 at 02:32 AM

  • Our web is Wholesale Jewelry|Jewelry Designer |
    precious stone jewelry|
    body jewelry|
    costume jewelry|
    silver jewelry|
    beaded jewelry|
    swarovski crystal jewelry|
    glass jewelry|
    pearl jewelry|
    turquoise jewelry|
    wire jewelry|
    fashion jewelry|
    unique handcrafted jewelry|
    bridal jewelry|
    tour jewelry|
    discount jewelry|
    vintage jewelry|
    jewelry scales|
    jewelry boxes|
    imitation jewelry supplies|
    Material ofjewelry supplies and etc. Our
    Jewelry|
    Wholesale Jewelry Blog
    Jewelry stores|
    Blog.To know more details about
    Jewelry Wholesale|, please enter our web:
    www.aypearl.com
    beads jewelry
    水晶|饰品批发
    pasing oicq:80810487
    Our Email: Tangjewelry_001#yahoo.com

    Posted by: pasing3 on June 19, 2008 at 03:09 AM

  • phone sex
    phone sex
    phone sex
    phone sex
    phone sex
    phone sex
    phone sex
    phone sex
    phone sex
    phone sex
    phone sex
    phone sex
    mootzie

    Posted by: cgspender on June 19, 2008 at 05:07 AM

  • _

    Posted by: cgspender on June 19, 2008 at 05:07 AM

  • nice site
    phone sex
    phone sex
    phone sex
    phone sex
    phone sex
    phone sex
    phone sex
    phone sex
    phone sex
    phone sex
    phone sex
    phone sex
    mootzie

    Posted by: cgspender on June 19, 2008 at 05:08 AM

  • I'm so grateful for all that you've done. Thanks again for that nice essay and I would be most grateful if you would send me the latter ones....


    mirc
    mırc
    mirç
    mırç
    mirc indir
    chat yap
    islami sohbet
    dini sohbet
    kelebek
    kelebek sohbet
    kelebek mirc
    kameralı mirc
    kameralı sohbet
    chat yap
    çet
    çet odaları
    sohbet kanalları
    sohbet odaları
    yarışma
    sevgili
    arkadaş
    arkadaş ara
    arkadaşlık

    Posted by: jklmno on June 19, 2008 at 09:23 AM

  • Thanks so much for this! This is exactly what I was looking for.
    ///////////////////////////
    phone sex phone sex phone sex phone sex phone sex phone sex phone sex phone sex phone sex phone sex phone sex phone sex mootzie
    and other video to SWF, FLV ecoded by Java.
    May it Gadgets helpful To your lifestyle... Enjoy!!

    Posted by: cgspender on June 19, 2008 at 10:05 PM



Only logged in users may post comments. Login Here.


Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds