Slashdot Mirror


Java's Backup Plan If Oracle Fumbles

GMGruman writes "In an InfoWorld blog, Paul Krill suggests that those concerned that Java might get lost in Oracle's tangle of acquired technologies should relax a little: Java's future isn't wholly in Oracle's hands, so if Oracle screws up or lets Java languish, the popular language has other forces to move it forward nonetheless."

53 of 276 comments (clear)

  1. What could possibly go wrong ... by Noam.of.Doom · · Score: 2, Informative

    ... when being owned by Oracle?

    --
    It is the universe that makes fun of us all.
    1. Re:What could possibly go wrong ... by Big+Jojo · · Score: 5, Informative
      Go away troll....

      Microsoft was entirely within its rights to extend Java to provide native support for Windows O/S. The lawsuit was ridiculous and wrongly decided.

      The issue was violating the the compatibility constraints, so that code would no longer be portable to non-Windows O/S. This was precluded by the license which MSFT signed, so the lawsuit was reasonably decided.

    2. Re:What could possibly go wrong ... by Anonymous Coward · · Score: 2, Informative

      But Java's cross-platform compatibility has always been a myth. AWT apps were least-common-denominator pieces of shit most of the time. Swing apps weren't as bad, but never fit in with any desktop environment, and this only got worse as Sun kept cranking out a shitty new theme with each release of Java. Many Java apps made assumptions about file names and directory locations, and this prevented them from running on other OSes.

      The situation was slightly better for server-side Java, but we still ran into the FS path problems, and early on we had to use JDBC drivers that depended on native code (it was a few years before pure Java JDBC drivers were available for some database systems).

      The only thing that ever worked perfectly for us was to develop on Solaris workstations, and to then deploy to our servers running Solaris. Developing on Windows and deploying to Solaris was almost always a recipe for trouble. Java has never really been a viable option on Mac OS X, and Mac OS before that.

    3. Re:What could possibly go wrong ... by Sycraft-fu · · Score: 2, Interesting

      Also a side effect of it was the web getting stuck on Java 1.1.6 for so long. Basically it got stipulated that MS had to ship that version, unmodified, in IE. That's what happens when you let lawyers after tech issues. Sun wanted MS to not make special mods to their version of Java but basically it can down to having to have that version. So the MS Java in IE languished at 1.1.6 and people kept using that because they wanted to be compatible. Finally MS was able to just remove Java and say "download it yourself" and it could be current.

      At any rate you have an extremely good point. People need to remember that if something is really open, then it also means it is open to someone doing their own thing with it. Open languages have that advantage and disadvantage. Anyone can implement them in any way they see fit, but the standards are guidelines, not rules set in stone. Someone can very well build a C++ IDE and compiler that is based on C++, but modified and not compatible. That would be ok. In some ways, this is already done with things like Visual Studio that offer more capabilities and as such can generate code that is not compatible with all compilers.

      A locked down, single company controlled language has the advantage of having only one way of it being implemented. You know any implementation is the same because they can force that. However the big disadvantage is if said company decides to not care or stop handing it out or whatever, you are screwed.

      Frankly I'd be happy to see Java die. Maybe if it did, something better would replace it. My objection isn't so much with the structure of the language, more the implementation, the JVM. It's a crap way of doing things. I think it could be done better, and would be, in the event that Java died off and people had to come up with something to replace it.

    4. Re:What could possibly go wrong ... by roman_mir · · Score: 2, Insightful

      You are wrong.

      Microsoft wanted to provide their own extensions and JVM that was not compliant with Sun Java while still calling the environment Java and using Sun Java trademarks and logos. The entire lawsuit was about the Java trademark. Eventually MS released their own language that is partially compatible with Java, you should know about it, it became what's known as J++ and later J#.

      MS was forbidden from using the Java Compatibility trademark - the steaming coffee cup logo.

    5. Re:What could possibly go wrong ... by Anonymous Coward · · Score: 3, Insightful

      Java's cross-platform compatibility has always been a myth

      Don't talk nonsense, man. Back that up with something.

      If you write the code properly, and stick to Java (no JNI stuff), it's cross-platform. How is that a myth?

    6. Re:What could possibly go wrong ... by haydensdaddy · · Score: 2, Informative

      Java has never really been a viable option on Mac OS X, and Mac OS before that.

      The reason for this was never Java itself, but Apples stranglehold on the implementation and their very public "fuck you" attitude toward developers wanting a release within 2 years of the releases on other platforms.

    7. Re:What could possibly go wrong ... by Tim+C · · Score: 5, Insightful

      Many Java apps made assumptions about file names and directory locations, and this prevented them from running on other OSes.

      That's the fault of the programmer(s), not Java.

      Besides, while you have valid points, they are irrelevant to the topic at hand; MS signed a licence saying that they could not introduce Windows-specific classes into the java.* package hierarchy, and yet they did so. No one would have cared if they'd put them in com.microsoft.*, but they chose not to do so.

    8. Re:What could possibly go wrong ... by KermitTheFragger · · Score: 5, Informative

      But Java's cross-platform compatibility has always been a myth. AWT apps were least-common-denominator pieces of shit most of the time. Swing apps weren't as bad, but never fit in with any desktop environment,

      Besides Apple no one cares about consistency on the Desktop anymore. Have you looked at Microsoft apps lately ? Visual Studio looks different then the rest, Office looks different from the rest, Outlook looks different from the rest of Office, Media player looks different from the rest, Home Server UI looks different from the rest and I could go on and on.

      and this only got worse as Sun kept cranking out a shitty new theme with each release of Java.

      In the like 14 years of Swing existence there have only been 3 themes in the JRE: Metal, Ocean and Nimbus. And metal is selected by default. Java never sets one of the newer themes by itself. So basically the default theme hasn't changed.

      Many Java apps made assumptions about file names and directory locations, and this prevented them from running on other OSes.

      So there are people who make crappy programs in Java. How exactly is that different from other languages ?

      early on we had to use JDBC drivers that depended on native code (it was a few years before pure Java JDBC drivers were available for some database systems).

      A few years before pure JDBC drivers were available ? That was when, 2000 or something ? Since that problem is long solved I don't really see how thats relevant today.

      Java has never really been a viable option on Mac OS X, and Mac OS before that.

      Apple does the Java implementation by their selves, not Sun / Oracle and yes, it shows. If Sun had done the Mac OS X implementation for Java it would probably be better.

    9. Re:What could possibly go wrong ... by kthreadd · · Score: 2, Informative

      It depends on what you mean when you say Java.

      The Java(tm) name is owned by Sun/Oracle.

      The Java Language Specification is owned by Sun/Oracle and is offered online for free, with a few restrictions however. As an example you are only allowed to print it once and not make any copies of it.

      The Java software platform is a piece of software licensed as GPL. Anyone can take it, modify it and give it away to someone else.

      So the answer varies depending on what you mean with Java. While the phenomenon known as Java may in theory be owned by Oracle it is in practive decoupled enough to be independent.

    10. Re:What could possibly go wrong ... by toriver · · Score: 2, Informative

      No, it was a breach of contract suit; Sun and Microsoft agreed to a (publically available) contract about Microsoft making the reference implementation of Java on Windows, but then Microsoft broke the terms by doing stupid things like adding keywords (delegate, multicast) to the language and methods and fields/constants to the standard classes.

      I mean, this is public knowledge - why do you choose to lie? Yes, Sun was late in specifying JNI, and hence both Microsoft and Netscape came up with their own implementations of "native", but that was just one aspect of it and far from the most significant.

      In summary: You are the one without a clue.

    11. Re:What could possibly go wrong ... by dmorris68 · · Score: 5, Insightful

      But Java's cross-platform compatibility has always been a myth.

      Bollocks.

      I've been a Java developer and manager of Java developers for about 10 years now. Before that, 20+ years as C/C++/asm guy across a wide variety of platforms ranging from embedded system to Honeywell/Bull and IBM mainframe and just about every mainstream business platform in between (AS400, VAX/VMS, various Unix flavors, Linux, Windows, Mac, etc.). So application portability is a subject I have a bit of experience with. While in the earliest days of Java portability was more wishful thinking, I can unequivocally say that since, oh, Java 1.4 if not earlier, cross platform portability has been spot on. It just works. I can't even remember the last time I took a Java application I've written to a platform that it didn't work on. Even today I am always mildly surprised to take a fairly complex GUI application I've developed on, say Windows, and drop it on another platform, like Linux or OSX, and watch it run flawlessly. I recently wrote a manufacturing line simulator to use as a test backend for a Java-based shop floor system. This is a multi-threaded GUI app simulating and displaying in real-time movement of product through the line, while interfacing with OPC servers and host applications via message queues and databases. When it was done, I dropped it on an Ubuntu desktop box and aside from the slight differences in the Linux GUI appearance, you wouldn't know which one you were looking at.

      The only portability problems I've seen are either from dependency on native JNI code (which is rarely but occasionally necessary) -- and almost all databases these days support pure-Java Type4 drivers without dependency on native clients -- or due to lousy programmers who hardcode platform specific constructs. I have *never* had an issue with filesystem path portability over the hundreds of Java applications I've written or managed in the last decade, because I never assume/hardcode anything specific to the platform I'm developing on. This is a common failure of your typical VB developer that is new to Java -- all they think about is Windows, many have had zero exposure to other environments, so that's all they know. Which is fine I guess if you're a 100% Windows shop or targeting a Windows base, but then I'd certainly question the transition to Java in that case. Regardless, don't blame the language for its misuse by developers -- if so then we could condemn every programming language ever made.

      I like Java well enough and am proficient enough with it that even if I were stranded in Windows purgatory forever, I'd still consider using it over .NET even without the portability benefits. I've had the occasion to have to write some C# due to some OPC/DCOM integration code that required it. While there are some things about the .NET platform and languages that I find appealing, there's not enough there to win me over from Java.

    12. Re:What could possibly go wrong ... by drinkypoo · · Score: 2, Interesting

      Apple cares about consistency on the desktop? that must be why Safari 5, QuickTime X Player, iTunes and Finder all look the same. Oh wait. None of them look the same.

      Apple doesn't give one tenth of one shit about their own HIG and they never did.

      What I find really interesting about Mac OS is that it's the last environment using a "Unix-style" file picker where you have as many panes as you like and each subdirectory click results in a pane shift to the left as the new directory is opened in the rightmost pane. Meanwhile KDE has a totally Windows-styled version and GNOME has a sort of fusion of Win and Mac.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    13. Re:What could possibly go wrong ... by HiThere · · Score: 2, Informative

      No, it's not decoupled enough to be independent...but it's decoupled enough to *become* independent, if enough people put enough time and work in on it. (The constraints listed mean, e.g., that the entire documentation would need to be recreated in a logically equivalent form, but in a form different enough to not run afoul of copyright restrictions.)

      Still, good progress seems to be being made in that direction. But much more should be done, even if Oracle demonstrates both commitment and competence.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    14. Re:What could possibly go wrong ... by mgkimsal2 · · Score: 2, Interesting

      So *why* was/is Apple in charge of the Java implementation for Mac? I don't buy the 'too much resources' argument I've heard. If your entire company is about Java (changing your stock symbol to JAVA for goodness' sake!) why cede control of implementation on a major developer platform (or one which could become a major developer platform)?

    15. Re:What could possibly go wrong ... by kthreadd · · Score: 2, Insightful

      According to the Sun engineers I've talked to it all has to do with a really old license agreement between Apple and Sun that they can't change for now. It originates from the very early days of Java, a time when Apple was almost desperate to get more attention to the Mac and saw Java as a lifesaver as applications developed for it would almost automatically work on the Mac as well. So they basically gave Sun a big load of money in exchange for the exclusive rights to make Java for the Mac platform. That gave them a good opportunity to also make Java fully integrated on the Mac and back then they actually made a good job doing that. It's too bad that their dedication have slowly declined as the Mac gained more popularity over the years.

      Due to this Sun/Oracle is basically forbidden to directly release Java for Mac OS X until the agreement expire or Apple decides to make a new agreement. The only practical solution they proposed was to use the BSD port of OpenJDK. You won't have the Aqua UI and I think you have to deal with X11, but you will have an overall better and newer Java.

    16. Re:What could possibly go wrong ... by shutdown+-p+now · · Score: 2, Informative

      we still ran into the FS path problems

      Yes, well, when trying to use some platform or technology, it helps to RTFM.

      Seriously. Java won't make any code written in it portable automagically, but it does give you everything you need to write portable programs, and has plenty of documentation explaining how to do just that.

    17. Re:What could possibly go wrong ... by dmorris68 · · Score: 2, Insightful

      Only for trivial applications.

      You can be utterly 100% certain that a non-trivial application will require re-work to run in a different environment other than what is was coded for.

      Umm, your reading comprehension skills are apparently the only thing trivial here.

      Did you even attempt to read what I wrote? I specifically described a "non-trivial" application, and could go on to describe dozens more. In fact, I pretty much don't write "trivial applications" these days.

      As I and others who have posted here, plus any number of other Java developers, will attest, Java is absolutely portable if you have half a clue as a developer.

      It's obvious you either:
      (a) have no real experience with Java in the last 6-8 years
      (b) have no "non-trivial" programming experience to speak of at all
      (c) are a troll

    18. Re:What could possibly go wrong ... by billcopc · · Score: 2, Interesting

      Dolphin's column view is kind of crap, but that doesn't mean it's useless. Shuffling files and folders around is something I do daily, and it's mighty nice when I can access several dozen folders from one window, rather than having to open a bunch of individual windows and juggle them with Alt-Tab or very meticulous tiling.

      That said, the fact that this view is predominantly used on Apple's nerfed OS is quite ridiculous.

      --
      -Billco, Fnarg.com
    19. Re:What could possibly go wrong ... by kaffiene · · Score: 4, Interesting

      Rubbish, Java *is* especially cross platform when compared to other languages. For example, C - which you cite.

      If you write a simple command line app, then sure, C and Java are about as cross platform capable as each other. Write a GUI app in C and Java and the former has no cross platform options.

      In C, you have to worry about endianness, in Java you don't.

      In C, you have to allow that primitives types may have different sizes, in Java you don't.

      In C, you have to allow that structures might pack differently, in Java you don't.

      In C, critical issues like threading will be platform dependant or non-existent, in Java it's consistent and standard.

      Java also has a consistent memory model, which provides a lot of value in working cross platform as well as the huge common library which is likewise valuable.

      I could go on, but I think that's sufficient to call BS on your claim.

      In Haskell or JavaScript, there are nowhere near as large *common* sets of libraries, so you can't as easily rely on your library of choice being supported on a client system.

      Christ, JavaScript doesn't run the same browser to browser, let alone cross platform.

  2. Oracle actually uses Java by bdsesq · · Score: 3, Interesting

    Oracle uses Java for supporting it's bread and butter database.
    The Universal Installer is written in Java as are a number of other tools.
    It would cost Oracle millions of dollars to rewrite these tools if they killed Java.
    They could still kill Java but it it would not be an easy decision for them to make.

    1. Re:Oracle actually uses Java by red_dragon · · Score: 2, Insightful

      It isn't just the Universal Installer that's written in Java; for some things there are shell scripts that bypass it. A much bigger and profitable product for them is the E-Business Suite, which is mostly Java with a few native code components. Letting Java languish would mean losing billions of dollars in support and maintenance fees as customers abandon EBS (and the Oracle database by extension) for more up-to-date enterprise software.

      --
      In Soviet Russia, Jesus asks: "What Would You Do?"
  3. Re:Doing all my programming in C# by drewhk · · Score: 2, Insightful

    I think checked exceptions are largely misunderstood. When people complain about them, they unknowingly, but almost always complain about the try..catch construct -- it is very wordy, annoying, inflexible and is almost impossible to factor out common idioms.

  4. Letting Java languish is not the problem. by Eskarel · · Score: 4, Insightful

    Oracle will not let Java languish, they need Java to exist because it's part of their ecosystem now whether they wanted it or not. It's a lot easier to connect to an Oracle database using Java than it is with .NET, and Oracle really doesn't want .NET to win since MS SQL is now a viable alternative(and substantially cheaper) than Oracle for all but the largest of data sets.

    The issues for Java are either Oracle getting into a fight with IBM and resulting in a fork of Java or distrust of Oracle pushing a critical mass of developers away from Java and onto .NET. As to the first, Oracle has to suppress their natural desire to charge like wounded bulls for everything they own, and try not to interfere with the JCP much at all, which is a big ask really. For the second, it's already starting to happen in certain areas. There are shops out there who have spent an awful lot of time and money getting Oracle out of their DC and they don't want it back again.

  5. Re:Doing all my programming in C# by Eskarel · · Score: 4, Insightful

    C# is really more sort of the averaging of Java and C++ than anything else, and VB is now C# with a slightly different syntax(sort of wish Microsoft had the balls to just end it rather than farting around with putting god awful VB syntax onto a language which is nothing like it.

    I do agree that Microsoft needs to do something about the exceptions though, not necessarily checked exceptions cause those are a pain, but some easy way in Visual Studio to get a list of exceptions that can be thrown by a call so you know what you could check for. You're also right about javadoc.

    That said, LINQ is just incredible, and IIS with .NET is a hell of a lot easier to configure and tune than Tomcat, it's really 6 of one and a half dozen of the other with Java and .NET at the moment, which is why what Oracle does is so important.

  6. Missing the point... by haydensdaddy · · Score: 2, Insightful

    In a rare fit, I actually read the TFA (I know, I don't know what I was thinking), and it leaves with the feeling that Paul is concentrating on the wrong argument...

    He appears to be arguing that third-party vendors control Java through the development of their frameworks and tools. While most modern-day development is relegated to gluing together frameworks instead of actual programming, I think this misses the point in the same vein as when people talk about JEE being Java.

    Java is a language upon which these frameworks and tools are built. For all of the good things Sun did for Java, they had a tendency to take the path of least resistance when it came to fixing existing features and adding new features to the language. If Oracle continues the trend, or does a worse job of it as many are predicting, third-party vendors will lost interest in developing these wonderful toys and will move on to other languages that are better supported.

    I for one, abhor the ownership of Java by Oracle. Sun had a tenuous grasp on it through its design-by-committee approach, and I have no reason to believe that Oracle will improve on that approach given its history. Java had some wonderful ideas behind it, but I for one have been transitioning my investments over to alternate languages that have caught up and, for the most part, surpassed Java in functionality.

    Well, that's my two cents and my cat agrees with me. So there.

  7. let Java languish by nurb432 · · Score: 4, Funny

    Oh wait, i thought this was a poll.. Nevermind.

    --
    ---- Booth was a patriot ----
  8. Re:Doing all my programming in C# by arjan_t · · Score: 2, Insightful

    >Does Java still have checked exceptions in common use?

    No, I'm sorry for you. The standard platform is moving away from them and is resorting to run time exceptions being mentioned in Java doc. E.g. an excerpt from the platform standard class EntityManager:

    public interface EntityManager {
        /**
         * Make an entity instance managed and persistent.
         *
         * @param entity
         * @throws EntityExistsException        if the entity already exists.
         *                                      (The EntityExistsException may be thrown when the persist
         *                                      operation is invoked, or the EntityExistsException or
         *                                      another PersistenceException may be thrown at commit
         *                                      time.)
         * @throws IllegalStateException if this EntityManager has been closed.
         * @throws IllegalArgumentException     if not an entity
         * @throws TransactionRequiredException if invoked on a
         *                                      container-managed entity manager of type
         *                                      PersistenceContextType.TRANSACTION and there is
         *                                      no transaction.
         */
        public void persist(Object entity);

  9. Re:Java is already dead for new development. by roman_mir · · Score: 3, Insightful

    You are insane.

    Not only there is constantly new Java code written for the back end, not only there are millions if not billions lines of code that are running existing services on the back end, but people are writing front end code in Java, at least for corporate environments.

    How do I know? I am writing some of it.

  10. Re:Java isn't really built for the future is it? by Eudial · · Score: 4, Insightful

    You have an aptly chosen user name. Not only is multi-threaded programming in Java quite easy to use, Java hasn't been interpreted in quite a long time.

    --
    GAAH! MY PRINTER IS ON FIRE!!! PUT IT OUT! PUT IT OUT!
  11. Re:Java isn't really built for the future is it? by arjan_t · · Score: 4, Insightful

    Is Java doomed to get stuck behind in the single processor world

    Far from it actually... of course Java has had the absolute low level concurrency primitives from the very beginning (Threads, synchronized blocks, wait/notify). More than half a decade ago, the java.concurrent library was added to the platform, which added tons of goodies for concurrent/parallel programming like concurrent maps, blocking queues, thread pools and executor services, cyclic barriers, programmatic locks with timeouts (which actually performed better than the build-in locks based on the synchronized keyword) etc.

    Now Java 7 will be extended with the join/fork framework, which is essentially a thread pool and support code for (recursively) computational intensive operations and supports advanced features like work stealing. The join/fork framework has been specifically designed to scale into the many, many multi-core range. Not just quad, hex or oct cores but well beyond that.

    Parallel array is another topic on the agenda, which allows you to express in an almost declarative style operations on arrays, which the library will then execute for you in parallel. To really make this work elegantly, closures are needed, which were on and off the radar for the Java SE 7 release. Because of that, parallel array has somehow stalled. Now that closures are back, so might parallel array be, but I haven't heard anything about it for a while to be honest.

    This blog post has a nice summary about some of the added concurrency items in Java 7: http://www.baptiste-wicht.com/2010/04/java-7-more-concurrency/

  12. Java coders should be so lucky. by AnonymousClown · · Score: 4, Insightful

    Java, while widely used is on the down slide. There really hasn't been any new revolutionary additions to the language in about 7 years. In another 10 years, it will become like COBOL is to IBM.

    Don't knock COBOL.

    I know a couple of folks who are making a nice living as a COBOL programmer. And they're not that old. AND, when the majority of the IT market craps out, they always seem to have or can get a job. That's something not many programmers can claim.

    --
    RIP America

    July 4, 1776 - September 11, 2001

  13. restraint of trade by SgtChaireBourne · · Score: 2, Informative

    Go away, lying revisionist troll.

    The lawsuit in 1997 against Bill's Microsoft by Sun was about contract violation. Microsoft had a contract to distribute java, not their own proprietary version of java, but bona fide java true to the published specifications. The allegations, proven in court, were that Microsoft aimed to harm to Java platform, violated the Sherman Act by illegally monopolizing and illegally maintaining aon the Intel-compatible PC OS market and the web browser market and the office productivity suite market. Microsoft was also illegal tying products, and illegally entering into exclusive dealing and exclusionary agreements (violation of Sec 1 of Sherman Act), and engaging in copyright infringement, and restraint of trade and unfair competition. It was also attempting to illegally start a monopoly in the server operating system market.

    Not only do you Microsoft toads ruin the economy, you make the net more expensive and create security problems. It'd be just fine if DHS started checking hard drives during entry or exit at the US borders and nuked any and all NTFS partitions they find. HFS, FFS, UFS, or EXT would be put on instead. Give a few months warning first and hand out Fedora CDs to those getting a warning. Then after the deadline, bam.

    --
    Beta is broken and the link to classic doesn't work. Stop wasting our time or there won't be anybody left here.
    1. Re:restraint of trade by Digital+Pizza · · Score: 2, Interesting

      While the Right Thing resulted from the lawsuit, it's funny how it hurt Sun and Java more than it hurt Microsoft, which was Microsoft's real goal anyway.

      The thing is, I remember around that time that Sun's CEO Scott McNealy was constantly ranting and raving about how the goal of Java was to take over the desktop and specifically "Kill Microsoft". Launching a frontal assault against Microsoft (especially at that time) was foolish, and look at what happened. If the good folks at Sun had kept their mouths shut, maybe they would have actually succeeded.

      You can applaud the result of the lawsuit, but so many comments on this article reflect a resulting public perception that is not exactly favorable to Sun and Java.

      --
      We apologize for the inconvenience.
    2. Re:restraint of trade by Zeinfeld · · Score: 2, Informative
      Yes, and a really bad idea for Andresen to mouth off the way he did when at the time he was attempting to claim sole credit for the invention of the world Wide Web.

      It is a curious fact that the original NCSA Mosaic documentation did not mention CERN or 'World Wide Web' anywhere. That despite the fact that 60% of the actual code in Mosaic was libwww from CERN. I know those facts as a member of the CERN team whose work was plagiarized. Later Andressen commissioned a book titled 'Architects of the Web'. It purports to have a chapter on each of the architects of the Web. Only you won't find the names I would consider the real architects, Tim Berners-Lee is only mentioned twice, both to attack him (there is no chapter on Tim). Nothing on Dave Raggett, Dan Connoly, Ari Luotonen. There were a few chapters in the book that were deserved, but most were not.

      Yes, I know rather more about the origins of the Microsoft/Netscape feud than you might imagine. Lets say that when Marc said something stupid about Microsoft that there were many of us who made sure that it did not escape notice in Redmond.

      At the end of the day the Sun lawsuit was really about giving Scott McNeally an alibi for having run his company into the ground. Then Sun and Netscape managed to persuade the DoJ to turn the anti-trust case into a massive alibi for both of them. In the process causing the DoJ to drop a valid line of enquiry (the Caldera connection and the O/S tying issue) for a bogus one. If you look at the way Netscape managed to take down Spyglass, it was essentially identical to the claims they persuaded the DoJ to make against Microsoft. And at the time Spyglass was Netscape's only competition in the browser market.

      Sun was not brought down by anything that happened in Redmond. What killed Sun was the fact that the UNIX market moved to Linux rather than Solaris and Intel and AMD started to beat Sun in chip design.

      --
      Looking for an Information Security student project suggestion?
      Try http://dotcrimeManifesto.com/
  14. Re:Doing all my programming in C# by drewhk · · Score: 3, Informative

    "Java checked exceptions do absolutely nothing to help when you're working with dynamically-loaded code, for instance."

    The same is true for invoking methods through reflection. Or transforming bytecode through custom classloaders, etc.

    But these are low-level techniques that should be used with care -- exactly because they can break things in unexpected ways. But this is not an argument against checked exceptions.

  15. Java cross-platform DOES work by Anonymous Coward · · Score: 3, Informative

    We have java swing code that runs on window, linux, and os-x. We use a custom look-and-feel so things are consistent. Ok, the one-button mouse is a pain.

    We java backend code that runs on intel (windows/linux), powerpc, and arm. I routinely deploy and test on linux-x86 and deploy to powerpc and arm targets with zero problems.

  16. Re:Java is already dead for new development. by EsbenMoseHansen · · Score: 2, Insightful

    By that argument, you might just as well write the entire thing in python/C++/ZoopedUpZuperLanguage++ and provide a download link. The *point* of webbased apps is that there is no download involved and that the application integrates well with the browser. Neither is very true for Java webapps. Besides, even the Java people tell me that applets are a deadend.

    --
    Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
  17. Re:Doing all my programming in C# by Krahar · · Score: 2, Interesting

    C# is really more sort of the averaging of Java and C++ than anything else,

    C# is just like Java except without some of the problems and with some good things added. E.g. Java generics aren't really worthy of the name, while C# generics are pretty spiffy.

  18. Re:Java isn't really built for the future is it? by careysub · · Score: 3, Insightful

    ... To really make this work elegantly, closures are needed, which were on and off the radar for the Java SE 7 release. Because of that, parallel array has somehow stalled. Now that closures are back, so might parallel array be, but I haven't heard anything about it for a while to be honest...

    Elegance? Closures? Now you have me scared. Really scared.

    The most serious problem with Java today is the whole complexity of the generics feature added in Java 5. Typing container classes was fine (and the only thing any working programmer I have talked to actually uses), but as soon as you venture beyond that it descends into a nearly incomprehensible API, all in pursuit of the elusive and trivial pursuit of absolute type safety (at which it fails anyway). Angelika Langer's FAQ about Java generics is 512 pages long. One of the world's leading Java experts, Ken Arnold, cannot explain the meaning of the Enum generic class's definition, I could go on and on.

    As a whole the generics is a useless and dangerous disaster. If you mastered Langer's FAQ and could actually write code using generic wildcards no other programmer could understand and maintain your code. And I am doubtful that you could yourself, 6 months later. Java generics seems to require at least a graduate level course in type theory to use (possibly an actual degree in the field).

    And the root cause of this disaster, as opposed to a useful tweak (typing containers and letting it go at that) is the search for "elegance" in a formal Comp Sci PhD dissertation type way.

    What we need right now is for whoever is guiding Java development to find away to back out of the generics disaster to simplify the language and leaving only features people can actually use. This will clear the field for actual useful innovations.

    --
    Starships were meant to fly, Hands up and touch the sky - Nicky Minaj
  19. Re:Java is already dead for new development. by mswhippingboy · · Score: 3, Insightful

    I have to agree with you here. I develop (for corporate environments) in a fairly large range of languages depending customer desires. The trend has been (for several years now) that more and more development is being done in Java, whether rewriting legacy systems or completely new development.
    The benefits that Java offers are more compelling than just about any alternatives. The arguments against its ability to "run anywhere" are old and most (if not all) are largely inconsequential to todays environments.
    A majority of development today is web-centric (intranet or internet) so issues with AWT or pathname incompatibility across systems are rarely encountered, and when they are, there are plenty of best-practices for dealing with them.
    The old line about Java performance being inferior is also largely a dead issue as it's be shown time and time again that the newer JIT enabled VMs allow byte code to perform on par with native C/C++.
    As far as being a dead language, I certainly don't see that happening any time soon. The language is under constant development and significant new features are being added with each major release, both to the platform (performance, concurrency, garbage collection, etc) as well as the language itself (modularization, closures,annotations, etc). The language is constantly evolving, but still, as much as possible, retaining backward compatibility.
    Even if the language itself is not able to keep up with advances in modern language design, there are spin-offs like Scala that can co-exist in the same JVM and are able to take advantage of the large java eco-system while providing a different programming paradigm.

    I gave up being an fan-boy for technologies many years ago when I got burned with OS/2, and have since decided to embrace whatever languages and technologies are in demand, be it MS tools (VB and C#), Apple (Objective-c) or non-proprietary (Perl, PHP, Java, etc.).
    Folks that are quick to declare Java dead are obviously naive and don't have a clue about the way the IT world works. They can line up with the folks that declared mainframes and COBOL dead twenty years ago, while (according to a recent Computerworld article) more than 200 million lines of COBOL are still in use and a COBOL gig is still considered the safest gig in IT today.

    --
    Sometimes the light at the end of the tunnel is the headlight of an oncoming train.
  20. Paying for Oracle Java? by esarjeant · · Score: 3, Insightful

    What about the prospect of having to pay for Oracle Java? The client would continue to be free (JRE) but if you want to compile code it will cost you. How would Java fair if there was a $100 developers license?

    Certainly the open source Java compilers would gain a significant foothold, but with Oracle steering the JCP it seems likely they would eventually corner the market...

    --

    Eric Sarjeant
    eric[@]sarjeant.com

  21. Re:Java isn't really built for the future is it? by etymxris · · Score: 5, Insightful

    Generics seem pretty straightforward to me, even the "? extends Whatever" syntax. Maybe you could give some concrete examples as to the problems with generics. The only problem right now is that type erasure makes arrays of generics impossible. Hopefully they'll fix that with the next revision.

  22. Re:Java isn't really built for the future is it? by M.+Baranczak · · Score: 2, Insightful

    I don't think generics are a 'disaster'. More like 'potential disaster if you don't watch your ass'. And to date, I still haven't seen a better way to do it. (Your suggestion, "typing containers and letting it go at that", makes no sense; there was no way to do that without adding generics to the language, or something that works like generics.)

    Anyway, it doesn't matter. There's no way in hell that they'll be removing a widely-used feature from future versions of the language. As long as we're coding in Java, we're stuck with generics.

  23. Re:Scala by RPoet · · Score: 2, Informative

    Scala is multiparadigmal; you can use the functional features when you want, and ignore them and program Java-style when you want.

    --
    "Oppression and harassment is a small price to pay to live in the land of the free." -- Montgomery Burns.
  24. Re:Java isn't really built for the future is it? by dominious · · Score: 3, Insightful

    As a whole the generics is a useless and dangerous disaster

    You keep repeating that. Citation needed.

    Java generics seems to require at least a graduate level course in type theory to use (possibly an actual degree in the field)

    So? Is this a bad thing? It's like saying "expert field" seems to require at least "expert field" graduate level course. If you are no expert, then don't use java generics. And if you can't read other's code, then maybe we should hire someone who can.

    I remember using java generics to build a visual keyboard for any kind of text component. I'm reading my code now, and yes, I understand it.

  25. Re:Java is already dead for new development. by roman_mir · · Score: 2, Insightful

    So what?

    - for real, you are asking me 'so what' and that's your argument? My response is simple: I am recreating an application in a browser that my users have used in the past and that is now no longer supported that used to be a stand alone applications. Some of my users think that their 'computer is broken' when somebody re-sizes a window on their desktop, those are not the kind of people who will want to switch paradigms from a desktop application to a web based one that is purely running as HTML/Javascript, so those people need to have the same experience they are used to from a desktop app, however the new app will not be installed locally, it is now a web app for reasons varying from cost of maintenance to security to ease of deployment and availability.

    This single argument that you are giving: 'so what' completely dismisses actual reality.

    And I bet a Java applet which attempted to render 20,000 lines all at once would perform just as poorly. It really wouldn't take much JavaScript to replicate what Java is probably doing here -- render only the rows which are actually visible, and cache the rest in RAM.

    - and you would be wrong and it shows your ignorance on the issue. Rendering done by the Java applet is completely different from what a browser does. Browser needs to parse HTML out, it needs to create some form of a document (DOM) it needs to prepare for quirks, it needs to decide how to display this and then render it and THEN it also changes what it renders on the fly re-rendering it with styles etc.

    Java applet has none of those issues, it does not need to parse out any documents, there are no CSSs, no javascripts, it's a layout with a table with data that needs to translation and multiple rendering passes, so as a result it responds immediately. 1 second after I load the 20,000 rows into it I can scroll ALL THE WAY TO THE BOTTOM. At this point a browser rendered maybe 300-400 rows only that can be scrolled through and as you are scrolling you are making it work slower, it will modify the page and re-render what was done already.

    Your mention of "constantly calling the server" suggests that would be a bad thing, too. The browser's HTTP cache works with XHR, so I really don't get where that's an issue unless you need the data to be downloaded all at once. - precisely, I do need it to be downloaded all at once so that user can see all of it in a single table by immediate scrolling.

    And did you try anything other than GWT? Certainly, if you're going to claim this:

    - about 2 months worth of all kinds of things, from plain HTML, to GWT with paginating, incubators, Bulk Renderers, Javascripts, CSS all sorts of things. Absolutely NOTHING beats an applet.

    Java, as a language, is verbose as hell

    - I can see your bias from this.

    public class Test {
    public static void main(String[] args) {
    System.out.println("Hello World");
    }
    }

    - for a compiled language it is not that much more verbose than C or C++, in fact less so depending on what you are doing.

    so I would guess that a Java library that outputs HTML is worse than a Java library

    - you have no idea what you are talking about. GWT is not a library. It is a full environment that allows writing CSS/XML (for layouts and configurations) + Java instead of using javascript, a compiler that does NOT include all of the features in Java or in GWT libraries, it creates the most dense code as far as javascripts go, but to your point, if GWT was written in C or C++ or PHP or whatever it still would have been as bad in terms of amount of code as GWT is with Java right now, not because of Java but because of what GWT is doing. GWT architecture requires much more code to be written that will have to be translated into Javascript/HTML

  26. What's the weather like on planet mars? by mswhippingboy · · Score: 2, Insightful

    Really? I don't know what planet you're on, but here on planet earth, much of the real work is being done in Java (by a very wide margin). (See http://www.langpop.com/ ).
    Haskell and Erlang are barely a blip on the radar. I like and use Python regularly and it has it positives, but I have a hard time recommending it to my corporate customers (for various reasons having to do with availability of trained developers, performance and or broad industry support). By and large most work I see getting done is being done in Java or .Net languages.
    I can see why you posted as AC since clearly this was intended as flamebait.

    --
    Sometimes the light at the end of the tunnel is the headlight of an oncoming train.
  27. Re:Doing all my programming in C# by shutdown+-p+now · · Score: 2, Informative

    C# has declaration-site variance for generics, while Java has use-site variance. What this means is that interfaces which are always co- or contravariant (e.g. IEnumerable in .NET, which is analogous to Iterable in Java) can be declared as such. But if an interface has a mixture of methods, some of which are covariant and some are contravariant, the result has to be invariant in .NET. For example, IList<T> is invariant, because it has both Add(T), and indexer returning T.

    In Java, due to use-site variance, you can have a method which takes a List in a covariant or contravariant way (with "? extends T" and "? super T" wildcards), at which point you're restricted to using only those methods of List which can legally be used covariantly or contravariantly. You cannot do something like that in C#.

    To sum it up: Java generic variance is more powerful, but places a higher burden on API clients, because they have to use wildcards whenever they want variance. C# generic variance is more limited, but is completely transparent to API clients - for them, passing an IEnumerable<Derived> where IEnumerable<Base> is expected "just works".

    But then, of course, C# generics are reified, while Java ones are not. So there is some compromise whichever side you take.

  28. Re:Java isn't really built for the future is it? by careysub · · Score: 2, Interesting

    As a whole the generics is a useless and dangerous disaster

    You keep repeating that. Citation needed.

    Since this is the first time I have ever commented on this topic it seems unlikely that I "keep repeating it". And I gave two examples in my comment. But also see Ken Arnold's opinion: http://weblogs.java.net/blog/arnold/archive/2005/06/generics_consid_1.html and http://www.artima.com/weblogs/viewpost.jsp?thread=222021 and Joshua Bloch's attempts at favorable treatment are pretty damning: http://java.sun.com/developer/technicalArticles/Interviews/bloch_effective_08_qa.html.

    Java generics seems to require at least a graduate level course in type theory to use (possibly an actual degree in the field)

    So? Is this a bad thing? It's like saying "expert field" seems to require at least "expert field" graduate level course. If you are no expert, then don't use java generics. And if you can't read other's code, then maybe we should hire someone who can.

    Indeed it is a bad thing. A problem that all excessively obscure and complex languages have rapidly revealed (C++, Perl) is that every difficult-to-use feature gets used (if it is usable at all) and has to be supported by every other programmer eventually since 90% of all programming is support of existing code.

    The saving grace for Java generics is that beyond container typing it seems sufficiently hard to use that it rarely gets used. Some time back I scanned the source of several substantial and active open source projects without finding any examples in use beyond container typing.

    I remember using java generics to build a visual keyboard for any kind of text component. I'm reading my code now, and yes, I understand it.

    Beyond container typing what aspects did you actually use? Have you ever written one genuine generic algorithm? That is - an algorithm with a generic interface that takes any appropriate generic type and returns an appropriate result type while maintaining typing throughout?

    --
    Starships were meant to fly, Hands up and touch the sky - Nicky Minaj
  29. Re:Doing all my programming in C# by jrumney · · Score: 2, Insightful

    Java doesn't force you to handle exceptions, it forces you to be aware which exceptions can happen. You just have to declare your own functions as throwing them if you don't handle them.

  30. IBM would take it over by Ilgaz · · Score: 2, Interesting

    I keep wondering why people forget about Big Blue these days. Java and Linux support are the keys to their offerings and both are said to save mainframe/big server business of them.

    Eclipse is Java too. A lot of IBM applications, even client side stuff relies to Java.

    Lets not forget Google Android which is a huge success is enhanced J2ME/Java, billion cell phones have J2ME built in, the "winner" high definition format, Blu-Ray has J2ME/Java.

    Sorry to say the idea of Oracle wasting Java is really stupid to begin with. Perhaps Java will focus on the thing it does best is a better theory, I mean huge servers, databases, J2EE?

  31. Re:Java isn't really built for the future is it? by dgriff · · Score: 3, Interesting

    Generics seem pretty straightforward to me, even the "? extends Whatever" syntax. Maybe you could give some concrete examples as to the problems with generics. The only problem right now is that type erasure makes arrays of generics impossible. Hopefully they'll fix that with the next revision.

    Here's an example of how complex it can get. Extract:

    The problem is that the entrySet() method is returning a
    "Set<Map.Entry<capture-of ? extends K, capture-of ? extends V>>",
    which is incompatible with the type "Set<Map.Entry<? extends K, ?
    extends V>>". It's easier to describe why if I drop the "extends K"
    and "extends V" part. So we have "Set<Map.Entry<?, ?>" and
    "Set<Map.Entry<capture-of ?, capture-of ?>>".

    The first one, "Set<Map.Entry<?, ?>>" is a set of Map.Entries of
    different types - ie it is a heterogeneous collection. It could
    contain a Map.Entry<Long, Date> and a Map.Entry<String, ResultSet>>
    and any other pair of types, all in the same set.

    On the other hand, "Set<Map.Entry<capture-of ?, capture-of ?>>" is a
    homogenous collection of the same (albeit unknown) pair of types. Eg
    it might be a Set<Map.Entry<Long, Date>>, so all of the entries in the
    set MUST be Map.Entry<Long, Date>.