Firefox for Android: Native Android UI

You have probably seen some announcements and read some blog posts about Mozilla’s recent change in direction for Firefox Mobile on Android. We have decided to drop the XUL-based UI and re-build the application using native Android widgets. Here’s some of the rationale, from Johnathan’s newsgroup post:

  • Startup – A native UI can be presented much faster than a XUL based UI, since it can happen in parallel with Gecko startup. This means startup times in fractions of a second, versus several seconds for a XUL UI on some phones.
  • Memory Use – We believe a native UI will use significantly less memory.
  • Responsiveness – A native UI has the potential for beautiful panning and zooming performance.

Another major change is a move away from multi-process architecture (e10s) as well. The web content process was great for stabiilty, keeping crashes from taking down the entire application, but it also increased our memory usage and created some performance issues. In the new application, Gecko is running in a separate thread, not a separate process.

Quite simply everything you see is a native Android widget. Even the web content is displayed in a native view, very similar to the multi-process layers system we previously used. This allows us to asynchronously pan and zoom the web content, without waiting for the browser to scroll or zoom the actual content.

Even though the UI is completely implemented in native widgets, there is still a lot of JavaScript around, it’s just not visible. JavaScript is the perfect binding language into the Gecko platform and we are still using it for many of the same tasks. If you have ever built a browser using XUL, take a look at the browser,js file and you will see some familiar code. Because we have such a strong JavaScript binding layer, we can support add-ons in much the same way as a XUL-based application. More on that in a future blog post.

A few more details on how these three systems interact can be found in this basic architecture document. There is some details on the simple messaging system we use to allow the JavaScript and Java systems to communicate too.

The current nightlies are very usable, and support Flash (yes they do!) – so go grab the APK and try it out yourself.

20 Replies to “Firefox for Android: Native Android UI”

  1. Currently flash videos are not displayed for me (Galaxy S II GT-I9100 – ANdroid 2.3.5 – Today’s nightly)

    Here’s a bag of comments:

    – I liked the previous tab UI a lot better. I catch myself loading firefox beta just because the tab experience is so much better πŸ™ Sure the animations etc are nice, but its not nearly as functional.

    – Font rendering is odd currently πŸ˜‰

    – Browser gets confused with multiple tabs loading at the same time

    – zooming is odd currently as well πŸ˜‰ performance is decent however

  2. Hi,
    I tried to install it on my Tablet (Galaxy 10.1 3G). I think it’s still not optimized for the tablet UI.
    Everything was really fast, even the Arabic fonts was rendered perfectly. but after I closed it and try to run again, I have Auto Close window.

  3. @zoulou – Thanks for testing it out and giving feedback. The Flash issue you reported might have been fixed and will show up in tomorrow’s build. Please check it out.

    Keep giving the new UI some time to grow on you. The font, zooming and tab loading issues are know and are getting fixed. Great performance is one of our top goals, so I am glad to hear your feedback on it.

  4. I have tried it, and it worked fine.
    The only thing I really don’t like is the new tab UI, I think it looks horrible.
    Other than that, great job again mozilla πŸ˜€

Comments are closed.