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."
Well how long does it take to load the whole Mono framework runtime because every second counts on the iPhone?
Anyone know why Apple would allow one and not the other? Does Mono not multitask or something?
Very often, people confuse simple with simplistic. The nuance is lost on most. - Clement Mok
Isn't Mono the KISSing disease? ;)
#fuckbeta #iamslashdot #dicemustdie
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.
Unity, www.unity3d.com, which uses Mono, has been available on the iPhone for some now.
So...is this an alternative to Apple's iPhone SDK, or does it work with it? (in other words, could developers not have to pay the Apple tax to write iPhone apps?)
Even before we get to the performance issue, there are at least two others that could run blocking. 1) I wonder if this is the sort of thing Apple would approve. Recent rants would seem to indicate if it allows any sort of a shell, no way. Otherwise, who knows? 2) Apple enforces it's look-and-feel rules religiously. Last I saw there was NOTHING .Net that looked at all Aqua. The stuff at unity3d.com looks cool, and would seem to *imply* Apple's OK with however their stuff looks, but I couldn't find a screen shot that showed me e.g. a typical config panel so I could compare it to iPhone's native bits.
âoeThe wall between art and engineering exists only in our minds.â -- Theo Jansen
Unless you write directly in machine code then you have no place to talk little nooblet.
if you buy an iphone you're a sucker
Troll
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.
At what point will libertarians contempt for humanity end?
Non impediti ratione cogitationus.
:P
.net runtime (mono) on the iPhone. Can we safely assume that the plethora of mono apps can be ported? (http://www.mono-project.com/Software)
Okay, so now we have a
Hmm - I could see playing Donkey.NET (http://www.microsoft.com/downloads/details.aspx?FamilyID=990D0EC1-23EA-4408-898D-1FD5727A8890&displaylang=en) playing on the iPhone.
The Kai's Semi-Updated Website Thingy
It's nice to see Novell dumping the dead end that is Linux development for more fertile grounds.
They love their exclusitivity, lock-in, etc. We saw them destroy an awesome C64 emulator because you could program in BASIC for it. From glancing over the article, it appears developers will be able to use .NET to produce iPhone apps while not using OSX (!!!) -- I don't think Apple would stand for this. "You must pay $3,000 for a crappy mac to write software for our iPhone, and even then your chances of getting your app on our 30% royalty fee store is highly unlikely!"
Managed Extensions to C++ is old. .NET have C++/CLI now.
Newer versions of
C++/CLI is great for interop with legacy applications that will not interop via web services or COM. .Net class libraries I wrote in C#. In this c++/CLI library, I exported functions as C functions using the stdlib calling convention. This allowed a lot of legacy applications on Windows to interop with .net libraries.
I created a wrapper library in C++/CLI that wrapped
Not really a hardcore apple person, but my experience since leaving MS is very pleasant. I also enjoy several Linux boxes. The only issues I have with Apple are games (though WoW, Wii and the Ps3 solve much in this regard) and Quickbooks (payroll).
Once Intuit finishes Quickbooks for Macs, only games are left. I just have no care to deal with MS unless absolutely needed.
These days I could even avoid lockin with Linux but My Apple experience has been very nice. My wife, an architect in Java and .Net, differs with her Apple experience. Though she has enjoyed her mac she finds it frustrating at times as a dev. So much so that her next will dual boot MS and Linux. However, she always takes Java projects over .Net because she finds Java much further along. Guess I am saying that both of us would love Java on the iPhone; we wouldn't bother with .Net.
Now you can have all the security and stability of .Net and Microsoft right on your Apple iPhone! Oh wait...
Novell may have "announced" this, but I don't think there's much chance of it appearing on the iPhone anytime soon. Sun tried to write a JRE for the iPhone and Apple todl them outright there was no way it was going to allow it, so I seriously double they'd be fine with .Net
AFAIK,
#1 No it is not managed code, nothing like IL and will never be so ! Simply because it is forbidden by Apple license. This is the same rule that prevent Java VM or that should prevent full Flash from beeing granted. The reason ? If a VM (JVM or CLR) is pushed to the iPhone the code control will escape from Apple validation ;-) Be sure this will never happen. So this is FUD.
#2 Nothing you can not do already using Java using ahead of time compilation or C++ or any cross compilable language. Nothing new, so this is FUD.
#3 Article is misleading as Mono is not Microsoft .net compatible. Anybody seen a test compatibility suite at Microsoft to ensure compatibility ? No way ... this thing is best effort "should work" code. Not mono fault ... a MS choice my darling. Again and again FUD.
Is it me or two much of Android phone launched has made MS-fan crowd wake up & start again the FUD machine over /. ?
Guys, if you need to make iPhone apps, you got to build it using ObjectiveC. If you want to code using more recent languages, you can go to other mobile platform such as Blackberry and Android...;
Correct me if I'm wrong, but although Mono is largely based around C# it does support other languages such as IronPython, VB.NET, and Boo, and the MonoTouch website implies that you can use other languages as well. That could potentially mean being able to use MonoTouch to write applications in these other languages, which could be handy.
Haha! That's a good one. Although I'm sure the developers of the 250 games that have shipped with Unity probably care somewhat. :)
Recent post: http://tirania.org/blog/archive/2009/Sep-14.html
This one's almost a year old, but contains more details: http://tirania.org/blog/archive/2008/Nov-05.html
To those that say Apple won't accept this to the App Store, it is not intended to be accepted because it is not an iPhone app. It is a really just compiler that gets run ahead of time; so it is not a runtime for the iPhone like the JVM was.
Seriously. Gross. Now, if only someone would port DirectX and the Windows Registry...
Can you imagine how terribly apps on this combo will perform? I would be waiting with great skepticism.
Mono touch wraps the objective C frameworks directly, and isn't intended as a replacement. It uses interface builder to build the UI, loads XIB files, and runs with NSApplication, UIView, etc.
Since monotouch is binary compiled, it is not using a framework or a JIT compiler. Basically there shouldn't be any difference between a mono app binary and an objective C binary other than one is compiled via the objective C toolchain and the other is compiled via the mono-touch toolchain.
The advantage of mono-touch would be that it allows C# programmers to write iphone apps without having to learn objective C, and it allows corporate .net developers to port their in house apps to the iphone more easily.
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."
You said  C# and .NET which allows any language to compile to the CLI assembly are arguably even more powerful than Java right now Â
Wrong, "any" language can not compile to CLI. Any .net language flavor can. There is a huge difference, when you code VB on .net, this is no more VB but an ersatz of C# : same structure, same paradigms, same API. Same for Cobol.net ... this is not Cobol my friend ! By the way when working on .net everybody ends up doing C#. Like everybody does it on Windows thru the .net and not Mono ... and people ends up doing MS SQL Server sometimes ;)
About C# beeing "more powerfull", this remember a "I got a bigger one than yours" story so I am not even discussing the question. The question is not the size or power, but how clean it is and what you do with it. At the end of the day, most people think theirs are the more powerfull ;-)
About lang, there half a dozen of language that could blast C# and Java in each of their alleged "power" domains. But none are used and none have reached the masses.
If C# was not made by MS, it would have already died, because the clone is too close from the original to survive.
But fortunatly for you MS is still spending some cash and giving some to Novell to try to make people dream of an hypothethical .net outside an MS OS.
Guys, wake up : this will never happen for obious strategical reasons. Do you think that MS will kill windows biggest platform advantage for nothing ? C'm'on, MS does cool things but this whole .net story is realy a self-trap for MS : they did not managed to lock Java (remember the JDirect/RNI/WFC) and could not let it go alone or it could have swallow all their developers (do you liked MFC ?)... so they decided to go the dolly way : go & clone that thing :)
Now they are in a no-no situation : no, we can not make it really cross platform and no we can not get rid of it. Funny situation isn't it ?
I would really like to know how this would end : portability and windows killed or .net killed by MS to prevent harm to Windows... who knows ;)
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?
They do not want third party apps using fourth party libraries using Nth party foo on their platform. Code reuse and the deployment implementation are completely separate issues.
tl;dr
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?
That is not an advantage.
Yes it is.
Or do you want to have an actual discussion? Why isn't it an advantage?
Go native, or don't bother.
Why?
Don't thank God, thank a doctor!
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 !!!!
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."
half-assed ports
And why does another implementation language automatically imply half-assed ports?
Your ignorance is showing.
Don't thank God, thank a doctor!
Writing in C is a very efficient way how to get control in how machine code is produced, isn't that right big monkey?
It's not a port. It's a language binding. There's really not much difference between this and calling your system's open() syscall from Ruby or Python. Also, quit being an asshole.
isn't this sort of like putting ketchup on chocolate cake?
"Yeah, but can it run Windows?"
"Most people, I think, don't even know what a rootkit is, so why should they care about it?"
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)
the sell-out?
-- A cat is no trade for integrity!
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."
It's not a port. It's a language binding.
It's a language binding that will be used by people who are unwilling to write native iPhone apps. IOW, it will facilitate half-assed ports.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
OMG, no... Actually, C# is way more better than Objective-C by syntax. But I would be much more happy to see Java instead of Mono.
$399 and no trial version and even not Cocoa interface and no Cocoa result? How much does it takes memory? How much time it needs to start?..
Nah, no. I'd better continue with what I already have: Objective-C SDK from Apple.
All in all, I think this is rather nifty. I love C#. I wonder if Apple will allow these apps to be deployed through the app store? I wonder if the SDK has all of the available functionality that is exposed by Apple's SDK.
This comment is my opinion and does not represent an official position of Donald Trump or others I do not work for
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
But the problem is, Apple has explicitly disallowed "frameworks"
That is absurd. There are a ton of different frameworks in play today, from Cocos2D (game framework) to Unity (commercial game framework that supports scripting in Mono or Javascript) to even the C64 emulator...
Apple disallows interpreters, and even that they are somewhat relaxing with the C64 thing. But they've never disallowed Frameworks - that would be basically impossible since they just get an executable they test!
"There is more worth loving than we have strength to love." - Brian Jay Stanley
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.
There's no support yet.
Hmnn as a developer, which of these could you live without: Garbage collection or breakpoints? Wow, that sounds like the subject of a new geeky flamewar.
Copyright infringement is "piracy" in the same way DRM is "consumer rape"
Everything being an outlet sounds rather unpleasant to me. I almost never want outlets for controls because usually I'm just wiring actions to them. I need outlets for some elements to set values (like labels and so on) but I wouldn't want every container view to automatically have an outlet... it seems to me like you are programming against the model a bit there.
Making things easier is the presence of things like macros/user scripts in objective C that take care of boilerplate for you.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
May I question why don't they use AOT for the Mono apps inside Linux distros?
Copyright infringement is "piracy" in the same way DRM is "consumer rape"
M$ i$ never going to play nice, the $ooner you realize thi$ the le$$ time you will wa$te. They $crewed the IBM develop team with an inferior API that their own developer$ hated. They ba$tardized Java to $crew $un. They "contributed to" WI$E many moon$ ago to $crew all of Unix. How many time$ to you have to $ee other "partner$" get treated like pawn$ and one night $tand$ before you get the picture? To quote an internal memo,
... it goe$ the other way al$o. Youre going out with a girl, what you really want to do i$ have a deep, clo$e and intimate relation$hip, at lea$t for one night. And, you know, you ju$t cant let her feel like that, becau$e if you do, it aint going to happen, right. $o you have to talk long term and white picket fence and all the$e other wonderful thing$, or el$e youre never going to get what youre really looking for.
all through thi$ pre$entation previou$ly I talked about how youre u$ing the pawn$ [developer$] youre going to $crew them if they dont do what they want, and da-da-dah. You cant let them feel like that. If they feel like that, youve lo$t from the beginning. It$ like youre going out with a girl; forgive me
Welcome to the back $eat of Bill Gate'$ limo, Apple. NotNet i$ the flim$ie$t of condom$, I hope you've got better protection than that, but you really $hould not be in thi$ $ituation to begin with.
Got any evidence? And plea$e dont cite BoycottNovell, that$ a circular argument. Provide valid $ource$ or own up that you are a troll. Word$ like "da-da-dah" $ort of give it away.
--
Friend$ dont help friend$ $wallow twitter'$ cum!
You still a Mac to develop this. It is very specific to the iPhone. The delegate model closely mimics the Objective C libraries. You still need to pay the Apple developer license for testing and deployment. It still uses XCode (which is free). It costs a few thousand dollars for the enterprise version in addition to the Apple fees.
Your posts are usually good, but here you're just trolling. It should be obvious even to you as an Mac developer that there are far more people developing in C# than in ObjC. The iPhone is becoming popular in large enterprises and some of those might like to develop in house apps, and not having to hire ObjC developers or retrain staff saves money, and in the current financial climate that is very important.
I don't think MonoTouch is meant for your average newbie with his first Mac and XCode in front of him. For one it's kind of expensive for that.
Stop fucking trolling, man. Really. You're just speculating and you're sounding scared, that's all.
jcr is a known anti-ms troll. Its better to ignore him...
Some people want to develop in better dev environment... or *gasp* using languages they already know. I guess asking for rational thought from apple fanbois is a bit too much..
If you call compiled Objective-C interpreted... Monotouch will convert mono-style C# to Objective-C and then compile it.
If by "yet" you mean Mono released in 2004 and it still cannot be debugged on MAC OS X and lately iphone, you are correct Raj
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?
I remember listening to a podcast a few weeks ago where it was stated that the nature of the compilation is such that some of the more dynamic languages (like python) would not work using this system.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
It shows that the implementor is unwilling to learn.
Wow. So you just admitted my other point, that is, that another implementation language automatically implies half-assed ports.
Is that really what you meant?
No, that's my experience.
In your experience, you've never seen a good port, or a good Mac app developed using a third-party framework?
I sure as hell don't want to see them on the iPhone.
You'd rather not have an app at all than have a half-assed port?
And I sure as hell prefer to have choices of implementation language, even if others might develop it, then be forced back a decade or so in language development to use Objective C when there are better choices available.
Don't thank God, thank a doctor!
You'd rather not have an app at all than have a half-assed port?
Have you ever seen OpenOffice on the Mac? I rest my case.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
2. What developer in their right mind would write apps for the freaking iPhone?
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!
I went and bought Downhill Bowling which uses the unity 3D flavor of Mono, and the launch time is reasonably peppy at launch, taking 12 seconds on my iPhone 3G to the point at which I could press a button, which is about the same for the non-Mono Madden 2010..
Then we'll have to agree to disagree.
I guess so. Taste isn't for everybody.
I much preferred having NeoOffice to having nothing but TextEdit.
There has never been a time when those were your only two options.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
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!
Which makes me wonder even more where the $399 is going for the personal developer edition....unless they're offering updates and support en perpetuetum.... I could understand $99.......but $399.......what in the heck is De Icaza puffing ?