Slashdot Mirror


5 Alternatives For Developing Native iOS Apps

Nerval's Lobster writes "]The simplest way to join the ranks of iOS developers is to learn Objective-C and/or Swift (the latter, while not quite ready for prime-time upon release, has gotten a lot better with its recent v1.2 update). But for everybody who doesn't want to go down that route, there are other ways to create native iOS apps. Over at Dice, David Bolton went through five alternatives: Xamarin, Codename One, Embarcadero C++ Builder/Delphi XE/AppMethod, RemObjects C#/Oxygene, and DragonFireSDK. (Three of the systems, excepting Rem Objects C# and DragonFireSDK, are cross-platform, as well.) His conclusion? "There's no shortage of systems for developing native apps for iOS and other platforms, but cost will most likely determine your choice. Other than the annual Apple developer fee, creating in Swift and Objective-C; with regard to [these alternative] platforms, Embarcadero is the most expensive."

54 comments

  1. join iOS with this One Weird Trick by turkeydance · · Score: 3, Funny

    or 5, but they're all weird.

    1. Re: join iOS with this One Weird Trick by Anonymous Coward · · Score: 0

      Ok, a description of what an "apps" is would have been useful in the summary. It sound like some type of computer program I assume?

  2. slashvertiment by sanf780 · · Score: 1, Insightful

    Another Dice post...

    1. Re:slashvertiment by halivar · · Score: 1

      LOL Slashdot is telling us things we either don't give a shit about, or are already well aware of.

    2. Re:slashvertiment by narcc · · Score: 1

      I'm glad to see things are finally getting back to normal around here.

    3. Re:slashvertiment by Jane+Q.+Public · · Score: 1

      LOL Slashdot is telling us things we either don't give a shit about, or are already well aware of.

      Not to mention: if price were really their top consideration, they'd probably have included Rhodes.

  3. Swift is ready by SuperKendall · · Score: 5, Insightful

    People are shipping production apps with Swift. It works fine, the main lingering issues are more with XCode stability than the usability of Swift itself.

    As I've grown used to it I favor it over Objective-C now, and I don't find it very hard to switch back and forth as needed for older projects or older code in the same project.

    One thing I really like is a very layered syntax, where you can be pretty verbose and clear if you like, but also strip away a lot of symbology when that makes sense for more terse code.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Swift is ready by Anonymous Coward · · Score: 0

      Yep, the drawbacks of swift (mostly IDE stability) are far outweighed by the advantages (type safety, expressiveness, performance etc).

    2. Re:Swift is ready by Anonymous Coward · · Score: 0

      II'll be shipping a full native Swift app in a week.I agree, xcode is the problem. I have never in my life had so many problems solved by just closing down software and starting it up again (Xcode, iOS Simulator). Also the pretty consistent epilepsy inducing syntax highlighting errors get to me.

      Also, indexing of swift code with dictionaries is awful. It won't even index sometimes.

      That said, It's mostly the same ... since all the frameworks are the same.

    3. Re:Swift is ready by dgatwood · · Score: 1

      This. Xcode 6 has generally been a disaster, with 6.2 and 6.3 being the worst of the bunch by far. I've experienced almost nonstop crashes while trying to use the debugger, some literally just seconds apart.

      I ended up downgrading to 6.1 because I couldn't usefully debug any iOS or OS X code in 6.2 or 6.3. It still misbehaves in strange ways every so often (bizarre bugs that truly defy comprehension, and are probably fixed in 6.2 or 6.3), but at least I can hit the step button more than about two or three times without Xcode "unexpectedly" quitting and losing my whole debugging session.

      The bigger concern is this: If Apple's IDE is in such poor shape, how much of a train wreck will iOS 9 and OS X v10.11 be as a result of all their developers being constantly hamstrung by broken tools?

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    4. Re:Swift is ready by Anonymous Coward · · Score: 0

      Delete your Derived Data it will stop (most) of your crashes.

      http://zigadrole.com/blog/xcode-delete-deriveddata/270/
       

  4. RoboVM for the Java Crowd by kervin · · Score: 1, Informative

    Also RoboVM if you'd like to leverage your Java skills. Allowing you to target Android and IOS.

    http://www.javaworld.com/article/2836880/java-ios-developer/robovm-beckons-java-8-programmers-to-ios.html

  5. Don't do this by Anonymous Coward · · Score: 2, Insightful

    Don't do this. Use the right tool for the job, languages aren't that hard to learn (after the first).

    You'll miss native APIs and be at the mercy of the developer.

    1. Re:Don't do this by Anonymous Coward · · Score: 0

      Yep, this entire article should be renamed "how to half ass an iOS app".

  6. Paid placement story? by Jack9 · · Score: 2

    Why would someone recommend

    DragonFireSDK

    over say...

    CoronaSDK

    I don't know.

    --

    Often wrong but never in doubt.
    I am Jack9.
    Everyone knows me.
    1. Re:Paid placement story? by RyoShin · · Score: 1

      Sort of: it's a Dicevertisement. Nerval's Lobster is the sockpuppet that Dice uses to post its own stories to Slashdot (without any disclaimer that Slashdot is owned by Dice.)

  7. Qt? by Prien715 · · Score: 2, Funny

    You could of course a popular SDK that works on desktops as well. But who would do that?

    --
    -- Political fascism requires a Fuhrer.
    1. Re:Qt? by sribe · · Score: 2

      Yes, it's *somewhat* popular, but the apps have always been butt-fugly and never really looked native--even after they finally saw the gross error of simulating/re-implementing controls and went to native controls.

    2. Re:Qt? by halfdan+the+black · · Score: 2

      But who would do that?

      A: You should NOT be giving the impression that either Google or Apple use Qt because you found a few independent developers how make apps for Android or iOS which happen to use Qt.

      B: The OSX VLC GUI is written with Cocoa/Objective C, the only platform than I know is Qt is Linux.

      I haven't used them much on Windows, but Qt apps on OSX are always a train wreck, nothing feels write, everything looks fake (because it is fake, all the controls are emulated), nothing lines up, and all look like a warmed over Win3.1 app with a cheesy emulated OSX skin. Linux is usually the only platform where Qt apps work well.

    3. Re:Qt? by angel'o'sphere · · Score: 1

      I doubt you have any clue which App is written with which tool/framework etc.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    4. Re:Qt? by balajeerc · · Score: 0

      I am sure you are going to get a series of comments denouncing Qt, most of them ignorant of the current state of things, most of them coming from script kiddies who find anything to do with C++ frightening. Whether Qt would be ideal for what you call a native app depends on what you are emphasizing with the word 'native'. If the emphasis is on 'native'-look and feel, then it might or might not suit your needs. QtGui module sure lets you create GUIs with native controls, however the QtQuick module is where all the awesomeness is at. Using QtQuick, one can write an entire application with a beautiful declarative UI mark up language, that brought everything that the ReactJS people did, only 5 years ago, but then the GUI does not 'look' native, even though it will be a 'native' application. However, when the emphasis is on native application like performance, Qt is THE tool for the job. Add to that the fact that QtCore gives you really useful tools (signals and slots), and OS agnostic threading, QtNetwork gives you OS agnostic sockets and all of the above work identically (on Linux/Mac/Windows/iOS/Android - seriously), Qt is the choicest tool for 'native' cross platform development. So let the script kiddies whine, while I just push a commit and watch an automated build run for 5 platforms all at once without paying a cent for any API licensing.

    5. Re: Qt? by senatorpjt · · Score: 2

      "Native look and feel" is pretty much a bullshit argument. If it were important, web applications would never have taken off. The important thing is that a UI is attractive and functional, not that it looks exactly like the UI in other applications. Even Microsoft and Apple products often don't have "native look and feel" because they're pushing some new thing like the Ribbon.

    6. Re:Qt? by sribe · · Score: 1

      I doubt you have any clue which App is written with which tool/framework etc.

      And, you're wrong about that. Java (currently) and Qt (haven't checked lately) both have tell-tale signs in the UI, things that are not correct for the platform (OS X) and that are distinctive. (Just two examples from Java: default buttons the wrong shade of blue, text in buttons positioned too low. Even after Qt switched to using native controls, there were dead giveaways in the look of Qt apps.)

    7. Re:Qt? by angel'o'sphere · · Score: 1

      We talked about mobil devices, not OS X.

      And your claim about Java having the wrong colour or text position in default buttons I can not support.

      Never noticed anything different. And my Apps I write myself are all in Java .

      Regarding Qt, I have unfortunately no idea :D

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    8. Re:Qt? by sribe · · Score: 1

      We talked about mobil devices, not OS X.

      The post I responded to:

      You could of course a popular SDK [www.qt.io] that works on desktops as well.

      As for this:

      And your claim about Java having the wrong colour or text position in default buttons I can not support.

      I'm sure it does look fine on Android, since for that platform it essentially is the native toolkit. But it does look wrong in many ways (default button was just an obvious easy example) on OS X.

    9. Re:Qt? by angel'o'sphere · · Score: 1

      As I said before: I don't see any difference in Java Apps on OS X, neither on 10.6.x nor 10.8.x or 10.9.x, running Java 6 to Java 8.

      Perhaps you mean SWT based Java Apps (like Eclipse) that everywhere look like SWT ...

      Sorry, did not notice you originally answered to a post that explicitly talked about QT/Desktop.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  8. b4i if you feel comfortable with BASIC by Gramie2 · · Score: 1

    Anywhere Software produces B4A for Android apps, B4I for iOS, and B4J for desktop Java. They all use a dialect of BASIC very similar to Visual Basic. The Android version, at least, compiles to Java bytecode and gives full access to the Android libraries, etc.

    The first two are about $100 for a license and 2 years of updates, the third is completely free. There is a vibrant community, and the main developer is very active on the forums, answering many questions.

  9. Clueless Article by Ronin+Developer · · Score: 2

    I read the this article with distain. It is clear that the author hasn't tried any of these tools. Yes, Embarcadero's RADStudio and Delphi products are expensive. Yes, I have shelled out the yearly maintenance fee when my current employer wasn't a Delphi shop. Other than being a relic from the 90's, why?

    The answer is simple - it works. Originally developed as a Windows development tool, it can now target iOS, Android and even OSX. Author doesn't address the latter. It has excellent database connectivity for both desktop and mobile. On the mobile platform, you can use SQLite or Interbase to Go.

    Apps can be written which can incorporate wifi and/or Bluetooth to create tethered apps allowing seemless integration between desktop and mobile. It is easy to write apps that can use Parse or Kinvey to leverage cloud computing. And, if you know what you ate doing, you can leverage frameworks not already supported.

    FireUI is not a framework, it's a tool built into the IDE so that you can design views and see how they adapt and look on other platforms. This is done using a crossplatform framework, under the hood called FireMonkey. I won't lie, it does add to the size of the app. You use styles (canned and custom) to change the appearance of the components. They have native looking control styles as well.

    There are also 3rd party vendors, such as TMS Software or the open source D.P.F. components which ARE native code controls. They provide Delphi wrappers around the the frameworks. This eliminates the speed barrier imposed by the FM3 layer if it bothers you.

    The beauty of this tool is the ease in which apps and full applications can be written. But, yeah, it's pricey.

    AppMethod is a monthly plan for their tools.

    Delphi used to have an amazing 3rd party ecosystem. Stupidity by management at Borland/inPrize clusterfuck killed Delphi in favor of their Java products. What java products? Exactly. Thankfully, there are still 3rd party vendors who provide amazing addons - just many have left and may never return in favor of C#.

    REMObjects used to be a component vendor for Borland and provided a product called Prism which implemented their own dialect for .Net until they felt they got stiffed by Borland. They released Oxygene to replace Prism. They make great stuff.

    No, I don't work for Embarcadero. I am a fan. And, if you want to develop vertical apps for, say, the enterprise, it's worth looking in to, But, the adoption rate is low in the US. Wish that wasn't the case.

    1. Re:Clueless Article by sribe · · Score: 1

      Stupidity by management at Borland/inPrize clusterfuck killed Delphi in favor of their Java products. What java products? Exactly.

      Sybase. Power++. Same story. Sigh.

    2. Re:Clueless Article by Anonymous Coward · · Score: 0

      Wow thanks for the DPF Component tip! Still learning FMX, and the extra size required does rub me the wrong way sometimes, so a native layer like this is a great tool to have in the holster.

    3. Re:Clueless Article by Ronin+Developer · · Score: 1

      Glad to help. I would suggest you visit fmxexpress.com as well. Lots of articles and links to code for developing FMX apps for iOS and Android.

      Developing components for FMX is a different process than for VCL components. Personally, I haven't had the time to delve into this area and, right now, more inclined to buy COTS until I have more time to really delve into styles.

      Good luck.

  10. Qt 5.x by Anonymous Coward · · Score: 1

    Qt 5.x offers IOS / Android and Windows Phone App development

    Qt5.4 supported platforms

  11. Kivy by Kyrubas · · Score: 1

    The Python multitouch framework Kivy is quite nice for anyone that's looking to possibly do cross platform apps.

  12. It's a multivariate problem by eighthdev · · Score: 0

    You get the highest performance app if you build directly using ObjC for iOS. But your application is then not portable; if you don't care, fine. If you do care, you have to look at the alternatives, which vary in more than just price-point. Consider performance vs cost of development and QA and maintenance (for multiple platforms) vs price of development tools vs. flexibility of the tools vs. low-level hardware access. Among other variables one could name. Our offering in this getting-to-be-crowded field is '8th' (8th-dev.com). The apps it produces are faster than Corona/PhoneGap, and (in our opinion) easier to code than Xamarin et. al. Not to mention that we are less expensive than our serious competition.

    1. Re:It's a multivariate problem by dgatwood · · Score: 4, Insightful

      Here's the thing: No decent UI is going to be portable anyway. Every platform out there has its own idioms that users expect an app to obey, and no cross-platform technology will realistically conform to those idioms well enough to not feel out of place.

      The only good approach for writing portable code is to get people who understand the platform to write a fully native UI, and to write all the underpinnings in a portable language. Share the model, and maybe share the controller, but don't even attempt to share the view. Therein lies the path to madness.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    2. Re: It's a multivariate problem by Anonymous Coward · · Score: 1

      I think you really need to take a look at RADStudio or Delphi's FireUi and FireMonkey.

      FireUi allows for the creation of a master view. Then, you can add/remove elements by target platform and/or screen size. You apply styles (which are akin to css3, I guess) and it just works.

      Android requires the NDK as the produced code is not Java. Other platforms, the resultant binary is for the cup structure.
      And, there are native code components as well. The advantage here is you can reuse your other code across platforms.

    3. Re: It's a multivariate problem by dgatwood · · Score: 1

      It's not just views. The entire design idiom is different:

      • Mac apps: Each document gets its own window. May use many other small windows for various things. Important actions should be in a menu bar, with Command-key shortcuts. Menu bars are per-app. Right-click is useful, but should not be required for any feature. Standard controls are sized for use with a mouse on a large screen. Users open files from disk using a system-provided UI. Gestures are used for scroll, zoom, rotation, and possibly other features, but those features should also be supported on devices that lack those trackpad capabilities.
      • Windows apps: Entire app gets one window, often divided up into panes. Menu bars are per-window. Right-click is often required, and that's okay because everyone has a multi-button mouse. Important actions should have control-key shortcuts. Standard controls are sized for use with a mouse on a large screen. Users open files from disk using a system-provided UI.
      • iOS apps: Entire app gets one view, often divided up into panes. Various gestures let you access other views in place of part or all of the app's existing view. Standard controls are sized for use with a digit on a small screen. Users open documents from a per-app directory, using an app-specific UI (which is usually very simple).

      No matter how you restyle your Windows app's window, it is never going to look like an iOS app, because the entire way you design UIs for mobile devices is completely different from the way you design UIs for the desktop.

      Now you might be able to get away with it if you're designing only for iOS and Android, but only because the design idioms are fairly similar. And even then, your users are likely to complain about the lack of animation and other advanced UI features that likely don't translate well into cross-platform APIs.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

  13. 13 languages performance tested on smartphones by brunobowden · · Score: 2

    @HarryCheung has tested mobile app by reimplementing the same app with 13 different languages. This includes C++ (fastest on iOS and Android), Swift, Xamarin, J2ObjC, Javascript & RubyMotion (slowest on iOS). All the code is available on GitHub for the community to improve further. Disclosure: I provided feedback on the posts but was not involved in the testing.

  14. native not required in most cases by Anonymous Coward · · Score: 2, Insightful

    I was involved in the development of a number of native mobile app, which usually involved extending other products to add a mobile option to tick a box. Without fail 4 out of 5 of them would have been better implemented as a pure web UI as they added nothing of value that required them to be native: No alerts, no offline functionality, no special networking or use of device features. It's mostly the case that management sais "we need a mobile app", "native is better", "do iOS first" or whatever the flavour of the month is.

    Make it a mobile-first web UI for anything that does not clearly need to be native, immediately stop sucking.

  15. Why not web-app? by jellomizer · · Score: 3, Insightful

    Sure there are some apps that need more direct access to features. However I don't get why web apps are ignored?
    Most of the apps for the phone are just basic forms that then connect to the Internet and get data back. This is stuff we have been doing on the web already.

    The neat thing about web apps are the following.
    1. They work on multable mobile devices.
    2. You can update and upgrade automatically.

    --
    If something is so important that you feel the need to post it on the internet... It probably isn't that important.
  16. Cordova by Meneth · · Score: 2

    Then you've got hybrid systems like Cordova. Code your UI and logic in HTML5, use native plugins with javascript interfaces to access the more unusual stuff.

  17. Whatever the question is ... by Anonymous Coward · · Score: 1

    ... the answer is NOT Delphi. The only thing worse than Objective-C is an obsolete Pascal dialect no one uses. You do not want your code base in that. Plus the not-Borland Embarcaradaradado thing has turned the $50 development tool of the 90s into an expensive "enterprise" tool that costs too much. Ironic that Delphi's selling point in the 90s was how cheap it was. These days, the Borland ship has sailed and you don't want to be on it. (And I was a big Delphi developer in the 90s - I loved it - but the world has moved on.)

  18. React Native by njrabit · · Score: 1

    So I recently spent a day remaking an iOS app in React Native that I had spent a week writing in Swift. (in both cases, probably 90% of the time was learning & reading docs than actual coding). So React Native is Facebook's development tool for writing native-feel iOS apps using Javascript. Basically, Javascript runs on iOS and interacts with a native library mimics their React.JS framework. It provides a sort of HTML-like syntax and CSS styling for designing your UI. The key selling points with React Native vs others is that UI interaction is kept silky smooth in it's own thread and rendering happens in a native view, not in a browser webview instance. React Native is still very beta and it's docs seem to assume some familiarity with React.JS. Xcode only just builds the framework and starts it, and by default your actual program in Javascript is fetched from a local webserver (npm start). This allows you to edit your code and quickly hit 'control-r' to reload changes and rerun. When you're finally done, you bundle your Javascript with the app. React Native won't replace the flexibility of native development and Apple's Swift has made iOS (and OS-X) native development much easier but you still need to learn iOS APIs and concepts like UI constraints. React Native lets you just deal with UI in terms of hierarchies of rows and columns that can resize or not, yet you can still create an app of the style of Flipboard or Flickr's.

  19. Don't forget the other cost.... by BenJeremy · · Score: 1

    Apple forces you to submit apps using the most recent releases of OSX through their proprietary "app loader"

    Of course, the same thing COULD be accomplished using a web-based uploader, but that isn't the "Apple way"

  20. Re:Missing option by Anonymous Coward · · Score: 0

    Well done the alternative to developing on iOS is not developing on iOS. If you are developing on iOS and use another language, say ObjectiveC instead of Swift, you are using a different option.

  21. Application defined by tepples · · Score: 1

    I think the editors assumed that the majority of people would understand "app" as short for "application", or user-facing computer program. This usage was common by 2000 if not earlier, in any case several years before Apple's App Store debuted.

  22. Offline use by tepples · · Score: 1

    Most of the apps for the phone are just basic forms that then connect to the Internet and get data back.

    And many are not. For example, how easy is it to use a web app on an iPod touch or iPad mini that is away from its Wi-Fi connection? An offline-capable application can wait for an Internet connection to become momentarily available, sync, and then let the user view the data later even after going offline again. The HTML5 platform supports features for offline use, such as application cache, local storage, and IndexedDB, but I was under the impression that these were limited to some stupidly small size like 5 MB.

    The neat thing about web apps are the following.
    1. They work on multable mobile devices.

    Unless Apple refuses to implement a feature of the web platform that is vital to your application. Users of Safari couldn't upload pictures or video until iOS 6, Safari had no WebGL support until iOS 8, and IndexedDB is horribly broken. Even in the current version, does it support uploads of data types other than pictures and video?

    2. You can update and upgrade automatically.

    Which isn't always a good thing. They might want to use the old version in order to avoid defects that the new version introduced. Or they might want to run their own copy of an application in order to avoid sending their confidential data to a web application operator in a different jurisdiction. See also "Who Does That Server Really Serve?".*

    * The author and publisher of that essay find iOS abhorrent for other reasons.

  23. Requires users to own a device running "proper OS" by tepples · · Score: 1

    Say management requires you to make an application available to people who currently use iOS. Would it be more cost effective to A. make it for iOS, or B. make it exclusive to PCs and Android and ship an Android device at no additional charge with each copy of the application?

  24. Someone mentioned Delphi :O by Anonymous Coward · · Score: 0

    i'm really happy that someone has mentioned Delphi as a viable development platform for anything. I've been working with it for the last 15 years, and it's a great language. Glad to see someone is pointing out the fact they went cross platform with the latest generation of the product.

  25. Re:Requires users to own a device running "proper by Anonymous Coward · · Score: 0

    A and B in your post are alternatives.

    Missing option is referred to whenever /. does a poll. This article on Dice's /. refers to a Dice article which uses alternative incorrectly pluralized where they mean options and I believe the original post was making that point.

    Anyone with mod points the above post does not deserve to be hidden because of an incorrect understanding of the parent.