Lobo is an open source web browser that is written completely in Java.
The general goal of the Lobo browser effort is to produce a browser that is fast, complete, easy to extend, feature-rich and secure.
Why a Pure Java Browser?
There are a number of advantages to be derived from a browser that is written in Java as opposed to a language compiled into native code, namely:
- Security.- In principle, a Java program is less suceptible to certain types of vulnerabilities such as a buffer overflow attack. Java’s security model can also allow web content to have access to a complex set of APIs, except in a controlled sandbox.
- Extensibility.- A Java-based application can be extended via powerful cross-platform plugins. Consider the difference this has made for Java software such as jEdit and Eclipse. (Lobo already has a plugin API).
- New paradigms.- With the help of Java we can implement new powerful cross-platform and secure mechanisms to represent web content. As of version 0.98, JavaFX and Java are first-class citizens in Lobo, on par with HTML.
- Portability.- This is the obvious advantage of a pure Java application.
Latest version of Lobo still has a number of gaps in the rendering engine, but improvements are occurring all the time.
Browser features related to navigation, cookies, HTTP authentication and so on are functioning well at this point.
Browaser will continue to work on incrementally improving the rendering capability primarily based on user feedback. Some of the supported features and limitations are listed below:
- Plugins.- A extensions (plugin) capability was released in version 0.97.
- Browser features.- Starting with Lobo 0.97 several features you would expect to find in any browser are available, such as HTTP authentication, SSL, caching, preferences, bookmarks, navigation menues, a download GUI, etc. There are also some unique and advanced features we have started to introduce, e.g. a different type of bookmarks system based on tags, with search; a directory menu, separate to bookmarks; a list of recent hosts visited; multiple startup pages; search engines; page services such as Wayback Machine; etc.
- HTML DOM.- A good portion of the HTML DOM Level 2 interfaces are implemented. Some attributes and methods may not be functional.
- CSS2.- Style tags, style attributes and class attributes are functional, but not all style properties are implemented at this point. Property overriding (cascading) is functional. Absolute positioning, overflow (scrolling) and other such features have been implemented. Support for different types of selectors is currently limited. The only pseudo-element supported is
hover. The CSS parser we use is fairly strict, so some existing CSS documents may not parse.
- Forms.- POST and GET are functional. POST reloading is not supported (and we’re not sure we want to support it). All input types, including
file, are currently implemented.
- Tables.- There is good support for tables. Some features such as the table caption and character-based alignment are still pending.
- Frames.- There is support for both IFRAMEs and pages consisting only of framesets.
- Lists.- Lists are almost fully functional, except for advanced configuration via CSS.
- Text formatting.- Style properties for colors, backgrounds, fonts, and text decorations are functional. Deprecated tags such as FONT, FONTBASE, etc. are implemented as well.