Running Mustang

These days I am running a beta of IntelliJ IDEA on a preview release of JDK 1.6.0 (also known as Mustang). Because I use both in my daily work and play, I like to see how the new versions are going to be while I can still have some influence on their implementation. Here is how I do it.
Normally IntelliJ IDEA does not run on a non-supported JDK, so It is necessary to disable the JDK version checking it performs. This is done by editing the idea.properties file that can be found in the bin directory inside IDEA’s installation directory. Add the following line:
idea.no.jdk.check=true

Furthermore, the environment variable IDEA_JDK or JDK_HOME should be set to point to the location where JDK 1.6.0 is installed. This is the JDK IntelliJ IDEA will use to run itself on. If IDEA_JDK is defined, the value of that variable will be used, otherwise IntelliJ IDEA tries to use JDK_HOME. IntelliJ IDEA can now be started with the idea.bat file on Windows or idea.sh on Unix and will be running on Mustang. On the Mac the procedure is slightly different.

Let me tell you first about the bad sides to running IntelliJ IDEA on Mustang, before I get to the good parts. Disadvantage number one, it is unsupported. Any bugs you find in IntelliJ IDEA running on Mustang will most likely not be fixed. At least not before JDK 1.6.0 is released, probably in October 2006. Disadvantage number two, Mustang still has bugs. For example until Mustang build 94, which I am currently using, closing all file editor tabs needed to be avoided at all costs. An exception was thrown and it was not possible anymore to open new files until IntelliJ IDEA was restarted. Currently the most serious bug I know about is slow scrolling in the IntelliJ IDEA editor and diff windows.

And now some advantages. Mustang contains a fix for the infamous “grey rect”. On Windows and Linux a Java frame is no longer cleared with a grey background every time it is obscured and revealed, but it is redrawn from a back buffer containing the frame’s previous contents. The fix has the psychological effect of making IDEA appear more responsive and it looks much better too. Mac users don’t need this fix, as any Java application already looks much better there than on the other platforms.

IntelliJ IDEA with visible gray rect problems

Another Mustang feature IntelliJ IDEA can make use of is the splash screen functionality. Mustang’s Java application launcher has a new command line option which tells it to show a splash screen image while it is starting up. This is especially nice when starting IDEA with the bat file, because the splash screen appears almost instantaneously, while using an older JDK the splash screen takes several seconds to show up.

IntelliJ IDEA logo

To use Mustang’s splash screen with IntelliJ IDEA, use a zip application to open the icons.jar file. This file can be found in the lib directory in the IntelliJ IDEA’s installation directory. Extract from this archive the file idea_logo.png and place it in the IntelliJ IDEA’s bin directory. This is the image that will be used as the splash screen. Now edit the file idea.vmoptions and add the following line:
-splash:idea_logo.png

And that is it. Start IntelliJ IDEA with idea.bat and the splash will appear immediately. After several seconds it will be replaced with the IntelliJ IDEA’s normal splash screen, which also shows you your license information.

Technorati tags:, , ,
This entry was posted in Tips & Tricks. Bookmark the permalink.

14 Responses to Running Mustang

  1. Nice post summarizing the experiences user posted in the forums. Just a note, JDK7 has been officially launched, and IDEA can be run with it as well, thus making JDK6 an ‘old’ one :)

  2. t800t8 says:

    Nope, IDEA tries to find JDK_HOME or IDEA_JDK, not JAVA_HOME.

  3. BasLeijdekkers says:

    t800t8, of course you are correct, I don’t know what I was thinking writing that. I have corrected the post, thanks for the pointer.

  4. t800t8 says:

    Bas,

    It’s not a big problem. I guess that you think about improving IDEA’s performance when you were writing this blog’s item. It’s the thing IDEA users are really care ;-)

  5. AlexL says:

    You can also add the idea.no.jdk.check to the idea.vmoptions file with “-Didea.no.jdk.check=true”.

    Also, if you install the IDEA VM Options plugin, you can preserve the settings of idea.vm.options between upgrades of EAP releases. The only change I have to make when I upgrade to a new EAP is to add the JDK_HOME to idea.properties file.

    These are the options I have configured.

    -Xms64m
    -Xmx768m
    -XX:MaxPermSize=99m
    -ea
    -agentlib:yjpagent
    -XX:+UseParNewGC+UseConcMarkSweepGC
    -Didea.no.jdk.check=true

  6. Gary says:

    Bas,
    I’ve been using mustang with IDEA too for a little while now and a couple of days ago I figured out where the problem is with the slow scrolling. It has something to do with the popup windows in the editor like the light bulb intentions and alt+insert generator menus. The slow scrolling happens for me every time I start IDEA or have it minimized for a while. As soon as one of the popup menu’s is shown, the scrolling problem immediately disappears.

    This was a really frustrating bug and I constantly found myself distracted from my coding trying to figure it out. I really liked the responsiveness I got with mustang but I was almost ready to stop using it because of the scrolling. As a workaround now, I just do a quick alt+insert and esc when I open an editor window and I have normal scrolling every time.

    Give it a try and let me know if it works for you.

    Gary

  7. Eugene Vigdorchik says:

    Bas,
    I really love this blog entry. It perfectly summarizes what I feel about porting Idea to Mustang ASAP. The only thing I would like to mention is that we are very interested in Idea bugs with Mustang, and we are also fixing them now, actively collaborating with Sun (you can find some evidences in JIRA or in Sun bug database)

  8. t800t8 says:

    Bas,

    Can you add configuration for anti-aliasing to this blog entry? I think it will be better :-)

  9. BasLeijdekkers says:

    Gary, I will try it out, thanks.

    Eugene, thank you for your kind words. I will report any bugs I find.

    t800t8, I might if I knew how. Subpixel antialiasing should be enabled by default on jdk 6, if it is enabled in your OS, but it is not in IntelliJ IDEA as far as I can see. I also do not see any difference when setting the system property awt.useSystemAAFontSettings to various values.

  10. Mark Jones says:

    I just thought I would say that IntelliJ 5650 was v.responsive under Java Mustang, however, after picking up IntelliJ 5755 I once again have a 5-15 second wait when into IntelliJ. I hope this is fixed in the next build!

  11. Very nice. This means that on Windows we have to use idea.bat instead of idea.exe. One downside for some people is that you have to keep that Command Prompt open. One way around that is is to modify the idea.bat to use javaw.exe instead of java.exe, and add a start

  12. Why are you saying that one has to use idea.bat? I’ve added the IDEA_JDK variable, and starting with idea.exe failed saying that idea required jdk 1.5, then I added the

  13. Richard Martin says:

    I found that I *did* have to use the idea.bat file, but could get around it by renaming the IntelliJ/jre/jre/ folder (or deleting it, if you feel brave). The idea.exe then started up using (presumably) the default JRE, which was Java 6 in my case.

    I’ve not noticed any adverse side-effects to doing this, although future IntelliJ updates may well revert this change…

  14. Victor Ott says:

    2012

    This blog entry still is valid. Just by setting the IDEA_JDK (e.g. IDEA_JDK=C:javajdk7x32) environment variable I was able to get IDEA running with Java7u5 on WinXP, and on another machine (WinXP x64) the IDEAx64 with JDK 7u5 x64.

    Note: IDEA_JDK points to a invalid directory, IDEA starts with embedded JRE without further complaining.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>