Slashdot Mirror


iPhone Gets .Net App Development

snydeq writes "Novell has announced MonoTouch 1.0, a commercial SDK that allows developers to build iPhone apps using Microsoft's .Net Framework instead of the Apple-designated C or Objective-C languages. The SDK leverages Novell's Mono runtime for running Windows apps on non-Windows systems, allowing developers to utilize code and libraries written for .Net and programming languages like C#. With MonoTouch, the Mono runtime provides such developer services as garbage collection, thread management, type safety, and Web services, said Mono leader Miguel de Icaza."

61 of 327 comments (clear)

  1. Launch Times? by glennrrr · · Score: 4, Interesting

    Well how long does it take to load the whole Mono framework runtime because every second counts on the iPhone?

    1. Re:Launch Times? by Gwala · · Score: 5, Informative

      Probably not too bad - my guess would be it's using the AOT version of Mono, which compiles the framework into the final application, resulting in much better load times in performance-critical environments (see http://www.mono-project.com/AOT )

      --
      #!/bin/csh cat $0
    2. Re:Launch Times? by Anonymous Coward · · Score: 4, Interesting

      If I am not mistaken and given that Apple bans other execution environments, the last step in building is compiling to native code. So there are no JIT times, I donÂt know about other loading times.

    3. Re:Launch Times? by digitalunity · · Score: 4, Interesting

      I would be more worried about WinForms compatibility. I developed a couple of .NET applications(never again!) and running them with the Mono runtime is markedly different than MS's runtime. Stability wasn't great with Mono and controls didn't always behave the same.

      Although I won't developing any more .NET applications if I can avoid it, it would still be nice if Mono matured to the point where it could replace the MS runtime without noticeable difference.

      --
      You can't legislate goodness. Let each to his own destiny, by will of his freely made choices.
    4. Re:Launch Times? by palegray.net · · Score: 3, Insightful

      My guess is approximately zero seconds, as Apple is sure to kill this.

    5. Re:Launch Times? by thetoadwarrior · · Score: 4, Insightful

      Like MS will ever allow that to happen. If .Net and Mono were completely compatible then it would be much easier to port apps to Linux and therefore remove the need for Windows.

    6. Re:Launch Times? by poetmatt · · Score: 4, Insightful

      It's no magic that Mono is always a version behind .net or more. It's just that lots of people are not realizing this yet, or the same with silverlight. It's stupid because if it was complete compatible then people would actually have more interest in windows, too.

    7. Re:Launch Times? by Jon+Pryor · · Score: 2, Insightful

      My guess is approximately zero seconds, as Apple is sure to kill this.

      Why would Apple want to kill this?

      MonoTouch is not significantly different from Unity 3D, which has been used to create over 40 games for iPhone already.

      The primary difference is, instead of needing to create user interfaces purely atop GL, you can use the CocoaTouch libraries and get native buttons, frames, html controls, etc.

    8. Re:Launch Times? by Snap+E+Tom · · Score: 3, Informative

      Because a secret agenda of theirs is to make you use XCode to develop apps. This was made quite clear to my former company on a project. That's why you won't see Java nor Flash any time soon, and the ToS explicitly forbids apps that execute external code. I theorize that by doing this they 1) want control and 2)hope that the iPhone development activity propagates into OS X development activity.

    9. Re:Launch Times? by Anonymous Coward · · Score: 2, Insightful

      and the ToS explicitly forbids apps that execute external code.

      Actually, the ToS explicitly forbids apps that execute external code from running on the iPhone

      This is an 'app' that runs on your workstation, used to compile code into an executable. The resulting executable, which would not execute any external code just like all the apps out there now, would be perfectly fine to put on the iPhone.

      It's an SDK, not an interpreter.

    10. Re:Launch Times? by SanityInAnarchy · · Score: 5, Interesting

      Actually, there are two large things standing in the way of that:

      1. The best .NET development tool, from what I can tell, is still going to be some form of Visual Studio.
      2. Unlike Java, .NET makes native bindings dirt simple. If you were using a DLL in C++, you can use the same DLL in C# relatively easily.

      #1 means that even if people want to target Mono, they might develop in VS.NET anyway, which is a bunch of VS.NET and Windows sales for Microsoft. #2 means that anyone who doesn't deliberately target Mono is probably going to call a bunch of native win32 code, just because it's so trivially easy to do so.

      Note that both of these exist even with a "100% compatible" Mono, unless it was also combined with a 100% compatible Wine, and we all know exactly how likely the latter is.

      --
      Don't thank God, thank a doctor!
    11. Re:Launch Times? by SanityInAnarchy · · Score: 4, Interesting

      How does this hurt Apple?

      I don't know, how does Google Voice hurt Apple? How does Java hurt Apple?

      I mean, you can sort of come up with a rationale, but it's really, really strained. Basically, it's not about whether it directly hurts apple, as whether it might hurt Apple, and/or whether it lets Apple give up even a tiny iota of control over their platform, and/or whether it hurts Apple's partners.

      In this case, it's probably about control. Apple is going to be very wary of any language which supports eval(), since that means my app could just download new code from the Internet and eval it, thus eliminating the middleman (bottleneck!) that is the Apple approval process for all future updates.

      --
      Don't thank God, thank a doctor!
    12. Re:Launch Times? by Cyberax · · Score: 5, Informative

      Java has quite nice bindings to C++ now in form of JNA ( https://jna.dev.java.net/ ), it's actually about as powerful as .NET interop.

      Of course, managed C++ is even better still.

    13. Re:Launch Times? by tyrione · · Score: 4, Insightful

      Because a secret agenda of theirs is to make you use XCode to develop apps. This was made quite clear to my former company on a project. That's why you won't see Java nor Flash any time soon, and the ToS explicitly forbids apps that execute external code. I theorize that by doing this they 1) want control and 2)hope that the iPhone development activity propagates into OS X development activity.

      Yes. Use our Development Tools on our Platform. Truly it is a secretive agenda. Get real.

    14. Re:Launch Times? by shutdown+-p+now · · Score: 3, Informative

      Java has quite nice bindings to C++ now in form of JNA ( https://jna.dev.java.net/ [java.net] ), it's actually about as powerful as .NET interop.

      Yeah, there's also J/Invoke.

      The problem is Java language itself. Yes, you can map unsigned ints to signed ones, pointers to longs and structs to classes, and so on - but mappings can get very complicated when API itself is (i.e. lots of nested structs/unions of arrays of pointers, etc). In C#, the type system lets you drop this level of abstraction when needed (or when it is simply inconvenient), and work with raw pointers, C-style fixed-size arrays, structs and unions with exact same memory layout - no marshaling involved. It is faster as well, obviously, since there's no need to copy data back and forth (which can cost a lot for large object graphs).

    15. Re:Launch Times? by Em+Ellel · · Score: 2, Insightful

      Apple cares as much about control over the application development platform as they do about the number of apps in their store. Look, I don't hate Apple or anything (hell, I'm posting this from a new MacBook Pro), but the truth is the truth.

      I call BS.

      Apple cares far more about control than about number of apps. These are the people who for a year after launch of the SDK forbidden posting of any sample code in public!!! Number of apps is not a priority to Apple - otherwise it would take less than a month it takes now to get an app even looked at, let alone approved and they would not reject applications just because they did not like the loading splash screen. (they objected to one of my submissions because splash screen was a logo instead of a fake screenshot of an application - even though half the apps in the app store use logos or things like that)

      Apple is all about control. Absolute control. If they figure out how, this thing will be dead before the first app is submitted.

      -Em

      --
      RelevantElephants: A Somatic WebComic...
    16. Re:Launch Times? by digitalunity · · Score: 2, Informative

      It's extra work to use managed and unmanaged code in the same project. Microsoft's implementation of Winforms is a wrapper for legacy WIN32 controls, leading to a lot of funky behavior when you try to subclass them.

      It's generally just a pain in the ass to use compared to Qt on Windows or Linux, which gives me true interoperability and a slick interface with little work. There are some controls available in .NET that aren't there in Qt, but the reverse is true also. I find Qt's model/view architecture easier to use, although there are a few classes that are a bit contrived.

      --
      You can't legislate goodness. Let each to his own destiny, by will of his freely made choices.
    17. Re:Launch Times? by SanityInAnarchy · · Score: 2, Interesting

      It hurts Apples partners and customers.

      Ok, I'll bite. How does it hurt customers?

      The telcos ability to use the same device to sell various upgrades and data plans, mins ect.

      Um... What?

      Data seems to be much more expensive than minutes.

      Your role as a consumer is to link your bank account to a regional telco and enjoy.

      I don't see how this is improved by letting said telco lock down my phone, or lock me into a two-year contract.

      Java might just eat into battery life just enough to on average change the device from "lasts a long time on a change" to "the battery life is ok".

      ...and Javascript doesn't?

      --
      Don't thank God, thank a doctor!
    18. Re:Launch Times? by shutdown+-p+now · · Score: 2, Insightful

      lets you drop abstractions.... i am not sure for which language this is making a point.....

      We're talking about directly invoking functions from native shared libraries. Regardless of abstractions, this scenario is inherently unsafe - since anything can happen in native code - so it doesn't matter if you represent a pointer as an int, the function that you're calling will SIGSEGV on a null value anyway, and may quietly corrupt memory if you give it a wrong non-null value.

      An abstraction level here doesn't really buy you any safety, and only serves to map native constructs (such as pointers) to the limited subset of those constructs that the language/runtime in question supports. C# supports a larger subset - in effect, it has direct representation of everything in standard C: unsigned integral types, raw pointers, fixed-size non-bounds-checked arrays, stack-allocated arrays and structs, unions, function pointers; and with Microsoft __arglist language extension (which Mono supports), non-boxed varargs.

      Of course, this is all strictly opt-in. You don't have to deal with these things if you don't deal with native APIs (and, in many cases, you can avoid dealing with them even if you do), and the language requires you to be very explicit about your intentions when using "unsafe" features - pointers and pointer arithmetic can only be used inside unsafe { ... } blocks, for example, and the compiler will also demand "/unsafe" command line switch when compiling such code. I really don't see how one would reasonably argue against such things, unless we're talking about a language specifically dumbed down to the point where you can't "shoot yourself in the foot" - which is something, the attraction of which I never understood.

      Even Pascal had reinterpret_cast...

    19. Re:Launch Times? by Em+Ellel · · Score: 2, Interesting

      How much do you use it? I use my iPhone G3 as a music player roughly six hours a day, make a few phone calls, send lots of text messages and perhaps an hour or so of Web browsing and I generally have a least a half-charge left at the end of the day. Sure, I've had phones with better battery life but they didn't do nearly so much. It's a trade-off, for sure.

      I do use it a fair deal more than an average user and while I would agree that it is really pretty decent on battery when you listen to music, any time a screen is on you can just SEE the battery drain. I mostly use phone, email, calendar and SMS and while most of those use screen (and thus drain battery) I think also at fault is the very poor radio inside my G3. I pretty much do not get any reception inside most buildings (which is sad, cause I spend most of my time in downtown SF - if you can't get reception there....) - I did find that if I spend most of my day outside with strong reception - the battery life is significantly better (But then again, I am using the phone significantly less when I am outside)

      --
      RelevantElephants: A Somatic WebComic...
    20. Re:Launch Times? by EastCoastSurfer · · Score: 4, Informative

      I don't know, how does Google Voice hurt Apple?

      It hurts ATT and thus hurts Apple. The reason for the Google Voice rejection became clear when ATT announced their 'a-list' program to start on the 20th of this month. As long as you have a plan costing $59+ (most iphone plans) you can put 5 numbers on your a-list that will not count against your minutes. Add the Google Voice number to your a-list and boom, unlimited talk time.

    21. Re:Launch Times? by UnknownSoldier · · Score: 2, Informative

      > Visual Studio Express has everything you need that comes with Visual Studio

      No it doesn't. No resource editor for one.

    22. Re:Launch Times? by gbjbaanb · · Score: 2, Informative

      Of course, Visual Studio Express doesn't come with any mobile development tools, which might be useful to someone wanting to write for mobile devices (not that this applies to the iPhone).

    23. Re:Launch Times? by SanityInAnarchy · · Score: 2, Informative

      they open the door to even shittier apps and hellishly non-native interfaces.

      So does any turing-complete language with a decent graphics API. In other words, so does Objective C.

      I don't see why another language is a problem as long as Apple requires native UIs using Cocoa, and actively polices the app store.

      Java is *still* slow,

      Citation needed.

      lowest common-denominator shit.

      Which iFart isn't?

      Can you imagine if we had "normal" cell phone programs on the iPhone instead of people taking the time to do native versions?

      We'd actually have portable apps! What a novel idea! Someone would be able to develop an iPhone app, and then after Apple rejects it for some bullshit reason, they can actually go deploy it on Blackberry, Symbian, Palm, or Android!

      --
      Don't thank God, thank a doctor!
    24. Re:Launch Times? by chrish · · Score: 2, Interesting

      Doesn't the EULA also forbid you from distributing executables made with Visual Studio Express editions?

      --
      - chrish
  2. Re:Why CLR (.NET mono) and not JVM (Java)? by pavon · · Score: 4, Insightful

    MonoTouch compiles the code into a native executable, rather than shipping with a VM. Apple has no reason to disallow that.

  3. Re:Why CLR (.NET mono) and not JVM (Java)? by kalirion · · Score: 4, Insightful

    Since when has it needed a reason?

  4. Violates the developer agreement by TejWC · · Score: 2, Insightful

    I am pretty sure that adding your own runtime violates the developer agreement. The article didn't say if this "app" ever got approved but I highly doubt it would (this would also raise concern about the lack of Java on the iPhone).

    Also, using C# is not THAT much better than the native objective-c. According to the article, it seems that "mono-touch" is really just C# bindings for cocoa-touch and I have had very bad experience using C# bindings for just about any kind of C code (allocated memory not getting garbage collected, bindings/function names being outdated, unmanged heap space limits, etc.). It sounds fun to play around with but I definitely wouldn't invest a large amount of time/money on it yet.

    1. Re:Violates the developer agreement by CodeBuster · · Score: 2, Insightful

      Also, using C# is not THAT much better than the native objective-c

      Excuse me? C# and .NET take the same approach as Java which is to provide the most powerful general purpose programming language + massive class library of common functionality possible (C# and .NET which allows any language to compile to the CLI assembly are arguably even more powerful than Java right now). C# and .NET are definitely MORE powerful than objective C in a general purpose sort of way (objective C might have more depth in specific targeted areas like GUI widgets, but the breadth of massive frameworks like C# and Java is truly vast). As for the memory management in C# and .net languages, you have to know a bit about garbage collection, finalization, and the IDisposable interface (which enables the "using" keyword syntax) when dealing with "unmanaged" resources (which require manual destruction, usually because they are outside the managed heap maintained by the .NET framework).

    2. Re:Violates the developer agreement by daBass · · Score: 2, Insightful

      Just because a platform has a greater number of frameworks doesn't mean it is more powerful. You could even turn it around and say that the number of 3rd party frameworks being developed indicates the language is missing some important stuff and everybody is trying to solve it in their own way, with lots of redundant, very similar frameworks.

      You are probably comparing your desktop/server experience wth those languages to a mobile platform. I program Java and .Net for server apps every day and iPhone by night. The two are a completely different world. In my dayjob I am using all the frameworks and libraries that make me more productive. For the iPhone I don't even go looking for them because everything I need is right there. (The only exception to that I could see is 2D/3D animtaion and games, for which there are several great frameworks for iPhone. But that is not something I Do.)

      Fifty thousand apps in just over a year on a niche mobile platform can't be argued with. The Objective-C/Cocoa Touch platform is inmensly powerful.

      Ask any mobile developer that has done Windows Mobile in .Net, Java ME or Android and see which platform they create their best looking, best function, most reliable apps on and which one is the fastest to develop for. Yes, that would be iPhone.

      Maybe Mono Touch will bring that kind of quality and productivity using C# to the iPhone platform, but I am sceptical.

      There is a reason why there is so much quality software for iPhone - and for the Mac platform for that matter - and that reason are the Apple SDKs and Objective-C.

    3. Re:Violates the developer agreement by Santana · · Score: 2, Interesting

      C# and .NET are definitely MORE powerful than objective C in a general purpose sort of way (objective C might have more depth in specific targeted areas like GUI widgets, but the breadth of massive frameworks like C# and Java is truly vast)

      Having more libraries doesn't make a language more powerful; in any case, it would make it more productive.

      The hard link you have in your mind between Objective-C (or the libraries available to it, since you seem to interpret it as the same thing) and GUI widgets is just supported by your ignorance.

      Besides, I don't get what's the big deal about learning Objective-C. It's a real C superset and heavily inspired by Smalltalk. Ruby programmers would feel at home. Who wouldn't like to think of Smalltalk or Ruby while writing real world solutions at close-to-the-metal speed.

      --
      The best way to predict the future is to invent it
    4. Re:Violates the developer agreement by daBass · · Score: 2, Interesting

      but one must be careful not to confuse popularity with ease of development. The iPhone may be easy to develop for (don't know personally), but that doesn't prove that popular == easy to develop for.

      Absolutely, but in this case, from my experience it is true. I find it very easy and there are numerous stories of people new to programming making some very good and popular apps.

      Apple has historically been more like Sony in this regard, limiting who can write for their platform AND what they can publish.

      This is only try for the iPhone. ("historically" thus only going back 14 months!) There is not a single limation on the Mac platform; you can write anything you like and publish it any way you like. All without paying Apple anything, of course.

      Also, something to remember about mobile platforms in general and iPhone in particular: they generally have a more limited and defined feature set because everyone has essentially the same hardware device (or with only minor variations).

      You should try mobile development! :) To support the majority of Java ME phones that are technically capable of running your app you should really make hundreds of builds! Windows Mobile isn't much better, with wildly varying hardware inside.

      Apple could learn a thing or two from Microsoft about treating developers right

      This is a gripe you have with iPhone, not the Mac platform. MS charges hundreds for Visual Studio where XCode is free, for example. They do have a paid developer program which gives early access as well as good discounts on hardware. But you don't need to pay them anything to develop or get their approval for anything on the Mac.

      How many people do you know who are interested in general purpose computing and choose to run MacOS?

      An ever growing number around me, actually! People buy computers very much on price and "what I already know". Luckily more and more people are realising there is something better than Windows and switching is easy.

  5. Unity by tylersoze · · Score: 4, Informative

    Unity, www.unity3d.com, which uses Mono, has been available on the iPhone for some now.

  6. Re:Why CLR (.NET mono) and not JVM (Java)? by asdf7890 · · Score: 3, Informative

    Anyone know why Apple would allow one and not the other? Does Mono not multitask or something?

    No one has said that they would. The article itself states:

    Mono is associated with the LGPL (GNU Lesser General Public) license used for distributing free and open source software, Novell with MonoKit is distributing Mono under commercial terms. The LGPL requires that users can replace an LGPL library with their own version of a library, a conflict with App Store requirements, according to Novell.

  7. Re:Why CLR (.NET mono) and not JVM (Java)? by SanityInAnarchy · · Score: 3, Informative

    As the AC says, so does gcj.

    But the problem is, Apple has explicitly disallowed "frameworks" -- and this definitely sounds like a framework.

    Which is another way of saying, Apple is strongly discouraging if not outright banning one of the best ways to re-use code. Can anyone tell me why Apple is against code re-use on the iPhone?

    --
    Don't thank God, thank a doctor!
  8. Re:Why CLR (.NET mono) and not JVM (Java)? by Bill,+Shooter+of+Bul · · Score: 2, Informative

    So, Apple would also allow applications that were compiled with a gcj like compiler as well. I think that's the point the GP was making.

    code running on a virtual machine => not allowed
    Code not running in a virtual machine => allowed

    --
    Well.. maybe. Or Maybe not. But Definitely not sort of.
  9. Re:XOR to iPhone SDK? by ZackSchil · · Score: 2, Informative

    No, you'll still need to compile with XCode and sign the apps through Apple's $100 development program to try them out on a real phone. This just offers different UI libraries to link to when making your app rather than using cocoa.

    If they crash or misbehave, Apple will reject your app though. So hopefully they're pretty solid. I imagine this is mostly to help enterprise customers port their Windows Mobile apps to the iPhone.

  10. Re:Why CLR (.NET mono) and not JVM (Java)? by Xtravar · · Score: 2, Insightful

    Because they don't just want crappy ports of crappy applications. They want stylish applications designed specifically with the iPhone in mind. And guess what? It's working!

    --
    Buckle your ROFL belt, we're in for some LOLs.
  11. No it doesn't. by Plug · · Score: 4, Informative

    MonoTouch is not a runtime or an "app", it's a library with which you compile your own apps. It's ahead-of-time compiled, so you end up with a binary that runs on the iPhone.

    It opens up iPhone development for millions of .NET developers, many of which may not have any interest in Objective C. And as far as I can tell, C#/Mono is garbage collected, and Objective C (on the iPhone) is not. That alone would make me interested in checking it out.

    If you're not interested, that's great, move along.

  12. Re:XOR to iPhone SDK? by Plug · · Score: 3, Informative

    It compiles to native code. It just allows you to use C# to do it.

  13. Re:Must be app-store approved... by Plug · · Score: 5, Informative
    1. It's not a "shell" or a "runtime", it is ahead-of-time compiled down to native code.
    2. This is a wrapper around native Apple UI objects, it's not using any Windows or .NET UI objects. You use the Apple Interface Builder just like you would if you were using Objective C.
  14. Re:Mono by visualight · · Score: 2, Interesting

    I seem to recall that Mono is/was justified by Miguel de Icaza by virtue of .Nets inevitable popularity (Linux distros would _need_ it). When I read this article I can't help but think that the motivation here is to help make .Net more popular, and by extension, Mono more popular. I already abandoned Gnome, but I won't be surprised when I'm eventually trapped into installing Mono. .Net, C#, Java, I can't point to technical deficiencies and say "That's why I don't like them," but I have _never_ liked an app written in one of those languages. Buggy dependency ridden crapware has been my experience. I realize that an applications overall suckiness isn't necessarily a reflection of the language, but experience has set that expectation for me.

    I really hope this project goes nowhere, because the last thing I want is more .Net apps in the world, on any platform.

    --
    Samsung took back my unlocked bootloader because Google wants me to rent movies. They're both evil.
  15. Re:Why CLR (.NET mono) and not JVM (Java)? by icepick72 · · Score: 2, Informative

    I'm unsure the mechanism used by Mono but when programming .NET on Windows there is a utility -- named ILMerge -- which allows multiple assemblies including Framework assemblies (dlls) to be compiled into one executable file; allowing a .NET app to without the need for a Framework's file to be spread about, kind of erasing the fact a Framework exists.
    (I.E. http://research.microsoft.com/en-us/people/mbarnett/ilmerge.aspx )

    Also on the Windows side the Common Language Runtime (CLR) of the .NET Framework is always needed to interpret the Microsoft Intermediate Language Code (MSIL) "byte code" which is the result of explicit compilation of any .NET application's source code files (C#, VB.NET, COBOL.NET, IronPython, etc). This is a sort of on-the-fly compilation or translation to machine code that occurs as needed.

    Even when a native executable for the Windows machine is generated by the ngen.exe utility, in order to bypass MSIL translation at runtime,
    (I.E. http://msdn.microsoft.com/en-us/library/6t9t5wcf(VS.71).aspx ) ...the CLR is still required to manage the native executable (memory management, garbage collection, security, type enforcement, etc).

    Much C# code is compiled in managed mode (requires management by the CLR) and I'm sure the C# implementation for the iPhone would express this simplified programming model too. However I'd be interested to know what Novell/Mono team does with the CLR in the iPhone given the fact Apple does not like frameworks, interpreters or compilers. Does Mono compile the CLR feature into iPhone app, or get rid of it in favour of C# on top of a different concept, or something else?

  16. Re:Big Difference Between The Two by tylersoze · · Score: 3, Informative

    Haha! That's a good one. Although I'm sure the developers of the 250 games that have shipped with Unity probably care somewhat. :)

  17. Re:Mono? by RightSaidFred99 · · Score: 3, Interesting

    Are you being double-backwards redundantly hilarious? .Net and Microsoft are stable now. Let's see on what platforms the largest growth for remote exploits over the last year have been, shall we?

  18. Re: Why not? by jcr · · Score: 2, Insightful

    The advantage of mono-touch would be that it allows C# programmers to write iphone apps without having to learn objective C

    That is not an advantage. Go native, or don't bother.

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  19. Re:Mono by jcr · · Score: 4, Insightful

    I think you may be prejudiced by your previous experience.

    If his position is based on experience, then by definition it's not prejudice.

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  20. Re:Why CLR (.NET mono) and not JVM (Java)? by ClosedSource · · Score: 4, Informative

    "MS fooled a generation of 20 and 30 somethings into buying its code books and learning how to code in their walled garden."

    Well, it was a much bigger garden than Apple's and the gardeners were well paid.

    "Once touched by MS you are not used to learning any new skills"

    Whatever you think of Windows, it could hardly be argued that developing for it didn't require learning "any new skills" (C, Win32,C++, MFC, COM, ATL, COM+, SQL Server, ASP, .NET framework, C#, ASP.NET, ADO.NET, DirectX, WCF, WPF, WWF, LINQ ...)

  21. Have been doing this for months. by codepunk · · Score: 2, Interesting

    I have been programming games in unity which uses mono for the iphone for over 6 mos now. Since it compiles to
    native code it runs blistering fast and is very stable. No there is not a problem with violating the apple sdk requirements
    as it is compiling to native code.

    --


    Got Code?
  22. Re:Why CLR (.NET mono) and not JVM (Java)? by naasking · · Score: 2, Informative

    Re:ILMerge, the Mono linker does it too, and better. It can remove unused code for instance.

    Re: CLR on the iPhone, IIRC, it generates a native executable with all the needed code linked in, including GC, and any necessary runtime support (excluding JIT which is outlawed on the iPhone).

  23. Re:Shame : Article is FUD from MS-zealots :( by codepunk · · Score: 2, Interesting

    "Guys, if you need to make iPhone apps, you got to build it using ObjectiveC"

    Those games I have been programming and distributing using mono C# in Unity for the last 6 mos must be a figment of my imagination.

    --


    Got Code?
  24. Hard to compete with Objective C ???? by ptr2004 · · Score: 2, Informative

    According to this http://monotouch.net/Documentation/Debugging There is virtually no debugging support for developing C# application on MAC OS X. No breakpoints and only Console.Writelines !!!!

  25. Re: Why not? by jcr · · Score: 2, Insightful

    Hey, if you want to use half-assed ports, knock yourself out.

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  26. As a beta user of this, let me clarify by rabtech · · Score: 3, Interesting

    Let me clarify how this works:

    1. Yes, it is compiled ahead-of-time so there is no violation of the iPhone Developer SDK ToS rules; this also means a lot of the powerful Reflection stuff doesn't work because you can't do runtime inquiry on a type and create an instance dynamically. It also means the DLR is unlikely to ever run on the iPhone.

    2. Much of the types map to Objective-C types, UI Kit, etc, and so does the only GUI library. (Note that types like System.String map to NSString, etc as well.)
    You actually still do your GUI in Interface Builder, but MonoDevelop picks up changes to the XIB and auto-generates partial classes to represent the XIB actions and outlets. This step alone eliminates a lot of the boilerplate crap you have to do with Xcode that we Visual Studio developers are used to having the computer take care of automatically. Events can be handled via the C# obj.Event += handler syntax, MonoTouch takes care of hooking it up behind the scenes.

    3. You can import Apple frameworks with DllImport and call any of the Foundation functions. There are also helpers that take handles (pointers) from those functions to Objective-C objects.

    4. Most of the glue is automatic by decorating your classes/methods with the proper attributes (eg: make a class implement a protocol, then mark the methods as to what message in the protocol it handles). It really is a very slick package and a joy to use.

    5. Garbage Collection! This rocks, it was very disappointing to see Apple fail to bring their GC over to the iPhone.

    6. Most of your libraries aren't going to work because they require reflection, framework classes, etc that don't exist or aren't statically linkable into your executable. Besides, that isn't the point. For me, the point is to use a language I am used to (avoiding the @synthesize, -/+, and [[[[[[[ crap that makes Objective-C annoying to use). It is impossible to overstate how much the automatic hookup with XIB files makes developing a GUI so much easier to do. I only wish IB would automatically make all controls Outlets, then I'd be set. I find that you spend way too much time spitting out boilerplate code and doing repetitive boilerplate actions in IB when the computer could just as easily figure all that out for me (like Visual Studio does with a WinForms app).

    --
    Natural != (nontoxic || beneficial)
  27. Re: Why not? by jcr · · Score: 2, Insightful

    And why does another implementation language automatically imply half-assed ports?

    It shows that the implementor is unwilling to learn.

    Your ignorance is showing.

    No, that's my experience. I've seen quite a few half-assed ports to the Mac in my time, and I sure as hell don't want to see them on the iPhone.

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  28. Not more extensive by SuperKendall · · Score: 2, Insightful

    Excuse me? C# and .NET take the same approach as Java which is to provide the most powerful general purpose programming language + massive class library of common functionality possible

    NeXT was taking that same approach probably before you were even programming.

    The Objective-C language itself is not quite as modern as newer languages (though I personally think with blocks and GC it's pretty much there, though those will take a bit to translate over to the iPhone). But Objective-C has a huge set of libraries as well.

    I've done extensive Java development prior to switching to iPhone development full time. Really there's not anything missing when you look across the NS and CF class libraries - rich collection classes, string handling with deep unicode support, internationalization, complex date/time formatting, good tools for introspection, RegEx support, etc. etc. etc.

    A few of the Mac frameworks are curiously missing for the iPhone (the most curious to me being the one supporting SOAP) but there are good quality third party wrappers that fill those gaps.

    And then of course, Objective-C has really useful frameworks like CoreData, and CoreAnimation which are richer than what you can get with other platforms (party because CoreData does not make the pretense at being an OR mapper, just a tool for managing object graphs that happens to support a database as one kind of store). I would say the existence of some of these frameworks especially makes it more useful and productive for application development than either C# or Java currently - especially since after using decades of different UI coding models, Interface Builder is the first IDE GUI development tool it makes sense to use over hand coding elements.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  29. Should have used HTML5 by gig · · Score: 2, Interesting

    If this was an HTML5 target the app would not require Apple's approval to run on the iPhone, and it would also run on other platforms. This could be a target that makes an app to run on all smartphones, since they all have WebKit.

    If these apps look generic they won't get approved for App Store. You have to design your way into app Store as well as engineer. With HTML5 you can do what you please.

  30. Re:Left fuckers by mrraven · · Score: 2, Funny

    Never, a Libertarian is just a greedball Republican who smokes pot.

    --
    Tired of all the isms, don't exploit people as an employer, or a government, mmmmK?
  31. Re:Why CLR (.NET mono) and not JVM (Java)? by yabos · · Score: 2, Insightful

    Programming Objective-C is not difficult. If you can program in any other language you can program in Objective-C. The hardest part about it is learning which frameworks and APIs are required to write your app.

  32. Re: Why not? by SanityInAnarchy · · Score: 2, Insightful

    Then we'll have to agree to disagree.

    Back when I had a Mac, I much preferred having NeoOffice to having nothing but TextEdit. That's kind of a no-brainer.

    --
    Don't thank God, thank a doctor!
  33. Re: Why not? by SanityInAnarchy · · Score: 2, Insightful

    Taste isn't for everybody.

    Nor is common courtesy, obviously.

    There has never been a time when those were your only two options.

    What would you suggest?

    --
    Don't thank God, thank a doctor!