It costs $399 for an individual license, so there is a cost barrier. I balked at the cost of MonoTouch, but since playing around with it, I've got to say- I think it'll be worth the money. I just wish it was a little more affordable to hobbyist developers like myself.
EDIT: I just noticed that they had a 25% Black Friday offer. Damn.
Thanks for the feedback. We definitely have two classes of customers - businesses and professional developers who can't believe how cheap our products are relative to the value they're receiving, and hobbyists who are more price-sensitive. It's tricky to balance these two.
That makes sense, here's another idea. At my day job the price of your product is perfect. Its an enterprise app that we want to support on all 3 mobile platforms, which we sell for $5k a pop (and another $200k * N in hardware). $600 is actually cheap (though so is my company, so we probably wouldn't pay more than $1k).
On the other hand, at home I couldn't afford more then $200. When I make an app at home, its for my own fun.
Instead of trying to satisfy both situations in one model, have you considered licensing per app? Every computer I develop on has an internet connection, so i'd be okay having to connect to your server to compile. I'd even be okay with having subsets of the framework licensed separately if it means I can get it cheaper at home.
Some of our competitors have done this and we've received very negative feedback from their customers about per-app, per-user, and royalty-based pricing.
Also not sure it makes sense to create a price incentive to bundle a bunch of functionality into a single app.
We like having simple, fair, obvious pricing. Even if it means leaving some money on the table.
I'd love to see Xamarin grow enough to offer the dev-tools for free. Obviously that'd mean making money off of something other than dev-tool sales. I can think of lots of ways you could use Mono to break out of that market. Any plans to move in this direction?
Not at all. This offers a completely different solution than java. With java, you write once and run on everything. This lets you write C# on OS X, but it won't compile and run on Windows or Linux. Windows software can't be as easily ported to OS X either, the entire GUI, at the least, will have to be rewritten.
I would argue that Python would make more sense as a java-killer. It has the write once, run everywhere thing down much better (though still not good enough) than this.
Java is not going anywhere, sadly, and the linked product does not offer a compelling reason to believe that it will kill anything. All I see happening is that people who use mono now will potentially switch to this; honestly this isn't really ground breaking.
Yes, but write-once-run-anywhere solutions deliver mediocre user experiences on every platform. You don't want your Mac app to look anything like your Windows 8 app. With Xamarin you separate the presentation layer of your app from the rest of the app, and the only thing you're rewriting from platform to platform is the UI. Typically this is only about 25% of the code (though of course it can vary). This is how our customers do it on Android, iOS and Windows, and now they can extend their apps to Mac and still deliver an amazing Mac app.
Agreed, not every app has to be done in that way, and for that there are plenty of alternative solutions.
From HTML to Java, to Gtk# and a dozen more.
This is a set of tools for developers that need to take advantage of native APIs, either for the UI, accessing the advanced audio features in OSX, accessing Darwin features, integrating with StoreKit, iCloud, Apple's OpenGL extensions, SceneKit, Bluetooth and those sorts of things from C#.
I agree with you, but for native development, I think I'd rather use a native language---something compiled like Go or D. I do love C# and Python for my own home projects, but for apps that I distribute to others, I don't want to have to ship half of my computer with my app. I'd like to separate logic from UI, write the shared logic, add a platform-specific UI (calling native OS APIs), add a few platform-specific features (provided by the native OS) so no platform-exclusive competitor has any advantage over me, compile and statically-link (only what I need, not a massive runtime) and ship. Like language localization, this process would be repeated for each attractive platform---small, fast, fully native on each platform but with most of the code shared across platforms.
You can do this today with C, but I'd sure rather work in something more modern but which didn't require dragging around half an OS worth of runtime infrastructure. Something more like Go or D, I imagine, if they ever get any traction as client ("desktop") languages.
Well, if you really want to have a native looking experience (even though it seems like apps look more and more different from one another, and increasingly less consistent), you can do that in Java, too, and with probably less work, and for free with world-class tools. I run NetBeans on my mac and it looks and behaves quite natively. Far from mediocre, I'd say.
Lately I've been using embedded chromium to solve the write once/run anywhere/look great everywhere problem. While java isn't going away anytime soon, it's nice to see it incrementally lose applicability.
Embedded Chromium may work for simple stuff but I questioned it for a more complex desktop app (e.g.: http://almworks.com/jiraclient/) from development, feature-rich, and maintainability perspective.
While I wouldn't shed any tears to see Java disappear from the desktop, it has a massive presence in the Enterprise and that is not due to large deployments of Macs.
$1,000 seems pretty meager to me. If I can share well over 50% of my code across multiple platforms then that is code that I don't have to rewrite in another language. If that 50% takes more than 10 hours to reproduce (allocating my time at $100.00/hr) then it is well worth the expense. That doesn't even factor in the time saved in maintaining the application going forward.
Granted, if you are just building a small application that you don't plan to support multiple platforms then that price would seem steep.
Personally, I think computing power has hit the point where Java desktop apps and applets aren't that big a deal. I've got one running on my desktop right now. It runs for day's on end without being a significant burden to the rest of the system.
I don't know. I spend most of my time working with NetBeans on a mac, and it's just as pretty as Keynote, while more responsive and stable. So, yeah, NetBeans, a huge Java Swing application, provides a better experience on a mac than Keynote.
>I spend most of my time working with NetBeans on a mac, and it's just as pretty as Keynote, while more responsive and stable.
Just as pretty as Keynote? I beg to differ. NetBeans (and Eclipse, IDEA) always hit the "uncanny valley" for me (and Eclipse is even using Cocoa!). Not looking right at all for the platform, and with BS divergent behaviour on lots of UI controls. On top of it, all three are quite laggy (gotten a little better with huge memory these days and SSDs, but still, if you need 4GB and solid state to get something to run fast, well...).
In no way I would say NetBeans provides a better experience on a Mac than Keynote.
That depends on the app-developer experience building GUI. Maybe most Java developers aren't that sensitive when it comes to GUI (or maybe it's a culture thing).
Having said that, not all apps have to be excellent 100% in terms of usability and beautiful-UI. Once I step out from the HN-bubble a bit I'm starting to see people using ugly but usable and solved business problems type of app written in anything from Tcl/TK, Java, Qt, Pascal, etc.
In this case the experience looks slightly different but works pretty much as expected. In other terms, the Java apps tend not to be the ones that piss me off on a regular basis.
Java isn't a horrible language it's a somewhat mediocre language.
It's a lowest common denominator.
It has a couple of very good free cross-platform ide's.
It's write once -run everywhere to a certain extent.
While java gui's may be a bit ugly they let you run self contained apps with no dependencies except for the jvm(installed on more the 1/2 of all pcs).
The vm (at least the main sun/oracle hotspot / openjdk) has a world class jit and gc.
Speaking purely from the server-side of things, Java (the ecosystem) has great libraries and frameworks for webapps and middleware. It also has OSGi, which solves a unique set of problems that aren't addressed by any other language ecosystem that I know of.
This is all in spite of Java the language, which is kind of a lame duck. Java 8 should improve things if it ever gets released.
Every single thing that the other people have replied plus 2 things:
1) Tons of experienced and battle-tested people in the ecosystems
2) Standards that keep improving
It's a dual-edge sword thingie, on one hand standards are good for stability but bad because sometimes it slow innovation down. Having said that, the Java ecosystems typically have one strong alternative outside the standard so your choices, in most cases, come down to 2: use what comes from SUN/Oracle or use the leading open source alternative solution. Simple.
Because it really isn't. I think that most Java haters are very young web developers with but a few years of experience. Having said that, there are quite a few languages that are much more productive than Java, and are a better fit for, say, run-of-the-mill web development. But very few languages can beat Java's performance and tooling (especially when it comes to runtime monitoring and profiling). More productive JVM languages make the best of both worlds, though.
Modern HotSpot is probably one of the best VMs out there; while you could certainly argue that the language isn't wonderful, the VM is superb, and a lot of the tools are excellent.
With all of these pluses, it can't be that terrible right? ;)
Java is not anymore terrible than anything else when you remember to use the right tool for the right job. I have developed in Java, libraries (JDK's and third party) are just incredibly good, you will not find the same variety and quality anywhere else, period. The language is verbose and also /insert favorite Java complaints here/. So what? Get over it and use the right tool for the right job. We are programmers, not damsels.
9) A large ecosystem of interoperating JVM languages, from Java-like (Kotlin, Ceylon, Fantom), Ruby/Python like (JRuby, Jython, Groovy), to Haskell like (Scala), to Lisps (Clojure).
EDIT: I just noticed that they had a 25% Black Friday offer. Damn.