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.

21 of 583 comments (clear)

  1. ".Net offering little advantage" by ByOhTek · · Score: 3, Informative

    Really? As competition to Java it is fairly comparable. It has some features that, used improperly will lead to slower code (though, they are nice as a convenience), it is missing some features, has some features that Java is missing, and the free version of Visual Studios, at least in my opinion, is a nicer IDE than Eclipse, Netbeans or Anjuta. And it's not being used in a bunch of lawsuits by it's owner.

    As a point of reference as to where I'm coming from with this post - Sysadmin + Java programmer at work, C/C#/Python Programmer at home.

    --
    Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  2. 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
    2. Re:IBM is the third Front in the War by medv4380 · · Score: 4, Informative

      What google is doing is very different then what ms did.
      MS made a Java Virtual Machine that would run java complied code and run custom MS only stuff like DirectX if you compiled it with there stuff and thus wouldn't work anywhere else.
      Google is using the java language to allow people to write android code that isn't java byte code at all but rather compiled to work on their OS. If you try to run java on an Android it won't work because it's not really a Java Virtual Machine sitting on it. It's the Dalvik Virtual Machine which isn't even using the Name Java to claim anything or imply that it runs Java Compiled byte code. Google is treating Java as if it were a Language and not as a platform which is what you have confused.
      People like you who say Google is doing the same s--- clearly didn't write Java code for the Sun and MS JVM back with Java 1.1, and don't understand what it is that MS did that hurt Java in the first place.

  3. Re:Where is IBM? by Lennie · · Score: 3, Informative

    They seem to be on the side of Oracle. They left Apache behind.

    --
    New things are always on the horizon
  4. 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
  5. Re:Why does "no JCP" == "no Java"? by John+Hasler · · Score: 3, Informative

    Are there patents in place that would completely moot any such effort?

    That's what the lawsuit is about, isn't it?

    What about clean-room reverse-engineering of the JVM, wouldn't that open some doors?

    That only deals with copyright problems. It's irrelevant to patents (And Google claims to have already effectively done it).

    --
    Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
  6. 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

  7. Java's performance by Dystopian+Rebel · · Score: 3, Informative

    If Perl, Python, and Ruby are unable to match Java's performance, I'll take their portability, ease of development, lack of overhead and succinctness over Java any day.

    --
    Rich And Stupid is not so bad as Working For Rich And Stupid.
  8. Re:Alternatives? by icebraining · · Score: 4, Informative

    GCC (...) lacking serious FOSS competition.

    http://llvm.org/ and http://clang.llvm.org/

  9. Re:Alternatives by Coryoth · · Score: 4, Informative

    Is there any high-level, easy language today that's not threathened somewhow by f%^&%ng patents from the big guys?

    Well, presuming you want something fast, as opposed to say Python or Ruby, there are some options:

    1. Ada: No, seriously, it's a nice language and Ada2005 is worth looking at; perhaps lower level than you might like. I seriously doubt it faces any patent troubles whatsoever.
    2. D: Sort of C++ done right. Unlikely to face patent issues, but does have some standard library issues with more recent versions of D being incompatible with some standard library efforts.
    3. Eiffel: High level, OO, garbage collection, generics, closures, and still fast and memory efficient. It might have patent issues from ISE, but they're very small, and the core language and IDE are all GPL.
  10. Re:Where is IBM? by Migala77 · · Score: 5, Informative
  11. 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
  12. 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.

  13. Re:C# by Mongoose+Disciple · · Score: 3, Informative

    Are you saying Microsoft doesn't have a past history of being an abusive monopoly? Are you saying Microsoft has never sued anybody over patents?

    With respect to its languages and development tools, no, not so much.

  14. Re:Battle Lines by benwiggy · · Score: 3, Informative
    Err.... from Apple/Oracle's press release:

    Apple will contribute [to OpenJDK] most of the key components, tools and technology required for a Java SE 7 implementation on Mac OS X, including a 32-bit and 64-bit HotSpot-based Java virtual machine, class libraries, a networking stack and the foundation for a new graphical client. OpenJDK will make Apple's Java technology available to open source developers so they can access and contribute to the effort.

  15. Re:Alternatives? by Big+Smirk · · Score: 3, Informative

    wxWidgets - helping X-windows newbs like me since at least 1997.

    --
    TODO: create/find/steal funny sig.
  16. 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."

  17. Re:Performance my A** by mswhippingboy · · Score: 4, Informative

    I'm sorry, but I use both Perl and Java daily and Perl is not even in the same ballpark. Sure, for building a website Perl is fine because a web application is generally not a compute-bound application. The difference between Java and Perl in throwing up HTML is probably measured in milliseconds (with Java winning). You might get the impression that java is slower than perl for websites, but this is due to the fact that java based websites many times use some heavy framework (JSF, J2EE, etc) which tend to bog it down. However, this is not due to the language, but rather to the overhead of using an enterprise level framework (which does have significant value despite your premise that it's somehow inferior) vs a perl script that simply spits HTML back to the browser. A java program executing the same logic as a perl script will beat it hands down, everytime.

    Your statement "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)" is pure rubbish.

    When Java was introduced it provided features that were previously unavailable and has grown into an extremely powerful platform in it own right. This had nothing to do with being a corporate solution and in fact, it took YEARS for Java to catch on in the corporate world. Many large corporations would not allow it until it finally became such a force it could no longer be ignored.

    In case you are not aware, Perl has been in use as corporate solution, especially among sysadmins, long before Java became so popular. And one more thing, Perl (as produced by ActiveState - pretty much the market leader by my reckoning) does sell their product to corporations. While you can get the community edition for free, corporations usually want some level of support for the tools they use so the commercial editions are a good way for them to go. It's a win-win situation as the license fees help fund the OSS effort and the corporations feel comfortable in adopting it as a strategic tool.

    --
    Sometimes the light at the end of the tunnel is the headlight of an oncoming train.
  18. Re:C# by gbjbaanb · · Score: 3, Informative

    From ZDNet coverage of the trial

    Antitrust prosecutors showed the CEO being asked about a May 1997 email in which Microsoft manager Ben Slivka said he soon would publicly disparage a Java product provided by Sun Microsystems.

    "JDK 1.2 has JFC, which we're going to be pissing on at every opportunity," Slivka told Gates in the email

    MS did want to hurt Java, to make it a Windows-only thing (or at least, keep Java-on-Windows developers entirely on Windows and not port their apps to other platforms). At no point did MS want to get rid of AWT or Swing, which are the main parts of Java that are shit on any platform and replace them with their own Java GUI technology.

  19. 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.