Re:Major upgrades to Xamarin’s platform: Async is here
by solomatov on Wednesday July 24, 2013 @10:23PM
(#6100561)
Unfortunately, adoption of this great technology is limited by crippleware license. You have to pay even for just developing applications. Of course, you can use starter edition, but it's useless because of size limit.
The same story is repeated again and again. Tool vendors think more about profits than about growth and adoption. Sun limited usage of server side Java on Linux which allowed PHP to occupy linux server side niche. When it understood that it made a mistake, it was too late. I am afraid, we will be developing mobile applications in JS in several years' time.
Re:Major upgrades to Xamarin’s platform: Async is here
by yulaow on Thursday July 25, 2013 @08:51AM
(#6102135)
Problem is, with such high fees they have discouraged the adoption of all the students/starters/tester around the world.
Why corporation like microsoft are offering os, ides, tools and also devices free to develop to those categories of people? 'Cause if you make them learn maybe they will make/support the adoption of your platform in the professional field in which they will work.
This is why Xamarin fees are nonsense. It's ok to pay high fees in the professional field, but you must offer low fees for new entries. And not, indie costs (299*2/3) are not enough low, and the starter pack is just useless.
Re:Major upgrades to Xamarin’s platform: Async is here
by solomatov on Thursday July 25, 2013 @09:03AM
(#6102189)
Partially agree. When I choose a technology for my project, I have to prove to my supervisor that technology is a good fit. In case of Mono.Touch, its usage leads to too many risks. What if Mono.Touch is bought by evil company like Oracle (see what happened to MySQL) or decides to abuse its user base by imposing crazy fees? What if the company fails, and who is going to maintain the solution in this case etc? In case of current license, the risks related to these questions are just too high.
Re:Major upgrades to Xamarin’s platform: Async is here
by solomatov on Sunday July 28, 2013 @04:30AM
(#6116048)
The situation is very different here. The core IntelliJ is open source. There're plenty of open source alternatives. So if the license is changed, there're a plenty of options to migrate project to alternative IDEs.
In case of Xamarin, there's no such choice. Only Xamarin can compile C# to iOS, and if the license changes, the whole project implemented with the tool is locked in. The only option is to rewrite the whole project with alternative technology.
I think, LGPL open source core SDK + paid IDE + paid additional libraries would be a much better choice which mitigates the risk. But Xamarin for some reason decided to choose a different path.
Re:Major upgrades to Xamarin’s platform: Async is here
by zanny on Wednesday July 24, 2013 @11:11PM
(#6100704)
> I am afraid, we will be developing mobile applications in JS in several years' time.
Yeah, in QtQuick! (unlike Xamarin, Digia lets you use all the development tools out of the gate with the paid-license-only ones really enterprise centric (like the Oracle dbms client) and the foss version is lgpl so you can use it in your apps no problem (as long as you don't modify).
Re:Major upgrades to Xamarin’s platform: Async is here
by wcoenen on Thursday July 25, 2013 @05:47AM
(#6101644)
> Also, C++11 has async!
You may not have fully understood the C# async/await feature.
The C# compiler rewrites apparent linear code that awaits on a future (Task in .NET) so that all the code that comes after the await goes into a continuation of that future. It can even rewrite a loop with an await in it into a chain of continuations, all the while taking care of hairy details like propagating exceptions.
Re:Major upgrades to Xamarin’s platform: Async is here
by mahmud on Wednesday July 24, 2013 @11:18PM
(#6100719)
And there is nothing wrong with that. Xamarin staff have given the world so much; I'd say billion+ dollar industry was built on the back of their labor. About time Miguel et al profited.
Re:Major upgrades to Xamarin’s platform: Async is here
by benologist on Thursday July 25, 2013 @08:28PM
(#6105890)
The price starts at $300 per person per platform per year, and that applies to you right now should you decide to build anything that involves more than a few kilobytes of code.
Nobody's going to pick up Xamarin for fun, for experimentation, for learning, for scratching a creative itch. You can't download it for your kids or recommend it to your students. They have no product for use outside of companies and that guarantees it will be and die a niche riding on companies not wanting to retrain their .NET developers for iOS and Android.
Earlier this month I got to choose between Xamarin and everything else, I have years of C# experience and I like their IDE for general c#-on-mac stuff.
Re:Major upgrades to Xamarin’s platform: Async is here
by solomatov on Thursday July 25, 2013 @08:56AM
(#6102156)
I have nothing against Miguel and Mono. I just wanted to say that a product which is going to win the market, should be really open source and really free. People would choose PhoneGap for multi-platform mobile development over Mono.Touch because it has a friendlier license and leads to less risks.
Re:Major upgrades to Xamarin’s platform: Async is here
by CodeCube on Wednesday July 24, 2013 @09:31PM
(#6100380)
Ahhh yes! async was really the missing piece for mobile apps, who are so often stuck waiting for something to happen (disk IO, network IO, the user to take a picture). There are obviously ways to deal with this on every platform ... but async just makes it nice :)
Re:Major upgrades to Xamarin’s platform: Async is here
by Renaud on Wednesday July 24, 2013 @08:19PM
(#6100089)
Xamarin tools are built around the idea that the core of every application tend to be platform independent and so could be written in C# (or F#).
This gets compiled into native code on some platforms (iOS).
Their approach is to build native apps that use the native UI design tools, so for each platform, you have to re-design its UI to follow the UI paradigms of that particular platform.
The result is still compelling: the UI is native, the underlying code is common on all platforms, you get to use 100% of your platform technical capabilities, the app runs as fast as native apps, you get the power of .Net development tools (even Visual Studio if you want) and all the cool features of C# 5.0 (and F#) to build your apps.
Xamarin, through Mono and its mobile development tools is actually building what Microsoft promised but never really delivered: platform independence for .Net (OS/X, iOS, Windows, WinRT, Android, Linux).
Re:Major upgrades to Xamarin’s platform: Async is here
by yapcguy on Wednesday July 24, 2013 @09:00PM
(#6100260)
Are Xamarin tools really the holy grail of cross-platform app development? What are the hidden gotchas?
What about MonoDevelop for the desktop? The Windows and Mac download packages are at v4 but Linux at v2.6. Are Xamarin slowly abandoning use of GTK# ? Is this because of GTK 2 v 3 fragmentation?
Should we be supporting C++ and QT given that QT now supports iOS and Android? Given that some developers are scared of C++ what about C# / F# with QT QML? Are there any bindings which are maintained and tracking QT updates?
Re:Major upgrades to Xamarin’s platform: Async is here
by rodrigokumpera on Wednesday July 24, 2013 @09:16PM
(#6100323)
Xamarin doesn't provide its products on Linux. But it doesn't mean MonoDevelop doesn't work there. The latest versions run on it, it's just a matter that we don't have the manpower to keep up with packaging.
On GTK+ 2, it's still the main toolkit used by the IDE, but on windows/mac some bits of the native toolkits are used to improve the user experience.
QT on iOS and Android means you get non-native UIX. So why bother with C++?
Re:Major upgrades to Xamarin’s platform: Async is here
by ghuntley on Wednesday July 24, 2013 @09:45PM
(#6100440)
disclaimer: using Xamarin, using MvvmCross and went to Evolve 2013.
- Write your core business logic API once (in a Portable Class Library) using the ModelView ViewModel pattern.
- Design native user interfaces for iOS, Android, Mac, Windows Phone 7.x, Windows Phone 8.x, Windows Store (RT and Desktop) and Windows WPF.
- Bind your user interfaces against the core business logic.
Multiple platforms, native user interface designed for each platform, sharing one core business library, maximum code reuse (90%+!), using either C# or F# with async/await/linq/lambdas/anonymous types, etc.
You can use Visual Studio or MonoDevelop.
Rewriting your business logic multiple times over in different languages to target multiple platforms does not make sense. I'm curious why would anyone not use Xamarin?
Re:Major upgrades to Xamarin’s platform: Async is here
by everettForth on Wednesday July 24, 2013 @08:14PM
(#6100074)
Disclaimer, I know the Xamarin founders. That being said, I haven't used Xamarin, but I was impressed to see that rdio uses it.
Previously, I had assumed that the point of Xamarin was a way for C# developers to make iphone apps. However, my understanding was that rdio uses it so they can reuse the same C# code across their iPhone and Android apps. Rdio raised $17M in funding and could easily hire native iOS developers if they wanted to.
The net result is that rdio is actually one of the better iphone apps that I use, and I was really surprised to learn that it wasn't written in objective-C.
Re:Major upgrades to Xamarin’s platform: Async is here
by kevingadd on Wednesday July 24, 2013 @07:59PM
(#6100013)
PhoneGap and Appcelerator are for building apps in HTML/CSS/JS. Xamarin lets you write apps in C# (statically compiled to native code, in the case of iOS, last I checked) that interact directly with native OS APIs.
Re:Major upgrades to Xamarin’s platform: Async is here
by jimmcslim on Wednesday July 24, 2013 @08:22PM
(#6100101)
Not the whole story... Xamarin have a Starter Edition that is free for both platforms; admittedly with limitations (maximum app size, no linking with 3rd party code other than Xamarin provided assemblies and the iOS SDK). Within those limitation, you can publish to the App Store with the Starter Edition (obviously you need a Mac as well for iOS). The Indie Edition drops both of those limitations for USD299 per annum, which is reasonably affordable from my perspective. (Disclaimer: I have paid for the Business Edition; USD999 per annum, which adds the ability to use Visual Studio and a few other things).
Re:Major upgrades to Xamarin’s platform: Async is here
by yulaow on Wednesday July 24, 2013 @09:32PM
(#6100384)
As i see in the link above the support for xamarin is only in the business package so it starts at $999/year (please correct me if i am wrong).
Anyway i was not talking about the support option, but about the chance of deploy a full serious multios app. With phonegap you have that for free, with xamarin you have to pay (299*2) minus discount of 10%. Just this.
Re:Major upgrades to Xamarin’s platform: Async is here
by mathgladiator on Thursday July 25, 2013 @01:10AM
(#6101024)
I'm using it, and I love it. I actually am getting some very good performance on Android since the language is actually good (related: http://jeffrey.io/damn-garbage-collection)
Re:Major upgrades to Xamarin’s platform: Async is here
by pdappollonio on Wednesday July 24, 2013 @10:17PM
(#6100542)
I was wondering if there are other alternatives out there like Xamarin. I've used their Mono for Android software and was good but sadly, the prices went too high this time so if you want to use Visual Studio you need to add a good amount of money to make it true. :(
Re:Major upgrades to Xamarin’s platform: Async is here
by mrinterweb on Thursday July 25, 2013 @02:00AM
(#6101145)
Titanium would be the closest alternative that I can think of. Titanium allows for apps to be be developed using JavasScript and then compile natively for Android, iOS, and others.
Re:Major upgrades to Xamarin’s platform: Async is here
by Skinney on Thursday July 25, 2013 @05:24AM
(#6101595)
Titanium, last I checked also do not support all the native API's like Xamarin does. Six months ago I did not see support for the ActionBar for Android apps. Even though the Titanium API is supposed to work cross platform, usually there are functions or settings that only works on either Android or iOS. It's messy in my oppinion, but it is a lot cheaper.
Re:Major upgrades to Xamarin’s platform: Async is here
by camus on Thursday July 25, 2013 @03:21AM
(#6101284)
they dont compile JS natively. Your code is still in javascript but get executed in a native shell, instead of using a web view , but there is no js compilation into native code.
Re:Major upgrades to Xamarin’s platform: Async is here
by mrinterweb on Thursday July 25, 2013 @06:22PM
(#6105369)
Thanks. I didn't realize that it was still running interpreting the javascript after a project was built for a device that made calls to native interfaces. My guess is that it would be close to native performance. I was under the impression that Titanium would compile to java bytecode for android and likewise for iOS, but I was wrong.
Re:Major upgrades to Xamarin’s platform: Async is here
by frou_dh on Thursday July 25, 2013 @12:58AM
(#6100998)
As someone not familiar with the async/await stuff, I just looked up the official MS documentation and found the explanation pretty obtuse. As much as I can tell, it's a way to facilitate, umm, "chained futures", and by the way it's suddenly OK for a type returned to kind-of-but-not-really match the method signature.
I'm sure it's powerful but it doesn't come across as obviously amazing like LINQ did.
Re:Major upgrades to Xamarin’s platform: Async is here
by ufo on Thursday July 25, 2013 @02:35AM
(#6101202)
I don't know the specifics in this article but usually the analogy I would give is that async/await is to asynchronous programming as yield/generators are to writing iterators.
When you can use yield you can use regular control flow like branches, for loops, etc to write iterators in a straightforward manner. If you can't use yield you instead end up needing to represent all that implicit control flow using explicit stacks and things like that. Similarly, async/await let you write asynchronous code very similarly to how you would write a synchronous version of the same thing.
The same story is repeated again and again. Tool vendors think more about profits than about growth and adoption. Sun limited usage of server side Java on Linux which allowed PHP to occupy linux server side niche. When it understood that it made a mistake, it was too late. I am afraid, we will be developing mobile applications in JS in several years' time.
Where exactly do you expect them to get the funds to develop this technology if they don't charge a reasonable fee to use it?
Why corporation like microsoft are offering os, ides, tools and also devices free to develop to those categories of people? 'Cause if you make them learn maybe they will make/support the adoption of your platform in the professional field in which they will work.
This is why Xamarin fees are nonsense. It's ok to pay high fees in the professional field, but you must offer low fees for new entries. And not, indie costs (299*2/3) are not enough low, and the starter pack is just useless.
In case of Xamarin, there's no such choice. Only Xamarin can compile C# to iOS, and if the license changes, the whole project implemented with the tool is locked in. The only option is to rewrite the whole project with alternative technology.
I think, LGPL open source core SDK + paid IDE + paid additional libraries would be a much better choice which mitigates the risk. But Xamarin for some reason decided to choose a different path.
Yeah, in QtQuick! (unlike Xamarin, Digia lets you use all the development tools out of the gate with the paid-license-only ones really enterprise centric (like the Oracle dbms client) and the foss version is lgpl so you can use it in your apps no problem (as long as you don't modify).
Also, C++11 has async! http://en.cppreference.com/w/cpp/thread/async
The only barrier to qtquick in mobile is that Apple won't let Qt include v8 for the same reasons Chrome can't. So you are stuck on qtquick1 on ios.
You may not have fully understood the C# async/await feature.
The C# compiler rewrites apparent linear code that awaits on a future (Task in .NET) so that all the code that comes after the await goes into a continuation of that future. It can even rewrite a loop with an await in it into a chain of continuations, all the while taking care of hairy details like propagating exceptions.
Now we'll need the Mono equivalent for the Xamarin iOS api's etc.
Mono-ception.
However, their license makes their technology a niche product, when it could have been the main way mobile applications are developed.
is this so bad? I see at a competitive advantage to use their platform.
I'd rather ship 1.0 and 2.0 quickly to learn from customers than focus on the one true way to build mobile applications.
Does not seem very niche to me.
Nobody's going to pick up Xamarin for fun, for experimentation, for learning, for scratching a creative itch. You can't download it for your kids or recommend it to your students. They have no product for use outside of companies and that guarantees it will be and die a niche riding on companies not wanting to retrain their .NET developers for iOS and Android.
Earlier this month I got to choose between Xamarin and everything else, I have years of C# experience and I like their IDE for general c#-on-mac stuff.
I chose Haxe instead.
Actually Miguel started the Gnome project, wrote Gnumeric, sponsored Evolution, etc.
Even Mono was once to be used in Linux and Gnome.
They were forced off Gnome, by valid license concerns, FUD, zealots and not few indiffrence.
What are they to do? Roll over and die?
The result is still compelling: the UI is native, the underlying code is common on all platforms, you get to use 100% of your platform technical capabilities, the app runs as fast as native apps, you get the power of .Net development tools (even Visual Studio if you want) and all the cool features of C# 5.0 (and F#) to build your apps.
Xamarin, through Mono and its mobile development tools is actually building what Microsoft promised but never really delivered: platform independence for .Net (OS/X, iOS, Windows, WinRT, Android, Linux).
What about MonoDevelop for the desktop? The Windows and Mac download packages are at v4 but Linux at v2.6. Are Xamarin slowly abandoning use of GTK# ? Is this because of GTK 2 v 3 fragmentation?
Should we be supporting C++ and QT given that QT now supports iOS and Android? Given that some developers are scared of C++ what about C# / F# with QT QML? Are there any bindings which are maintained and tracking QT updates?
On GTK+ 2, it's still the main toolkit used by the IDE, but on windows/mac some bits of the native toolkits are used to improve the user experience.
QT on iOS and Android means you get non-native UIX. So why bother with C++?
Disclaimer: I work for Xamarin.
- Write your core business logic API once (in a Portable Class Library) using the ModelView ViewModel pattern.
- Design native user interfaces for iOS, Android, Mac, Windows Phone 7.x, Windows Phone 8.x, Windows Store (RT and Desktop) and Windows WPF.
- Bind your user interfaces against the core business logic.
Multiple platforms, native user interface designed for each platform, sharing one core business library, maximum code reuse (90%+!), using either C# or F# with async/await/linq/lambdas/anonymous types, etc.
You can use Visual Studio or MonoDevelop.
Rewriting your business logic multiple times over in different languages to target multiple platforms does not make sense. I'm curious why would anyone not use Xamarin?
Evolve 2013 Videos: http://xamarin.com/evolve/2013
Recommended ModelView ViewModel Frameworks: https://github.com/slodge/MvvmCross or http://www.reactiveui.net/
Previously, I had assumed that the point of Xamarin was a way for C# developers to make iphone apps. However, my understanding was that rdio uses it so they can reuse the same C# code across their iPhone and Android apps. Rdio raised $17M in funding and could easily hire native iOS developers if they wanted to.
The net result is that rdio is actually one of the better iphone apps that I use, and I was really surprised to learn that it wasn't written in objective-C.
Mid tier developers not so much.
https://store.xamarin.com/
you get a 10% discount on the total price if you buy multiple licences at the same time
You can see all here: https://store.xamarin.com/#purchase
Anyway i was not talking about the support option, but about the chance of deploy a full serious multios app. With phonegap you have that for free, with xamarin you have to pay (299*2) minus discount of 10%. Just this.
I'm sure it's powerful but it doesn't come across as obviously amazing like LINQ did.
When you can use yield you can use regular control flow like branches, for loops, etc to write iterators in a straightforward manner. If you can't use yield you instead end up needing to represent all that implicit control flow using explicit stacks and things like that. Similarly, async/await let you write asynchronous code very similarly to how you would write a synchronous version of the same thing.