{"id":437,"date":"2017-01-12T10:52:47","date_gmt":"2017-01-12T10:52:47","guid":{"rendered":"https:\/\/devexperts.com\/blog\/?p=437"},"modified":"2022-05-18T10:57:04","modified_gmt":"2022-05-18T10:57:04","slug":"how-to-build-ios-application-from-java-code-in-two-months","status":"publish","type":"post","link":"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/","title":{"rendered":"How to Build a Successful iOS Application from Java Code in Two Months"},"content":{"rendered":"\n<h2 id=\"h-the-challenge\" class=\"wp-block-heading\">The challenge<\/h2>\n\n\n\n<p>Enjoy a challenge? Our mission in early Spring 2016 was to develop a live prototype of the OTC flex-options trading application in a very short space of time. Join the Devexperts Mobile Development team on a journey of discovery as we set to work at finding the ultimate solution.<\/p>\n\n\n\n<p>In a not so distant past it used to be the norm to essentially perform all trading operations manually &#8211; with a phone in one hand and a spreadsheet with your positions in the other. The teams\u2019 <strong>overall goal<\/strong> was to <strong>automate current workflow<\/strong> allowing traders to <strong>monitor<\/strong> their <strong>options<\/strong> <strong>portfolio<\/strong> on the fly and <strong>simultaneously analyse risks<\/strong>.<\/p>\n\n\n\n<p>Phase one of this exciting project involved developing a desktop application and a mobile solution \u2013 iPad app. Working closely with designers and the UI\/UX team to implement as much functionality as possible, the overall achievement of delivering this comprehensive product on time was impressive. The project started in early April and had to be completed by the designated date in late May &#8211; and not a single day later. In total, the team had only had <strong>6-8 weeks pure development time<\/strong>.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/1.jpg\" rel=\"attachment wp-att-444\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/1-1024x768.jpg\" alt=\"\" class=\"wp-image-444\" srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/1-1024x768.jpg 1024w, https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/1-300x225.jpg 300w, https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/1-768x576.jpg 768w\" sizes=\"auto, (max-width: 959px) calc(100vw - 30px), 870px\" \/><\/a><\/figure><\/div>\n\n\n\n<h2 id=\"h-looking-for-solutions\" class=\"wp-block-heading\">Looking for solutions<\/h2>\n\n\n\n<p>So what did Devexperts discover during the development of this project? Fascinatingly, the team figured out a solution to the rarely solved engineering problem in cross platform development of using Java code in the iOS application. Using business logic code translation <strong>from Java to Objective-C<\/strong>, we skillfully embedded it <strong>into the purely native UI application<\/strong>.<\/p>\n\n\n\n<p>In recent years many speakers at the JavaOne conference have covered the topic of using Java code in the iOS application. In general, they mostly recommend so-called \u201chybrid application development\u201d, which means that you are re-using your existing JavaScript codebase from your web application inside the native or native-looking environment. In practice, this is usually quite an unpleasant experience only suitable for big and complex enterprise solutions where the application is just a tiny window to a huge corporate network and systems. The applications for these purposes are usually slow and non-interactive, while the mass customer is expecting something of a much higher standard. People are used to a nice and smooth mobile experience these days.<\/p>\n\n\n\n<h2 id=\"h-crosscompiling-java-to-ios--dxbyte-translator\" class=\"wp-block-heading\">Crosscompiling Java to iOS \u2013 dxByte translator<\/h2>\n\n\n\n<p>In order to achieve a high-end user experience to meet the demands of developing a trading application, the Devexpets Mobile team utilized their <strong>homemade translator \u2013 dxByte<\/strong>. It is common knowledge that all code translators have their issues. dxByte is no exception. We are required to use Java language version not higher than 1.4. We can translate only plain java classes, which in turn can use a limited part of a standard library. It may sound unusual but we are quite happy with that. After almost seven years in operation we can be confident that this tool does its job and does it well.<\/p>\n\n\n\n<h2 id=\"h-overcoming-issues\" class=\"wp-block-heading\">Overcoming issues<\/h2>\n\n\n\n<p>So what issues did the development team have to overcome? Firstly, one of the <strong>apps key advantages<\/strong> was the <strong>Risk Profile screen<\/strong>. We needed to make it possible for the user to simulate different market situations, something like a <strong>\u201cwhat-if?\u201d mode<\/strong>. Secondly, the team needed to produce a quick and smooth mobile application experience. Everything needed to be as fast and responsive as your fingers. To achieve both of these objectives the <strong>solution<\/strong> was to <strong>incorporate the whole computation model code inside the iPad app<\/strong>. The <strong>server <\/strong>would be the <strong>provider of raw data<\/strong> (volatility, portfolio, current market state, etc), but all the <strong>calculations<\/strong> would be done <strong>by the mobile device itself<\/strong>. Devexperts already had a library for calculating the required model &#8211; dxPrice Lib Options, but it is written in Java, and we were obliged to use native Objective-C code in iOS.<\/p>\n\n\n\n<div class=\"wp-block-columns has-2-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/4-1024x768.jpg\" alt=\"\" class=\"wp-image-447\" srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/4-1024x768.jpg 1024w, https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/4-300x225.jpg 300w, https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/4-768x576.jpg 768w\" sizes=\"auto, (max-width: 959px) calc(100vw - 30px), 870px\" \/><\/figure><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/3-1024x768.jpg\" alt=\"\" class=\"wp-image-446\" srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/3-1024x768.jpg 1024w, https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/3-300x225.jpg 300w, https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/3-768x576.jpg 768w\" sizes=\"auto, (max-width: 959px) calc(100vw - 30px), 870px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>The team wisely recognised we needed to have a reliable foundation on which to kickstart our prototype development. And we had it in the form of &#8211; <strong>dxMobile<\/strong>. It is an application which has been <strong>designed to be deeply customized<\/strong> for different purposes since day one.<\/p>\n\n\n\n<p>Devexperts Mobile team had everything we needed &#8211; the library with calculation model, the template application and the Java to Objective-C translator. The next hurdle to overcome, was that the dxPrice library had been designed without taking into consideration dxByte\u2019s restrictions. After considerable investigation the decision was made to use the outside translator Google\u2019s j2objc instead.<\/p>\n\n\n\n<p>In order to integrate Google\u2019s j2objc, we removed a number of modules from dxPrice leaving only the pure-math part. In a bid to pass objects of quite complex structure, which were required for this model, we had to simulate Java Serialization mechanism over their proprietary mobile transport. Java Serialization is one of those things which are not supported by j2objc, so we had to write custom external serialization.<\/p>\n\n\n\n<p>Devexperts Mobile team made an interesting observation at this point. Since we needed serialization only on the back-end side, but deserialization only on the client-side, we decided not to write them both in Java. The idea of writing the client-side part directly in Objective-C seemed good at first glance until we realized that we were missing a testing part. In order to cover bi-language codebase with tests you have to apply a greater effort than testing a homogenous environment. So everything was done in Java and at some point we had seen a \u201cgreen light\u201d of Unit-tests output.<\/p>\n\n\n\n<p>After that, upon all that codebase we had written a model (in Java again, reasons were the same) which would be used directly by the mobile app. The model takes those data objects, transferred from back-end side, as input, and gives theoretical profit\/loss values and position metrics as output. This model happened to be so handy that we started to use it at both back- and client-side. In first case the real portfolio data was computed and in second &#8211; the simulated one.<\/p>\n\n\n\n<p><strong>Interesting fact<\/strong>: all those steps took up almost 4 weeks of continuous work, and we couldn\u2019t demonstrate any intermediate result. All this stuff &#8211; codebase preparation, start of prototype development, code translation, serialization mechanism and model development &#8211; can be considered as literally an atomic operation. Either they complete everything and calculate risk profile, or could basically show nothing. It is impossible to calculate the left part of the graph while the right one is not done yet. At some point even the ideologist of the whole approach &#8211; started to doubt whether it was a good idea at all. <strong>Wasn\u2019t it better to just calculate everything on the back-end sacrificing the user experience for demo purposes?<\/strong><\/p>\n\n\n\n<p>Chasing all fears away we tripled the development pace. And four weeks later we saw a first graph on the iPad screen, which not only showed simulational data but was absolutely interactive &#8211; all your favourite pan-to-scroll and pinch-to-zoom gestures were there (thanks to the dxMobile charting codebase which was easily adopted for the new approach). But it wasn\u2019t the finish line, just a first milestone. Devexperts Mobile team had to do a lot of optimizations, write a lot of UI around the new model and add new features into the app, but that\u2019s a different story.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/5.jpg\" rel=\"attachment wp-att-448\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/5-1024x768.jpg\" alt=\"\" class=\"wp-image-448\" srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/5-1024x768.jpg 1024w, https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/5-300x225.jpg 300w, https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/01\/5-768x576.jpg 768w\" sizes=\"auto, (max-width: 959px) calc(100vw - 30px), 870px\" \/><\/a><\/figure><\/div>\n\n\n\n<h2 id=\"h-conclusions\" class=\"wp-block-heading\">Conclusions<\/h2>\n\n\n\n<p>What did the team learn from this sprint run? Now we have answers to some interesting questions:<\/p>\n\n\n\n<p><strong>Is it possible to make complex mobile applications?<\/strong><\/p>\n\n\n\n<p>The answer is \u201c<strong>yes<\/strong>\u201d. Forget about those \u201coh, wait, we won\u2019t implement this feature in mobile apps since it is too complex for them\u201d. Those times have passed. Now mobile devices are powerful enough to handle almost everything, more than that &#8211; many tasks could be performed in an even more efficient and natural way. The only drawback is that you have to have a strong UX team, capable of suggesting usable approach. The responsibility of this decision is higher as well.<\/p>\n\n\n\n<p>Can any Java code be translated to Objective-C nowadays?<\/p>\n\n\n\n<p>The answer is <strong>\u201cyes\u201d as well<\/strong>, but with a few restrictions. J2objc has become a really mature, out-of-the-box solution. The output code is not easily readable indeed, but what you get is a working code, instantly, which is much more valuable. Yes, it works with performance overheads compared to the code you write yourself, and yes, it still has bugs, but you can work around those issues. You will save a lot of time. Forget about \u201chybrid app\u201d approach and JavaScript in mobile development.<\/p>\n\n\n\n<p><strong>What else is important?<\/strong> <strong>The Devexperts Mobile team became wiser<\/strong>.<\/p>\n\n\n\n<h2 id=\"h-here-are-few-tips\" class=\"wp-block-heading\">Here are few tips:<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Don\u2019t be afraid of translating more code. It is better to write the whole codebase from A to Z on, say, Java and cover it with lightweight unit-tests rather than operating with heterogeneous environment. You will be 100% sure that you are translating working code and you won\u2019t be spending man-years searching for a bug.<\/li><li>If you want to write a proper model, imagine that you will need to translate it into iPhone app compatible library. You will immediately get a notion of how it should look.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>The challenge Enjoy a challenge? Our mission in early Spring 2016 was to develop a live prototype of the OTC &hellip; <\/p>\n","protected":false},"author":7,"featured_media":1624,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2020],"tags":[36,63,34,39],"class_list":["post-437","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fintech","tag-development","tag-ios","tag-mobile","tag-programming"],"acf":{"nifty_post_card_image":null,"nifty_post_card_index_big":null,"nifty_post_inner_image":null,"nifty_post_card_banner":null},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>iOS Application from Java Code in Two Months \u2013 Devexperts Blog<\/title>\n<meta name=\"description\" content=\"A live prototype of the OTC flex-options trading application in 6-8 weeks. Can any Java code be translated to Objective-C nowadays? - The answer is \u201cyes\u201d.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Build a Successful iOS Application from Java Code in Two Months\" \/>\n<meta property=\"og:description\" content=\"A live prototype of the OTC flex-options trading application in 6-8 weeks. Can any Java code be translated to Objective-C nowadays? - The answer is \u201cyes\u201d.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/\" \/>\n<meta property=\"og:site_name\" content=\"Devexperts Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/devexperts\/\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-12T10:52:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-05-18T10:57:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/10\/black-full.png\" \/>\n\t<meta property=\"og:image:width\" content=\"3840\" \/>\n\t<meta property=\"og:image:height\" content=\"700\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Kirill Berezin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@devexperts\" \/>\n<meta name=\"twitter:site\" content=\"@devexperts\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirill Berezin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/\"},\"author\":{\"name\":\"Kirill Berezin\"},\"headline\":\"How to Build a Successful iOS Application from Java Code in Two Months\",\"datePublished\":\"2017-01-12T10:52:47+00:00\",\"dateModified\":\"2022-05-18T10:57:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/\"},\"wordCount\":1510,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/devexperts.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/10\/black-full.png\",\"keywords\":[\"development\",\"iOS\",\"mobile\",\"programming\"],\"articleSection\":[\"Fintech\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/\",\"url\":\"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/\",\"name\":\"iOS Application from Java Code in Two Months \u2013 Devexperts Blog\",\"isPartOf\":{\"@id\":\"https:\/\/devexperts.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/10\/black-full.png\",\"datePublished\":\"2017-01-12T10:52:47+00:00\",\"dateModified\":\"2022-05-18T10:57:04+00:00\",\"description\":\"A live prototype of the OTC flex-options trading application in 6-8 weeks. Can any Java code be translated to Objective-C nowadays? - The answer is \u201cyes\u201d.\",\"breadcrumb\":{\"@id\":\"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/#primaryimage\",\"url\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/10\/black-full.png\",\"contentUrl\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/10\/black-full.png\",\"width\":3840,\"height\":700},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devexperts.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Build a Successful iOS Application from Java Code in Two Months\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devexperts.com\/blog\/#website\",\"url\":\"https:\/\/devexperts.com\/blog\/\",\"name\":\"Devexperts Blog\",\"description\":\"We make complex finance ideas on technology, innovation and business simple\",\"publisher\":{\"@id\":\"https:\/\/devexperts.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devexperts.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/devexperts.com\/blog\/#organization\",\"name\":\"Devexperts LLC\",\"url\":\"https:\/\/devexperts.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png\",\"contentUrl\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png\",\"width\":167,\"height\":30,\"caption\":\"Devexperts LLC\"},\"image\":{\"@id\":\"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/devexperts\/\",\"https:\/\/x.com\/devexperts\",\"https:\/\/www.linkedin.com\/company\/devexperts\",\"https:\/\/www.youtube.com\/channel\/UCF3FRmes2KrcVsTXQ1aAB5w\/featured\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"iOS Application from Java Code in Two Months \u2013 Devexperts Blog","description":"A live prototype of the OTC flex-options trading application in 6-8 weeks. Can any Java code be translated to Objective-C nowadays? - The answer is \u201cyes\u201d.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/","og_locale":"en_US","og_type":"article","og_title":"How to Build a Successful iOS Application from Java Code in Two Months","og_description":"A live prototype of the OTC flex-options trading application in 6-8 weeks. Can any Java code be translated to Objective-C nowadays? - The answer is \u201cyes\u201d.","og_url":"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/","og_site_name":"Devexperts Blog","article_publisher":"https:\/\/www.facebook.com\/devexperts\/","article_published_time":"2017-01-12T10:52:47+00:00","article_modified_time":"2022-05-18T10:57:04+00:00","og_image":[{"width":3840,"height":700,"url":"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/10\/black-full.png","type":"image\/png"}],"author":"Kirill Berezin","twitter_card":"summary_large_image","twitter_creator":"@devexperts","twitter_site":"@devexperts","twitter_misc":{"Written by":"Kirill Berezin","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/#article","isPartOf":{"@id":"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/"},"author":{"name":"Kirill Berezin"},"headline":"How to Build a Successful iOS Application from Java Code in Two Months","datePublished":"2017-01-12T10:52:47+00:00","dateModified":"2022-05-18T10:57:04+00:00","mainEntityOfPage":{"@id":"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/"},"wordCount":1510,"commentCount":0,"publisher":{"@id":"https:\/\/devexperts.com\/blog\/#organization"},"image":{"@id":"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/#primaryimage"},"thumbnailUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/10\/black-full.png","keywords":["development","iOS","mobile","programming"],"articleSection":["Fintech"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/","url":"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/","name":"iOS Application from Java Code in Two Months \u2013 Devexperts Blog","isPartOf":{"@id":"https:\/\/devexperts.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/#primaryimage"},"image":{"@id":"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/#primaryimage"},"thumbnailUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/10\/black-full.png","datePublished":"2017-01-12T10:52:47+00:00","dateModified":"2022-05-18T10:57:04+00:00","description":"A live prototype of the OTC flex-options trading application in 6-8 weeks. Can any Java code be translated to Objective-C nowadays? - The answer is \u201cyes\u201d.","breadcrumb":{"@id":"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/#primaryimage","url":"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/10\/black-full.png","contentUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2017\/10\/black-full.png","width":3840,"height":700},{"@type":"BreadcrumbList","@id":"https:\/\/devexperts.com\/blog\/how-to-build-ios-application-from-java-code-in-two-months\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devexperts.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Build a Successful iOS Application from Java Code in Two Months"}]},{"@type":"WebSite","@id":"https:\/\/devexperts.com\/blog\/#website","url":"https:\/\/devexperts.com\/blog\/","name":"Devexperts Blog","description":"We make complex finance ideas on technology, innovation and business simple","publisher":{"@id":"https:\/\/devexperts.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devexperts.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/devexperts.com\/blog\/#organization","name":"Devexperts LLC","url":"https:\/\/devexperts.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png","contentUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png","width":167,"height":30,"caption":"Devexperts LLC"},"image":{"@id":"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/devexperts\/","https:\/\/x.com\/devexperts","https:\/\/www.linkedin.com\/company\/devexperts","https:\/\/www.youtube.com\/channel\/UCF3FRmes2KrcVsTXQ1aAB5w\/featured"]}]}},"_links":{"self":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts\/437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/comments?post=437"}],"version-history":[{"count":39,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts\/437\/revisions"}],"predecessor-version":[{"id":4108,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts\/437\/revisions\/4108"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/media\/1624"}],"wp:attachment":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/media?parent=437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/categories?post=437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/tags?post=437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}