{"id":9841,"date":"2016-05-26T11:52:19","date_gmt":"2016-05-26T15:52:19","guid":{"rendered":"http:\/\/www.analystik.ca\/blogue\/?p=9841"},"modified":"2019-01-23T16:52:05","modified_gmt":"2019-01-23T21:52:05","slug":"analystik-approach-to-cross-platform-application-development","status":"publish","type":"post","link":"https:\/\/analystik.ca\/blogue\/language\/en\/analystik-approach-to-cross-platform-application-development\/","title":{"rendered":"Analystik&rsquo;s Approach to Cross-Platform Application Development"},"content":{"rendered":"<p>The new cross-platform application development paradigm has confronted developers with a multi-OS and multi-device heteroclite environment (iOS, Android, PC, Web). And of course, everyone was looking for high-performance cross-platform multi-device deliverables!<\/p>\n<p>Saying that the application development landscape has greatly evolved over the last few years would definitely be an understatement, be it mobile or back-end and front-end. And always the performance challenge remained central over time, both in terms of development (to develop the fastest possible at the lowest cost) and in terms of application performance.<\/p>\n<p><!--more--><\/p>\n<h2>From Mobile to Multi-device to Cross-platform Application Development<\/h2>\n<p>Before, the developer would code according to its expertise and programming philosophy and its deep knowledge of a specific environment, you were either Java, Open Source, Windows, iOS or BlackBerry, for example; in short, you would code mostly for one platform \/ environment.<\/p>\n<p>But with the BYOD phenomenon, the Mobility rage and the tsunami of mobile applications that came along with it; developers found themselves confronted with a multiplicity of OS\u00a0and had to choose a deployment \/ coding strategy because they would have to code for 2-3-4 different OS and their respective UIs, of course. Two thoughts of school were facing each other: native versus mobile web (and different browsers).<\/p>\n<p>Developers were also facing a steep price challenge thanks to overseas and over-continent competition, still while coding\u2026 2-3 times more code!<\/p>\n<p>And let\u2019s not forget that with Mobility came a new business model in the market, the free software programs became the new standard even though you would have to come up with a way to monetize your traffic (subscriptions \/ downloads) somewhere down the road which many have overestimated, never finding a way just to cover expenses or make profits.<\/p>\n<p>Hence, the \u00ab\u00a0Mobile Puritans\u00a0\u00bb often opted for a mixed strategy, that is to develop and deploy a comprehensive native application for the main target market OS and a lighter application version for the secondary target market OS; which would have you abandoned some markets but would in theory deliver higher-performance mobile applications. The less puritan ones would go with a mobile web development for which many regret its lack of appeal in terms of design as a counterpart for its multi-OS adaptability!\u00a0\u00a0 However, mobile web development comes with an undeniable advantage in terms of development cost and deployment cost.<\/p>\n<h4><a href=\"http:\/\/www.analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/before-after.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-9857 size-medium aligncenter\" src=\"http:\/\/www.analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/before-after-300x130.png\" alt=\"before-after\" width=\"300\" height=\"130\" srcset=\"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/before-after-300x130.png 300w, https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/before-after-768x333.png 768w, https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/before-after-1024x445.png 1024w, https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/before-after.png 1930w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/h4>\n<h3><strong>Target large and code small<\/strong><\/h3>\n<p>So, in this context, face with the challenge of coding at the best possible cost while reaching all platforms (OS), some started looking for a new solid base upon which building their cross-platform application development without harming application performance; in this particular case, the server.<\/p>\n<p>That\u2019s the point of view Analystik adopted, or if you prefer, the asset we decided to bet on; hence in our cross-platform application design, we keep all enterprise business logics, main calculus and process as well as data on the \u00ab\u00a0server\u00a0\u00bb side. Yes, it\u2019s true, we really are talking about the good old Server \/ Client architecture just like when the characters displayed were green\u2026 but hey, the thing is, today there\u2019s a huge difference in how we talk to different Clients. You need an adequate communications protocol in sync with your business requirements, for different Clients (OS and platforms), that is.<\/p>\n<p>Once this choice was made, we started looking for an adequate communications protocol meeting all requirements, between Server and Clients; hence, different UIs on different OS &amp; devices.<\/p>\n<p>For the Server to Client communications, Analystik chose REST (Representational State Transfer), a high performance HTTP protocol but also versatile, which enables it to \u00ab\u00a0exchange\u00a0\/ interpret \u00bb Java, JavaScript, C#, Swift, Objective C, HTML, etc.; in short, we <strong><em>targeted large<\/em><\/strong>! <strong>REST<\/strong> is highly performing because it transfers data in a non-verbal fashion, contrary to SOAP.<\/p>\n<p>Consequently, in our applications\u2019 design philosophy, we have chosen to <strong><em>code small <\/em><\/strong>on the Client UIs\u2019 side, to restrict the nature and quantity of instructions to display, color, etc.<\/p>\n<p>In a word, what is unique to each Client is being coded on the \u00ab\u00a0Client\u00a0\u00bb side and what is common to all Clients is being coded on the \u00ab\u00a0Server\u00a0\u00bb side.<\/p>\n<a href=\"http:\/\/www.analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/server-rest-en.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9854 size-medium\" src=\"http:\/\/www.analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/server-rest-en-300x118.png\" alt=\"server-rest-en\" width=\"300\" height=\"118\" srcset=\"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/server-rest-en-300x118.png 300w, https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/server-rest-en-768x303.png 768w, https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/server-rest-en-1024x404.png 1024w, https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/server-rest-en.png 2006w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>\n<p><strong>Example<\/strong>: For taxes and shipping fees on an eCommerce website, the data will be downloaded on the Server and the calculus (sums and taxes) will be executed on the Server, data will then be put into cache and displayed on the Client only when required.<\/p>\n<h3><strong>Own\u00a0your choices\u2026<\/strong><\/h3>\n<p>This approach demanded to be resourceful since it relies heavily on the REST communications protocol by sometimes commanding a heavy load of data\u00a0circulating back and forth between Server and Clients, which would have been impossible just a few years ago. So, we had to take that into account and, adapt.<\/p>\n<h3>\u2026<strong>and develop best practices<\/strong><\/h3>\n<p>Consequently, we have learned from our mistakes and developed a few best practices:<\/p>\n<ul>\n<li>Limit the quantity of instructions executed on the Client side\n<ul>\n<li>Develop a sense for execution timing<\/li>\n<li>Choose the right moment to transfer data to Client UIs<\/li>\n<\/ul>\n<\/li>\n<li>Make sure you have the right optimized cache instructions for each Client UI<\/li>\n<li>Identify and benefit from each Client\u2019s capabilities and performance<\/li>\n<\/ul>\n<p>If you plan on attacking cross-platform application development; follow these best practices, target large and code small, and your code should <strong><em>last\u2026 forever<\/em><\/strong>!<\/p>\n<p><strong>Happy Cross-platform Application Development,<\/strong><\/p>\n<p><strong>Denis Paul &amp; Michel<\/strong><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>The new cross-platform application development paradigm has confronted developers with a multi-OS and multi-device heteroclite environment (iOS, Android, PC, Web). And of course, everyone was looking for high-performance cross-platform multi-device deliverables! Saying that the application development landscape has greatly evolved over the last few years would definitely be an understatement, be it mobile or back-end&#8230;  <a class=\"excerpt-read-more\" href=\"https:\/\/analystik.ca\/blogue\/language\/en\/analystik-approach-to-cross-platform-application-development\/\" title=\"Read Analystik&rsquo;s Approach to Cross-Platform Application Development\">Read more &raquo;<\/a><!-- AddThis Advanced Settings generic via filter on wp_trim_excerpt --><!-- AddThis Share Buttons generic via filter on wp_trim_excerpt --><\/p>\n","protected":false},"author":3,"featured_media":11623,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"Analystik's Approach to Cross-platform Application Development","_seopress_titles_desc":"Analystik's \"target large, code small\" approach to Cross-platform Application Development capitalizes on a Client Server Architecture & REST protocol","_seopress_robots_index":"","content-type":"","footnotes":""},"categories":[3421,3415,3417,3413],"tags":[1109,3519,1115,1117,3521,3489,3517,3515],"better_featured_image":{"id":11623,"alt_text":"","caption":"","description":"","media_type":"image","media_details":{"width":2880,"height":1620,"file":"2016\/05\/multiplatform.jpg","sizes":{"thumbnail":{"file":"multiplatform-150x150.jpg","width":150,"height":150,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-150x150.jpg"},"medium":{"file":"multiplatform-300x169.jpg","width":300,"height":169,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-300x169.jpg"},"medium_large":{"file":"multiplatform-768x432.jpg","width":768,"height":432,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-768x432.jpg"},"large":{"file":"multiplatform-1024x576.jpg","width":1024,"height":576,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-1024x576.jpg"},"bones-thumb-2880":{"file":"multiplatform-2880x1620.jpg","width":2880,"height":1620,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-2880x1620.jpg"},"bones-thumb-1920":{"file":"multiplatform-1920x1271.jpg","width":1920,"height":1271,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-1920x1271.jpg"},"bones-thumb-1536":{"file":"multiplatform-1536x1016.jpg","width":1536,"height":1016,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-1536x1016.jpg"},"bones-thumb-960":{"file":"multiplatform-960x635.jpg","width":960,"height":635,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-960x635.jpg"},"bones-thumb-600":{"file":"multiplatform-600x397.jpg","width":600,"height":397,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-600x397.jpg"},"bones-thumb-300":{"file":"multiplatform-300x199.jpg","width":300,"height":199,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-300x199.jpg"},"post-thumbnail":{"file":"multiplatform-125x125.jpg","width":125,"height":125,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-125x125.jpg"}},"image_meta":{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0","keywords":[]}},"post":9841,"source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform.jpg"},"_links":{"self":[{"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/posts\/9841"}],"collection":[{"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/comments?post=9841"}],"version-history":[{"count":6,"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/posts\/9841\/revisions"}],"predecessor-version":[{"id":12140,"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/posts\/9841\/revisions\/12140"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/media\/11623"}],"wp:attachment":[{"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/media?parent=9841"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/categories?post=9841"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/tags?post=9841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}