Over a million developers have joined DZone.

Is it Time For a JVM-Based Web Browser?

· Java Zone

Discover how powerful static code analysis and ergonomic design make development not only productive but also an enjoyable experience, brought to you in partnership with JetBrains

There are currently two exciting platforms for which one can develop:
  • The Java Virtual Machine (JVM). Advantages: Great tools, hosts many languages, lots of free software is available for it (databases, support for many file formats, etc.), support for modularity (OSGi, Jigsaw).
  • The web browser. Advantages: Quickly trying out an application without downloading anything, URLs that encode application states and are bookmarkable, the ability to clone application states via tabs, integrated hypermedia.

Then how about combining these two platforms? It seems like a missed opportunity for the JVM that all major browser now have JITs for JavaScript, but none of them uses the JVM. What would a JVM-based web browser look like? It would be modular, every aspect of it would be extensible in Java. It would be host to a new kind of web/desktop application hybrid. If the JWebPane technique of porting Webkit to Java2D really works, then it can even provide a perfect web experience.
I do realize that applets go a long way in the direction of this vision, but many minor details add up so that one still feels the barrier between Java and the browser. I could never get excited about JavaFX, it always felt like Java was trying to be like Flash. But the idea of a JVM-based web browser, HotJava 2 if you will, does excite me in ways I cannot all explain rationally. I can see myself extending such a browser with many tools and writing all my future applications based on it.

Update: See my comment below on a refinement of these ideas.

From http://2ality.blogspot.com

Learn more about Kotlin, a new programming language designed to solve problems that software developers face every day brought to you in partnership with JetBrains.

Topics:

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}