{"id":80,"date":"2009-11-06T11:14:25","date_gmt":"2009-11-06T09:14:25","guid":{"rendered":"http:\/\/www.centigrade.de\/blog\/en\/?p=80"},"modified":"2020-02-17T10:24:27","modified_gmt":"2020-02-17T09:24:27","slug":"java-in-the-mobile-market-google-android-vs-javafx-part-2-detailed-comparison","status":"publish","type":"blog","link":"https:\/\/www.centigrade.de\/en\/blog\/java-in-the-mobile-market-google-android-vs-javafx-part-2-detailed-comparison\/","title":{"rendered":"Java in the Mobile Market: Google Android vs. JavaFX \u2013 Part 2: A Detailed Comparison"},"content":{"rendered":"<p>After dealing with general market trends in <a href=\"http:\/\/www.centigrade.de\/en\/blog\/java-in-the-mobile-market-google-android-vs-javafx-part-1-general-market-trends\/\" target=\"_blank\" rel=\"noopener noreferrer\">part 1<\/a> of this blog series this second and final part provides a more detailed comparison of Google Android and JavaFX.<\/p>\n<p><!--more--><\/p>\n<p>Google Android and JavaFX cannot be compared directly as they do not represent exactly the same technical construct. They both are, however, software platforms, for which applications can be created: Google Android is an operating system, whereas JavaFX is only a runtime environment that runs <em>on<\/em> an operating system (and even on Android). This means Android applications can only run on a Google Android operating system, but JavaFX applications can run on every operating system providing a JRE (Java Runtime Environment) \u2013 this can be a Java SE (standard edition) or Java ME (micro edition, limited extend compared to Java SE) or Java EE (enterprise edition, more complex and powerful compared to Java SE). Theoretically a JavaFX application could also run on Google Android, this has been successfully demonstrated on Java One 2008, but official support is not provided.<\/p>\n<p>In addition it is not easy to compare the GUI architecture of both platforms, because Android applications are more integrated into the operating system and benefit from up-to-date GUI standards available on the new Android platform. JavaFX is new, but Java on mobile phones &#8211; mainly represented by Java ME \u2013 is anything but new on the market. Because of the huge backwards compatibility many compromises had to be made and the integration into a mobile operating system is much looser than it is on Android, which results in an advantage for Android in this respect.<\/p>\n<p>The following paragraphs will contrast all comparable facts concerning numerous GUI topics, development aspects, compatibility, licensing or market situation.<\/p>\n<h3>Perspective for Google Android<\/h3>\n<p>The big advantage of Google Android is that it is a stand-alone operating system with a strong focus on individual developers who create a great diversity of applications for the platform. These apps can be bought or downloaded for free from Android Market, a store for Android apps, which is under continuous growth and also offers quite a lot free apps. The technology is new and up-to-date to today\u2019s requirements and therefore doesn\u2019t suffer from any backwards compatibility drawbacks. The alliance around Android has created a system from scratch, which means that engineers had the liberty of building a completely new environment. The information portal under android.com is quite well structured and offers a good entrance, for users and developers.<\/p>\n<p>In addition, the integration of popular Google services such as Web Search, Mail or Calendar into the OS appeals to many interested client developers.<\/p>\n<p>Optimized for mobile usage, Android, as a free operating system, can also be used on netbooks, which has been <a href=\"https:\/\/web.archive.org\/web\/20090704011345\/http:\/\/www.heise.de:80\/mobil\/Google-gruendet-Android-Team-in-Taiwan--\/newsticker\/meldung\/134498\" target=\"_blank\" rel=\"noopener noreferrer\">successfully proven [in German]<\/a>.<\/p>\n<p>Concerning its GUI aspects, Android has a well-conceived Look and Feel architecture with a modern default look. Especially the font rendering and the default fonts are nice and brilliant. In addition, the available demos and examples generate a wave of enthusiasm particular among GUI developers. But the quality of GUIs is still a bit behind the possibilities of Apple\u2019s iPhone. The choice of the Java language and Eclipse as an IDE was a great idea, because many developers are quite familiar with those. The GUI building process, on the other hand, could have been made easier by providing a more powerful WYSIWYG tool rather than designer-unfriendly XML structures. Regarding the GUI rendering and theme creation Android relies on pixel-based images for GUI component rendering, based on <a href=\"http:\/\/www.centigrade.de\/en\/blog\/modern-user-interface-design-tools-part-2-graphical-approach-of-gui-design-tools\/\" target=\"_blank\" rel=\"noopener noreferrer\">9-slice-scaling<\/a>, which provides high performance and at the same time nicely looking results. Also, the workflow between design and implementation when creating a theme is not optimized.<\/p>\n<p>Most source code for the Android platform is published under a free license, but on the downside, several main parts are proprietary and under control of Google. In the USA or Germany, for example, when Android was introduced, only a few network operators offered Android phones. But new market tendencies show, that more and more Android phone become available through different hardware vendors.<\/p>\n<h3>Perspective for JavaFX<\/h3>\n<p>A main principle of Java is &#8220;Write once, run everywhere&#8221;, which is also applicable to JavaFX. JavaFX applications run on top of the latest version of the Java runtime environment of the respective system.<\/p>\n<p>The main strength of JavaFX is its strong GUI orientation: JavaFX Script, the programming language of choice for creating JavaFX applications, establishes a new syntax, which is optimized for fast and intuitive GUI declaration. It has been built from scratch, with a completely <a href=\"http:\/\/java.sun.com\/javafx\/1.2\/docs\/api\/\" target=\"_blank\" rel=\"noopener noreferrer\">new API<\/a> in order to avoid restrictions from older Java based platforms. But exactly this new language also constitutes a risk, because developers have to be convinced of the new possibilities first and have to learn mastering them. Still, JavaFX Script code will be combinable with the plain old Java code as it compiles to native Java bytecode.<\/p>\n<p>For JavaFX Mobile a Look and Feel architecture with UI components exists since version 1.2. It offers three different methods of defining a look and feel. For example Adobe Photoshop or Illustrator can be included into the process and component styles can be declared via CSS, but this approach is still in its infancy.<\/p>\n<p>Development can be done with NetBeans IDE \u2013 a well-known IDE among Java developers with growing acceptance. The JavaFX plugin for NetBeans offers a live preview while coding GUI fragments, but no WYSIWYG mode with direct manipulation is provided, which is a drawback from a GUI designer\u2019s perspective. The integration of Adobe Photoshop and Adobe Illustrator into the workflow is a great idea, because these are the most common tools designers working with. The concept of building UIs by describing all the graphical elements, has a major drawback concerning the API for mobile usage (common profile), because the graphical effects, like drop shadows, reflection or motion blur, are not available in this mode. Up-to-date and attractive looks are hard to realize without those effects, except that these effects are pre-rendered in Photoshop and integrated via 9-slice-scaling. A further drawback has been known for years among GUI designers: the font rendering. JavaFX does support anti-aliazing (a.k.a. font smoothing), but in a way that is not really convincing.<\/p>\n<p>The 9-slice-scaling concept, which is a good practice, when painting pixel-image based components, can theoretically be done by describing the GUI with CSS, but the feature is only planned and not implemented, yet. Multi-touch can be used, as demonstrated on <a href=\"http:\/\/developers.sun.com\/learning\/javaoneonline\/2008\/pdf\/TS-6127.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">JavaOne 2008 (PDF)<\/a>.<\/p>\n<p>All in all, JavaFX Mobile is based on long experience and advanced ideas, but the extend to which these two key ingredients were translated into solutions is not yet satisfactory today.<\/p>\n<h4>Java Me behind JavaFX<\/h4>\n<p>Java ME can be a good base and an entrance to make JavaFX apps run on older devices, because it is extremely widespread, but the user experience of today\u2019s Java ME apps is quite awful and lags far behind modern GUIs. If Java ME shall have a chance in the future, using the nice GUI ideas of JavaFX is the only way to survive.<\/p>\n<h3>General Perspective<\/h3>\n<p>When having a final look Google Android and JavaFX Mobile, we can identify several strengths and weaknesses regarding chances for market success.<\/p>\n<h4>Device Compatibility<\/h4>\n<p>The strength of Android is its lack of backwards compatibility requirements and the resulting ability to focus on new powerful devices. The aim of JavaFX Mobile instead is to run also on older devices with Java installed, as Java ME is installed on about 85% of devices out there, today. This sounds great in theory, but on the other hand, those mobile devices mostly do not have the newest version of Java, which is required to run JavaFX apps and installing a new Java runtime on these devices is a major challenge for common users. Accessing the mass market with these precondition in the back seems to be difficult for JavaFX Mobile. But then again, the backwards compatibility issue might not be that hindering regarding market success, as users will probably purchase new phones, anyway \u2013 at least every two years (in Germany) when they renew their mobile phone contract.<\/p>\n<h4>Community<\/h4>\n<p>Comparing development communities, the one behind Android seems to be livelier. More and more apps appear on Android Market, which are created by interested individual developers or companies. The JavaFX Mobile community is small and more reserved, because the actual results that can be achieved with JavaFX technology do not really leave demo status. (JavaFX Mobile also plans to release a store concept called \u201cJava Store\u201d, which can be tested in beta status.) In this respect, Sun&#8217;s store obviously lags behind Google&#8217;s store. Furthermore the mailing list or forums concerning JavaFX show little, actually declining activity.<\/p>\n<h4>Where Do Apps Run?<\/h4>\n<p>JavaFX suffers from a more complex abstraction layer, because it is intended to run on a wide variety of hardware and operating systems. Once fully functional, however, this can be a great advantage, as it allows one implementation of an applications to run on many devices with different OS\u2019s. This benefit does not exist with Android apps &#8211; at least not in this extend. (JavaFX apps even run \u2013 without official support though \u2013 on Android, but not vice versa, which underlines the \u201crun everywhere\u201d principle of JavaFX.)<\/p>\n<p>Development with Android is bound to devices that run with the Android OS, which makes the whole process less complex, but also less flexible.<\/p>\n<h4>Designer-Developer Workflow<\/h4>\n<p>JavaFX brings the designer-developer-workflow into focus. This is achieved by trying to include the common designer tools Adobe Photoshop and Adobe Illustrator in the so called \u201c<a href=\"http:\/\/javafx.com\/docs\/gettingstarted\/production_suite\/\" target=\"_blank\" rel=\"noopener noreferrer\">Production Suite<\/a>\u201d. This approach of using vector-based graphics is a must have for future and resolution independent solutions. Android on the other hand banks on usage of traditional pixel images with 9-slice-scaling (or 9-patch-drawing as it is called by Google).<\/p>\n<p>On the development side both competitors use common IDEs with Eclipse for Android and NetBeans for JavaFX, which is a lower barrier for developers getting in touch with a technology the first time.<\/p>\n<h4>Which Devices Are Out There?<\/h4>\n<p>Currently, Android seems to be further ahead in terms of readiness for daily use. The first Android based phones are available on market since about one year. The first phones were built by HTC, the <a href=\"http:\/\/www.htc.com\" target=\"_blank\" rel=\"noopener noreferrer\">G1<\/a> and the <a href=\"http:\/\/www.htc.com\" target=\"_blank\" rel=\"noopener noreferrer\">HTC Magic or G2<\/a>. A third device with a new GUI and interaction concept has been released in July 2009, it\u2019s called <a href=\"http:\/\/www.htc.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">G2 Touch or HTC Hero<\/a>. Today even some more devices with Android entered the market, e.g. the <a href=\"http:\/\/www.samsung.de\/produkte\/detail11_accessories.aspx?guid=36cbb95c-43da-4f42-a578-ae02b63064fd\" target=\"_blank\" rel=\"noopener noreferrer\">Samsung Galaxy<\/a>. The HTC Hero shows, that the GUI architecture of Android is so well established that it can be changed visually from bottom up, and that main interaction concepts can be easily modified. For example the Desktop interaction, the dial pad or the main bottom taskbar are different compared to the default GUI used with G1 and G2. Finally, also Sony Ericsson decided to release an Android based phone, called <a href=\"https:\/\/web.archive.org\/web\/20130502015040\/http:\/\/www.cnet.com\/8301-19736_1-10390917-251.html\" target=\"_blank\" rel=\"noopener noreferrer\">Xperia X10<\/a>.<\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" class=\"size-medium wp-image-81 aligncenter\" title=\"First Google Phones\" src=\"https:\/\/www.centigrade.de\/wordpress\/wp-content\/uploads\/googlephones.png\" alt=\"\" \/><\/p>\n<p>There are no official \u201cJavaFX devices\u201d comparable to \u201cAndroid phones\u201d, but JavaFX can be tested on several platforms. For example, on JavaOne 2009 the HTC Diamond was sold with pre-installed JavaFX support. In addition, many new important devices, such as the iPhone or the HTC Magic, do not provide out of the box support for JavaFX and Java ME, which is an extremely limiting factor regarding JavaFX\u2019s future perspective.<\/p>\n<p>Google also announced to push its influence forward by releasing a new operating system, called <a href=\"http:\/\/web.archive.org\/web\/20090711113906\/http:\/\/www.h-online.com:80\/open\/Google-s-second-open-source-operating-system-announced--\/news\/113713\" target=\"_blank\" rel=\"noopener noreferrer\">\u201cGoogle Chrome OS\u201d<\/a>. The Linux-based OS should primarily run on netbooks, but traditional desktop computers and laptops are an obvious next step. It\u2019s almost safe to assume that applications for Android also might run on Chrome, so a market consolidation should be in reach with this second step into OS market.<\/p>\n<h4>Market Indicator: Mobile Internet<\/h4>\n<p>The statistics referred to in <a href=\"http:\/\/www.centigrade.de\/en\/blog\/java-in-the-mobile-market-google-android-vs-javafx-part-1-general-market-trends\/\" target=\"_blank\" rel=\"noopener noreferrer\">part 1<\/a> of this article show that the iPhone dominates the mobile browsing market. Android is just a bit behind but almost on par with Java ME \u2013 and in this context it has to be taken into account that Android is only available for months whereas Java ME has been around for years. If that trend continues, it can be assumed that Android will overtake Java on the mobile browsing market.<\/p>\n<h4>Alternative Approaches<\/h4>\n<p>Besides all market competitors that run on several platforms, including operating systems and runtime environments such as Java, Microsoft Silverlight, Adobe Flash etc., another \u201crun everywhere\u201d platform should not be neglected \u2013 the web browser. Browsers will be available on every mobile device of the future, because web pages need to be accessed in any case. So it is an obvious decision for application vendors to deploy their applications as web applications in a web browser, if they want to reach lot users with one implementation. Interestingly, Opera Mobile, one of the leading browsers on the mobile browser market, is written in Java, using Java ME. Google Android and iPhone are using their own browsers with Google Chrome and Apple Safari, respectively. With new versions of browser technology, including HTML 5 and CSS 3.0, GUI building facilities improve and more powerful and modern web-based GUIs will evolve. So the perspectives for browser based apps seam to stay excellent.<\/p>\n<p>On the Java server-side, JSF (Java Server Faces) is another interesting technology in this environment that will be released in the second half of 2009 in version 2.0.<\/p>\n<h3>Conclusion<\/h3>\n<p>The evolvement of the market situation shows that Google Android will establish itself as platform on an increasing share of devices. The biggest competitor seems to be the iPhone, followed by Symbian based devices by Nokia, SonyEricsson, Panasonic and Samsung or BlackBerry and Palm. If JavaFX misses the opportunity of being present in the current heterogeneous market evolution, it will be amongst the first to lose the game.<\/p>\n<p>Some conditions have to be met for JavaFX to survive on the mobile market: support on the iPhone, a stable and usable API and platform, other new devices with current versions of Java runtime, something like \u201cJavaFX ready\u201d phones along with a free open and easy store concept for downloading and installing JavaFX apps.<\/p>\n<p>Below the line, the market chances for Google Android and JavaFX differ; Android is more established today, but JavaFX has a nice long term strategy with great ideas, whose success, however, is questionable considering the sluggishness that Sun demonstrates in terms of JavaFX&#8217;s market introduction.<\/p>\n<p><span style=\"font-size: 9px;\">All trademarks and product names used on this website are the properties of their respective owners and are used solely for descriptive purposes.<\/span><\/p>\n","protected":false},"author":2,"featured_media":0,"template":"","tags":[45,22,49,5,48],"class_list":["post-80","blog","type-blog","status-publish","hentry","tag-google-android","tag-iphone","tag-java-me","tag-javafx","tag-mobile"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/blog\/80","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/users\/2"}],"version-history":[{"count":1,"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/blog\/80\/revisions"}],"predecessor-version":[{"id":11356,"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/blog\/80\/revisions\/11356"}],"wp:attachment":[{"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/media?parent=80"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/tags?post=80"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}