Slashdot Mirror


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.

24 of 583 comments (clear)

  1. Where is IBM? by rvw · · Score: 5, Insightful

    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.

    1. Re:Where is IBM? by WrongSizeGlass · · Score: 5, Interesting

      Not trolling, but is Java really worth the fight at this point? Years ago it had the promise of the 'programming panacea' but now it's just another programming language. Yes, it's deeply ingrained in the internet and server landscapes, but that isn't going to change if Oracle wants to start charging fees for integration with their middleware and for some advanced utilities.

      The mobile/embedded world is a different animal but Google certainly has something in the works to dodge the Android uses Java mess. Once Google releases a new VM that avoids the Java comparisons the rest of the mobile/embedded world will transition to it and leave Oracle holding an empty bag.

      It won't be easy but look at how far Android developers have come in the short time Android has been available. Google isn't flawless but they won't want to pay any licensing and they'd rather spend the cash on developing an alternative.

    2. Re:Where is IBM? by Migala77 · · Score: 5, Informative
    3. Re:Where is IBM? by mcvos · · Score: 5, Insightful

      Not trolling, but is Java really worth the fight at this point? Years ago it had the promise of the 'programming panacea' but now it's just another programming language.

      It's not about the language, it's about the platform. The JVM, and Dalvik's status in that respect.

    4. Re:Where is IBM? by TheTurtlesMoves · · Score: 5, Interesting

      Well it never had the promise of the "programming panacea". But really all this shouting is really just everyone fighting over the "its mine" java pieces.

      When java first came out there was no JCP. Sun just decree what was and what was not "java" (with some hilarious results). The parts of the "for" pay JVM have *always* been this way (Jrockit), but some features are going to be made free. And finally we have a proper apple/"java" JVM. Its lots of good news for people in the know.

      99% of the comments and cries of the death of java are clearly said by people who just don't work with java as its really done (at least commercially). This is a storm in a tea cup, meet the new boss, not as bankrupted as the old boss.

      My only hope is that the patents get ruled invalid. Hopefully that will pave the way for more software patent invalidation.

      --
      The Grey Goo disaster happened 3 billion years ago. This rock is covered in self replicating machines!
  2. Alternatives? by Anonymous Coward · · Score: 5, Interesting

    You know, this is very puzzling. Why hasn't FOSS come up its own managed runtime+language stack?

    It's certainly not for a lack of engineering talent.

    Procrastination? Lack of vision? Or is open source just too tribal and fragmented to coordinate on something so big and cross-disciplinary?

    1. Re:Alternatives? by Lennie · · Score: 5, Informative

      Something like http://www.parrot.org/ you mean ? A whole new VM which can run multiple languages.

      --
      New things are always on the horizon
    2. Re:Alternatives? by icebraining · · Score: 5, Informative

      Parrot is a register-based process virtual machine designed to run dynamic languages efficiently. It uses just-in-time compilation for speed to reduce the interpretation overhead. It is currently possible to compile Parrot assembly language and PIR (an intermediate language) to Parrot bytecode and execute it. Parrot is an open source project distributed with a free software licence, making Parrot free software.
      (...)
      Many languages already have compiler front-ends designed for Parrot, however many of them are still only partially functional. The languages currently implementable, partially and fully, on Parrot are: Arc, APL, bc, Befunge, Brainfuck, C, Common Lisp, ECMAScript (aka JavaScript), Forth, Generic Imperative Language, GNU m4, HQ9 Plus, Jako, Java, Java bytecode, Joy, Lazy K, Lisp, LOLCODE, Lua, MiniPerl (Perl 1.0), NQP (Not Quite Perl), Octave, Ook!, Perl (via Rakudo), PHP (via Pipp), Python, QuickBASIC 4.5, Ruby (via Cardinal), Scheme, Shakespeare, Smalltalk (via Chitchat), the "squaak" tutorial language, Tcl (via partcl), Unlambda, WMLScript, and .NET bytecode.

      http://en.wikipedia.org/wiki/Parrot_virtual_machine

    3. Re:Alternatives? by fishbowl · · Score: 5, Interesting

      >You know, this is very puzzling. Why hasn't FOSS come up its own managed runtime+language stack?

      The strength of Java is less in the language and more in the widespread adoption of enterprise frameworks. I have less appreciation of the language itself than I do for the ASF toolchain and for Spring. I realize that Python has parallels for these things, but they tend to not be used in the places where Java is used, by which I mean places that have ever given me paychecks.

      When these threads come up, I'm usually shocked by how little awareness there seems to be of just how much business software is in Java, and how much of that responsibility rests on various Apache projects over the years. It would be a real surprise to see any Enterprise Java that doesn't link at least some ASF libraries, and usually there are *many*.

      Apache, not Sun or Oracle or IBM is the big name in Java. I hope the Apache group can make a unified front and play their cards effectively, but so far they are acting like victims.

      --
      -fb Everything not expressly forbidden is now mandatory.
    4. Re:Alternatives? by TheRaven64 · · Score: 5, Informative

      Why hasn't FOSS come up its own managed runtime+language stack?

      You mean, apart from Perl, Python, Ruby, GNU Smalltalk, Pharo, Lua, Io, and so on? Probably because they solve a problem that is only really applicable in the closed-source world: needing to run the same binary on multiple operating systems / architectures. If you have the source code, [Objective-]C[++], Pascal, Fortran, or whatever is just as portable as Java, if not more so.

      --
      I am TheRaven on Soylent News
    5. Re:Alternatives? by prockcore · · Score: 5, Insightful

      Show me a GUI "Hello, world!" that'll run on every platform Java does

      javascript:alert("Hello, World!");

    6. Re:Alternatives? by nigham · · Score: 5, Insightful

      Show me a GUI "Hello, world!" that'll run on every platform Java does

      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 /. I want to go home and re-think my life.
    7. Re:Alternatives? by bored · · Score: 5, Insightful

      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.

  3. Re:C# by Anonymous Coward · · Score: 5, Insightful

    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.

  4. IBM is the third Front in the War by medv4380 · · Score: 5, Informative

    Google is trying to force the legal issue and end this with a court battle.
    Apache is trying to end it using the JCP
    IBM is trying to be all chummy and get Oracle to support OpenJDK

    If Google wins then Java is Free, if Apache wins then Java is Free, if IBM wins then Java is theirs.

    1. Re:IBM is the third Front in the War by VGPowerlord · · Score: 5, Informative

      IBM is trying to be all chummy and get Oracle to support OpenJDKIBM is trying to be all chummy and get Oracle to support OpenJDK

      OpenJDK is Sun's (now Oracle's) project to begin with. IBM switched its support from Apache Harmony to OpenJDK. So, you could say that IBM has already chosen sides.

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
  5. Re:Why not C#? by Chrisq · · Score: 5, Informative

    I wish that C# had the same Linux kernel support as Java does.

    It does. None.

  6. Re:C# by gmuslera · · Score: 5, Insightful

    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?

  7. Yes. by abulafia · · Score: 5, Insightful

    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.
  8. Slashdotters get Java wrong, again by aslag · · Score: 5, Interesting

    I'm sick of reading slashdot stories and comments that compare dissimilar languages with Java. What makes Java interesting, useful, and modern is the JVM; these comparisons between language features alone are ridiculous. Most of the languages suggested as alternatives in Java-related posts in the last month are merely interpreted. Python, ruby, perl, etc. are all modernish, high-level languages with dynamic typing. They all run (primarily) on their slow, crippled interpreters. This has numerous drawbacks including problematic multithreading (c.f. the arguments about python's GIL and workarounds over the years), if it's even attempted (in perl, separate processes are the only reliable way to do concurrent programming).

    And now Slashdot compares Go to Java. Go is certainly interesting, but it's not in the same space as Java. Java is a portable, networked, object-oriented *application* language. It removes a lot of hassles not necessary to tinker with when writing applications. It has useful, established APIs (servlets, EJBs) for building large-scale enterprise applications. Go compiles to machine code and is therefore not portable. Go doesn't allow inheritance. Go is a language that tries to solve a different problem than Java has solved. Go is no replacement.

    Java is by no means the end of all languages and runtimes, but it has set the bar pretty high. It would be wonderful for other projects to adopt Java's features and improve and extend them. It'd be awesome if such an efforts weren't completely nullified by having Microsoft as its boss.

    For the naive (and the dude who argues that python is a suitable replacement for Java), below is a list of features Java provides:

    Java's JVM does true multithreading. The memory model is tight, efficient, and predictable. The language includes useful mechanisms for writing for concurrency (everything from traditional locking mechanisms to concurrent data structures and the convenient "synchronized" keyword). Productive, predictable concurrency is possible in Java and not in many other languages.

    The JVM offers other benefits, including security. The class verifier can sort out malicious code before it's executed. The class loader can check roles granted to a piece of code and a cryptographic signature and decide not to run code on that basis. Even if a piece of code gets loaded and executed, it's sandboxed. Talking about these features is usually relegated to discussions about java applets, but their relevance to other applications is noteworthy.

    Java includes a lot of well-organized, stable libraries for doing everything from handling HTTP requests and crafting responses to doing cryptography. Its collections API has many data structures that just aren't present in other languages without looking to a third party.

    Finally, the JVM makes naive code fast. One can write reasonably expressive, straightforward code and expect that the hotspot compiler will optimize it. It's a boon for getting maintainable, quality code out-the-door quickly.

    I too am bothered by Oracle's litigiousness, but running away from Java isn't a solution. We need alternatives, that's for sure, but the availability of such is a lot more limited than the average slashdotter seems to think.

  9. Re:C# by Pastis · · Score: 5, Informative

    The word is not destroy but kill.

    http://www.justice.gov/atr/cases/f1700/1762.htm#N_57_

    "Naturally, we would never do it, but it would give us some idea of how much time we have to work with in killing Sun's Java."

  10. Re:Objective C by iluvcapra · · Score: 5, Insightful

    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.

    Everything I need to know about OSX Xgrid Cluster Computing

    What was I saying about abandonware?

    --
    Don't blame me, I voted for Baltar.
  11. Re:What about C++? by The+Warlock · · Score: 5, Informative

    C++ has an astonishingly complicated grammar, which means that compilation takes forever and other tools don't work as well as they do for languages with simpler grammars, like C or Java.

    C++ doesn't really have compile-time encapsulation: if you add a private member to a class, you need to recompile everything that uses that class even though the class's public interface didn't change. That woudn't be so bad in and of itself except that C++, again, takes forever to compile.

    C++ also doesn't have run-time encapsulation or really any serious run-time error checking that you don't do yourself. Yes, it's for performance reasons, but some people are working on problems that aren't performance-critical and would prefer a language that doesn't pound nails through our dicks. (if it doesn't have encapsulation, why do they call it "object oriented?")

    C++'s exception support is hilariously broken. 1) If you've allocated some memory for an object, and then you throw an exception, you don't have that pointer anymore, and because C++ doesn't have garbage collection you've just leaked memory. The only way around this is to implement garbage collection yourself; C++ weenies call this "RAII" and if they're really far down the rabbit hole they sometimes don't even realize that it's just them implementing shitty reference-counting garbage collection. 2) You can't throw exceptions in destructors. Well, you can, but when an exception is raised, all the destructor for objects on the stack are called, and if one of them throws an exception while you're already handling an exception the program terminates. Seriously, that's what the standard says, I'm not making this up. So you can't throw exceptions in destructors, or call any function that might throw an exception. 3) In every major compiler I've used, exception handling support is implemented in such a way that it slows down every function call you make. Yes, it's only slightly, but it means if you really care about performance, you can't use exceptions, and if you don't care about performance why the hell are you using C++? And even if you want to use them they're almost worthless; I mean you can't even get a goddamn stack trace out of them. You can throw arbitrary objects, but the catcher can't figure out what the hell the object is because of C++'s lack of reflection. Etc.

    C++, in an effort to be sort-of compatible with C (except where it's not compatible with C, which makes you wonder why they bothered in the first place) keeps all of C's features while creating duplicate features with their own new, horrifying problems. So you have C++ templates, but you still need to deal with C macros. You have std::vectors, but you still need to deal with arrays. You have std::string and char*, and neither is particularly good. Making things even funnier, C++ doesn't like to use its new features and prefers the C stuff: a string literal is a char*, not a std::string, the arguments to main() are int argc, char** argv, rather than something sensible like std::vector args, iostream does not take std::string for its filename arguments, etc.

    While we're on the subject, the standard iostream is pants-on-head retarded. The streams are stateful, which means that std::cout foo; depends not only on the values of cout, foo, and the overloaded left bit shift operator, but also on whatever's been sent to cout in the past. You send values like std::hex or std::setw(int) to set parameters, so when you grab a stream you don't really know what the fuck will happen. This is supposed to be an improvement over printf? They're verbose as hell, too: say you're printing some hex numbers. In C, you'd use "printf("0x%08xn", x);" for int x. In C++, you use "std::cout std::hex std::setfill('0') std::setw(8) x std::dec std::endl;" It's absurd.

    The standard library is completely anemic. I'm not even talking about GUI stuff, here: there's no platform-independent way to do some really basic stuff like pausing for a length of time, or starting a new thread. You can use so

    --
    I've upped my standards, so up yours.