4 ms·
C# is a great language and .NET is probably the most advanced VM on earth. Visual Studio is the most polished IDE. It's just a shame that Microsoft had to enfor
by cellis 12y ago
C# is a great language and .NET is probably the most advanced VM on earth. Visual Studio is the most polished IDE. It's just a shame that Microsoft had to enforce windows-only so dogmatically, which is the only reason mono and Xamarin exist in the first place. So the real thing that needs to happen is MSFT needs to make tools for .NET and work to make .NET run on *nix.
- deleted 12y ago[deleted]
- RachelF 12y agoHopefully Microsoft are in the process of changing their mind with Ballmer gon. They make fantastic tools, but they really do only target Windows.
- deleted 12y ago[deleted]
- x0x0 12y agowhat does .net platform offer over the jvm? (And to be clear, I understand differences between java and c#).
- catmanjan 12y agoIntegrated support libraries and such for things that you need to do for almost every project, compare reading contents from a URL in C#: WebRequest.Create("http://www.google.com/" http://www.google.com/").GetResponse() I can't even think of a way to do it safely in Java without "BufferedBuffer" hell
- x0x0 12y agoreread the second sentence in my post
- eropple 12y agoIntegrated libraries cause one of .NET's biggest problems, though: the "if it doesn't come from Microsoft, it doesn't matter" effect. The Java ecosystem's openness provides you a lot of choice and has created a lot of innovation; Coda Hale had a good article on the topic[1]. I don't feel like there's a ton of non-Microsoft innovation in the .NET community--there's some iteration and a lot of (often poor--hello, NuGet) porting and adaptation, but there aren't many people doing something like Scalaz Streams on .NET. Even setting aside advancement and research, it's hard to really create a real competitors to Microsoft's existing solutions even when they're terrible. NHibernate is the "best" one I can think of and it's kind of trainwreckish. Outside of that--like, NancyFx has been around a long time at this point but hasn't really made a dent, whereas the JVM application server is rapidly losing ground--and it literally cannot come soon enough for my liking--to frameworks like Dropwizard or Play. You can fight the Man on the JVM and win; I'm not sure you can do so on .NET. That isn't to say .NET doesn't have some significant pluses. If you stay in the sandbox and can stomach having to deal with non-Unix command line tools or Cygwin (haaaa ha ha ha), it is really really nice. But the second you go off-roading, bring a helmet. [1] - http://codahale.com/when-formality-works/ http://codahale.com/when-formality-works/
- cellis 12y agoBesides JVM tuning hell? Tooling. Eclipse is a disaster ( out of the box). Intellij IDEA isn't much better, although it is better than anything Xamarin produces by a mile. As far as Java vs C#; the gap is definitely closing with anonymous functions in J8. But C# has had lamdbas and LINQ for a while, and I don't see anything close to LINQ in java. Overall I like Java quite a bit, it's the first thing I reached for when I migrated away from .NET development, but Eclipse/Java dev still doesn't feel as snappy on my Macbook Air with 4Gs of ram as dev with VSExpress 2005 was on my old Dell. Le Sigh.
- mercurial 12y agoI agree that Eclipse is a dog in terms of resources. On the other hand, it comes with a bazillion features that last time I looked are not standard in Visual Studio. Also, Ctl-Shift-T/Ctl-Shift-R, which are my go-to functions, are so superior to the Visual Studio search it's not even funny.
- eropple 12y agoThe IDEs are generally a bit rotten in Java-land--though I feel you're underselling IDEA a bit, I find it pretty rad--but most of the JVM folks I know reach for Scala. I see more and more people going to Scala as the "big gun" when you want largely functional, primarily immutable idioms on the JVM. If you're comfortable with C# you'll find many features you're used to--like LINQ-esque functional modeling, though Java 8 adds some of that--in Scala. (You'll also find a lot of other stuff in it; at this point I have a good handle on it and use a lot of "fancy" bits of Scala but Scala would sure benefit from a Scala: The Good Parts book.) (edit: JDK8 and the G1 collector have made my life a lot easier when I have to tune the JVM. I think you gotta cut it a little more slack these days.)
- mercurial 12y agoThough I've never really played with it, .net is usually preferred for non-cross platform desktop apps, so that would be something.
- eropple 12y agoI'm not sure that's true anymore. Some subset of .NET is supported for RT, but so is C++. WinForms is deprecated and it seems like everybody hates WPF, so there isn't a great .NET story around desktop UIs right now. It's a bit of a cluster. (I like WPF. But I'm weird.)
- pjmlp 12y agoIn the enterprise XAML based UIs are quite loved. We even get to have the "J2EE" version of .NET with all those model view patterns.
- tonyedgecombe 12y agoI like WPF as well, I just wish Microsoft would give it a bit more love.
- CmonDev 12y agoSince Microsoft doesn't care about WPF anymore people started pretending they like HTML5 and JS, kinda like "hey, dirt doesn't taste that bad if you give it some time!".
- pjmlp 12y agoWhat matters is XAML, and that is as present as ever.
- pjmlp 12y ago> what does .net platform offer over the jvm? Some builtin features that Sun/Oracle leave for third parties. - It always JITs. Either at runtime (JIT on load) or at installation time (NGEN). - Windows Phone 8 .NET applications are compiled to native code, to an executable format called MDIL. Native code with symbols left for linking. - A new JIT in the works that offers SIMD instructions - A native compiler for static binaries based on the Visual C++ backend (.NET Native) - Value types (In discussion for Java 9) - Flat arrays - Native interop (JNI sucks, Oracle also recognized this) - Real generics. Regarding the first issues, Java also offers them, but you have to buy a commercial JVM as the standard Oracle tooling doesn't offer such features. There is the Graal/Substracte VM at Oracle Research, but who knows when integration will happen. Regarding the last issues, they were discussed at JVM Language Summit 2014. Some of them might be fixed in Java 9 timeframe. http://www.oracle.com/technetwork/java/javase/community/jlssessions-2255337.html http://www.oracle.com/technetwork/java/javase/community/jlss...
- x0x0 12y agoHmm. what is a flat array? By value type, you mean assignment causes deep copy instead of reference copy? What is the advantage of a static binary over just shipping the jvm (which you are certainly allowed to do)? I guess I could see it if you are writing end-user software, but the jvm is pretty much server-software and devtools at this point. What do you mean it always jits? So does the jvm unless I misunderstand what you mean by jit. simd is beginning to make its way into java, but numerics are not the jvm's strong spot. I didn't think they where for c# either. Is this incorrect? And yeah, jni is fucking awful. Real generics would be nice. Thanks for your answer.
- pjmlp 12y ago> what is a flat array? In multidimensional arrays you do one single allocation instead of n times m time k times ... allocations. You can fake this in Java by allocating one major block and doing the math for the respective cell yourself but it is cumbersome. > What is the advantage of a static binary over just shipping the jvm The same as doing coding in C and similar languages. Guess one of the reasons why Java lost the desktop. > What do you mean it always jits? There isn't any interpretation going on. On most JVMs you need to set execution threshold to zero to achieve similar behavior. On most JVMs, it is a two step process as they start interpreting and only hot methods (this is customizable on most) get JITted. > simd is beginning to make its way into java It is still not clear if it will make it into Java 9 timeframe. > Is this incorrect? Yes, as C# as managed to place itself as "good enough C++" on the Windows world, for many use cases.
- pjmlp 12y agoThe most advanced VM on earth is a Java one called Zing with a pauseless GC, able to handle quite a few GB and powering a few stock market exchanges. EDIT: Should have mentioned Zing instead of Azul.
- gilgoomesh 12y agoThe product is called "Zing". "Azul" is just the company name.
- pjmlp 12y agoThanks. Updated accordingly. It is a bit hard to search while on the move.
- x0x0 12y agoTalking to people who think it's no big deal to run 200G heaps is damn cool. Zing gives you that.
- eropple 12y agoZing is amazing and I legitimately wish I had a reason to spend the money to play with it. In the interim, Shenandoah seems pretty cool (aiming for 10ms pauses for 100G heaps) and it's open so it's easier to lpay with.