Forgot your password?
typodupeerror
Java Google Oracle Programming Apache

The Coming War Over the Future of Java 583

Posted by Soulskill
from the can't-we-all-just-get-along dept.
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.
This discussion has been archived. No new comments can be posted.

The Coming War Over the Future of Java

Comments Filter:
  • Alternatives? (Score:5, Interesting)

    by Anonymous Coward on Friday November 12, 2010 @11:26AM (#34206812)

    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?

  • C# (Score:3, Interesting)

    by Xugumad (39311) on Friday November 12, 2010 @11:27AM (#34206836)

    Maybe I'm being naive, but right now C# looks fairly tempting. MS aren't pulling strange "premium VM" tricks, Mono is well developed and generally works as expected, and it's not a huge leap in terms of language. Many libraries in Java have C# equivalents (Bouncy Castle, iText, etc.). If we were going to leap from Java, C# would definitely be top of my likely destinations.

    But no, obviously we're more likely to jump to a language I've never heard of before, with none of the libraries we use, and no experience base to pull from...

  • by zooblethorpe (686757) on Friday November 12, 2010 @11:30AM (#34206872)

    So assuming the JCP does dissolve, I fail to see why folks couldn't find a way to fork Java. Are there patents in place that would completely moot any such effort? What about clean-room reverse-engineering of the JVM, wouldn't that open some doors?

    Confused by the summary's lack of options,

  • Why not C#? (Score:4, Interesting)

    by Anonymous Coward on Friday November 12, 2010 @11:33AM (#34206890)

    Not to mention that C# already has a ton of useful features that are, at best, planned for Java 7 and 8 (or later).

    I've done significant cross-platform .Net/mono development and 99% of the stuff "just works". I'd argue that Mono is actually a better cross-platform development environment than Java *right now*. Java often requires tweaks because different builtins work differently on different platforms, even though they're not supposed to.

  • by js3 (319268) on Friday November 12, 2010 @11:34AM (#34206896)

    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?

  • by Anonymous Coward on Friday November 12, 2010 @11:37AM (#34206934)

    This is exactly why Oracle has to stop what it's doing. ByOhTek has exactly the same mentality as most Windows developers/shops, i.e., the view that now Java is embroiled in lawsuits while Mono is stable and safe. Microsoft would never lock you into a platform.

    Incidentally, I've worked in Java and .NET. Visual Studio is a big disappointment when you been working in NetBeans or Eclipse. Maybe I just don't see the appeal.

  • Re:C# (Score:3, Interesting)

    by Mongoose Disciple (722373) on Friday November 12, 2010 @11:38AM (#34206944)

    I think C# is well poised to scoop up the niche Java filled in businesses/enterprise -- when Java stagnated, it was the existence of a constantly-improving C# that forced Java to improve as well again. Similarly, I don't see any reason that C# isn't a good replacement for the kinds of web applications that previously would have been written in Java. (Note that this is not all web apps.)

    I'm less sure about C# in the embedded/mobile space -- I don't have a lot of expertise with either, and these have been huge markets for Java.

  • Re:Alternatives? (Score:5, Interesting)

    by fishbowl (7759) on Friday November 12, 2010 @11:40AM (#34206984)

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

  • Re:Where is IBM? (Score:5, Interesting)

    by WrongSizeGlass (838941) on Friday November 12, 2010 @11:43AM (#34207014)
    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.
  • Why Go? (Score:3, Interesting)

    by AdmiralXyz (1378985) on Friday November 12, 2010 @11:50AM (#34207126)
    I understand the need to drive page hits by claiming, "In this bad situation $LANGUAGE could step in and fill the void", but Go seems like an odd choice. It's not that I don't like it: I've written some pet projects with it and it's a fascinating language that I doubt I'd mind having to code in as a full-time job, but they're not similar languages at all, it's an apples-and-oranges comparison

    Java is interpreted, Go is compiled. Go lacks inheritance, generics, huge backing libraries, and a bunch of other things that Java programmers rely on. Basically, Go is not an application language, it's a systems programming language that happens to have garbage collection; it's closer to a replacement for C++ than one for Java.

    In any event, I just don't see people abandoning Java en masse because of this Oracle spat. There's just too much legacy code out there, and too many programmers fluent in Java and nothing else.
  • Re:Alternatives (Score:5, Interesting)

    by TheTurtlesMoves (1442727) on Friday November 12, 2010 @11:52AM (#34207144)
    Its not harder than a OO lang. However finding good help *is* harder. One reason i had to pick java over the many languages I have used was its reasonably easy to find people who know it. Not so much for Scheme or Haskell.
  • by andymadigan (792996) <`amadigan' `at' `gmail.com'> on Friday November 12, 2010 @11:59AM (#34207218)
    This may actually be a good thing in the long run. Changes to the language or libraries will likely be delayed, improvements will hopefully be made in the JVM.

    This whole situation is basically what open source groups were warning about years ago, but now we have an open JDK. Eventually, one of two things will happen:
    1) Oracle maintains control of Java in the enterprise, while an open source group maintains the Java that "everyone else" uses. The two languages will fork, leading both to a slow death.
    2) Oracle will fail to keep control of Java, and everyone will end up using Java as maintained by an open source group (probably Apache). Ultimately something like the JCP will still be needed to keep enterprise involved in Java.

    As a developer that works primarily in Java, I'm a bit worried. If my company sees Java as being a risk we might end up moving over to .NET, and I just detest the documentation and library design of that platform.
  • Re:C# (Score:4, Interesting)

    by Raenex (947668) on Friday November 12, 2010 @12:04PM (#34207272)

    For this specific kind of thing, Microsoft has never been the kind of antagonist that Oracle is.

    Bwahahhaaa. Hahaahahahahaha.

    Sorry for being crass, but this statement is just so ignorant. Are you saying that Microsoft doesn't have free versions and for-pay versions? 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?

  • Re:C# (Score:2, Interesting)

    by BitZtream (692029) on Friday November 12, 2010 @12:05PM (#34207286)

    C# is only worth mentioning on Windows.

    Mono my run CLR apps and may have compilers for it, but the Mono VM is absolutely shit and can't be used for any serious long running process.

    It works fine for lightweight desktop apps, but until they learn what a compacting garbage collector is, its entirely worthless for anything thats intended to have any sort of up time associated with it.

    Having to restart my webserver regularly due to Out of Memory errors, or worry about allocation order to prevent fragmentation are not something I want to deal with when I'm writing web apps or background services.

    When I get to the point that I'm thinking about memory allocation/deallocation and fragmentation, I'm just going to use C.

  • Re:Where is IBM? (Score:5, Interesting)

    by TheTurtlesMoves (1442727) on Friday November 12, 2010 @12:15PM (#34207394)
    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.
  • Lisp? (Score:3, Interesting)

    by starseeker (141897) on Friday November 12, 2010 @12:19PM (#34207456) Homepage

    It might be worthwhile to explore what it would take to make some variation of Lisp (*cough*sbcl*cough*) a workable choice for modern software developers. My own sense is that the major things lacking are a modern, powerful, cross-platform GUI and a general "lack of polish" (for lack of a better term) when it comes to interfacing with the rest of the world, but perhaps there are other fundamental issues? This seems appropriate:

    We were not out to win over the Lisp programmers; we were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp.

    - Guy Steele, Java spec co-author (http://www.paulgraham.com/quotes.html)

    Maybe it's time to drag them the rest of the way?

  • Re:C# (Score:4, Interesting)

    by Richard_at_work (517087) <richardprice@nOSPam.gmail.com> on Friday November 12, 2010 @12:20PM (#34207478)
    The way I see it playing out (I'm a .Net developer that works heavily in the London, UK market) is Java becoming the Cobol of the future in that it takes the position of the top end of the enterprise market (London Stock Exchange level of operation) while .Net takes a significant chunk of Javas small to medium enterprise work (we sell a heck of a lot of ASP.Net sites, no one asks us for Java even tho we have the capability and we get a few PHP/Python/Ruby queries, again even tho we have the capability).
  • Re:Alternatives? (Score:4, Interesting)

    by fusiongyro (55524) <faxfreemosquito.yahoo@com> on Friday November 12, 2010 @12:29PM (#34207604) Homepage

    It's an excellent point and it's well-taken, but none of those are really what the OP is talking about. Parrot is really the pertinent example, though it has arisen out of Perl (more-or-less); none of the other systems you name are really a generic managed runtime.

    The answer to the question, why isn't Parrot more widely-used is to look at context. We're not comparing Parrot to (say) Python's bytecode; if we did, Parrot looks like a runaway success. We're comparing Parrot to the JVM, but that's not a fair comparison, because people write languages that target the JVM to make life easier in Javaland, not because the JVM is a technical achievement.

  • by aslag (1884052) on Friday November 12, 2010 @12:54PM (#34207912)

    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.

  • Re:C# (Score:5, Interesting)

    by jabjoe (1042100) on Friday November 12, 2010 @01:11PM (#34208128)
    http://www.theregister.co.uk/1999/07/18/analysis_how_ms_used/ [theregister.co.uk]

    Just swap Win32 for .NET, WISE for Mono, Java for POSIX (though not mentioned in this article by name) It's just a little bit of history repeating.......
  • by Rockoon (1252108) on Friday November 12, 2010 @03:00PM (#34209498)
    Indeed. VB6 is still one of the greatest RAD for GUI building suites that has ever existed.

    Sure, the interfaces you can trivially build are looking dated now (and even did so 8 years ago), but its still got all the UI functionality a business/enterprise application requires.

    Thats why the move from VB6 to VB.NET is taking so long. Its not nearly as trivial in VB.NET to make the same things as you were in VB6.
  • Re:Alternatives? (Score:3, Interesting)

    by TheRaven64 (641858) on Friday November 12, 2010 @03:15PM (#34209678) Journal

    There are other benefits to a unified runtime. .NET and JVM let you mix and match libraries written in a wide selection of languages

    I can mix code written in a variety of languages without using any runtime at all. That's what shared library ABIs are for. No need to add another abstraction layer.

  • Re:What about C++? (Score:1, Interesting)

    by wildfirexy (1149079) on Friday November 12, 2010 @03:47PM (#34210042)
    For the last 8 months I've spend my time developing & porting DRM related software to the ARM architecture. And as a language C++ is crap. And this is being nice about it. First there is the compiler which cannot even force all the subtleties which can be achieved by using C/C++. Secondly there is no standard -- or let me put it this way: A compiler switch which switch of C++ exceptions, means that the "standard" means nothing. "Portability" in the C/C++ world is massive amount of #IFDEF pre processor statements. My general experience so far with the compilers (I used VC, and the GNU tool chain), is like having a serial killer for a friend: You just never know when he is going to murder you with a smile. So no, I cannot wait until I don't have to touch C++ ever again. I'm sure the designers of the C++ language killed children and small fury pets in their past life.
  • Re:What about C++? (Score:3, Interesting)

    by mangu (126918) on Friday November 12, 2010 @05:26PM (#34211064)

    C++ has an astonishingly complicated grammar

    You could have stopped here and avoided a lot of TL;DRs, but I must say I agree with everything you wrote.

    In the 1980s I started programming in C and fell instantly in love with it. It's still my favorite today, even if I use a lot of Python where it can do the job.

    Imagine my disappointment when I first met C++. I had heard people mention this "improved" C and was curious to use it. I got a book named "Turbo C++ Disk Tutor" which came with four 5.25" floppies with the compiler included. The book itself was rather good, a good book about a bad subject.

    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.

    You know what worries me? Take a look at Python 3, they have deprecated the *excellent* C standard formatting method for a new way that's about as complicated and absurd as the C++ way.

    Another Python "improvement": deprecated popen. This means that the nice, clean, easy to understand Unix command

    output=`dmesg | grep hda`

    has been replaced by:

    p1 = Popen(["dmesg"], stdout=PIPE)
    p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
    output = p2.communicate()[0]

    WTF???

    Today I use Python a lot, but if this trend goes on, by Python 5 or so I'm willing to bet that I'll be back to using C exclusively for my programs.

You are in the hall of the mountain king.

Working...