Although developing full-featured desktop applications with Java has become a manageable task and performance has improved greatly, developers still face obstacles that make it difficult to get their Java applications more widely accepted. One problem with many Java standalone applications is a lack of integration into the desktop environment, which frequently alienates users.
Seamless integration into the Windows environment means that the average user will not notice from the installation and launch process that the application is written in Java. To achieve this, exe4j creates an application-specific native launcher that serves as a bridge between the Java application and the Windows desktop environment. It's responsible for:
Launching the Java application
To the user the launcher is the application, because this is what he or she will double-click on to start the application.
Installation and Usage
exe4j is available only for the Windows platform, which makes sense since testing a finished application requires Windows. Installation is straightforward, just like installing any other standard Windows software. In fact, the exe4j launcher was created using exe4j itself, so the installation and launch process gives you a little taste of how a launcher created by exe4j works.
The user interface is organized as one big wizard. It looks very polished and professional, and can easily compete with native GUIs. Nevertheless, some people with high screen resolutions will probably wish for a slightly larger font.
An exe4j project is divided into nine steps.
1. On the welcome screen, you can open a previously saved project and enter the license information to unlock the full version.
2. On the second screen, exe4j asks for the product name and the directories used for the project.
3. exe4j distinguishes between the console and GUI application (just like java.exe and javaw.exe). For GUI applications, the output can be redirected into a log file, and for console applications the output will be sent to the console.
For the icon, an icon file (*.ico) can be specified. One feature I'd like to see here is a way to use a .png or another type of graphic file for the icon, since many people don't have an application that creates Windows icon files.
4. exe4j gathers the Java-related information, such as main class, classpath, VM parameters, and command-line arguments. The classpath generation is flexible; for example, it allows you to scan directories for .jar files at runtime.
5. Afterward, exe4j shows its real strength when you determine the JRE search sequence and JRE version requirements. You can configure your executable to search the Windows registry for installed JVMs, evaluate environment variables, or look for a JVM in a directory relative to your executable. The last method also enables you to bundle your own JRE with the application.
6. Now you can determine whether your executable will show a native splash screen. After choosing a bitmap file, you can add some lines of text to the splash screen that can be updated during the startup of your application to provide further feedback (see Figure 1).
7. exe4j's error handling can be internationalized. You can choose a predefined message set or enter your own messages if your desired language is not present.
8. Now that all necessary information is gathered, exe4j generates the executable.
9. In the final step, you can save your configuration for later use or for integration within an automated build process like Ant.
Most of the steps are self-explanatory, but if you get stuck, the exe4j documentation will probably solve your problem. It comes in HTML format, and while working with exe4j it's accessed through JavaHelp. All the wizard's steps are explained in detail, which should make it easy for a developer to finish the first project without problems. In addition, it contains some information for experts, such as using exe4j from the command line or with Ant. One thing I noticed about the documentation is that the small demo application that's included with exe4j is not mentioned at all.
Since the launcher that exe4j creates is a normal Windows application, the finished application can be distributed using any Windows install tool. In addition, to completely hide from the user that an application is written in Java, the required JRE can be bundled. This way, installing and launching the application will be exactly the same as installing and launching a native Windows application. Moreover, exe4j does not touch the application's bytecode, which means that platform independence will not be sacrificed.
exe4j keeps its promise to integrate Java applications seamlessly into the Windows environment. It has an intuitive GUI, and all in all looks like a solid piece of software. If you're developing a standalone desktop application with Java and some of your customers are using Windows (which is more than likely), I recommend downloading the evaluation version to see how much value it can bring to your customers.
Platform: JDK 1.3 and higher on all Windows platforms
Pricing: $69/$99 (single developer license with Basic/Gold support)
$690/$990 (site license with Basic/Gold support)
Windows XP on Pentium III 1GHz, 256MB RAM, 20GB hard disk
Windows 98 on Celeron 450MHz, 128MB RAM, 6GB hard disk
Target Audience:Java programmers