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."
My guess is approximately zero seconds, as Apple is sure to kill this.
512 MB RAM, 20 GB disk, 200 GB transfer, five datacenters. $19.95/month.
MonoTouch compiles the code into a native executable, rather than shipping with a VM. Apple has no reason to disallow that.
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.
Since when has it needed a reason?
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.
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.
I don't think we have to worry about people developing for Silverlight. Anyone who knows anything about Microsoft's history with the Web knows to stay far away from that technology. I say this as a developer paid to build .NET applications.
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.
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.
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.
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.
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."
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."
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...
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."
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."
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
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...
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.
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!
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!