All I know is that the next version of Java will have features inspired by the last version of c# http://mail.openjdk.java.net/pipermail/lambda-dev/2011-Septe...
I'll give C# a +1 for lambda/functional feature but the rest does not equal +1.
MSBuild -> Ant
NuGET -> Ivy
DoesNotExist -> Maven (don't forget to count maven plugins).
NHibernate, Log4Net, etc -> inspired by its Java counterpart.
How about sane deployment/packaging system? WAR, JAR, EAR push to App Server (tomcat, glassfish, etc). Not so easy with IIS.
I argue that Java open source library is far richer than .NET (no hadoop, no hbase, no cassandra, nor GWT)
The original C# language and virtual machine was inspired by Java.
Then, C# got: * Better generics
* lambda expressions
* the yield keyword and compiler magic for iterators
* explicit interface implementation (rarely needed, but very well thought-out for when you need it)
* LINQ!!!
* Type inference
* Dynamic keyword
(I'm forgetting some things, it's late).
Anders has guided the C# language brilliantly ... Java has been outpaced at every step of the way. So many somewhat radical features have been added to C#, and from my standpoint, every single one of them was very well-done.
C# has all these features yet I have never seen killer tools that changed the .net landscape like Rails did with Ruby. While I would not call those language features smoke and mirror, I argue that they are merely nice to have and not ground nor thought provoking.
At the end of the day, Java ecosystem still move forward way faster than .net. Spring, cloudera, datastax, alfresco, liferay, ehcache, jboss, tomcat, Embedded server like Jetty, and other great, free, mature, serious, and open source tools are available at our disposal vs taking to sales rep to buy licenses, which are a common activity in .net world.
With maven, I'm not sure that it's a good thing https://www.google.co.uk/search?q=maven+hate and there are lots of ways besides msbuild to do builds and installs. The rake, jake, psake family of tools are all viable.
With things like Cassandra, I don't care what language the server is written in as long as I can connect to it. This is IMHO the way forward, and not just for .Net. Though if you're looking for a noSql db written in .Net, there is RavenDb.
There will be minorities that just happened to dislike everything. There are also people who just happened to use maven in the wrong way and ended up fighting with it.
This suggests that you have never used and experienced Maven. Combined eclipse with m2clipse and you will get awesome development experience. Imagine not having to download 3rd party library manually by visiting their website. Imagine autocomplete of the freshly acquired 3rd party lib via your IDE to also shows you the javadoc. Imagine trying to navigate to the 3rd party class and method implementation without setting up your IDE or messing with path/folder setup automagically. You cannot do any of these in .net nor vs.net.
I know RavenDB but can you compare it with Cassandra, Hbase? Not by many many miles. The latter two are battle tested by top most traffic website while the former has yet to reach that level.
I also argued that the javaee 6 stack provides way better, simpler, and modular approach to building back end systems. There is no equivalent EJB 3 in .net (I will be damned if you do another google query for EJB sucks. the old one is, but not the new one. Also experiencing the tools before making your judgement would not hurt). All in all .net framework for the most part of it have always been behind Java (except in the category of presentation/UI).
I prefer not to continue the discussion when the obvious is there right in front of us: C# has cool language features but honestly nothing has been groundbreaking in the .net world. The last one probably was asp.net mvc and the changes in the core asp.net as some sort of an api instead of the old asp.net webform stack, mimicking the JEE web profile approach.
Rake and the rest can be considered sub features of maven. Not. Even. Close.
I don't know maven from a bar of soap, but would you diagree with this recent hn post then? "Why Everyone Eventually Hates or Leaves Maven" http://news.ycombinator.com/item?id=5105164
Now I've had a look at the basics of what Maven does ... http://en.wikipedia.org/wiki/Apache_Maven " It can also be used to build and manage projects written in C#..."
Honestly, if it was that far beyond everything else, people in the .Net community would be talking about it a lot. And they're not.
> Imagine not having to download 3rd party library manually by visiting their website. Imagine autocomplete of the freshly acquired 3rd party lib via your IDE to also shows you the javadoc. Imagine trying to navigate to the 3rd party class and method implementation without setting up your IDE or messing with path/folder setup automagically. You cannot do any of these in .net nor vs.net.
Factually incorrect. The equivalent happens in VS via nuget right now.
I can link to many2 .net blog posts how people have left it because it is too limiting but that is not the point. Personal preference does not equal real world evident that suggests that .net is not that limiting.
Last but not least, your nuget can't:
Run unit tests without any setup.
Run integration tests without any setup.
Run code analysis as part of build.
Run code style as part of build.
Package your project and make it ready as dependencies to hour other projects easily without having to import the whole source folder as another project below a solution.
Deploy to hour app server.
Generate javadoc or .net doc.
I recalled there were challenges to use maven for .net projects. Would you want me to query people praise of maven? Or would you want me to query how .net community wishes or is looking for maven equivalent tools in .net and how nuget is just a piece of subset of what maven can do? Or would you like to take a look the current landscape of build and dependency tools and how almost all of them mimic what maven can do?
The equivalent of maven would be msbuild, msdeploy, nuget, and various other tools in which you have to setup manually and requires a lot of effort. In the rails world they required gems, rake, and bundler to match maven capabilities.
I think I've explained too much. There is absolutely no point to continue the discussion if all you do is merely performing google search query of Java bashing because likewise can be done with .net and that would be a time wasting.
Otherwise, let me know when there is a huge revolution in the .net world that shook the software development world because so far you guys just following java footsteps in almost every area except the c# language syntax.
One tool that does everything has never been my taste - a package manger that runs unit tests wouldn't be a good idea at all.
You're not saying anything of interest or useful to me anyway.
C# - A language that can do (almost) everything: mobile, web, desktop, etc (Java still beat you guys on embedded devices).
VS.NET - An IDE that can do build, run your tests, UML modelling and many more...
Final thoughts on Maven: What I care is a tool that perform build for me and in 2013, validations are part of the build: validate that your code compiles (compiler), validate that your code can be packaged according to the agreeable standard (dll, jar, whatever), some level of behaviour validation (unit-test, integration-test) .
If you disagree then perhaps we have philosophical differences when it comes to good software engineering practices since the beginning.
Eventually you either: build something from scratch to mimic Maven on .NET ecosystems or use various tools (MSBuild, NAnt, NuGET) that perform the same workflow that Maven gives to you. Either way you got nothing like Maven in .NET ecosystems which is a huge loss for me since why would I learn various tools or build some piece of the puzzles on my own when I have _the_ tool that can do what we all have to do on day-to-day base anyway...
You're not saying anything remotely close to display how the .NET ecosystem is richer than Java. Perhaps because it isn't.
PS: Maven is composed by plugins, the fact that some of the plugins can do unit-test while others can do static code analysis are just... awesome.
I'm done.
I am a heavy-duty user of both PyCharm/PhpStorm and VS myself.
So a good programmer reinvent the wheel whenever he can?
As for 'fast' it really depends what you mean. Nobody's going to dispute that running a compiled application written in C is going to beat the pants off anything running on top of a VM, but is that speed factor important all of the time? Of course it's not. Most of the time a short wait is perfectly tolerable in exchange for the assistance in writing correct code that languages like Java can provide.
Thing is, Eclipse/IntelliJ plugin ecosystems are far richer and waaay more cost effective (and powerful) than VS.NET plugin ecosystems.
I know I keep pointing to Maven but Maven alone is a huge reason why .NET is left to dust.
It was hell. I installed JetBeans IDEA quickly enough, but it went downhill from there. My AntiVirus (Kaspersky) fucked with Java 7's networking meaning it couldn't connect to anything, so it took an hour and a lot of googling to fix that. Next step: make a struts2 project. Wait, maven doesn't like the archtype IDEA gives it so it explodes and doesn't install it. Ok, do that by hand. Next install a webserver, which one to choose? Install one, doesn't work with IDEA - have to install an earlier version.
Ok. Finally got a blank project up. Read the docs for struts2, brain hurts, uninstall everything, fire up VS 2012 and write the whole thing in C# and run it on mono. Easy.
Apart from the low jab in this particular line, why's Java related to VS, VS features and the .Net eco system?
Language wars are boring.