The Coming War Over the Future of Java
snydeq writes "Fatal Exception's Neil McAllister writes about what could be the end of the Java Community Process as we know it. With the Apache Software Foundation declaring war on Oracle over Java, the next likely step would be a vote of no confidence in the JCP, which, if the ASF can convince enough members to follow suit, 'could effectively unravel the Java community as a whole,' McAllister writes, with educators, academics, and researchers having little incentive to remain loyal to an Oracle-controlled platform. 'Independent developers could face the toughest decisions of all. Even if the JCP dissolves, many developers will be left with few alternatives,' with .Net offering little advantage, and Perl, Python, and Ruby unable to match Java's performance. The dark horse? Google Go — a language Google might just fast-track in light of its patent suit with Oracle over Android."
Reader Revorm adds related news that Oracle and Apple have announced the OpenJDK project for OS X.
They are the one and only company that can pull this thing straight. They have the money, they have proven their commitment to OSS, so I sincerely hope they step in and fix this. It's too important to let Oracle mess everything up.
It's too bad that some of the most promising new languages (Scala, Clojure) are JDK based. What we need is a modern lingua-de-franca, a language that's structured enough, with modern features, a good standard library, and that doesnt take 10 years to master. Go is still proprietary shite that will bite you after Google turns evil (and you know they will). Havent looked at D yet. Erlang maybe?
Is there any high-level, easy language today that's not threathened somewhow by f%^&%ng patents from the big guys?
-- Home is where you eat your heart out.
With Microsofts history over the past 20 years, I'd say they won't pull any strange tricks until enough people have adapted it and are locked in, then they will suddenly have a change of heart. It's only Microsofts kind heart that keeps C# and Mono open enough, not *anything* legally binding.
Yet...
I fail to see why folks couldn't find a way to fork Java.
In this case, I think it's an important to draw a distinction: there's really no reason why you couldn't, except that Oracle will attempt to (right or wrong, and probably wrong) sue whoever tries into bankruptcy.
They'll be able to put a good enough case together that won't initially appear frivolous, even if it would ultimately be doomed to failure with good legal representation, and lawyers aren't generally free.
Maybe I'm being naive, but right now C# looks fairly tempting.
Yes, you are incredibly naive. People are looking to flee Java because of the greedy and proprietary corporation behind it, Oracle, and you think they should run into the arms of Microsoft? Get a clue.
The open source weak spot has always been the infighting, eventual lawsuits, splitting and renaming, remember that old saying about too many cooks in the kitchen?
Exactly the same as with closed source, for exactly the same reasons.
Apache, not Sun or Oracle or IBM is the big name in Java.
Apparently, Apache needs to start applying for defensive patents, or it is not going to be the big name in anything.
Congratulations, you have proven parent poster's point.
So, as the actual problem with java is the corporation that "owns" it decided to misbehave, you propose to switch to another language, from another corporation, for which misbehavig is their way of life?
Perl, Python, and Ruby unable to match Java's performance
I don't know about Ruby, but Perl has damn good performance, such that it still runs a number of major web sites, including this one. The ONLY reason Java is as popular is because Corporate America loves a corporate solution and Java was being sold as a solution by major vendors(think IBM, Sun and for a while Microsoft).
You cannot really sell Perl, or Python, or Ruby as a corporate solution because they cannot hijack a version, edit it and claim it is special. Hell, Perl runs on EVERYTHING what more can IBM add to it? This is really why good open source languages are neglected by large companies, they cannot charge anything for it.
For this specific kind of thing, Microsoft has never been the kind of antagonist that Oracle is.
How short your memory is. Remember when Microsoft tried to destroy Java?
The language is portable to any platform, very powerful, and isn't at-risk of suffering the same fate as Java.
The criticisms of it are mostly fluff in my opinion...people trying to say that their personal stylistic perferences should be industry standards, or justifying their own lack of skill by saying C++ makes things harder than they should be, etc.
People complain about Java being verbose and old fashioned. Objective C was invented over 10 years earlier and it feels like it. Java's saving grace is the tools. The modern IDEs are amazing. The only choice for Objective C is Xcode and it feels like a Java IDE from about 2003. I write Java for a living and don't much care for it. But after a bit of Objective C it's a joy to get back to Java.
With respect to its languages and development tools, no, not so much.
Before Mono, all their language and development tools were based around the Windows operating system. Given the history of Microsoft, trusting them to behave nicely with cross-platform computing is foolish. At the end of the day, the only thing they care about is locking people in to Windows.
I think your choice of the word destroy is more rooted in your biases than fact, and even giving you that I don't see it as relevant.
It's a big-ass corporation. Trying too hard to generalize their actions in a number of areas over the course of decades is about on the level of deciding that everyone who writes free software probably killed their wife. (And just so we're clear, I'm saying that second thing would be stupid.)
Python doesn't have real threading, Perl is basically dead, and Ruby is slow as shit.
[Objective-]C[++], Pascal, Fortran, or whatever is just as portable as Java, if not more so.
Show me a GUI "Hello, world!" that'll run on every platform Java does - even if Java windows look like shit. Java isn't just a cross-platform language, it's also a cross-platform toolkit that hides all the OS specifics, far more than any of the languages you mention.
Live today, because you never know what tomorrow brings
Dear lord, I hope it's not Apache. Any organization that allows new versions of its libraries to target Java 1.4 when 1.5 has been out for over half a decade does NOT deserve to be put in charge of the entire language. Particularly when said library deals with Collections.
There are some things .NET does better than Java. This includes: Generics, Properties, GUI, Web Services (although JWS is a marked improvement over Axis 1/2, and brings this more in line with .NET's WCF). This does not include: Database access (although the .NET Entity Framework may address much of this; from what I've seen it's a lot like JPA), Concurrent collections
Granted, that list is just things I can think of off the top of my head.
GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
I agree with MOST of your post, but your statement that "Java is interpreted" is misleading. Java (at least modern Java) is a compiled language, it's just that it's compiled in two stages; once when the java compiler converts the source code to byte code and then when the JVM converts the bytecode to native code during runtime (JIT). To state that Java is interpreted leaves the impression that it results in inferior performance as compared to a traditional source-to-native code compilation process. This is a persistent that myth has been shot down time and time again in real-world benchmarks.
I'm just sayin'
As far as something replacing Java - who knows, but I don't see it in anyone's interest (including Oracle's) to throw out the baby with the bathwater. Oracle was already heavily dependent on Java long before they acquired Sun.
There are already alternatives to the Sun/Oracle Java distribution (the Delvek VM itself might be a good candidate to replace the JVM) and it really boils down to software patents and how far the courts and the broken patent system allows corporations to claim IP over generally accepted concepts. It may just be a matter of forking OpenJDK and calling it "Coffee" to remove it from Oracle's greedy hands (just like OpenOffice being forked as Libre Office). I have a feeling Oracle won't let this happen with Java however because it has too much interest in it. IMHO the best outcome of this would be for Google to prevail, and take down Oracle's patents along with it. Not only would this teach Oracle a (much needed) lesson in how to deal with the OSS world, but it would also remove current obstacles to the acceptance of Java out of fear of Oracle's legal team.
Sometimes the light at the end of the tunnel is the headlight of an oncoming train.
Understanding that the entire toolchain and widespread adoption is the most important part of getting it. We all (at least, if we were there for it) know how Java happened - the short version is that Sun positioned it as an alternative to the MS Borganism that many companies were rightly afraid of back then.
I still think Java pretty much sucks. But it has the tools, and perhaps more importantly, a huge number of able bodied code monkeys who can write it.
Enter Oracle. The entire strategy that they've pursued forever is not much different than what Microsoft tried - build or buy essential parts of the stack, and then march up and down it to dominate your category, then extract as much rent as possible. It works better in the enterprise space and is bloodier because there are fewer players. (Microsoft's ecology was too varied with too many players to really dominate like Oracle can.)
So, Oracle's strategy is obvious. They own Java, and thus indirectly can manipulate the terms of output of thousands of developers. They don't care about people liking them, and inertia means they can extract rent for a long time (Even if a second Sun/Java moment happened - say, Parrot v. Java, ramp-up for Parrot to fill the niches, get solid, debugged libraries for everything, get widely deployed, and get thousands of developers up to speed takes how long?)
They don't give a shit about Apache, or developer goodwill. The for-profit players like IBM have different strategies, but keep in mind that their goals are profit maximization, too.
So there are some potentially interesting strategic plays to be made between the various players, but anyone with a bit of experience with the business side of the industry has seen this show before.
I forget what 8 was for.
http://doc.trolltech.com/4.7/supported-platforms.html
Objective C is associated with Apple but it's not an apple exclusive. It has the late binding attraction of Java, but the speed of C. It simplifies objects and is easier to write than C++.
Outside of assembly is there anything that isn't easier to write in than C++? Real question.
grape - the GNU free, open source rape
While Sun may not have had a stellar track record (e.g. their alleged mismanagement of OpenOffice.org), at least they were not trying to actively sabotage things.
I think LibreOffice has a reasonably clear path forward independent of OpenOffice.org/Oracle, but I am still concerned for the future of MySQL and VirtualBox. At least MySQL has the MariaDB fork (and maybe we'd all be better off migrating to PostgreSQL anyhow). I am not aware of an active VirtualBox development community outside of Oracle though; they're probably at risk if Oracle decides to shake things up.
Whether Silverlight
"The world was abuzz with HTML5 and Silverlight innuendo after the SL platform was all but ignored at PDC10. Silverlight developers were furious over what they deemed to be something of a betrayal by Microsoft, nullifying endless hard work."
I have to say, if you're still a developer for not-Windows Microsoft stuff, I'd think you'd have gotten used to direct betrayl and abandonment by Microsoft by now and learned to ignore it. I mean, after PlaysForSure, the Kin, WM7 destroying anything pre-WM7, and now Silverlight, you'd think you'd have found a pattern by now. And if you haven't, I'm not sure I'd want to hire you as a developer.
javascript:alert("Hello, World!");
I'm a big Objective-C fan, but running against you are the fact that most of the modern features that give it some parity with Java -- like the GC and the functional programming features -- are only supported by one extremely mercurial vendor that has a nasty tendency of making no 5-year roadmaps. Also the framework and libraries just don't offer the same coverage as Java. A lot of people at the turn of the century bet on WebObjects, which was a serious platform at that time, and now it's abandonware. Nobody wants to get burned like that again.
What was I saying about abandonware?
Don't blame me, I voted for Baltar.
javascript:alert("Hello, World!");
Hit the nail on the head. Why in the world would anyone decide the future of a language based on its ability to write GUIs in today's web world is a mystery.
I don't want to read
Finally a comment from someone with a clue. The Python and Ruby communities really don't seem to realize how primitive the mainline implementations of their languages are. They're a complete joke when compared to the JVM, the CLR, LuaJIT, SBCL, Clozure or numerous Smalltalk implementations.
Even the mainline implementation of Factor, which is primarily programmed by one person, makes CPython look utterly terrible.
"A Lisp programmer knows the value of everything, but the cost of nothing." - Alan Perlis
The language is portable to any platform, very powerful, and isn't at-risk of suffering the same fate as Java.
The criticisms of it are mostly fluff in my opinion...people trying to say that their personal stylistic perferences should be industry standards, or justifying their own lack of skill by saying C++ makes things harder than they should be, etc.
C++ is not an application-level programming, but a systems-level one. Java plays both roles. Furthermore, it is not the language that is of value, but the enormous (and standard) class library; a defined component model standard for distributed computing; a defined component model standard for thin-client development; a defined standard for persistence; a defined transactional model; etc, etc, etc.
Many of the things mentioned above (sans the hiccups and false starts) have been refined, tested and tried on the field for a decade now. That is what's lacking in C++ (a language that I like more than Java... and I work on Java for a living mind you.)
There are no comparison between the two languages because they are incomparable; defined and designed for two completely different niches and roles. It's not about replacing one language with another, but about replacing an entire ecosystem with another one.
Having worked on both, worked on Java for the last 12 years (on both application and system development) and about to work again in C++ and C (embedded stuff), I can tell you this:
C++ (or the lack of equivalent enterprise/distributed plumbing) makes it unsuitable for the roles fulfilled by Java (or .NET). And vice versa, Java (despite having a shitload of de-facto and de-jure standard plumbing) is unsuitable for the roles filled by C++.
When you work with both languages and when you work on both application and system development, you very quickly how different they are; how silly is to compare them; and how impractical (if not impossible) is to consider using one in place of the other.
Python, specifically, is crippled by an old-school interpreter unless you're talking about jython which uses the JVM. To get the features of the JVM that my post argues are essential when picking a replacement for Java, you must run python on Java's JVM! I fail to see how jython can be an alternative to the JVM when it uses it ...
Again, this isn't about the differences between the Java *language* and the Python *language*. The difference (as I argued before) is in the JVM: Python's (or Ruby's or whatever) code could be the prettiest code around but I still can't use it instead of Java because it doesn't have the features I mentioned.
Yours is precisely the kind of silly anti-Java argument I find ridiculous: it doesn't even approach the point.
Okay. Show me a webapp that can print forms to meet government requirements or fill in fields on preprinted forms.
Printing is just the lowest hanging fruit. There are literally 1000 things that you can't currently do in a web app.
Anyone who's developing thick-client GUIs in this day and age is a fool.
Right, except when you want to do anything more advanced than basic text/form manipulation. If you go beyond that, it takes 10x as long fighting with javascript/dom/css/etc wedging your UI into html, than the effort it takes to port it to 20 different platforms. There is a reason html is adding a canvas tag. The problem with canvas, is that its the equivalent of giving a modern UI programmer an assembler.
For 'MS Java', Microsoft gladly took Sun's code and proceeded to use it to build an incompatible version with a vast market share behind it. Essentially it was an attempt to use Java to break cross-platform Java - all the while secretly cloning it so that they could eventually use their market share to promote something else that isn't cross-platform at all. They paid a big fine, chalked it up to cost of doing business, and got all the benefits of Sun's R&D in the process.
Google built something different. They didn't use Sun code, and they didn't pretend to be implementing the Java standard. They just used the Java language (and libraries) because there's a large pool of developers out there that know them. Kind of like how Linux 'looks like' unix without being unix. Whether you think that's evil or not, it's not what Microsoft did. MS was being evil, underhanded, and all the rest.
And in the meantime, MS had managed to erode the potential monetary value of desktop Java to the point that Sun had nothing to lose in GPL'ing it, leaving Oracle with some strands of a case, but nothing much (I hope) to really stand on.
Posted from my Android phone. Oh, I can change this? There, that's better...
Maybe I don't know enough about JCP's value to Oracle, but it seems to me that Oracle is the kind of company that would happily get rid of other people's input in their product, and then blame it on Apache.