Hacker News new | past | comments | ask | show | jobs | submit login

"Objective-C and Java rule 2013 since web apps are not as pleasant to use on mobile."

Or with some MVVM, Xamarin and some C# or F#... write once, compile for all mobile platforms. Never having to once touch the nastiness of Obj-C or Java.




What's nasty about Obj-C?


The syntax and the APIs.


I understand that the Smalltalk like syntax of Objective C can be difficult to understand at first glance; however, once you've worked with it a bit, the syntax becomes quite expressive -- each argument is labeled; something like using named arguments in Ruby, but it's not optional.

Not sure what you mean about the APIs being nasty. Can you elucidate?



Could you go further? What, in your opinion is wrong with NSString? How would you fix it?


I understand not liking the syntax until you get used to it (I find it wordy, but very expressive), but what's wrong the APIs? Apple's documentation is pretty good and the APIs have lots of features especially with blocks. I also like that collections are immutable and the programmer must explicitly ask for the mutable version. Cocoa etc... is quite large, but once the programmer knows what's available many problems that are hard in other frameworks are trivial when coding for OSX/iOS.

Java is well java. I find one of Java's strongest points the extensive set of collections available. Add in Apache Commons and java is easy enough to use.


I rather use those 5 MB for my application.


Save 5 MB and condemn yourself/your team/your company to the hell of maintaining multiple code bases that all do basically the same thing but subtly different and written in different languages.

Sounds like a dumb ass decision.

It's the sort of logic that makes people pick C or C++ when a managed language would have been more appropriate.


I'm curious how well these tools work. Having a single unified code base and supporting all (desired) platforms is every developer's dream. I'm skeptical because supporting multiple operating systems can be a headache even for desktop apps.

I remember Facebook originally used HTML5 to support all platforms. This did work, but they became unsatisfied with the performance and ended up rewriting both the iOS and Android apps in native code.[1] The killer quote:

"I think the biggest mistake we made as a company was betting on HTML5 instead of native," Zuckerberg said...[2]

Granted, this was a different situation. They were using HTML5, and it looks like Xamarin compiles to native code. You mentioned slightly larger executable sizes, so I'm curious about the performance.

1: https://www.facebook.com/notes/facebook-engineering/under-th...

2: http://www.computerworld.com/s/article/9234695/Facebook_debu...


What is extremely telling about this whole ordeal is how awful the facebook app on iOS is now. Their biggest issue (they claimed) with their HTML5 version was adding new elements as a user would scroll. The DOM operation was said to be both costly and leak memory like crazy. Sencha Labs has shown that they were able to accomplish it just fine.

Where I feel they should place some of the blame is the backend architecture. Perhaps the app doesn't scale well. Perhaps they should research what the proper amount of data is to send to any given device. Implement more of a lazy approach. They have some very brilliant people working there. I find it hard to believe that HTML5 can be blamed totally for their app's poor performance.


It works well. It takes advantage of Portable Class Libraries (PCLs) in .NET which can target just about any platform including Xbox's.

Basically all your UI logic sits within these PCLs. And the only stuff you have to write/design for each platform is the actual screen layouts. Then you just setup the data bindings back to your models.

It's a shame this is news to people on here. It seems like the real innovation that goes on in .NET and Mono land is largely ignored or just swept under the carpet by the hipster community.

The larger executables is because it has to embed the Mono VM, and some base class libraries. I've not really looked into performance versus Davlik; probably because I've not yet encountered any show-stopping performance issues.


How do you write UI code to make apps look and feel correct across platforms? Does Xamarin already support the API changes in iOS 7?



Number 1 reason to uninstall applications on Play Store, executable size, Google IO 2013.

Plus Mono does not save you from writing multiple UI code anyway.


Yes it does. Look at the MvvmCross project.

Also struggling to verify that claim re. executable size, can you provide a link? Either way, average app size on Android seems to be around 3MB. A typical Xamarin-compiled app is around 4 to 4.5MB.


> Yes it does. Look at the MvvmCross project.

This is a cross platform implementation of the MVVM patterns, you still need to write the platform specific views.

And to be honest, given my experience on .NET enterprise projects, MVVM brings me back J2EE 1.4 memories.

> Also struggling to verify that claim re. executable size, can you provide a link?

Someone mentioned it to me on a Reddit discussion.

We have the policy to only use vendor supported languages, to minimize support issues and take advantage of performance.

I should add the mobile apps I was involved were games.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: