{"id":100,"date":"2011-11-07T13:42:24","date_gmt":"2011-11-07T20:42:24","guid":{"rendered":"http:\/\/www.petesworkshop.com\/blog_wp\/?p=100"},"modified":"2011-11-07T13:42:24","modified_gmt":"2011-11-07T20:42:24","slug":"mobile-application-development-and-ibm-i-part-1","status":"publish","type":"post","link":"https:\/\/www.petesworkshop.com\/blog_wp\/?p=100","title":{"rendered":"Mobile application development and IBM i (part 1)"},"content":{"rendered":"<p>This is part one of a XX part series on mobile application development for IBM i.\u00a0 I say XX since I really have no idea of how many parts it will take to make it whole. I&#8217;ll just keep going until you say &#8220;STOP!&#8221;.<\/p>\n<p>Notice I didn&#8217;t set the title to be Mobile application development ON IBM i because the i isn&#8217;t a mobile device (yet&#8230;someday the Power chip will power a mobile device&#8230;).\u00a0 Where the i comes into play of course is in application *serving* and it serves that purpose well.\u00a0 We will eventually take a look at a CGIDEV2 application, a PHP application, and a Java application. Actually, *just* the IBM i HTTP server could do the job in the simplest of cases.\u00a0 In other words, any application server language supported by the i could be used which includes Rails and Grails (Ruby and Groovy) and if I can come up with an application that I could write for each language and framework, I will.\u00a0 Actually, the *server* side of the equation is the easiet to solve because my experience is that the world of mobile application development revolves around HTML5 and Javascript on the client. The server, well, it just serves the application (DUH!).<\/p>\n<p>So let me flesh that out a bit.\u00a0 I would guess that perhaps 90% of mobile applications that would come out of an IBM i shop would be scaled down versions of the 5250 and web applications that an i would typically be serving.\u00a0 Of course the 5250 app would be written in RPG (ILE RPG) and would be a &#8216;classic&#8217; green screen application.\u00a0 If the shop was delivering web applications to it&#8217;s users, then I would again guess that PHP and CGIDEV2 (RPG) would be right up there at the top of the list with Java further down. EGL would probably make a showing on the list and\u00a0 there would also be a smattering of 5250 modernization applications with a single digit presence like web facing, Look Software, and a host of others (again I am GUESSING so no flames for getting it wrong).\u00a0 Of the remaining 10% of mobile applications, there might be another 5% that have no 5250\/web analog on i because it truly needs to run on a mobile OS (e.g. uses geolocation and\/or accelerometer or other function) and the remaining 5% need some &#8220;from scratch&#8221; in a native language development for some other reason (iPhone, iPad, iDontCare&#8230;etc).\u00a0 So, if you are in the 90% listed above, that is, a shop that needs a mobile web application presence, then I think I&#8217;ll be able to help you along.<\/p>\n<p>We still have some legwork to do.\u00a0 Depending upon the design of the 5250 application and\/or the web application that is served on IBM i, the question is, how well designed is the current application?\u00a0 If it is an RPG app, is it modular with a clear separation of UI, business logic and database I\/O?\u00a0 If not, you will probably want to skip from RPG directly to something like PHP because there won&#8217;t be much in\u00a0 your code that can be leveraged for your mobile web application.\u00a0 If it IS modular, well designed code, you can probably take it from the 5250 world into the web world using something like CGIDEV2.\u00a0 With CGIDEV2 you&#8217;ll still be writing your code in RPG and you can use existing modules to handle some of the functionality. The alternative to CGIDEV2 would be PHP (which is NOT an RPG derivative) because rumor has it PHP is an easier jump for RPG programmers.\u00a0 I went from RPG to Java with nary a hiccup so there is no one size fits all RPG to ??? language transition.\u00a0 I also code in PHP and in Ruby as well.\u00a0 EGL is cool and has greatly matured over the last couple of years.\u00a0 But, in any case, I&#8217;ll try to give you analogs in as many different languages as I can.\u00a0 Certainly one will work for you.<\/p>\n<p>One thing you WILL have to learn is HTML5 and Javascript.\u00a0 On the client side of the equation (the mobile device side) you really can&#8217;t avoid learning HTML5 and Javascript.\u00a0 You can do VERY cool things with these tools and you will soon see the value of investing some time in learning them.\u00a0 For mobile web applications that are NOT going to use a mobile device&#8217;s capabilities like geolocation, accelerometer, etc you can pretty much write, test and deploy using the browser on your PC or laptop with the caveat that you will have very little real estate to play with when you deploy to the mobile device.\u00a0 But what I like about mobile *web* application development is that it doesn&#8217;t take a special IDE to design the application interface, you could do it with a text editor on your PC.<\/p>\n<p>OK! I hope that is enough to wet your appetite.\u00a0 In the next installment (weekly or better) I&#8217;ll take you through some design considerations that should help shape your mobile web application design.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is part one of a XX part series on mobile application development for IBM i.\u00a0 I say XX since I really have no idea of how many parts it will take to make it whole. I&#8217;ll just keep going &hellip; <a href=\"https:\/\/www.petesworkshop.com\/blog_wp\/?p=100\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-100","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.petesworkshop.com\/blog_wp\/index.php?rest_route=\/wp\/v2\/posts\/100","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.petesworkshop.com\/blog_wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.petesworkshop.com\/blog_wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.petesworkshop.com\/blog_wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.petesworkshop.com\/blog_wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=100"}],"version-history":[{"count":1,"href":"https:\/\/www.petesworkshop.com\/blog_wp\/index.php?rest_route=\/wp\/v2\/posts\/100\/revisions"}],"predecessor-version":[{"id":101,"href":"https:\/\/www.petesworkshop.com\/blog_wp\/index.php?rest_route=\/wp\/v2\/posts\/100\/revisions\/101"}],"wp:attachment":[{"href":"https:\/\/www.petesworkshop.com\/blog_wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=100"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.petesworkshop.com\/blog_wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=100"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.petesworkshop.com\/blog_wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}