The Java Sketchbook Java Sketchbook: The HTML Renderer Shootout, Part 2

by Joshua Marinacci
06/14/2004


Contents
Commercial HTML Renderers
   WebWindow
   Clue Web Browser
   WebRenderer
   Espial Escape
   Grand Rapid
   IceBrowser
Renderers That Didn't Make the Cut
   Java Extensible Web Browser
   X-Smiles
   Massive
   BlackWood WebClient
   Calyente
The Rest
Conclusion

In part one of this series, we looked at five free or nearly-free Java HTML renderers, evaluating them in terms of support for modern standards (XHTML and CSS1/CSS2 support), support for legacy pages, hackability, and speed. In this second part, we turn our attention to commercial products. We still have the same requirements: the code must be callable from Java (meaning the product is either 100 percent Java or a Java wrapper to native code), and the package must show some amount of recent activity.

We evaluated each against a control: a recent build of Mozilla Firebird, running on Windows. Its handling of the front pages of Amazon, Slashdot, and the CSS Zen Garden are shown in part one. Also see part one for a discussion of why these sites were used as the controls.

Commercial HTML Renderers


WebWindow

Company: Javio
License: Commercial, downloadable demo
URL: www.javio.com/webwindow/webwindow.html
Type: 100 percent Java

This 100-percent-Java web browser comes in two versions, one for Swing and one for AWT (mainly for support of older JDKs). It provides basic customization and access to the underlying document tree. JavaScript support is provided via Rhino, Mozilla's JavaScript-in-Java project, and it has built-in support for searching and printing. It doesn't look too hackable in terms of messing with the internals, but there are a lot of callbacks for different events.

The renderer is quite fast, and it has a nifty zooming feature that scales both text and images. It handled Amazon and Slashdot (see Figures 4 and 5) very well, but choked on most of the CSS Zen Garden (as you can see in Figure 6). The speed for Hamlet was almost as fast as a native browser. For a Java browser, it's quite good. I would recommend it for anything that doesn't require advanced CSS. Hopefully they will continue to update it in the future.

Click for larger view
Figure 4. Amazon in WebWindow (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 5. Slashdot in WebWindow (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 6. CSS Zen Garden in WebWindow (You can click on the screen shot to open a full-size view.)

Modern Compliance: Weak
Legacy Web: Good
JavaScript: Yes (via Rhino)
Hackability: Decent
Speed: Good


Clue Web Browser

Company: NetClue
License: Commercial, downloadable demo.
URL: www.netcluesoft.com
Type: 100 percent Java

The Clue Web Browser is a completely Java-based browser designed primarily for the device (PDA and set-top box) space, though their desktop version runs quite well. My tests show it to be quite speedy, and it renders standard web sites very well, almost identically to Netscape and IE. They sell several versions, from Basic to the X-Edition, which includes advanced XML, XSLT, and XHTML. Support for JMF and SVG (with extra plugins) is also nice. They claim to support CSS2, but when I brought up the Zen Garden, it only showed the default layout with no style. This may be an artifact of the way the Zen Garden degrades to older browsers, which probably wouldn't be an issue in a custom application.

On the hackability scale, Clue provides callbacks for virtually every event and has an API for writing plugins and new scripting languages. Net Clue has also implemented direct DOM access, allowing developers to generate and manipulate content entirely from within Java. JavaScript 1.5 support is provided by Rhino.

All in all, I would say that Clue is a quality commercial implementation. My only wish is for greater support of forward-looking layouts with complete CSS2 support.

Figures 7, 8, and 9 show NetClue's rendering of our control sites.

Click for larger view
Figure 7. Amazon in NetClue (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 8. Slashdot in NetClue (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 9. CSS Zen Garden in NetClue (You can click on the screen shot to open a full-size view.)

Modern Compliance: Decent
Legacy Web: Excellent
JavaScript: Excellent
Hackability: Excellent
Speed: Excellent


WebRenderer

Company: Jade Liquid
License: Commercial, downloadable 30-day trial version
URL: www.webrenderer.com
Type: Native wrapper

WebRenderer is a wrapper library from Jade Liquid Software. They support Windows, Mac OS X, Linux, Solaris, and the Java Desktop System. The wrapper can launch the real browser internally and gives the developer access to virtually any kind of event you can imagine. There is a slew of preferences to control the browser, but since it's really Mozilla or IE underneath, you can't extend it very much. For preview applications, however, this should be fine, and I found it quite easy to create a demo program.

Figures 10, 11, and 12 show our test pages as handled by WebRenderer.

Click for larger view
Figure 10. Amazon in WebRenderer (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 11. Slashdot in WebRenderer (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 12. CSS Zen Garden in WebRenderer (You can click on the screen shot to open a full-size view.)

Modern Compliance: Excellent
Legacy Web: Excellent
JavaScript: Excellent
Hackability: Decent
Speed: Excellent

Espial Escape

Company: Espial
License: Commercial
URL: www.espial.com
Type: 100 percent Java

Escape is an all-Java web browser for embedded devices, though they have a downloadable demo for Windows. It supports standard web pages very well, and had support for some of the advanced layout in the CSS Zen Garden: a few of the images were off, but it performed pretty well. Speed on the Hamlet test is quite good (even with anti-aliasing turned on by default). Though highly configurable, it's not clear how useful it would be for embedding in a Swing application. Still, for a small device target, its features are quite impressive. You can create different profiles to lower your memory usage or increase features, (and running a 300K browser in 3.6MB is just plain cool). Once it's licensed, you can hack it to do pretty much anything you want, even adding JNI hooks to access native device features (such as the Address Book on a PalmOS device). If you need an embedded browser for small devices, then this is definitely one to check out.

Figures 13, 14, and 15 show Escape's rendering.

Click for larger view
Figure 13. Amazon in Escape (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 14. Slashdot in Escape (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 15. CSS Zen Garden in Escape (You can click on the screen shot to open a full-size view.)

Modern Compliance: Some
Legacy Web: Excellent
JavaScript: Yes
Hackability: Excellent
Speed: Excellent


Grand Rapid

Company: Grand Rapid
License: Commercial (free download with registration)
URL: www.grandrapid.com
Type: 100 percent Java

Like most of the commercial renderers reviewed here, Grand Rapid provides excellent support for the general web and comes with a variety of customization features. Speed is good and standards support for HTML, CSS, XHTML, and JavaScript are of production quality. It is targeted for embedded use with a focus on speed and low memory overhead, though it is certainly capable on the desktop.

Figures 16, 17, and 18 show Grand Rapid's rendering of our sites. The only glaring error was the advanced CSS in the Zen Garden (Figure 18). It failed completely, showing only a blank page. Other than that, it's top-notch.

Click for larger view
Figure 16. Amazon in GrandRapid (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 17. Slashdot in GrandRapid (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 18. CSS Zen Garden in GrandRapid (You can click on the screen shot to open a full-size view.)

Modern Compliance: Poor
Legacy Web: Excellent
JavaScript: Excellent
Hackability: Good
Speed: Excellent


IceBrowser

Company: IceSoft
License: Commercial (free download with registration)
URL: icesoft.com
Type: 100 percent Java

IceBrowser is one of the oldest Java web browsers and has a mature product set. You can purchase either the full browser or a slimmed-down version (called ICEReader) for when you don't need security or dynamic capabilities. IceSoft provides a complete SDK for total customization, and their product has been used in several web integration and development tools. The speed is good, and rendering on the general web is excellent. Like every 100-percent-Java browser in this article, it has problems with the CSS Zen Garden, but it did better than all of the other renderers. I personally tested their product about three years ago and found it lacking in rendering fidelity; today, however, it's an excellent product that I would recommend if it fits your technology and licensing needs.

See Figures 19, 20, and 21 for an idea of IceBrowser's accuracy.

Click for larger view
Figure 19. Amazon in IceBrowser (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 20. Slashdot in IceBrowser (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 21. CSS Zen Garden in IceBrowser (You can click on the screen shot to open a full-size view.)

Modern Compliance: Decent
Legacy Web: Excellent
JavaScript: Excellent
Hackability: Excellent
Speed: Excellent


Renderers That Didn't Make the Cut


Java Extensible Web Browser

Company: N/A
License: Apache Software License
URL: sourceforge.net/projects/jxwb
Type: 100 percent Java

This is a very new project on SourceForge. I did not include it because I wasn't able to get it to run. Perhaps with the next release.

X-Smiles

Company: Telecommunications Software and Multimedia Laboratory at The Helsinki University of Technology
License: Open source
URL: xsmiles.org
Type: 100 percent Java

I didn't include X-Smiles because, well, it's not really a web browser. They call it "an open XML browser for exotic devices," and it supports a range of standards from XSLT and XHTML to XSLT-FO, X3D, and SVG. Pretty much any XML-based rendering technology is a target for X-Smiles. As a research project at the Helsinki University of Technology, it is constantly improving. It now supports multiple XML languages in a single document via XML Namespaces. Since it only supports valid XHTML with CSS, pretty much any normal page on the web will look horrible. The built-in demos looked great, but the CSS Zen Garden only loaded the text, showing that they still have work to do. Since building a complete web browser really isn't their goal, I don't know how useful this would be for projects that need general web fidelity, but it's still an interesting piece of software and definitely one to watch.

Massive

Company: Platespiller Software
License: Open source
URL: www.platespiller.com/products/massive.jsp
Type: 100 percent Java

Massive is another wrapper around the Swing HTML pane, though it does have support for XHTML via a transcoding mechanism. Other than that, it has the same flaws as the HTMLEditorKit.

BlackWood WebClient

Company: Mozilla
License: MPL
URL: www.mozilla.org/projects/blackwood/webclient
Type: Native wrapper

This was a project started some years ago to embed the normal C-based Mozilla into a Java component. Interest seems to have fizzled out in recent years, though there was an update last September, if only for Linux. I was unable to get it to run on my computer, so I left it off of the list. Since the quite active JRex is also listed on mozdev, BlackWood may have been superceded by it.

Calyente

Company: N/A
License: unknown
URL: calyente.dev.java.net
Type: 100 percent Java

Calyente is a new open source project on java.net. Information is sparse, but considering that the download is a mere 6K, this appears to be a wrapper around the standard Swing HTML pane. The rendering bugs seem to be the same. It has had a few updates recently, but nothing major. This is one I'll keep an eye on.

The Rest

Browser G is another wrapper project based on the Blackwood WebClient that appears to have died.

I wasn't able to get IECanvas (based on an article at The Code Project) to run, but it might be another place to start if you want to create your own wrapper for IE or Mozilla (or any other application, for that matter).

The NetBeans NetBrowser, JBrowser, and XRenderer have all been discontinued and integrated into Jazilla, so I took them off of the list.

HotJava was once a cutting-edge browser; it has fallen by the wayside. Sun has long since EOL'ed it.

The French browser NetPisture (Google translation from French) required a login to run the application, so I was unable to load anything. It appears to be a dead project.

Conclusion

I hope this article has shown that there is quite a variety of HTML rendering options beyond what's built into Swing. If you can use a commercial license, then there are several excellent options available. I would choose a package based on your own price point and customization needs. On the open source side, JRex has the potential to be a great native wrapper solution, and I would say that MultiValent is the best 100-percent-Java project. My biggest disappointment is the lack of advanced CSS support. Some of the commercial browsers do pretty well, but none has the full CSS2 compliance of Mozilla. Hopefully, in the future all of these projects will continue to grow and get better.

Joshua Marinacci first tried Java in 1995 at the request of his favorite TA and has never looked back.


 Feed java.net RSS Feeds