Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×
Novell Programming Technology

iPhone Gets .Net App Development 327

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."
This discussion has been archived. No new comments can be posted.

iPhone Gets .Net App Development

Comments Filter:
  • Re:Launch Times? (Score:5, Informative)

    by Gwala ( 309968 ) <adam@gwala.ELIOTnet minus poet> on Monday September 14, 2009 @05:27PM (#29419401) Homepage

    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 [mono-project.com] )

  • Re:Launch Times? (Score:2, Informative)

    by Monkeedude1212 ( 1560403 ) on Monday September 14, 2009 @05:34PM (#29419489) Journal

    How does this hurt Apple?

    This will only increase the amount of apps they'll have in their store - as just about anyone and their mother can learn C#, or knows it already.

  • Unity (Score:5, Informative)

    by tylersoze ( 789256 ) on Monday September 14, 2009 @05:36PM (#29419537)

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

  • by asdf7890 ( 1518587 ) on Monday September 14, 2009 @05:37PM (#29419551)

    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.

  • by SanityInAnarchy ( 655584 ) <ninja@slaphack.com> on Monday September 14, 2009 @05:45PM (#29419627) Journal

    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?

  • Re:Launch Times? (Score:4, Informative)

    by Snap E Tom ( 128447 ) on Monday September 14, 2009 @05:46PM (#29419637)

    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.

  • by Bill, Shooter of Bul ( 629286 ) on Monday September 14, 2009 @05:46PM (#29419647) Journal

    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

  • by Anonymous Coward on Monday September 14, 2009 @05:50PM (#29419697)
    Unless you write directly in machine code then you have no place to talk little nooblet.
  • by ZackSchil ( 560462 ) on Monday September 14, 2009 @05:53PM (#29419733)

    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.

  • No it doesn't. (Score:5, Informative)

    by Plug ( 14127 ) on Monday September 14, 2009 @06:01PM (#29419823) Homepage

    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 [mono-project.com], 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.

  • Re:Launch Times? (Score:5, Informative)

    by Cyberax ( 705495 ) on Monday September 14, 2009 @06:03PM (#29419859)

    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.

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

  • by Plug ( 14127 ) on Monday September 14, 2009 @06:06PM (#29419879) Homepage

    It compiles to native code [monotouch.net]. It just allows you to use C# to do it.

  • by Plug ( 14127 ) on Monday September 14, 2009 @06:09PM (#29419905) Homepage
    1. It's not a "shell" or a "runtime", it is ahead-of-time compiled [slashdot.org] 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 [monotouch.net] just like you would if you were using Objective C.
  • by icepick72 ( 834363 ) on Monday September 14, 2009 @06:31PM (#29420109)

    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 [microsoft.com] )

    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 [microsoft.com] ) ...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?

  • by tylersoze ( 789256 ) on Monday September 14, 2009 @06:38PM (#29420179)

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

  • Re:Launch Times? (Score:4, Informative)

    by shutdown -p now ( 807394 ) on Monday September 14, 2009 @06:53PM (#29420273) Journal

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

    Yeah, there's also J/Invoke [jinvoke.com].

    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).

  • by ClosedSource ( 238333 ) on Monday September 14, 2009 @07:42PM (#29420659)

    "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 ...)

  • Re:Launch Times? (Score:3, Informative)

    by digitalunity ( 19107 ) <digitalunityNO@SPAMyahoo.com> on Monday September 14, 2009 @07:54PM (#29420759) Homepage

    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.

  • 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).

  • by ptr2004 ( 695756 ) on Monday September 14, 2009 @08:14PM (#29420949)
    According to this http://monotouch.net/Documentation/Debugging [monotouch.net] There is virtually no debugging support for developing C# application on MAC OS X. No breakpoints and only Console.Writelines !!!!
  • Re:Launch Times? (Score:5, Informative)

    by EastCoastSurfer ( 310758 ) on Tuesday September 15, 2009 @01:14AM (#29422685)

    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.

  • Re:Launch Times? (Score:3, Informative)

    by UnknownSoldier ( 67820 ) on Tuesday September 15, 2009 @03:41AM (#29423319)

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

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

  • Re:Launch Times? (Score:3, Informative)

    by gbjbaanb ( 229885 ) on Tuesday September 15, 2009 @04:48AM (#29423577)

    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).

  • Re:Launch Times? (Score:3, Informative)

    by SanityInAnarchy ( 655584 ) <ninja@slaphack.com> on Tuesday September 15, 2009 @11:43AM (#29427109) Journal

    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!

With your bare hands?!?

Working...