Once again, all of this is from my point of view. It is not saying everyone has the same experience.
Further Windows 8 is getting a Windows store, with distribution integrated into Visual Studio. This will allow you to sell C# projects much easier. C# also has the XNA Community Developers channel (or whatever it's called), which allows you to sell your XNA games on the 360. It's not massively popular, but some people have made a decent amount of cash.
Like I said from my experience. XNA requires license which costs money when you want to distribute. I believe the Microsoft store will be the same. On the same lines microsoft store does not target multiple platforms just windows 8. In the targeting a single platform you have the android marketplace. I can understand people have made money on both but when it comes to just dipping your feet in then java wins due to lack of fees.
If you are using threads, OpenGL, Swing, Java2D or anything involving audio, then you can easily encounter cross-platform issues with Java. It's far better then C#, but far from perfect.
If you target difference devices, then you do need to be platform specific. Different screen sizes, input configurations, and other factors make this a reality in any language, including Java. For example lots of Android apps work badly on Android tablets, simply because they just weren't designed for a larger interface.
I have not encountered a problem with Java other then having the proper libraries which also happens in windows.
The different device targeting issues are problems with any language.
Also if you were to use an installer for a java application the necessary libraries can be loaded on the system. If you wern't worried about size then you could even pack a VM in with your application and run it from the install directory.
Microsoft have their own Robotics Developer Studio
, where as with Java it's mostly a collection of various third party tools and libraries. As a result, you have to hack a lot of the bits together yourself. I have some experience using Java with simple robotics, and the fact is that most of these libraries are very hit and miss. Some work, whilst others tragically fail.
Lego Mindstorms, one of the best robotics kits for learning, works with both Java and C#. However it's also supported with the Microsoft Robotics Developer Studio.
Diversity, I'd say Java wins, but for maturity, I'd say C#.
Again from my experience. Javas hit and miss is due to third party development. You are comparing a broad set to a specified set. Like comparing Schwinn to all automobiles.
Also from my perspective. I use Java because my robot run environments are mostly linux based.
Also the collection of various tools and libraries is once again due to people developing for different platforms. Not all robots are the same, not all platforms are the same, not all objectives are the same. If you are using a broad range of open source libraries you will encounter this in any language in any standpoint. That is the fun behind hacking code. Take a graphics library from a video game, database setup from a enterprise application, communications stack from another application. No they are not going to fit you have to make it either by tape or hammer.
Old mobiles use J2ME, which uses Java 1.3 for the language, and their old APIs. It is also heavily dated, and only popular in emerging economies (namely China, India and Latin America). Android uses it's own VM, which has a mix of standard and non-standard libraries.
But the most important mobile platform is iOS, since it has the biggest ecosystem, and over 90% of all mobile applications are sold on iOS. Here C# has products such as Mono Touch
, which allows you to build C# games/applications for both Android and iOS, using Mono. iOS development using Java is mostly non-existent (there are some proof of concepts floating around online).
For very old phones, Java wins hands down. For Android, Java wins, but C# is pretty good too. For iOS, which is the one that matters, C# wins.
Yes iOS has a large portion of the market but android has a more diverse base. Android apps wont run on iOS and iOS wont run on Android but as far as the number of different devices Android is better. Android is on the rise and with jobbs retiring I believe that apple will soon to be on the fall.
Jumping back into the other side of the problem. Doesn't it cost money to develop applications for iOS or at least royalties?
The JRE is far more popular then Silverlight. However Applets are partially blocked in Chrome, and Mozilla might be following suit. Both Java and Silverlight are fully blocked in Metro, but you can easily port Silverlight apps to Metro.
Due to exploits. Someone will find some for silverlight soon.
Agreed, but don't forget that Applets are but a part of web development.
For converting to HTML/JS, there is GWT for Java, which is outstanding. But there is also Script#
for Silverlight, which is used heavily within Microsoft (I believe Hotmail is built using it), and so it's also pretty mature. There are other alternatives for C#, such as JSC
(but I'd go with GWT or Script#).
So if your using a plugin, Java is more popular, whilst Silverlight gives a far superior experience, but neither are the best (I'd recommend Flash of HTML5/JS). For converting to HTML5/JS, Java wins simply because GWT has more use/examples/libraries/ecosystem, but C# is still an excellent choice.
As a side question, has anyone had any good luck with silverlight and linux? I have not even tried.
Now theres another part of web development that you missed ... server side technologies! Apache has Tomcat which is a JSP server. So you end up mixing elements of java and html together. While I agree that Applets are dated and have issues (Its an older technology) C# still has a lot of ground to make up.
Now we can compare Java and Flash all day but we are trying to focus on Java and C#.
Once again all of this is from my view.