Microsoft is leaving Java in the dust, but the company still has room to grow in the developer arena, a key executive said. Speaking at the Microsoft FAM (Financial Analyst Meeting) on July 27 in Redmond, Wash., Bob Muglia, Microsoft’s senior vice president of Server and Tools business, said Microsoft’s .Net platform has outpaced Java, particularly the Java Enterprise Edition, over the past five years to become the development platform of choice for enterprise development.
And no evidence given; sure, the number of .NET programmers are increasing, but that is more of a consolidation of existing VB developers who have migrated to VB.NET and existing C++/C developers who have picked up C#.
As for migration, I’ve seen very little actually go from Java to .NET; if there are any .NET migrations, they’re going to be existing Windows customers, who quite frankly, were never going to run a Java application server on Windows in the first place; if you’re running Windows, its pretty obvious that you’re a 100% Microsoft house with little likelihood of running software from other vendors.
Edited 2006-07-28 18:41
You are 100% correct.
I’ve seen no evidence of Java to .Net migration, in any way, shape, or form.
It’s either the company is an all Microsoft shop, or it has a mix and match. Most of the all MS shops go with .Net, with a small amount using Java. And any mix and match house has to go Java, or perhaps RoR, or perhaps LAMP, or anything else that is cross platform.
And yes, the increase in .Net is mostly old VB to .Net migration, or old C++/MFC to C# migration.
When that transition period ends, so will the current growth rate of .Net. It will settle down, with more regular growth rates.
“Migrating” whole deployments is silly, unless you like nothing but pain. Existing deployments don’t just up and go, just slowly phased out while new stuff gets added on; after all, we’re still sitting on top of tons of COBOL.
What shifts is the primary development platform, this is the 60%. When ever someone says XYZ has ABC% of the development market, they’re usually talking about the space on new development, not what’s already there.
That last statement, “if you’re running Windows, its pretty obvious that you’re a 100% Microsoft house with little likelihood of running software from other vendors” seems incredibly naive in light of the fact that there numerous companies have have heterogeneous infrastructure. There are lots of established companies with Unix systems that aren’t going away in the immediate future. Similarly, plenty of smaller companies are taking a serious look at Linux as they grow. The homogeneous IT environment is the exception rather than the rule.
As for the subject at hand, I dunno what to think just yet. I’d like to know how much headway technologies like Ruby on Rails and PHP are making, since that’s probably at Java’s expense. (I’m basing that asssumption on the common Unix/Linux-centric roots as well as the fact that Java’s been around longer–people are more hesitant to replace a .Net solution they just installed 2 years ago.)
That last statement, “if you’re running Windows, its pretty obvious that you’re a 100% Microsoft house with little likelihood of running software from other vendors”
My company has developers who code mostly on Windows, but a few are on Linux too. The backend is a mix of mostly Java web stuff running on Apache and Resin on a mix of both Linux and Windows. There is a bit of .NET code thrown in for good measure.
As an end user, when it comes down to a choice between Java and .NET, it reminds me of that old question, “Would you rather be eaten out by Jaws or fingered by Captain Hook?” Can I choose neither, please? Can’t the IT industry put their heads together and figure out a way to code native, cross-platform apps easily so we can drop this virtual machine crap?
“We’ve grown from having a quarter of the market to, now, 60 percent,”
I think thats a good degree of evidence, no?
how can they prove it? what market? who meassured it? how?
touche. I’m going on faith on the numbers =x
they are referring to ASP.NET vs J2EE – not .NET and java as a whole for desktop applications and what not.
“I think thats a good degree of evidence, no?”
No.
.net isn’t much of a competitor to Java, it’s a replacement for the Windows API. Microsoft is hardly competing, they didn’t implement a runtime environment for any OS besides Windows and they couldn’t care less whether mono is compatible with the latest .net implementation and APIs or not.
Can you imagine the damage it would do to Microsoft if after the majority of applications for Windows have been ported to .net, someone could get a Microsoft developed, properly implemented, and up to date version of the .net rumtime environment to run those applications perfectly under Linux or OS X. Windows would loose a lot of it’s major selling points if it had no exclusive software any more.
Java’s selling point is portability across platforms, .net on the other hand was never implemented by Microsoft outside of Windows. If you ask me they decided .net was a good idea because it means that .net applications will run on *windows* regardless of the cpu architecture and hardware.
Microsoft is trying to replace the Windows API with .net and people know it, so of course the large share of people who were already using the Windows API will migrate to .net considering it’s the future of what they’re already using. If that 60% figure is accurate, all it tells me is that Microsoft is effectively replacing the older Windows API with what they envision as a way of having people compile their Windows apps only once before distributing to every hardware configuration capable of running Windows.
Calling .net a competitor to Java is true on a technical basis, but Java’s target is one that .net alone isn’t interested in, and that’s people who want to compile a program once for it to run on several different operating systems. For all it’s worth, .net is the same threat the Windows API was, except more modern and easier to use.
I agree with this, in that the fight has always been between Java and the Windows platform. Of course, Microsoft’s objective is to extend the Windows platform to every computing device, from server to desktop to mobile to home theatre. Java is but a drop in the bucket compared to that.
The best move to ensure Java’s survival is to focus on interoperability with the Windows platform, IMO.
Based on…? How many are running Windows that used to have a Java setup (most likely running on a non-Microsoft platform)? how many were running ASP but have moved to ASP.NET? it never actually outlines how many customers have migrated from a Java setup to a purely .NET configuration.
Like I said, is a consolidation of various technologies on the Windows platform; once complete, the .NET growth rate will go back and track against the growth rate of Windows.
You’ll simply have the market split into two; Microsoft Windows and .NET and the rest; you run Windows, you’ll be running .NET; and in Sun case, they don’t really care about .NET because it isn’t as though you can run .NET on Solaris, get support from Microsoft, and thus a real threat to Javas main benefit – multiplatform support.
That is why Java is popular at the backend; .NET is simply a replacement for an ugly way of doing things on Windows; Java on the other hand was there to solve a problem that doesn’t relate to fixing an operating system problem.
I can just imagine the well-reasoned discussion when /. picks this one up.
Personally, I like C# better than Java, but I don’t generally make web applications. Although lately I have, but not with .NET… 😉
– chrish
/. and well-reasoned in the same sentence. lol
Sun has a problem of where to go with Java in the future. Java has been a big success on the server but never made it on the desktop.
On the server, there’s quite a bit of competition with web-specific languages like PHP, with dynamic, “scripting” language like Ruby and Python, and with .NET itself.
The Java leadership at Sun has always been resistant to change because they, wrongly or rightly, felt that Java should be simple. I guess one of their reasonsings is that business wants something with a minimal core set of features so that programmers can be interchanged more easily.
Microsoft never really had that philosophy with C#. They knew they had to start off with a language that was Java-like, but that their developers don’t really care if new features are added. They’d rather have first class language features like properties, events, delegates, operator overloading, for expressiveness even if it adds new features to the language.
Microsoft has always been much more language agnostic than Sun too. To Microsoft, .NET is the platform and that’s what is most important. To Sun, the Java language is the most important.
So the question is about the future. As we enter the functional/OO hybrid era with C# 3.0, what is Sun’s response going to be? Will Sun get behind something like Scala. Will Sun continue to follow C#? Will Sun come up with a new language for the JVM?
Sun is going to have to at least introduce type inference, whether that’s a new language or onto Java itself. And then there’s the question of Sun stability itself. It looks like there’s another round of layoffs coming.
And of course there’s the open source question. At this point in time, I think open sourcing the entire stack is probably the best bet for Java (the platform) in the long term.
So the near/mid-term future seems to be languages like Scala and Nemerle. Nemerle is like a C# 4.0. What is Sun going to do?
I believe operator overloading was specifically avoided in Java because it’s simply bad style, in most situations, and even when it’s not it’s often abused.
I’m not sure why properties haven’t been adopted by Java or most anywhere else that I’ve noticed. I always liked the idea. I suppose it would be confusing in Java now as everyone uses setters and getters, you’d be asking “setters/getters or properties” for each class and that’d be irritating.
PS- Scala has perked my interest.
I believe operator overloading was specifically avoided in Java because it’s simply bad style, in most situations, and even when it’s not it’s often abused.
But then you start using BigInteger or BigDecimal and realize that non-operator overloading is bad style. Bad style and abuse is indicative of bad developers, not operator overloading.
It’s a different problem. Bad names are one problem, doing operations that call unknown functions are a whole other problem. Operator overloading hides in single characters in your code, and you have to dig around for it.
Operator overloading hides in single characters in your code, and you have to dig around for it.
You won’t have to dig around anymore than any other function with a smart editor. But “digging around” is a symptom of Java-style OO and inheritance in general. Overloaded operators are just like any other function (at least in most languages).
Here http://relo.csail.mit.edu/documentation/relo-vlhcc06.pdf is an interesting paper on the rational for a eclipse plugin called Relo that aids in that “digging around” of large class trees.
The problem with operator overloading is that it doesn’t immediately make it clear to the programmer what’s happening when you see a line of code. I used to be in the C++ camp, firmly believing that the lack of operator overloading in Java was a bad thing. After having to spend months looking at someone else’s C++ code, I’m singing a different tune.
On the other hand, classes like BigDecimal and BigInteger should be treated like String. String has the overloaded + operator, and since BigDecimal and BigInteger are part of the official Java platform, I feel that Sun should have implemented operator overloading for these classes. Operator overloading usually only makes sense when you’re writing classes that deal with numeric values of some sort, like a vector or a matrix. Seeing as Java provides all sorts of stuff like XML processing, *two* GUI toolkits, implementing classes like matrices and vectors shouldn’t be too much to ask for.
The problem with operator overloading is that it doesn’t immediately make it clear to the programmer what’s happening when you see a line of code. I used to be in the C++ camp, firmly believing that the lack of operator overloading in Java was a bad thing. After having to spend months looking at someone else’s C++ code, I’m singing a different tune.
On the other hand, classes like BigDecimal and BigInteger should be treated like String. String has the overloaded + operator, and since BigDecimal and BigInteger are part of the official Java platform, I feel that Sun should have implemented operator overloading for these classes.
Then you get into more weird special cases like String. In .NET operator overloading is not CLS compliant, so the CLS compliant libraries have to have an alternative non-operator overloaded method. So you have the choice to use or not use operator overloading. I’d rather have a team decision on whether to use them, then let Sun be the decision maker.
I believe operator overloading was specifically avoided in Java because it’s simply bad style, in most situations, and even when it’s not it’s often abused.
Infact, Java already has some form of operator overloading. For example, when you write:
String line = “X = ” + x + “, Y = ” + y;
You begin to realize how useful operator overloading is. Why can’t this be extend to other classes (like BigDecimal & BigInteger as mentioned above), or even our own?
Scala has sparked my interest as well. It’s like OCaml, but even better and more modern.
Exciting like Boo, but with features that seem more useful.
Agreed. Mustang has made great strides in the area of the desktop and Swing. Sure right now if you run Java Swing apps on it there are a lot of cool new features and things that can be done but since Mustang is not out yet, I cannot say what the industry response in creating new Swing apps on Mustang would be.
Sun has a problem of where to go with Java in the future. Java has been a big success on the server but never made it on the desktop.
Not true – Swing is extremely popular for corporate projects and has been found to be the #1 GUI toolkit.
http://weblogs.java.net/blog/hansmuller/archive/2005/10/official_sw…
The Java leadership at Sun has always been resistant to change because they, wrongly or rightly, felt that Java should be simple. I guess one of their reasonsings is that business wants something with a minimal core set of features so that programmers can be interchanged more easily.
Java has many times more features and classes than .NET available in the core libraries. The leadership at Sun believes that Java should embrace standards and vendor independence.
They knew they had to start off with a language that was Java-like
After having made a living off of .NET/C# for nearly 5 years and then moving to Java almost exclusively, I can now almost entirely agree with those that said it was a near 1:1 copy of Java with some extras thrown in, copied from C++.
Microsoft has always been much more language agnostic than Sun too. To Microsoft, .NET is the platform and that’s what is most important. To Sun, the Java language is the most important.
Most shops do not have developers writing apps in several different languages, in fact it’s typically discouraged. Having standards for development reduces complexity…having apps written in several different languages is a maintainence nightmare and a potential liability. Language independence is worthless, IMO, even though Java will soon have it as well (and already does somewhat w/ Groovy.)
So the question is about the future. As we enter the functional/OO hybrid era with C# 3.0, what is Sun’s response going to be? Will Sun get behind something like Scala. Will Sun continue to follow C#? Will Sun come up with a new language for the JVM?
Functional/OO hybrid era? What??? In the Twilight Zone? Sun has *never* followed C#…that’s rediculous, it’s very much the other way around. One recent example: generics – who had them first? You obviously do not follow Java and have no idea what is happening in the Java community at all. You will be able to choose from several scripting languages in Java 6.0…due out before the end of the year….in beta now.
What is Sun going to do?
Have you taken a look at Java EE 5? EJB 3.0? I’ve personally built apps (web and rich-client) on both .NET and Java platforms. Microsoft doesn’t even begin to have anything *close* to EJB 3.0 – it’s going to bury any hopes of .NET gaining ground against Java on the server-side…period.
The question is; what is Microsoft going to do? When are they going to stop encouraging developers to rely on their tools and actually *learn* the guts of their applications…and create *enterprise* grade applications on their technologies? When will Microsoft see that platform dependence is hurting their cause? When will they realize the impact of open source and open standards? Sure, ‘rotor’ (basic chunks of the .NET runtime) is an open standard…but the rest is a black-box. Java will be *entirely* open source before this time next year and through the JCP – users have had their say where Java has gone and is going in the future.
It’s clear that you’re tech-savvy but are a bit of a Microsoft advocate and tend to lean on that side of the fence. It helps to be objective when making a comparison and knowing both sides of the issue never hurts.
Not true – Swing is extremely popular for corporate projects and has been found to be the #1 GUI toolkit.
http://weblogs.java.net/blog/hansmuller/archive/2005/10/official_sw…..
Unfortunately, Sun dropped the ball on making Swing fit into the desktop properly. It hasn’t been until Mustang that they’ve really put the effort to make Swing look decent. They never put in the utility classes to make Swing development easier. Where are these desktop apps? Even the OSS world doesn’t use Swing. The poll is pretty much meaningless.
ava has many times more features and classes than .NET available in the core libraries. The leadership at Sun believes that Java should embrace standards and vendor independence.
We’re talking about the language proper, not random libraries.
Most shops do not have developers writing apps in several different languages, in fact it’s typically discouraged. Having standards for development reduces complexity…having apps written in several different languages is a maintainence nightmare and a potential liability. Language independence is worthless, IMO, even though Java will soon have it as well (and already does somewhat w/ Groovy.)
It’s irrelevant how you think most shops should do their development. The fact is that Sun has always had some weird infatuation with Java (the language) and not Java (the platform). We’re moving into the hybrid Functional/OO world now. The question is if Sun is going to continue on the status quo and fall behind or get behind something like Scala, advance the Java language, or come up with something new.
It’s clear that you’re tech-savvy but are a bit of a Microsoft advocate and tend to lean on that side of the fence. It helps to be objective when making a comparison and knowing both sides of the issue never hurts.
I won’t even bother responding to two paragraphs above this one since it’s clear that you are just interested in being a status quo java fan boy, and not interested in advancing the platform.
It’s clear that you’re somewhat bitter about the current situation and find it hard to swallow some realities.
Unfortunately, Sun dropped the ball on making Swing fit into the desktop properly. It hasn’t been until Mustang that they’ve really put the effort to make Swing look decent.
That’s a bit subjective…I work in Netbeans all day long on Java 1.5…it’s quite attractive. Hell, it’s even *fast*…surprise!
Where are these desktop apps?
Netbeans? Limewire? IntelliJ IDEA? Oracle JDevelper? Borland JBuilder? Where are the meaningful, slick, time-tested, useful .NET desktop apps? Sure, they look great on *Windows* – ever try to run them on a Mac? Linux? We’ve had .NET for 5 years now and still only have Winforms available for…Windows! Don’t get me started on Mono…I know they’re “getting there”.
We’re talking about the language proper, not random libraries.
What’s C# got aside from a few syntactical-sugary features (e.g. operator overloading, output params, etc.) that most developers don’t use? I guess they really spurred innovation w/ CamelCasing on all of their methods…brilliant! I can honestly say there’s nothing about C# I really *miss*. Op. overloading is nice but not always useful. I like the JavaBeans standard so I don’t really miss C# properties…especially since my tools generate the getter/setter methods.
We’re moving into the hybrid Functional/OO world now.
Are we? I wasn’t aware that the paradigm had shifted so abruptly. Where does C# currently have an advantage then? Java 5-forward they’re doing a great job on keeping up and advancing it quickly. It might actually be a *good* thing to *not* have your language of choice constantly change. Ask the VB 6.0 folks about that.
It’s clear that you’re somewhat bitter about the current situation and find it hard to swallow some realities.
No, allow me to clarify my position. I’m *dead* tired of hearing anti-anything-but-MS drones prattle on about how “dead” Java is…how “old” Java is…how “yesterday” Java is. Nothing could be further from the truth yet there are marketing monkies and their followers out there lately proclaiming the end of Java and Java EE.
Get over yourselves…C#/.NET is quickly exiting it’s “shiny new toy” phase and entering it’s first stages of maturity…in two years people will be proclaming the end of C#/.NET even though it won’t be true.
That’s a bit subjective…I work in Netbeans all day long on Java 1.5…it’s quite attractive. Hell, it’s even *fast*…surprise!
Recent Mustang builds present a decent looking Swing, but anything before that looks like crap – especially on a LCD.
Netbeans? Limewire? IntelliJ IDEA? Oracle JDevelper? Borland JBuilder? Where are the meaningful, slick, time-tested, useful .NET desktop apps?
Interesting that all of those except one are developer tools. Swing has always been so ugly and foreign to the native desktops that its not surprising that there’s not many general purpose desktop apps in it.
.NET is the future for windows. The vast majority of windows apps will be .NET. There’s just no way around it. On Gnome, there’s Tomboy, Beagle, Banshee, some photo management app. Java is all but abandoned on the open source desktop.
What’s C# got aside from a few syntactical-sugary features (e.g. operator overloading, output params, etc.) that most developers don’t use?
Ahh, another case of “we don’t have it, so it’s not useful” syndrome. How typical.
Are we? I wasn’t aware that the paradigm had shifted so abruptly. Where does C# currently have an advantage then? Java 5-forward they’re doing a great job on keeping up and advancing it quickly. It might actually be a *good* thing to *not* have your language of choice constantly change. Ask the VB 6.0 folks about that.
Please do a little research on C# 3.0 and VB 9 to see where things are moving towards. And that’s basically my point of where does this leave Java. We don’t stand still in time. The benefits of functional-style programming are well-known (functions as first-class values anyone?). It’s basically a no-brainer.
No, allow me to clarify my position. I’m *dead* tired of hearing anti-anything-but-MS drones prattle on about how “dead” Java is.
Stop right there. You work in Netbeans all day long and you’re sick and tired of hearing anti-Java, and how “dead” java is. First of all, I didn’t and I don’t even think the article said anything about “Java being dead”. Your getting that peculiar to Java developer paranoia when any article about competition to Java comes out.
So you have to ask yourself why you’re so defensive and want to bury your head in the sand regarding Java. That does nothing to advance the Java platform. In fact, as we’ve seen in the past it just allows Sun to rest on their laurels and not advance our tools. A architectural decision maker doesn’t have the luxury of getting fanboyish about technologies. And it’s likely that in your career in the future you won’t even be using the Java that you know today.
The question was about the future of the Java platform. If you’re resistant to change then you’re probably in the wrong field anyway.
Seems to me that a good book to recommend in this conversation is ‘Beyond Java’:
http://www.amazon.com/gp/product/0596100949/sr=8-1/qid=1154361958/r…
This at least tries to identify the past history of the Java language and where things are headed. It is a fascinating and informative read. While the author tries to assert that RoR is going to eventually win the hearts and minds of Web app developers (which I don’t necessarily agree with) this is not a book about either web development or Ruby, but rather what comes next. If you are personally stuck on a particular language/platform and refuse to consider ideas that may run counter to your assumptions, this book is not for you. If on the other hand you want to try and anticipate the future direction of things, this is an excellent read.
Best regards,
Steve
—
In my opinion the most important thing that C# has over Java is good COM interop, which is vital for writing seamless Windows applications (desktop or server).
Microsoft has always been much more language agnostic than Sun too. To Microsoft, .NET is the platform and that’s what is most important. To Sun, the Java language is the most important.
Jython, JRuby, Groovy and Rhino are available for years (most of them can compiled to Java Bytecode). Java 6 (end of this year?) will add additional support for scripting languages and bundle Mozilla Rhino.
Mono has had huge success in the very short time that C# and .Net have been around. It took a longer time for Blackdown and other OSS implementations to emerge for Java.
It is a big mess. write once, test everywhere with every version of VM
Run everywehre ? Maybe the “Hello World!” applet
Most of the time I can see Flash “applets”. Java is hardly ever used on the webpages.
Most of the time I can see Flash “applets”. Java is hardly ever used on the webpages.
Yes, another example of Sun bumbling along and not taking a look at how Macromedia was able to produce a non-intrusive, easy, non-bloated installer.
If Adobe’s new Flash 9 VM is powerful enough, I’d love for someone to write a subset of Java compiler for it (kind of like what GWT is for javascript). I guess ActionScript is alright, but it has a limited domain and I’m not really interested in it.
I thought that when they talked about Java for the web they were referring more to JSP pages rather than Java applets.
Personally I prefer PHP webs than JSP webs. They are faster and seem much more flexible. But some say (and it’s probably true) that PHP is not secure enough for some kind of webs (for example, for banks) so those use JSP more (or ASP from .NET). In fact the only reason I have Java on my desktop is because I need it to enter my bank’s web page. Otherwise I find it useless for a desktop.
I thought that when they talked about Java for the web they were referring more to JSP pages rather than Java applets.
They probably were. I was responding to the parent’s comments about applets and flash, and how applets died off for the most part.
I find Java useful on the desktop and wouldn’t call it useless. I use limewire daily and it runs on Java. I download all my bittorents using the excellent azureus UI. I like the new direction of Java UI’s where they are using the native toolkits instead of Swing. Azureus and Eclipe are good examples of this UI approach.
Yes, another example of Sun bumbling along and not taking a look at how Macromedia was able to produce a non-intrusive, easy, non-bloated installer.
Actually, I think the more important factor is the ease of development, especially media rich applets. Java is better when you have heavy logic and little animation and sound involved.
This being said, Sun should have started to work on the client-side experience earlier.
“Five years ago we had problems with J2EE [Java 2 Platform, Enterprise Edition],” Muglia said. However, “We’ve grown from having a quarter of the market to, now, 60 percent,” he said. Microsoft displayed the FAM presentations via Webcast.
“J2EE has run its course,” Muglia said.
Maybe Muglia needs to wake up the fact that Sun’s official J2EE stack isn’t the only game in town in server land. Open source has really taken the leadership position in that realm.
And you’ve got Echo2 and GWT for rich clients that allow you to program in a traditional fat-client style, along with all the other open source server projects.
J2EE might have run it’s course, but the other solutions in that realm certainly haven’t.
I love the .NET/Mono tech more than Java, but personally I’d have a hard time doing server-side stuff with .NET/Mono until I have some more options.
“”We’ve grown from having a quarter of the market to, now, 60 percent,”
I think thats a good degree of evidence, no?”
Would you believe him, really? It’s not evidence as in “evident”. I could say ‘Linux has grown from about 4% in desktop usage to almost 23%, according to a market research.’ and that is not more or less evident than what the financial guy said.
Would you believe him, really? It’s not evidence as in “evident”. I could say ‘Linux has grown from about 4% in desktop usage to almost 23%, according to a market research.’ and that is not more or less evident than what the financial guy said.
No offence but I’m really amazed when people like you seem to think that people like Muglia (that is, big companies execs) can go to a public event like that and say lies after lies without any problem.
Trust me: speaking in such events it’s not like telling to your friend that you once have been with that girl we all liked but “shhh don’t tell anyone!”.
If they hadn’t 60% of the market a second later SUN would have issued a public statement asserting “They don’t have 60% of the market” and so forth.
You might be even surprised to know that execs couldn’t technically lie because that would a crime for public companies (since it affects the market), though they can release “fabricated” sentences which lie in the middle.
So if he says 60% you might argue it’s 58% and I can concede it might be 54% but this surely isn’t 45%.
An exec talking (expecially from public companies) is not like two guys sitting in front of a beer to exaggerate about their love conquers. Really.
“Bad style and abuse is indicative of bad developers, not operator overloading.”
As always, know your tools. It’s not like grandma is coding a business application, they are engineers. God, if they were surgeons I wouldn’t schedule a surgery with them…
As always, know your tools. It’s not like grandma is coding a business application, they are engineers. God, if they were surgeons I wouldn’t schedule a surgery with them…
And that brings me back to my view that I would rather have concise expressiveness, rather than some supposed simplicity that makes me read 10 lines of iterator pre-Java 5 code that would be a one liner in a language like Ruby.
Java is anything but
1.) Dead
2.) Beaten by .NET
3.) Easy to write server applications for.
I hate having to spend time setting up hours worth of boilerplate code just to get a basic web application running. It’s pathetic.
I really wish there was a better language / paradigm with tools that would scale as well. There’s not. It sucks.
3.) Easy to write server applications for.
I thought Annotation, a new feature from Java 5 is supposed to help with boilerplate code.
I have been working on Enterprise projects for 11 years now and I have yet to see a single project of any size written on the .NET platform. I have only heard of one and that was being worked on by a former co-worker that I keep in touch with and his feedback was not positive. They are experiencing serious performance problems because .NET and the HP XP based servers they are using are not able to handle the load. On the project I am currently working on we are using IBM Websphere running a J2EE/Hibernate hybrid code base supporting a base of 5.5 million residents. From coding to deployment to scalability Java does it all extremely well. I have also worked on Sun/BEA implementations that where equally as stable. I also write considerable Swing code for desktop apps and again Java has surpassed .NET. I use Netbeans 5 with Matisse and I also code some apps using Microsoft Visual Studio J# and there is no comparison. Netbeans is far superior in usability, stability, and portability. Bottom line this guy is full of crap because .NET is not leaving Java behind by any stretch of the imagination.
“I have been working on Enterprise projects for 11 years now and I have yet to see a single project of any size written on the .NET platform.”
Is MySpace a big enough “project” for you?
MySpace, the site with the highest traffic, is a .NET run site, ASP.NET 2.0, specifically.
See http://weblogs.asp.net/scottgu/archive/2006/03/25/441074.aspx
And don’t be misled by the .cfm pages at MySpace, which would indicate ColdFusion rather than ASP.NET; read the comments in the above blog I cite. Particularly, read this comment:
http://weblogs.asp.net/scottgu/archive/2006/03/25/Handling-1.5-Bill…
“Hi everyone,
I work on the MySpace C# codebase…
To clarify, we wrote a custom configuration section that maps “fuseaction” URL parameters to ASPX extensions so that we’d maintain link integrity. The only place we aren’t doing this is ‘Browse’ and certain other new features. Meanwhile, as Scott said the parts of the site that are running in ColdFusion are essentially doing so in ASP.NET 2.0 (via BlueDragon).
Thanks for the mention, Scott. It’s been an exciting time putting this together and I can’t imagine pulling this off on another platform.
Chris”
This year we have deployed a complex .NET-based project for a public company in my country.
We have tens of clients gathering data for a database that will hold about 12.5M personal/company records and data associated to certify delivery of millions of pieces in 5 big cities here. This is all based on .NET 2.0, WebServices, ClickOnce and SQL 2005. So I guess it is possible to scale to enterprise level using .NET.
I’m not stating that’s the better stack and I can probably agree that Java has still a perfomance lead over .NET but .NET is really catching up. And .NET 3.0 will probably be the final step to play at same level of Java.
Moreover, try to read inner meaning of sentences: he said that they 60% of market share in development tools NOT in deployed apps (and not even in revenues, as article states). Of course, having 60% developers using .NET will mean that in a few years they will lead even in deployed apps, if nothing else happens.
From what I heard from Java developers, Java became way too much complex to be handled. A few days ago a friend working with Java was very frustrated since he discovered that a co-worker needed only 12 lines of .NET code to execute the same tasks he did in Java, but his code was enourmous if compared. As I said, I’m not a Java developer myself but I heard tens of such stories.
“I hate having to spend time setting up hours worth of boilerplate code just to get a basic web application running. It’s pathetic…..”
Almost every new programming language has been set to solve this sort of problem or the complexity issues in the previous incarnation. But in the end, many of this attempts get into a bigger pile of mess.
C -> C++
C++ -> Java or C#/.NET
There seems to be a rash of articles, blogs, forum rants, etc, that are predicting the demise of Java. All of these are coming from the proponents of either
A) Lightweight open source languages/frameworks like Ruby on Rails or LAMP … or
B) .Net (or MS employees).
And real life keeps proving them dead wrong.
First, on the server side, J2EE / JEE isn’t going anywhere but gradually upwards. The big vendors are only increasing their offerings, not scaling back. And more and more viable open source implementations keep popping up – just look at JBoss, Geronimo, Spring, Hibernate, etc. And customers are only increasing their usage/projects with JEE. At JUG meeting last month, their were two recruiter companies there soliciting J2EE devs, acting almost desperate to find talent for their clients’ projects. Let’s face it, when it comes to medium to large Enterprise middleware, nothing beats Java EE in capabilities – cross platform, transaction handling, resource pooling, SOA, remoting, built in security, wide array of persitence options, and the list goes on. The challengers (RoR, LAMP, .Net) can’t match it.
On desktop side, Java is finally making great strides. First, Swing has become very highly optimized, and looks a lot better as well. Just go to “Swing Sightings” to see how many commerical and open source software is using Swing. Then there is SWT/JFace and Eclipse RCP. Eclipse RCP especially is really taking off. Adobe/Macromedia is now releasing products based on Eclipse RCP. Just go to the Eclipse website, and the community tab, and look at all the commercial and open source software listed that uses Eclipse RCP.
I don’t even use Java much professionally. It’s just one of my favorite languages, and I see it as the best solution in many cases. And, in fact, I quite like Ruby, PHP, and even C# (especially Mono).
>>
I don’t even use Java much professionally. It’s just one of my favorite languages, and I see it as the best solution in many cases. And, in fact, I quite like Ruby, PHP, and even C# (especially Mono).
<<
You don’t use it professionally but you still like it above and beyond languages such as C#, which you also like?
My recommendation to you would be to use both of these languages very extensively and *then* post. Using Mono now after being saddled with Java for so long feels like being able to breath clean air. For me the real Java motto has always been (yes J2EE, I have you in my sights here) ‘Why do something in 1 class if you can use 15?’.
Java seems used primarily for web application development, but here it is woefully lacking. If you doubt that even for a second, develop two functionally identical web apps, using JSF for the first and ASP.Net 2.0 for the second. Java Web Application frameworks are by and large so hideous that at my last place of employment junior developers could not be convinced to switch from using JSPs because of the amount of pain involved in doing even very simple apps. [BTW, if you are ever set on writing such an app in Java, I would encourage you to have a look at Wicket. It was the best I ever found, though still not as easy as ASP.Net]
I have to concur with what others have said about languages gradually drifting in the direction of including functional features. These are inherently useful, and it is clear that the folks in Redmond have gotten the message in looking at their .Net roadmap.
Don’t get me wrong, I am definitely not the biggest fan of Microsoft (I am writing from a Konqueror browser using OpenSuSE). But I think that with the .Net platform, they have done something incredible. Language neutrality, easy development of applications (web/desktop/SOA), and (with Mono) portability are things that I value, and I’m surprised by how often it feels like the authors of the platform looked at existing solutions like Java and said to themselves ‘how can we make this thing simpler?’.
Best regards,
Steve
—
“On desktop side, Java is finally making great strides. First, Swing has become very highly optimized…”
Swing apps still feel disgusting, the looks, the font rendering – Just my 2 cents though
“Swing apps still feel disgusting, the looks, the font rendering
How Swing apps feel is subjective, of course.
But for the most part, I have to strongly disagree with you (except for the font rendering part – Swing still does not do anti aliasing well).
Just look at really nice looking/performing Swing based apps like NetBeans, JAlbum, JDiskReport, and SQL Developer (all free). They look and feel very very good, IMHO.
Now, that said, the font problem is still there (especially with LCD screens). And the default “Metal” theme either needs to be improved further (it has been improved a little), or it has to be replaced by a theme done by the best graphic designers.
But then there is Eclipse RCP / SWT/JFace. SWT is essentiall Java wrapper classes around native libraries. Eclipse RCP, which uses SWT and the Eclipse core and plugin library to produce beautiful, fast, native looking GUI apps, is really excellent, IMHO.
Some examples include Eclipse itself, RSSOwl, Azureus, Eclipse Trader, Adobe/Macromedia Flex Builder, BEA WebLogic Workshop, RadRails, and many many others. Eclipse RCP is really taking off.
“How Swing apps feel is subjective, of course. ”
I totally agree and there is no denying that Java/Swing developers put in huge amount of efforts and I salute their endeavor.
That said, in the real world and sometimes
Perception IS reality
Swing apps still feel disgusting, the looks, the font rendering – Just my 2 cents though
Mustang will be the first Swing release where it doesn’t look awful. But that’s something that should’ve been done years ago, so don’t expect any big shift in toolkit usage.
Swing apps still feel disgusting, the looks, the font rendering – Just my 2 cents though
No, you’re right, Swing apps do look disgusting. It’s only Java programmers who have invested a lot of time and effort in programming in them who would say otherwise. If they were honest with themselves they would see that it is true.
I hate to see yet another set of GUI packages for Java, but Trolltech’s announcement of Java bindings for Qt might be interesting. Qt actually has the holy grail of cross-platform GUI programming: platform look and feel with speed.
This happens every few years, people predict that Java is dead. Java isnt going anywhere. Its like predicting that Microsoft Windows will go away tomorrow. There are ALOT of java applications out there, new ones are being created every day. Sun made huge leaps with Java 1.5 (Java 5), and Java EE 5 is an Amazing leap from 1.4. Java is no longer slow on the desktop (hasnt been since 1.4…check out NetBeans), Java Enterprise is getting much better with the support of Annotations and Generics (just to name a few things……)
Personally, the only thing i could see “killing” Java (and .NET for that matter) are these scripting languages that are poping up….Java was suppose to support scripting too, but i havent heard alot from beanshell. Ruby, Python, PHP have really evolved faster than expected, Many of their features rival anything done with the compiled languages! (RubyonRails now supports transactions, dynamic data object validation, object mutations, advanced object listeners, object messaging)…..I wonder if EJB 3.0 will support some kind of dynamic scripting…
Mustang, aka java 6 has scripting support:
https://scripting.dev.java.net/
Yes SWING is ugly but you’ve got one good option…SWT. SUN would win the hearts of developers if they made java webstart a little easier to deploy.
Swing is a beautifully engineered library, from an API perspective. Apple made Swing look great on Mac OS X. Surely, if Apple can do it, Sun should be able to make it look great seeing as they spend far more resources on Java than Apple does.
>> “J2EE has run its course,” Muglia said.
Yup and it’s still running:
http://www.tiobe.com/tpci.htm
Where? I am a developer working for a leading company that does enterprise development only for large companies. I still wait to see that someone uses .NET on its server backends. As a client framework – sure, Microsoft does not let you any alternatives if you want to use any dev env that comes from MS. However, the client of the software system from the company I work for exists as a native windows app and as a Java app (so even there, Java is present).
But, as I said, whatever MS tells you, I still have to see .NET on the server of enterprise class software – its simply not there in my surrounding field.
I can relay a personal experience I had w/ .NET in the “enterprise” context – it was a complete disaster and eventually…a failure that was written off.
A very large, well-known software shop was hired by my company to build a supply-chain/order fulfillment/inventory application to manage their growing operations (going from multi-million to Billions annually.)
It was written over a period of six months and performed/scaled so poorly…and began to spiral out of control so quickly that the aforementioned software shop was fired abruptly due to pressure from upper-management to “do something”. I was hired shortly thereafter and was able to stabilize the application overall over the next few months. However, the application failed to scale to an acceptable level after throwing more and more hardware at it and several re-writes of major components. It just could not handle more than a handful of users across the entire system. MSSQL Server 2000 was used and though the database design wasn’t perfect by any means…it just could not help but crumble under the pressure of the application on top of it. The entire app was built w/ VS.NET 2003 using typed datasets in the “visual” environment. Once it was confirmed by myself (and a small group of consultants brought in to help) that it would need more than progressive “tweaking” to make it perform better – it was tossed in the trash a few months later – the users just couldn’t take it anymore.
I’ve since re-written the critical parts needed by the sale staff using Java EE – we’ve had very few problems and are sleeping more at night now.
This is when we decided to switch to Java EE for our “enterprise” efforts going forward…it’s proven, mature, and worth the investment. Java EE 5 is a huge leap forward and makes apps *simple and fun* to write…not drudgery (i.e. ADO.NET.)
Now, I’ve also written plenty of apps in .NET but nothing the size of this application I mentioned. The database had over 200 tables and several hundred stored procedures. It was architected well and there was no blatent ugliness about it (other than a complicated weave of boilerplate code to perform data-access since .NET has no concept of ORM.) My smaller apps performed quite well…no complaints on the low-end. On the high-end of the enterprise stack I would never trust .NET again.
I can relay a personal experience I had w/ .NET in the “enterprise” context – it was a complete disaster and eventually…a failure that was written off.
I can vouch for those experiences. There is generally some initial hype with .Net, and then reality sets in and people realise that it’s just as difficult, if not more, to get working systems out of it than anything else. The Java and mainframe backends are still there, and there just simply isn’t the willpower to replace them with anything else since they work and the .Net testing didn’t exactly go well.
For big backends, .Net is a no go.
could not handle more than a handful of users across the entire system
Just for the records, how many users is a “handful of users”?
It slowed considerably w/ five users, ground to a halt at twelve and began failing w/ exceptions and/or timeouts.
Our current systems, built w/ Java EE handle this effortlessly…and after being stress-tested w/ JMeter…will effortlessly scale to dozens of users in a non-clustered environment (if not more.)
It slowed considerably w/ five users, ground to a halt at twelve and began failing w/ exceptions and/or timeouts.
Our current systems, built w/ Java EE handle this effortlessly…and after being stress-tested w/ JMeter…will effortlessly scale to dozens of users in a non-clustered environment (if not more.)
I dare to say that there was something wrong which was not dued to .NET. We have portals which are entirely DB-based (and hence, every access is multiple database queries) and can handle 2000/4000 users per day without any hassle and without bogging the machine down. That’s is so true that we have them hosted in shared hosting plans.
While I don’t know details so I cannot comment about your figures, 5 users or 12 users is way too low (and while SQL2000 is not SQL2005, that’s a Ent-level db solution).
I’m not sure that’s a valid comparison. The application I spoke of was *quite* large and had several very complicated features requiring some very gnarly SQL to perform. One might say there was a design problem but as w/ all RDBMS-based solutions – you can’t constantly change your data-model to adapt to every use-case as the system grows and changes in use.
Eventually we moved some of the features that turned out to be *mostly* read-only and that had very large queries to Crystal Reports, leaving the editing features in place. The performance increased considerably on those features. At the warehouse there were several PocketPC based applications used to scan and track inventory – as the folks at the warehouse got busier and busier, the system dragged on even further…making the web users suffer even more.
I’m not sure you can compare the portal solution you mention w/ the application we dealt with – I’d dare say the complexity level was many times more in comparison.
Aside from performance problems, a system based on copious amounts of ADO.NET data-access code, stored procedures, and ASP.NET turned out to be highly resistent to change. It was not fun to change & maintain as it grew. However, these problems went away as we moved to an EJB3-based solution w/ JPA. It performs and changes can be made many times easier.
bindings to Gnome ring you a bell? JDS on Solaris? And Swing apps have a very good L&F (NetBeans?) Much better that .Net
SWT (azureus/eclipse) is also a very good corporate solution and used many times. The only problem is that platform APIs and Java must come closer on UNIX.
I also hope that JIGS is finished some time.
IMHO .Net developers are existing VB programmers. My girfriend’s cousin, is pressed to use .Net like many existing windows developers because windows seem to be the platform of choice for corporates. .Net is a copy paste of Java technology on Windows paltform. It is done just for advertisement purposes and keep developers on Windows and has nothing to offer. But Mono is promising because it is cross-platform (SkyOS !!!) and can challenge Java. However, it lags behind java in performance.
I believe .Net is used in many case where a scripting language would be more appropriate. This is a mistake.
— Forget it… it was much too early.. I misread something… sorry —
Edited 2006-07-29 08:11
The hype of .Net has worn off in many companies now, and they now see it for what it really is – a development framework, and not a means for world piece.
Companies have had extensive J2EE back-ends for some time, and they’re not going to throw them out just because some Microsoft exec says that they’re dead. Wishful thinking I’m afraid.
The only people using .Net were the losers who couldn’t or wouldn’t learn Java. The brainDrain is really bad in MS shops. And the C#/VB.NET code written there is really awful. I’ve never seen such bad code on this scale. MS has really got a problem on their hands.
Next time, try to articulate a slightly better posting.
>>
The only people using .Net were the losers who couldn’t or wouldn’t learn Java.
<<
Ad hominem attacks like this just make you look silly. Plenty of us have used Java extensively and found it painful, lacking, or both. Does it take a ‘loser’ to search out better solutions?
>>
The brainDrain is really bad in MS shops.
<<
Of course. The latest word on the street is that MS shops are switching en masse to Java, right?
Wrong.
Check out job boards. Living in the area that I’m in there are about the same number of postings for .Net developers as there are for Java developers. And most of the advertisements for Java developers seem to come from shops where it is already established.
>>
And the C#/VB.NET code written there is really awful.
<<
Yes, every shop on the planet writing in these languages is creating really, really awful code. Thousand line methods, identifiers with single letters, gibberish comments written by some Lovecraftian monster from another dimension, etc, etc. I think you’ve really got your finger on the pulse of this one.
>>
I’ve never seen such bad code on this scale. MS has really got a problem on their hands.
<<
Next time, try a little more insightful analysis. Tracts of ‘All C#/VB.Net code is bad’ is simply not a mark of any kind of critical thinking, and will do nothing to influence your readers opinion.
Best regards,
Steve
—
“J2EE has run its course,” Muglia said.
Well, if he says so, it has to be true. Right ? Yeah. Sure. Usual piece of pr crap. Hardly worth the read.
Muglia said Microsoft’s Server and Tools revenue grew to $9.7 billion in fiscal year 2006 and he expects the division’s revenues to grow to between $11 billion and $11.1 billion in 2007. To encourage that growth, particularly in competition with Linux, Microsoft has to shore up its efforts in security, Web capabilities and high-performance computing, he said.
No, MS should have shored up those efforts many years ago. Speach like this (we got some money, now we only have to work on … well, everything worth selling) can usually be heard from people reporting on their projects they are very long late with (have you finished that ? no but we’re considering it, or, yes, but it needs some more polishing, or, no but we’re almost there, etc). Of course, common people won’t know that, and it’s so easy to make the masses believe in promises…
http://radar.oreilly.com/archives/2006/07/state_of_the_computer_boo…
“A few high-level observations:
C# book sales continues to gain on Java, with a 49% unit sales increase compared to Java’s 10% decrease.
Ruby continues its momentum, and is the fastest-growing programming language in terms of book sales.
Microsoft’s new release of SQL Server has continued to drive significant book sales, with that market up 86%. ASP.Net is also on a roll, with book sales up 61%.”
“As you can see, the gains of C#, mentioned above, are even more striking than on the primary category treemap. While Java is off 10%, C# is up 78%. And that’s without counting books whose programming language shows up as “.Net Languages.” These are books that cover both C# and VB.Net. Combining these two categories, the C# book market is now actually a bit larger than the Java book market. “
So now eWeek is reduced to a progpoganda organ for Microsfot? All this “article” does is repeat a bunch of baloney from Microsoft up to and including the title. Then OS News does the same thing. Anything for page views I guess. Yes .NET has done very well in a short period of time but they had Java leading the way. J2EE is still king anywhere you have very large multi-tier applications with high volumes of transactions such as Banks or other financial institutions. .NET is a joke to any company that needs this level of application. .NET reminds of when desktop publishing became cheap and easy. lots of people got into DP and most of them did it poorly.
So now eWeek is reduced to a progpoganda organ for Microsfot? All this “article” does is repeat a bunch of baloney from Microsoft up to and including the title. Then OS News does the same thing. Anything for page views I guess. Yes .NET has done very well in a short period of time but they had Java leading the way. J2EE is still king anywhere you have very large multi-tier applications with high volumes of transactions such as Banks or other financial institutions. .NET is a joke to any company that needs this level of application. .NET reminds of when desktop publishing became cheap and easy. lots of people got into DP and most of them did it poorly.
Maybe I’m living in some kind of alternate reality, but the truth is in this world (mine) Java seems to be still very well alive.
I’ve been looking to change my job in the last few months. Now I’m mostly doing J2EE, and I’m seeking both a technological change and… fleeing from my current employer (xD). The second objective is actually easy. There’s not lots, but enough offers to choose from.
Getting away from Java is a bit more difficult. Not impossible, but difficult. Sure, there are .Net related offers, as well as C++, PHP, Perl… even Ruby or whatever.
Yes, there’s more .Net than Ruby, but even so it does not even remotely compare to Java. I’m not sure it’s even close to C++.
Of course the situation in the States may well be quite different, but somehow I still don’t believe “.Net is leaving Java in the dust”.