A week or so ago I posted about the Java crisis and what it means for developers. The post attracted attention both here and later on The Guardian web site where it appeared as a technology blog. It was also picked up by Reddit prompting a discussion with over 500 posts.
So what are you saying? User LepoldVonRanke takes a pragmatic view:
I’d much rather have Java given a purpose and streamlined from a central authoritative body with a vision, than a community-run egg-laying, wool-growing, milk-giving super cow pig-sheep, that runs into ten directions at the same time, and therefore does not go anywhere. The Java ship needs a captain. Sun never got a good shot at it. There was always someone trying to wrestle control over Java away. With the Oracle bully as Uberfather, maybe Java has a place to go.
which echoes my suggestion that Java might technically be better of under more dictatorial control, unpalatable though that may be. User 9ren is sceptical:
Theoretically, the article is quite right that Java could advance faster under Oracle. It would be more proprietary, and of course more focussed on the kinds of business applications that bring in revenue for Oracle. It would be in Oracle’s interest; and the profit motive might even be a better spur than Sun had.
But – in practice – can they actual execute the engineering challenges?
Although Oracle has acquired many great software engineers (eg. from Sun, BEA Systems, many others), do they retain them? Does their organizational structure support them? And is Oracle known for attracting top engineering talent in general?
In its formation, Oracle had great software engineers (theirs was the very first commercial relational database, a feat many thought impossible). But that was 40 years ago, and now it’s a (very successful) sales-driven company.
There’s an important point from djhworld:
Java is hugely popular in the enterprise world, companies have invested millions and millions of pounds in the Java ecosystem and I don’t see that changing. Many companies still run Java 1.4.2 as their platform because it’s stable enough for them and would cost too much to upgrade.
The real business world goes at its own pace, whereas tech commentators tend to focus on the latest news and try to guess the future. It is a dangerous disconnect. Take no notice of us. Carry on coding.
On Reddit, some users focused on my assertion that the C# language was more advanced than Java. Is it? jeffcox111 comments:
I write in C# and Java professionally and I have to say I prefer C# hands down. Generics are very old news now in .Net. Take a look at type inference, lambdas, anonymous types, and most of all take a look at LINQ. These are all concepts that have been around for 3 years now in .Net and I hate living without them in Java. With .Net 5 on the horizon we are looking forward to better asynchronous calling/waiting and a bunch of other coolness. Java was good, but .Net is better these days.
and I liked this remark on LINQ:
I remember my first experience with LINQ after using C# for my final-year project (a visual web search engine). I asked a C# developer for some help on building a certain data structure and the guy sent me a pseudocode-looking stuff. I thanked him for the help and said that I’d look to find a way to code it and he said "WTF, I just gave you the code".
From there on I’ve never looked back.
Another discussion point is write once – run anywhere. Has it ever been real? Does it matter?
The company I work for has a large Java "shrinkwrap" app. It runs ok on Windows. It runs like shit on Mac, and it doesn’t run at all on Linux.
write once, run anywhere has always been a utopian pipe dream. And the consequence of this is that we now have yet another layer of crap that separates applications from the hardware.
says tonymt, though annannsi counters:
I’ve worked on a bunch of Java projects running on multiple unix based systems, windows and mac. GUI issues can be a pain to get correct, but its been fine in general. Non-GUI apps are basically there (its rare but I’ve hit bugs in the JVM specific to a particular platform)
Follow the links if you fancy more – I’ll leave the last word to A_Monkey:
I have a Java crisis every time I open eclipse.
After trying open source, we ran away and stuck to real programming using the .Net framework. Java is at least 10 years behind the .net framework, and the notion that it is cross platform is complete nonsense!
Are you kidding me! If you compile a java program in a particular version, and have the same version of that runtime environment ANYWHERE, then it will work. If it isn’t then you’re doing something very wrong. Java at least passes regression tests from one version to another.
Creigh, surely you are the one that is kidding!
While it is certainly possible to write Java programs that work across a wide range of host platforms there is no guarantee that a program working on one works on another. It needs to be tested. (In fact, it is trivially easy to write ones that don’t.)
Java at best is write once, debug everywhere. Of course alot of issues are GUI related, I hate the fact that in fact the UI looks poor on *all* platforms before you even get to font and scaling issues. Of couse the purists will argue its best for black box non GUI development. If thats the case then why not actually compile for the target and enjoy the best performance from native code.
All this stuff about how good JIT is, sure its improved from the snail speed Java was but it still has some catching up to do.
After all those years I’ve yet to see a decent Java client application. JEdit, Netbeans, JDeveloper, IntelliJ, PHPStorm, PyCharm, Eclipse – every Java client app I know sucks. Not it terms of functionality – but in terms of usability.
I REALLY wanted to buy PyCharm, for example. But now I’m back to a text editor. Thanks to Java.