Android Ported To C#
New submitter Eirenarch writes "Xamarin has just announced that they got the Java part of Android ported to C# via machine translation. The resulting OS, called XobotOS, is available on Github. They claim some serious performance gains over Dalvik. For them, this is an experiment that they are not planning to focus on, but they will be using some of the technologies in Mono for Android."
....this still won't save you from the Oracle software apocalypse.
1. The Microsoft patent grant for C# is more permissive than the patent grant for Java.
2. Oracle is suing Google over Java right now..
Android was ported to x86 a few versions ago.
---- Booth was a patriot ----
Yes, you can:
http://www.android-x86.org/
http://forum.xda-developers.com/showthread.php?t=1373161
Heck, even Eclipse has an emulator that could do the trick for you.
Yes, you can. There are two ways to go about it:
Download the Android SDK which contains an Android emulator.
If you have any virtualization software installed, grab an Android x86 ISO image and run it in a VM.
The second method gets you higher performance (virtualization vs binary translation), but has major compatibility issues. Any app that contains ARM native code won't work in Android x86 unfortunately.
You don't play an instrument? I thought it was quite a clever name...
Maybe if Google ships this Microsoft and Oracle will fight to the death over who gets to sue Google...
I am TheRaven on Soylent News
No wonder C# never caught on. Microsoft grossly overestimated the cardinality of the intersection between the set of programming nerds and the set of music nerds.
The order of the battle has already been decided. Oracle is the mini boss and Microsoft is the last boss.
At least that way, you're never in doubt about the goal of its creators.
"I've got more toys than Teruhisa Kitahara."
That's not really on-topic. Yes, WPF makes life difficult, but Mono for Android doesn't even support WPF. On Android, you'll be using the same widgets in C# as Java developers do.
Microsoft is a bigger, more evil giant than even Oracle.
I'm not entirely sure you've ever dealt with Oracle...
It seems like they are "translating" the Java code to C#, then compiling it with Mono. I had expected support for running Android bytecode, or something like that...
I can already tell you how that will turn out: Microsoft won't be suing anyone.
C# and the core runtime are ECMA standards with strong patent promises, meaning Microsoft explicitly gives everyone in the world the right to implement their own C# compiler and version of the System.* libraries.
Their open-ness with regard to the CLR and C# is far and away better than Sun did with Java. They even contributed DLR code to mono itself.
Not to mention how much better the language is... With real co/contra variant generics (type erasure? GTFU), first-class functions with delegates, closures, lambda expressions, and LINQ. Plus the new async/await stuff. On and type inference just makes things easier on a day to day coding basis.
Meanwhile Java has spent the last 10 years standing still. They couldn't even get closures into the latest release and from my understanding of the docs they aren't going to do true first-class closures anyway. It's a freakin joke of a language at this point.
Natural != (nontoxic || beneficial)
Generally, for those who don't get it: don't explain.
Bigger? Perhaps. More evil? Not a chance in hell.
Microsoft clearly says it's pronounced C Sharp.
http://msdn.microsoft.com/en-us/library/kx37x362.aspx
C# (pronounced "C sharp") is a programming language that is designed for building a variety of applications that run on the .NET Framework. C# is simple, powerful, type-safe, and object-oriented. The many innovations in C# enable rapid application development while retaining the expressiveness and elegance of C-style languages.
-wmbetts
Why (honestly curious)?
LegendMUD
I agree this is off-topic, but I really like WPF. It has a steep learning curve and a lot of quirks, but data binding, templates, and the layout system save a lot of time and make things look nice. The people complaining about WPF in your link often called themselves old; maybe that's the real problem (I'm quite young).
Hash? I though it was a bunch of pluses squished together to save space. You're saying C# isn't C++++?
Wow, my mind's blown. Cue Lemmings' self-destruct animation: Grabs head and explodes!
1. The Microsoft patent grant for C# is more permissive than the patent grant for Java.
Aaa.... No it's not. There is a defensive termination clause(I will be corrected if I'm wrong...) in Microsoft's grant, but not in Oracle's.
Looked like C tic tac toe to me.
There doesn't seem to be a perfect option to write cross platform, and this does require some porting, but it seemed the best option when we evaluated the alternatives last year.
The sun is the same in a relative way, but you are shorter of breath and one day closer to death
Microsoft is a bigger, more evil giant than even Oracle.
I'm not entirely sure you've ever dealt with Oracle...
Oracle vs Google is like "do no good" vs "do no evil".
Having dealt with both I can say Oracle is much more evil than Microsoft.
Any insufficiently advanced magic is indistinguishable from technology.
"(for those who don't get it: in music, generally speaking, the sharps and flats overlap. C sharp = D flat)"
Unless you're a music theorist.
1. The Microsoft patent grant for C# is more permissive than the patent grant for Java.
Are you a lawyer? I've been reading the promise Microsoft made, and it's all gibberish to me. And I doubt that even the original lawyer who drafted it would actually understand what he had written.
What are closures main advantage over anonymous class referring to final identifiers ?
Verbosity ?
Jehovah be praised, Oracle was not selected
At the moment, yes. That might change, though.
There's now at least one phone available (in India, anyway) which runs an x86 (Intel Medfield) version of Android:
http://arstechnica.com/gadgets/news/2012/04/the-first-intel-smartphone-comfortably-mid-range-eminently-credible.ars
It can run most apps that contain ARM native code, by using a JIT. I don't know if the source code for that is available anywhere, but it'd be useful for running Android on x86. It's also not that hard to port an Android on ARM app over to Android on x86 (generally, it's just a recompile), so if Intel make any headway with x86 phones, developers might start simply compiling all their apps for both ARM and x86.
I don't know if Intel will get very far with this. Right now, their solution is OK, but not competitive with high-end ARM SoCs. Give them a couple of iterations, and given Intel's enormous lead in manufacturing process, they might become competitive soon enough. Then it's a question of whether any phone manufacturer decides to use Intel over ARM, whether people actually buy such a phone, and whether developers decide to bother supporting both ARM and x86.
Java has something C# lacks: a good IDE. ... ? Monodevelop? Yeah right. Visual Studio. LOL!
Java has eclipse.
C# has
2. Oracle is suing Google over Java right now..
I am following the Oracle suite very much, because I'm myself a Java developer (and I searched long [Python, C#, C, C++, Php, Ruby] but I can't find any other language that suites my needs better). So this statement is just wrong, because Oracle is not suing over Java, but the use of the Java API and the structure, sequence and organization (SSO).
For me, the whole suite is just a stupid attempt by Oracle to get a piece of the mobile pie from Google and such a suite can only happening in the USA with it's more then confusing laws about copyright and patent laws which can patent everything.
Such suite can be easily happening with Microsoft over C#'s API or SSO, they don't hire 100s of layers for nothing.
http://www.mueller-public.de - My site http://www.anr-institute.com/ - Advanced Natural Research Institute
So the fact that Oracle has sued someone over their language while Microsoft hasn't doesn't matter, it's still Microsoft that is more evil.
I mean, what exactly does matter, then?
Wow, where did you get that opinion from? Using a beta version of VS2005? VS2001?. The team I'm in right now is coding Java for Android in NetBeans because Eclipse sucked hard. But coding in C# in Visual Studio 2008/2010 is way better, way more productive. Hell even coding Javascript / HTML in VS2010 is better than this.
Australian running a company that does C# / C++ / Java / SQL / Python / Mathematica
There are shops out there that actual utilize the principles of software engineering to get the job done. You get much better, more reusable software packages with a whole lot fewer bugs and those bugs are discovered at a much earlier point in the development life cycle....Software patterns are part of that....avoiding fads is one thing...not all patterns are fads....most patterns are not designed to be a development template, but a refactoring template to allow ease of maintenance.
Sorry but Visual Studio >>> Eclipse. It may be proprietary and not support the 100 languages Eclipse does, but for the languages does support, it is hands down 100 times better than Eclipse. Hate Microsoft all you want, but their developer tools have always been first class - which is why their OS had such widespread adoption (its about getting applications on your platform, not the quality of your platform itself).
P.S. get Resharper and NUnit.
AccountKiller
And for the rest of us, it's C Tic-Tac-Toe thingy.
Someone flopped a steamer in the gene pool.
The chart from TFA:
http://tirania.org/s/71de890b.png
Whoa. Those benchmarks show Java/JVM about 7 times slower than C#/DLR. (I thought "DLR" in TFA was a typo, but it's correct. DLR stands for Dynamic Language Runtime.)
I'm not entirely surprised. I remember reading the history of IronPython, where Jim Hugunin (the original author of Jython, which is Python running on the JVM) did some experiments with the CLR, intending to prove how sucky and lousy the CLR was; instead, he found that the CLR was faster than the JVM, and he went ahead and created IronPython to run on the CLR.
steveha
lf(1): it's like ls(1) but sorts filenames by extension, tersely
I don't like C# with the class/struct distinction
You must then positively hate the primitive/class distinction in Java, since it's exact same thing, except that you can't add your own primitives.
the unsafe delegates
What's unsafe about delegates? They're exactly equivalent to a single-method interface implemented by an anonymous inner class wrapping a method call - except that they're several times more efficient (because they're represented as a simple pair of object pointer + method pointer internally).
the clumsy syntax for properties
Not sure what's clumsy about it, especially since you can have it auto-define the backing field and all plumbing for you since C# 3. But it sure beats the lack of properties on language level...
the two collection frameworks [one with generics, one without]
Yep, I'll give you that one. That's the price for proper (reified) generics, though - Java could retrofit old collections with generics because its generics are a compiler sham which can be discarded if needed, so old code doesn't even notice they're still there - it's all just objects. Since C# generics are runtime type-safe, there's no way you could retrofit them onto the old collections.
But it's not just about writing. Reading is at least as important. And you need to read thought a lot of noise to get to the signal if you're using an anonymous class.
Both are "Do No Good". Theres a Google rap sheet a mile long stemming from the last 4 years.
"Do No Good"? Isn't there anything they might have done recently that might earn them a little karma? Like say, pulling out of China when every other corporation is busy sucking Comrade Dick for the mere hint of market access.
It's costing them, too. For instance, the PRC government has been threatening to disrupt the Motorola merger -- since Motorola has a major presence in China (including a lot of development and manufacturing), they could seriously work Google over using their regulatory agencies.
IANAL but unless they did a clean room conversion to C#, then Oracle's patent, if valid, would still apply. In otherwords, if Android is found to infringe on Oracle's IP and they programmers examined the infringing code and converted it to C#, the the C# implimentation still infringes.
their developer tools have always been first class
This is what I have noticed about Visual Studio users, and I will preface the list with this; it may be that someone just doesn't know how to use the tool, but with C#, VB.NET, C++.NET, etc... Microsoft has very clearly made the .NET platform to be developed using their tools, so knowing how to use the tool (Visual Studio) is a key requirement to knowing how to program anything for .NET (which has a lot of cons in my opinion but that's getting off topic.) [PS: In case you need an example of how absolutely dependent .NET and Visual Studio are to each other look no further than the Entity Framework]
.NET APIs is usually rampant with Visual Studio people.
.NET, Java, RPG, C++, etc... However, the people who use Visual Studio tend to have (for lack of a better term) an addiction to the "Visual" part of VS. Now there are a couple of people I've met that have written some quality code using VS, but I'd hate myself trying to convince myself that I wasn't seeing a pattern here.
1. Visual studio users tend to be autocomplete hunters. I agree autocomplete is a handy tool, but lack of knowledge of the
2. Auto-generated boiler plates *usually* makes it to production and *usually* remains until version three or four. Again, it's handy that a lot of work is done for you, in this fast pace world we live in, it can be a life saver. However, sometimes it's time to retire the boiler plate code for something that is a better fit for your solution. Visual Studio coders tend to not even realize that this is going on behind the GUI.
3. Kill diff and commit new. I can't put my finger on it, but Visual Studio coders then to forego working on already committed branches and just start fresh every time or at least every other time. For the life of me, I simply don't understand why they don't tend to follow the "dozen little gears" approach... (which leads me into)
4. If Visual Studio didn't break up the functionality, VS coders tend to cobble everything into a handful of classes. Coders tend to have a single class that handles every, single, stinking, GUI event and possible combination thereof. Really?! Why?!
5. Visual Studio coders don't seem to build components, if they do, the component isn't very focused on task. Usually the library is something along the lines of "AllTheUsefulFunctionsThatWeKeepTypingOverAndOverForOurCompany.dll" As opposed to say, "FunctionsForASingleCustomer.dll" This makes rebuilding libraries, for me, a pain in the ass because every department has to approve the changes. I have no idea why Visual Studio coders feel that everything plus a chicken is a great idea for everything and the chicken?!
6. Exceptions! Catch them please! No one is immune to this, granted. However the forgot to catch an exception for Visual Studio coders is quite higher than say the guys that write C++ or Java and use Eclipse.
I've worked at several places coding on everything from
I like Visual Studio but the most frustrating thing is it always seems to get in my way, it always wants to think for me (usually doing a pretty bad job at it), and it really does so many things behind the scene that it tends to breed a "ignorance is bliss" attitude that carries over into actual user written code.
Now before you pick up the rock and bash my head in!! I totally understand that VS is just the tool. I get that and trust me, some of the coders that I'm talking about are some of my best drinking buddies, so I really don't want to think badly of them. But I just keep seeing this wherever I go when it comes to Visual Studio coders, not just my buddies, but others too. I can't help but feel that, "if the soldiers keep dying, it may not be the soldiers' fault." Like wise, if the code keeps coming from VS, in an ugly state, it may not be the coders' fault.
Okay I'm ready to hear reasons as to why I'm just crazy and dreaming all this up.
1. Agreed
2 - not sure it is that big an issue, but I don't believe you're wrong.
3 - not sure what you're saying here, this is about teaching people to use the code management tools available to them, not the IDE.
4 - are you contradicting yourself - you say VS coders break things up and Coders don't?
5 - isn't just VS coders.
I'd specifically like to call out statement 6 though:
Exceptions! Catch them please! No one is immune to this, granted. However the forgot to catch an exception for Visual Studio coders is quite higher than say the guys that write C++ or Java and use Eclipse.
I think you're conflating two different approaches here. On the class library side of things, I'm strongly against catching all exceptions. The only exceptions a library should catch - and this is one of many opinions I freely admit - are those where the cause of the exception is totally and completely within the method call. That means any method using external data, externally configured data sources, parameters etc should not hide the exception but allow it to bubble back to the calling app. The app can then decide what to do (example - a misconfigured database connection string).
A program/application, on the other hand, should almost never show a user an unhandled exception. Not that I'm great at that either but still, that's my viewpoint. Again an exception - things like exceptions in an exception handler might be good exceptions to the "don't show exceptions" mantra.
Not trying to bash your head in, but I think you may just have encountered the wrong developers. One thing about Visual Studio is its ease of use (as opposed to Eclipse). This makes the barriers for entry much much smaller, allowing non-developers to write simple but very bad WinForms applications, which grow into monolithic and dear-god-kill-me-now bad applications.
:)
This is similar to how Javascript in the late 90s was used by so many laymen (who wanted to call themselves web developers) to write the most god-awful code known to mankind.
So please don't judge a tool by a subset of its users. There are plenty of us out there that actually write reusable, testable, readable code using Visual Studio and C# (for the love of god I wish VB.Net would die in a fire) - and we do it very quickly and effortlessly thanks to the ease of use of VS (and Resharper
It also generally helps when your team does not *completely* drink the Microsoft Koolaid. Their source control and CI tools are just plain garbage. Use git, with a proper diff tool and some level of CI. Encourage constant refactoring and TDD. <-- generally these techniques are not practiced in Microsoft shops as MS does not preach this kind of stuff very loudly or very well, and some managers are deaf to everything but what MS has to say.
AccountKiller
The (irrevocable, legally binding) promise Microsoft made was not just related to C#, but the .NET framework. So long as it's implemented properly (eg. all elements Microsoft deems "required" for the implementation is implemented), Microsoft will not peruse any legal action on anyone using the technology. That includes the API. The reason Microsoft did this was so people would not be afraid to use it. They want people to use it.
The two situations are not comparable at all. Microsoft would not sue over someone implementing the API.
The proposals for closures in Java 8 are very similar to the proposals for closures in Java 7. These, in turn, were strikingly similar to proposals for closures in Java 6. There have been proof-of-concept implementations around for years and several other languages running on the JVM have had closures for as long, so I'm not really holding my breath...
I am TheRaven on Soylent News
Microsoft is a bigger, more evil giant than even Oracle.
I'm not entirely sure you've ever dealt with Oracle...
Oracle vs Google is like "do no good" vs "do no evil".
More like "do evil with pride" vs "do evil and hide".
This would actually be a great slashdot poll!
Who is the most evil?
Apple
Microsoft
Google
Oracle
AT&T
RMS (there is always a nonsense option)
Aaa.... No it's not. There is a defensive termination clause(I will be corrected if I'm wrong...) in Microsoft's grant, but not in Oracle's.
There is a termination clause:
I.e. you can sue Microsoft for infringement of your own patents by SQL Server or Windows, but if you sue claiming that one of the specifications/implementations covered under the open specification promise infringes your patents, Microsoft reserved their right to countersue you for infringement of the same specifications.
This is a standard defensive mechanism. Sun/Oracle has one as well:
If you were to rely on these specifications for a product you are building, it actually benefits you that there is a defensive mechanism in there to deter against crippling lawsuits.
So, not much difference. Standard defensive mechanism in the common interest of the users of the products.
Reading slashdot one-liner: (irm http://rss.slashdot.org/Slashdot/slashdot).rdf.item | fl title,desc*