Slashdot Mirror


Oracle's Java Company Change Breaks Eclipse

crabel writes "In Java 1.6.0_21, the company field was changed from 'Sun Microsystems, Inc' to 'Oracle.' Apparently not the best idea, because some applications depend on that field to identify the virtual machine. All Eclipse versions since 3.3 (released 2007) until and including the recent Helios release (2010) have been reported to crash with an OutOfMemoryError due to this change. This is particularly funny since the update is deployed through automatic update and suddenly applications cease to work."

397 comments

  1. Ironically... by fuzzyfuzzyfungus · · Score: 4, Insightful

    Oracle's pet linux is branded "Unbreakable"...

    1. Re:Ironically... by mysidia · · Score: 4, Funny

      It's true, but the first two characters are just padding.

      it's const char *osname = "UnBreakable Linux" + 2;

    2. Re:Ironically... by Tablizer · · Score: 3, Insightful

      Oracle's pet linux is branded "Unbreakable"...

      Oracle always claims that. They once claimed that their database was unbreakable. It broke:

      http://www.schneier.com/crypto-gram-0202.html#6
         

    3. Re:Ironically... by Compaqt · · Score: 3, Funny

      Old & busted: DOS isn't done till Lotus won't run.

      New hotness: Java isn't done till Eclipse won't run.

      --
      I'm not a lawyer, but I play one on the Internet. Blog
    4. Re:Ironically... by Toy+G · · Score: 1

      No it's not.
      It's called "Oracle Enterprise Linux", which gets updates from the "Oracle Unbreakable Network" as part of "Oracle Unbreakable Support" contracts.

      --
      -- Let's go Viridian.
    5. Re:Ironically... by WWWWolf · · Score: 1

      They once claimed that their database was unbreakable. It broke:

      Once? Heck, that doesn't even begin to describe the problems Oracle has had with their frequent claims of superior security...

    6. Re:Ironically... by adtifyj · · Score: 1

      Oracle's pet linux is branded "Unbreakable"...

      No it's not.
      It's called "Oracle Enterprise Linux", which gets updates from the "Oracle Unbreakable Network" as part of "Oracle Unbreakable Support" contracts.

      And yet their website and press releases use "Unbreakable Linux".

    7. Re:Ironically... by Toy+G · · Score: 1

      Yeah, "The Oracle Unbreakable Linux support program". In the downloads section, it's just "Enterprise Linux".

      And your second links is broken :)

      --
      -- Let's go Viridian.
    8. Re:Ironically... by adtifyj · · Score: 1

      I don't disagree that 'Unbreakable Linux' is the support program, and 'Enterprise Linux' may have been it's product name from the very beginning. However the GP is sort of correct too, because 'Unbreakable Linux' was a slogan used before distro was released (i.e. for their support commitment to fix any bugs in the database on Linux), and it was utilised liberally in the marketing of the distro, overshadowing any other name. The term 'Enterprise Linux' in the November 09 FAQ was always proceeded with 'Redhat'; an answer to this terminology problem is provided in the FAQ archived 6 days later.

  2. So? by Anonymous Coward · · Score: 5, Insightful

    How is this Oracle's problem?

    1. Re:So? by freedom_india · · Score: 1

      Lesson 101 of coding: do NOT depend on hardcoded values. do NOT hardcode values.

      --
      "Doing what i can, with what i have." ~ Burt Gummer
  3. Re:Great! by gbutler69 · · Score: 0, Offtopic

    s/make me make/made me make/

    --
    Over-the-top Response Guy! Giving "Over-the-Top Responses" since 1970.
  4. Pay for support, or else... by LostCluster · · Score: 0, Offtopic

    This is a critical flaw in the "pay once, own forever" software model. If the company that supplied your app uses this field, assumes it'll never change, and then goes out of business or move on to different products, you're in big trouble right now. You've got to pay for support, or your vendor might not be there when you need them in a situation like this.

    1. Re:Pay for support, or else... by h4rr4r · · Score: 2, Insightful

      Or just use opensource software, then you can fix it or pay someone to fix it.

    2. Re:Pay for support, or else... by Anonymous Coward · · Score: 0

      And then... you'd have to use an old version of the platform? Horrors! I'm astonished by this completely new and unexpected development: that legacy apps need legacy platforms.

    3. Re:Pay for support, or else... by timepilot · · Score: 1

      The gp didn't say that this was a problem for Java or Eclipse. He/She just said it was a problem for "pay once, own forever."

      GP might have been saying "it's a good thing in this case, otherwise everyone would have been screwed."

    4. Re:Pay for support, or else... by LostCluster · · Score: 1

      Open source lets the community fix these breaking bugs only if there's still a community left for the project, and hiring a developer to fix is one way to say "paying for support"... basically, be nice to the developers and they'll be there for you. Let them move on and you've got no support left.

    5. Re:Pay for support, or else... by turbidostato · · Score: 1

      "hiring a developer to fix is one way to say "paying for support"..."

      True, but incomplete.

      In open source world, hiring a developer to fix is one way to say "paying for support", one that stands by the free market laws. On the other hand, in closed source world, you are tied to monopolistic service. I know what I'd choose, and you?

    6. Re:Pay for support, or else... by AaronLS · · Score: 1

      Indeed. Lots of applications have gone the way of the dinosaurs when it probably would have been a few tweaks of some sourcecode to bring it back to life.

      This is the kind of problem that has plagued legacy applications on the Windows platform. I'm not pointing fingers at MS or any vendor, just making the observation that as MS has changed and tightened the security model you see droves of applications that are made incompatible or become buggy in the context of these unexpected conditions.

      For example, it was common practice that you would write your app to always request full read/write permissions to the registry even if you only needed to read the registry. No one thought in terms of privileged/unprivileged accounts and so no one put effort into thinking about granular requests for resources. A couple Windows versions later, that application is being under a user account without write permissions to that registry entry, and suddenly all those applications would crash in light of the new access denied exceptions that never occurred during testing/development years before.

    7. Re:Pay for support, or else... by LostCluster · · Score: 3, Insightful

      At work... I once ran into code that said

      If NT or 2000, look for the DOS prompt program here...
      If 95 or 98, look for the DOS prompt program here...
      If XP, look for the DOS prompt program here...

      Only problem is that Vista was out at the time, and it's OS string failed on all three ifs, so that led to a fail. Worse yet, this was outside of the domain that I'd be allowed to fix, and the search for who was the maintainer-of-record for this program kept coming up empty. I had to call marketing and tell them to hold off on declaring the whole system Vista-ready because we had a small programming bug and a big organizational malfunction.

    8. Re:Pay for support, or else... by LostCluster · · Score: 0

      Java isn't totally free. The runtime is free, but development tools require licensing... Microsoft learned that one the hard way when they violated their agreement with Sun.

      You could use similar facts to say .NET is free....

    9. Re:Pay for support, or else... by rubycodez · · Score: 1

      there are other possibilities...some one fixes the open source version and publishes the fix. been known to happen.

    10. Re:Pay for support, or else... by HereIAmJH · · Score: 1

      I wouldn't call it a bug as much as a poor design choice by a programmer that didn't understand how to code it properly. If you really need to know where the command interpreter is, use the %comspec% environment variable.

      --
      Another day, another update to a Google android app.
    11. Re:Pay for support, or else... by mark-t · · Score: 3, Informative

      Let's see... you can download the JDK for free... which by definition is a 'development kit'. You can obtain a java editor at no cost. You can obtain a java IDE and debugger at no cost. Where do you get the impression that the development tools for Java require licensing, exactly?

    12. Re:Pay for support, or else... by LostCluster · · Score: 1

      Yep, that was the proper solution... just the hard part was finding out who is allowed to touch that code. The original programmer should have realized Microsoft releases new OSes every 2-4 years so a complete list of today's supported OSes would be outdated quickly.

    13. Re:Pay for support, or else... by GaryOlson · · Score: 1

      A Vista-ready application? Couldn't you just delay marketing for a while and aim for Windows 7?

      --
      Every mans' island needs an ocean; choose your ocean carefully.
    14. Re:Pay for support, or else... by LostCluster · · Score: 0, Troll

      1. Anybody who wants to distribute Java out of the box has to pay for a runtime license. This is why your OS doesn't include it and makes you download it from Sun/Oracle. 2. Java's original business model was to charge big for the server on which to host your Java app. 3. Oracle/Sun are profit-driven entities, and therefore if they're not making money off of Java they'll discontinue it.

    15. Re:Pay for support, or else... by Anonymous Coward · · Score: 0

      None of those are development tools. As mark-t noted, any developer can download both the Java Development Kit and the Netbeans IDE for free with no licensing required. So you still haven't said which development tools require licensing. And you know why you haven't? Because you're full of shit.

    16. Re:Pay for support, or else... by mark-t · · Score: 1

      You're moving the goalposts of your position. You had originally said that you have to license the development tools... which would imply that to do any Java development required licensing. Then you proceed to talk about not being able to distribute the JDK, which is something wholly different.

    17. Re:Pay for support, or else... by SanityInAnarchy · · Score: 1

      1. OpenJDK is GPL'd, so I don't know where you get that. And both Sun and openjdk are available via Ubuntu's package manager.

      2. So what?

      3. You clearly don't understand why Oracle cares about Java. It's not about the compiler any more than Microsoft Visual Studio is about the compiler. It's about all the other shit Oracle has that runs on Java -- here's an example. I don't particularly like these products (having been forced to work with Oracle ADF over the summer), but they all cost large amounts of money, and they all run on Java.

      Given that, Oracle needs Java to work. And given that, open source or not, they need key Java people.

      --
      Don't thank God, thank a doctor!
    18. Re:Pay for support, or else... by Anonymous Coward · · Score: 0

      Or just use opensource software, then you can fix it or pay someone to fix it.

      I'd rather pay the vendor than "someone"

      If my car's ECU causes sudden unexpected rollovers, we don't even care for the option to pay "someone" to fix it. It is broke until [car manufacturer] fixes it. Any software that is for sale comes with the same expectation.

      The market for open source software is absolutely TINY. Renaming free software to open source is a distraction from the reality that the biggest selling point was and still IS "free as in beer". I love the FREEDOM of Open Source, but get over yourselves people.

      This has been a public service announcement.

    19. Re:Pay for support, or else... by WWWWolf · · Score: 1

      Java isn't totally free. The runtime is free, but development tools require licensing...

      Runtime used to be free, now it's also free software. "Development tools" is a bit of a nebulous term. The JDK (Java compiler and support tools) used to be free, now it's also free software. Various other third-party development tools used to have varying licences, but nowadays you can get full-blown IDEs (Eclipse and NetBeans) under open source licences - failing that, Emacs never went anywhere. Some rather integral third-party components of Java development, like Ant and JUnit, have always come from open source world.

      Microsoft learned that one the hard way when they violated their agreement with Sun.

      That agreement was about Java syntax. Microsoft decided that Java wasn't good enough for them and made an incompatible dialect of Java.

      If you want to make a new programming language that compiles to JVM bytecode, that's perfectly okay and everyone is already doing that. Microsoft just decided to call their distinctly non-Java language "Java".

      You could use similar facts to say .NET is free....

      Except the .NET folks still haven't made the tiny little doubt about patent provisions to go away.

    20. Re:Pay for support, or else... by BasilBrush · · Score: 1

      Paying the company for support doesn't mean they won't go out of business.

    21. Re:Pay for support, or else... by Hognoxious · · Score: 1

      This is why your OS doesn't include it and makes you download it from Sun/Oracle.

      Your OS might not. Mine does.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    22. Re:Pay for support, or else... by Carewolf · · Score: 2, Insightful

      You should know the number of the webbrowser "bugs" I've debugged that basically came down to:

      if (uaparser.msie) {
        msiebranch();
      } else
      if (uaparser.ns
          || uaparser.osx) // safari support (bug #666)
      {
        nsbranch();
      }

      And people are wondering we the websites dynamic menus are not working in Konqueror (or Opera for that matter). Well, see...

      PS. This extremely stupid user-agent function-switching is also how most Google webapps are made (including gmail), and why many of them fail to work in konqueror unless you change useragent string :(

    23. Re:Pay for support, or else... by Anonymous Coward · · Score: 0

      In order to produce something called "Java" you have to meet certain standards. MS's VM did not meet those standards. It intentionally broke from the way java does things. That is why MS got sued, not because they didn't pay a licensing fee.

    24. Re:Pay for support, or else... by Anonymous Coward · · Score: 0

      Any software that is for sale comes with the same expectation.

      $7-figure "enterprise" software package with maintenance and support contracts.
      Putting "O'Brian" in a last name field throws an exception in the middleware layer.
      Will be fixed in next major release around march 2011.
      Official workaround for the meantime is "DON'T DO THAT".

    25. Re:Pay for support, or else... by Anonymous Coward · · Score: 0

      er... the license grants you free access.

  5. Sounds... wrong by squiggleslash · · Score: 4, Insightful

    Apparently not the best idea, because some applications depend on that field to identify the virtual machine

    Should they?

    --
    You are not alone. This is not normal. None of this is normal.
    1. Re:Sounds... wrong by LostCluster · · Score: 4, Informative

      If you're using Sun/Oracle-specific commands, you don't want to find your app running in an unofficial or unsupported Java such as Microsoft's that was eventually recalled.

    2. Re:Sounds... wrong by WarJolt · · Score: 1

      Bad assumptions cause almost all programing errors. Unless documented not to change you must assume that value always can.

    3. Re:Sounds... wrong by jisatsusha · · Score: 3, Insightful

      Isn't this exactly the sort of thing that reflection is designed for? As an analogy, it's like looking specifically for "Microsoft Internet Explorer" when writing web pages, instead of checking if document.addEventListener is available. It's flakey and easy to break when the platform gets updated.

    4. Re:Sounds... wrong by interval1066 · · Score: 1

      Kind of my first thought when I read that; maybe not the best move.

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    5. Re:Sounds... wrong by petermgreen · · Score: 2

      Should they?
      Sometimes different implementations of a "standard" behave differently, sometimes that is because of a bug, sometimes it's because of an ambiguous specification in the standard. Sometimes it's because of something beyond the scope of the standard (e.g. suns VM needs to be told how much memory it's allowed to use upfront or memory hungry applications will fail).

      When this happens you have to identify what you are running on so you can tailor your apps behaviour to that of the implementation it is running on.

      Would another field have been better? possibly but when the documenation doesn't provide any info on what fields should and shouldn't be used for such purposed

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    6. Re:Sounds... wrong by Anonymous Coward · · Score: 1, Interesting

      Even Microsoft learned this lesson;

      That brings us to Windows Vista, which is 6.0. So we see Windows 7 as our next logical significant release and 7th in the family of Windows releases.

      We learned a lot about using 5.1 for XP and how that helped developers with version checking for API compatibility. We also had the lesson reinforced when we applied the version number in the Windows Vista code as Windows 6.0-- that changing basic version numbers can cause application compatibility issues.

      That was back in 2008.

    7. Re:Sounds... wrong by LostCluster · · Score: 1

      This method just says "Don't use Firefox with my webpage. It may work now, but I plan on using IE-only commands in the future so if you're not coming from IE then don't get attached to this service."

    8. Re:Sounds... wrong by Vellmont · · Score: 3, Insightful


      Isn't this exactly the sort of thing that reflection is designed for?

      I'm not sure if there's anything in reflection that'll tell you specifics about the virtual machine options or not, but that's not really what reflection was designed for. Reflection is primarily used to find out information about, and allows manipulation of Classes.

      --
      AccountKiller
    9. Re:Sounds... wrong by Anonymous Coward · · Score: 0

      It'd be one thing if programs were throwing messages like "Unsupported VM" - but crashing? That doesn't scan.

    10. Re:Sounds... wrong by Anonymous Coward · · Score: 0

      They want to know if a specific command-line option is available. So reflection isn't suitable. There isn't a standard way to figure out what command-line options a program accepts, you have to use vendor-specific tricks.

    11. Re:Sounds... wrong by Tablizer · · Score: 1

      If you're using Sun/Oracle-specific commands, you don't want to find your app running in an unofficial or unsupported Java such as Microsoft's that was eventually recalled.

      True, but crashing is not a good response. A better response would be:

      The Java engine is from Y instead of X. X is recommended. Do you wish to continue? [Yes] [No]

    12. Re:Sounds... wrong by gladish · · Score: 1

      Not really. If you read the bug, they were checking the vendor string to test whether a certain set of command line args could be passed into the jvm on startup. So, yes it's better to make runtime decisions based on something more structured like reflection as opposed to some string compare. But no, reflection, in the context you're using it would not have helped. They need to look for some identifying feature of the sun/oracle vm. I don't think java reflection can help you there . I'm not a web developer, so when I look at something like you're doing with checking for browser identity based on whether a method is present, I'd say, "what's more likely, Microsoft decides to remove "Microsoft" from the browser id, or you encounter a second browser with an addEventListener on the Document?" Neither is 100%, but you pick the one you like and go with. Unfortunately for the Eclipse devs, they figured sun would probably never change the vendor tag from "sun"?

    13. Re:Sounds... wrong by GigaplexNZ · · Score: 1

      And choosing [Yes] would have led to the exact same crash because the Sun/Oracle VM didn't have the flag set to specify expanded memory limitations.

    14. Re:Sounds... wrong by Tablizer · · Score: 1

      That's probably a different issue. I was merely addressing the issue of validating run-time-engine vendor.

    15. Re:Sounds... wrong by GigaplexNZ · · Score: 1

      They didn't intentionally crash or explicitly throw the exception during the VM vendor "validation". From what I understand, Eclipse doesn't care too much what runtime it is running on, but needs to set specific arguments for the Sun/Oracle one to avoid memory issues. All it did was skip setting the Sun/Oracle specific command instead using the defaults. Do you really expect them to compare the current VM to a known database and throw up some UI stating the VM isn't in a known list? That defeats the purpose of the supposed write once run everywhere approach of Java.

    16. Re:Sounds... wrong by Anonymous Coward · · Score: 0

      Yes there is. Run "java -X". This lists all the extension properties the VM takes. Check to see if the one you want is there.

      DONE.

      The Eclipse implementation is retarded, plain and simple.

      Not to mention that you should never need to use VM extension properties in the first place if you at all know what you're doing with Java. The fact that Eclipse does points more to shoddy Eclipse programming than anything else.

    17. Re:Sounds... wrong by Anonymous Coward · · Score: 1, Informative

      Read the article! IT IS NOT A JAVA PROPERTY. It is a property of the Win32 EXE file. Eclipse' PLATFORM SPECIFIC LAUNCHER checked the setting of a PLATFORM SPECIFIC PROPERTY of a PLATFORM SPECIFIC EXECUTABLE FILE. I hate all caps. But you have to read the article.

    18. Re:Sounds... wrong by TarMil · · Score: 2, Informative

      I hate all caps.

      Then use bold.

    19. Re:Sounds... wrong by Anonymous Coward · · Score: 0

      Doesn't matter whether the apps should or not, they do, serious fail in QA and customer communication at the least.

    20. Re:Sounds... wrong by oreaq · · Score: 3, Insightful

      The information is needed to start the VM. Reflection is designed to be used when the VM is already running.

    21. Re:Sounds... wrong by Beezlebub33 · · Score: 1

      No, that does not work. java -X does not tell you if -XX:MaxPermSize is there or not.

      --
      The more people I meet, the better I like my dog.
    22. Re:Sounds... wrong by ultranova · · Score: 1

      suns VM needs to be told how much memory it's allowed to use upfront or memory hungry applications will fail

      I guess we just identified the true source of the bug.

      Seriously, who's the lazerbrain who thought it would be a good idea to implement memory limits as a default?

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

  6. Problem? by Anonymous Coward · · Score: 0

    Sounds normal to me.

  7. Well that's it... by mandelbr0t · · Score: 3, Funny

    I am beating myself over the head until I forget all programming languages. There is not a single programming culture left that I can identify with. :(

    --
    "Please describe the scientific nature of the 'whammy'" - Agent Scully
    1. Re:Well that's it... by copponex · · Score: 4, Funny

      I am beating myself over the head... There is not a single programming culture left that I can identify with. :(

      If you're into a self-harm, you should check out Java.

    2. Re:Well that's it... by Eudial · · Score: 1

      I thought that was what COBOL was for.

      --
      GAAH! MY PRINTER IS ON FIRE!!! PUT IT OUT! PUT IT OUT!
    3. Re:Well that's it... by Anonymous Coward · · Score: 1, Interesting

      No, JAVA is definitely for harming your customers. In a company like ours with 90,000 desktops/notebooks, every Sun/Oracle Java update breaks applications. Most of the time it is something stupid the developers of the app did. Sometimes it is something stupid Sun/Oracle did (for example 1.6_11 worked fine with pass-thru authenticated proxy servers using auto-proxy detect, but versions after that (up until it was fixed in 1.6_21) were borked. Unfortunately all of those interim versions were critical security updates. So we had some vendor apps that needed say 1.6_16 or better, but we couldn't load that because it didn't WORK. We also had to leave the security holes because otherwise we had a business incident where apps didn't work.

      Again, most of the time it is the developers of the apps who screw it up - they only work with one or two versions and when a security update to Java comes out their app won't work with it for months. Don't code in Java for the desktop unless you hate your customers (and want them to find a different vendor that doesn't use Java).

    4. Re:Well that's it... by Anonymous Coward · · Score: 0

      May I introduce you to INTERCAL?

    5. Re:Well that's it... by Anonymous Coward · · Score: 0

      The end of the sentence is not where the preposition goes at.

    6. Re:Well that's it... by cynyr · · Score: 1

      autolisp, the variant of lisp used in autocad....

      --
      All of the above was encrypted with a Quad ROT-13 method. Unauthorized decryption is in violation of the DMCA.
    7. Re:Well that's it... by Anonymous Coward · · Score: 5, Informative

      Didn't you hear, Java is the new COBOL

    8. Re:Well that's it... by Anonymous Coward · · Score: 0

      I thought that was what COBOL was for.

      Java is the new COBOL, with all the same wonderfulness we thought we left behind.

    9. Re:Well that's it... by Per+Wigren · · Score: 2, Funny

      You should at least be able to identify with self.

      --
      My other account has a 3-digit UID.
    10. Re:Well that's it... by steelfood · · Score: 1

      Code in hex. If you know what you're doing, you can't possibly go wrong there.

      Of course, if you don't know what you're doing, then good luck, because you'll need it!

      --
      "If a nation expects to be ignorant and free in a state of civilization, it expects what never was and never will be."
    11. Re:Well that's it... by Eudial · · Score: 1

      Where did you get such a notion from?

      --
      GAAH! MY PRINTER IS ON FIRE!!! PUT IT OUT! PUT IT OUT!
    12. Re:Well that's it... by joost · · Score: 1

      Maybe obscure innovation is for you? http://www.iolanguage.com/

    13. Re:Well that's it... by Anonymous Coward · · Score: 0

      You're obviously a C# pusher

    14. Re:Well that's it... by Anonymous Coward · · Score: 0

      Ever heard of LOLCODE ??

      Example code :

      -----------------

      HAI
          CAN HAS STDIO?
          VISIBLE "HAI WORLD!"
      KTHXBYE

      -----------------
        HAI
        CAN HAS STDIO?
        PLZ OPEN FILE "LOLCATS.TXT"?
                AWSUM THX
                        VISIBLE FILE
                O NOES
                        INVISIBLE "ERROR!"
        KTHXBYE

      -----------------

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

    15. Re:Well that's it... by Arancaytar · · Score: 1

      You could try brainfuck.

      Now there's a language that won't be assimilated by a corporation.

    16. Re:Well that's it... by Anonymous Coward · · Score: 0

      Hey, COBOL was a major advance in it's time. That's unfair.

  8. Design Decisions by Subliminalbits · · Score: 4, Insightful

    Ladies and gentlemen, I call you attention to Exhibit A for the real world consequences of poor design decisions.

    1. Re:Design Decisions by Anonymous Coward · · Score: 0

      Ladies and gentlemen, I call you attention to Exhibit A for the real world consequences of poor design decisions.

      You forgot the link to Exhibit A

      (hey, I say that with great affection etc. but still...)

    2. Re:Design Decisions by Anonymous Coward · · Score: 0

      By the Eclipse Foundation or by Sun?

      It's an assumption in a workaround for a bug that causes an out of memory crash.

    3. Re:Design Decisions by Anonymous Coward · · Score: 0

      Ladies and gentlemen, I call you attention to Exhibit A for the real world consequences of poor design decisions.

      I agree and in any case, "Exhibit A" is a much more suitable name than "Java". Write once, crash anywhere.

    4. Re:Design Decisions by Trails · · Score: 1
      It's ok though, cause it was preceeded by the following comment:

      //FIXME: this is a poor design decision and should be changed

    5. Re:Design Decisions by Anonymous Coward · · Score: 0

      Leave me attention out of this...

    6. Re:Design Decisions by Anonymous Coward · · Score: 0

      Treating things like drivers differently is fairly common, e.g. for Nvidia, ATI or Intel in OpenGL. If any of these changed their name in the driver, my guess is a lot of 3D engines would stop to work (or fall back to compatability mode) due to bugs that have to be handled depending on vendor string.

      There's no function willThisCauseABugOnThisMachine(Object o), so that vendor string (and the knowledge of spec deviations/bugs) is all you have.

    7. Re:Design Decisions by Anonymous Coward · · Score: 0

      Shipping is a feature. If you can't find an elegant solution to that problem, then you use a hacky workaround and clearly label where you did so.
      Some IDEs can even let you jump directly to sections of code marked like that so you can spend more time on them later. I can't think of any right now, though.

  9. Using a company field to extract key VM info? by kaladorn · · Score: 5, Informative

    Poor planning. Eclipse should not use a 'company' field to be pulling key VM info from. And there should be another more particular way to acquire VM information applications require. That was a poorly thought out situation from the get-go, but Oracle was mightily short sighted for making this change without much testing of compatible apps. Mind you, it isn't their fault as such, but pissing off all of those using Eclipse is mightily retarded. While we're on the subject of retarded, automatic updates? You deserve what you get if you trust those. You should be damn sure an update is solid, stable, and won't give you a BOHICA experience before you apply it. No sympathy for auto-update users.... that's just bad planning as well. So: Oracle: Minor thumbs down. Eclipse devs: Thumbs up overall (except for bloating), but thumbs down for this one. Auto-update Users: Not bothering with a thumb, too busy ROFLMAO.

    --
    -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
    1. Re:Using a company field to extract key VM info? by 0123456 · · Score: 5, Funny

      Mind you, it isn't their fault as such, but pissing off all of those using Eclipse is mightily retarded.

      I can't help but feel that most Eclipse users won't notice one more source of random crashes on startup.

    2. Re:Using a company field to extract key VM info? by indre1 · · Score: 1

      And I thought my computer was going crazy with Eclipse crashing every 30 minutes.

    3. Re:Using a company field to extract key VM info? by allcoolnameswheretak · · Score: 1

      Poor planning, perhaps. But I wonder what the deal is with Oracle being so over-eager to plaster their company name all over the place. Wherever you go, java.com, java.sun.com, javadocs, the "ORACLE" Logo is everywhere and this happened only a week or two after the takeover.

    4. Re:Using a company field to extract key VM info? by Andy+Smith · · Score: 0

      Hmm. I'm using Eclipse on Windows, for Android development, and have been using it solidly for the past three months. It hasn't crashed once. It feels like a rock solid piece of software. Yet judging from this discussion, it has a reputation for being flaky...?

    5. Re:Using a company field to extract key VM info? by 0123456 · · Score: 1

      Yet judging from this discussion, it has a reputation for being flaky...?

      For me it usually crashes at least every couple of days or becomes so screwy that I have to exit and restart. And it's often refused to start up at all until I just deleted the old workspace and recreated it.

      Certainly one of the most buggy programs I use on a regular basis.

    6. Re:Using a company field to extract key VM info? by Chyeld · · Score: 1

      Santa Claus! I've found Santa Claus!

      Everyone! Look! It's Santa Claus!

      I told them you existed, I really really did. Can I have a pony?

    7. Re:Using a company field to extract key VM info? by Nephilium · · Score: 1

      Don't forget the new splash screen on OpenOffice.org, including the reversion to the really old icons.

      Nephilium

    8. Re:Using a company field to extract key VM info? by nmb3000 · · Score: 2, Insightful

      It feels like a rock solid piece of software. Yet judging from this discussion, it has a reputation for being flaky...?

      I'm pretty sure it's a case of RealPlayer syndrome.

      For years and years RealPlayer earned a special corner of hatred for many sysadmins. It was a pioneer in broken crapware and users who installed it deserved to be shunned if not verbally abused. Now, years later, it doesn't matter if RealPlayer has utterly mended its ways and is the best software out there -- for many experienced administrators it remains the spawn of an infested pool of the lowest scum and has no business being installed anywhere.

      Eclipse is in much the same boat. I tried using it years ago and had nothing but problems with crashing, memory usage, deleting files, etc. For those reasons and more besides I avoided it outright and advised everyone who asked to do the same. However, about a year ago, I had to use it for a huge collaborative Java project and I found, much to my surprise and delight, that it has since become a very solid and well-designed IDE. It even has some simple yet useful features I wish Visual Studio (my normal world) would copy.

      So the short answer is "yes" :)

      --
      "What do you despise? By this are you truly known." --Princess Irulan, Manual of Muad'Dib
      /)
    9. Re:Using a company field to extract key VM info? by Anonymous Coward · · Score: 0

      YMMV. This seems like you are A) leaving Eclipse running for very long periods of time B) don't say anything about the plugins you use.

      Myself, I shut down my computer at work every day, when I leave. My co-worker leaves his computer running constantly. I have no particular problems with Eclipse, except for some issues directly related to some plugins I use. E.g. Hibernate tools were unusable as a dev tool, because of a large time out when running queries. Spring IDE for quite some time cause major delays etc. But these are all specific plugin's faults, which are not part of Eclipse itself.

      It's like saying Linux is very flaky and constantly crashes, because my graphics driver causes regular lockups (which btw. was true for a very long time on my work machine until they finally fixed it).

    10. Re:Using a company field to extract key VM info? by petermgreen · · Score: 1

      The thing with java is that it installs support for applets, JWS etc. Therefore it is putting itself in a position of high exposure to security threats and hence needs to be kept updated.

      Yes large businesses should be regression testing stuff on their standard configurations but that isn't really feasible for those of us running individual desktops.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    11. Re:Using a company field to extract key VM info? by AaronLS · · Score: 1

      Isn't that kind of like buying a painting and then painting your name over the painters name?

    12. Re:Using a company field to extract key VM info? by GumphMaster · · Score: 2, Insightful

      But I wonder what the deal is with Oracle being so over-eager to plaster their company name all over the place.

      It means that the marketing/branding people in the company carry more clout than anyone with actual product knowledge. This is certainly not unique to Oracle, with most large publicly-traded companies worrying more about their "brand" than the product.

      --
      Patent litigation: A doctrine of Mutually Assured Destruction... in which everyone seems willing to push the button
    13. Re:Using a company field to extract key VM info? by jmrives · · Score: 2, Insightful

      Curious statement. I've never had Eclipse crash on me during start up and almost never at any other times either. I use it almost every day -- sometimes for hours on end.

    14. Re:Using a company field to extract key VM info? by bws111 · · Score: 2, Insightful

      It was poor planning on the specification of the JVM that there is not a standard way to specify the requested heap size. So Eclipse tries to figure out the JVM the best it can so it can pass in the correct parameters to the JVM. In this case, they could not determine the JVM, so I guess they just used the default heap size. I am not sure there is anything Eclipse could do differently (except maybe issue an 'unknown JVM' message, which doesn't help the users any more than possibly running out of memory).

    15. Re:Using a company field to extract key VM info? by 0123456 · · Score: 1

      Curious statement. I've never had Eclipse crash on me during start up and almost never at any other times either. I use it almost every day -- sometimes for hours on end.

      Perhaps the fact that you only use it for 'hours on end' is the reason why you don't see it crash. I'm guessing that many of the crashes are due to running out of memory after two or three days as windows stop repainting, etc, and then it completely falls over... by that point it's using a gigabyte or more of RAM.

      I seem to remember that at least one of the startup crashes turned out to be a known bug where it corrupted something in the workspace and then you could never open it again.

    16. Re:Using a company field to extract key VM info? by cbhacking · · Score: 0

      I'm much, much less concerned about the fact that they were looking for a hard-coded string (this is idiotic, but not technically bad programming) as that the application *CRASHES* if it doesn't find it! This is the kind of thing that makes me doubt the truth of the "many eyes" theory of bug-hunting; there's simply no excuse whatsoever for an "out of memory" crash in a situation like this. At worst, you should get an unhandled "UnrecognizedJvmException" or some such BS, which of course *should* have been caught, but at least would make sense. Out of memory?!? Who the hell wrote the POS that's triggering that, and why hasn't anybody else caught the fact that if it doesn't find what it's looking for it apparently blows its entire memory allotment?

      --
      There's no place I could be, since I've found Serenity...
    17. Re:Using a company field to extract key VM info? by Tablizer · · Score: 1

      Eclipse is quite reliable. I'm even composing this message on Ecl~` ;% _^ &7- +'~ . [ `

    18. Re:Using a company field to extract key VM info? by catmistake · · Score: 1

      But I wonder what the deal is with Oracle being so over-eager to plaster their company name all over the place.

      It means that the marketing/branding people in the company carry more clout than anyone with actual product knowledge. This is certainly not unique to Oracle, with most large publicly-traded companies worrying more about their "brand" than the product.

      Actually, in the tech space, Sun pioneered this "Marketing Swallows the Co." business strategy in the 90's, which was pretty much their downfall (going from expensive servers that never break, to cheaper materials, and a machine that wears out just like Dell or something). Perhaps Oracle caught it from Sun.

    19. Re:Using a company field to extract key VM info? by SplashMyBandit · · Score: 2, Informative

      Use NetBeans. I use both NetBeans (by choice) and Eclipse (by necessity, for work) and find Eclipse to be powerful but it is unstable and has a truly awful interface (that only IBM could love!) from a usability point-of-view. NetBeans is much simpler and straightforward to get things done.

    20. Re:Using a company field to extract key VM info? by 21mhz · · Score: 1

      Actually, in the tech space, Sun pioneered this "Marketing Swallows the Co." business strategy in the 90's, which was pretty much their downfall.

      It showed in their branding for Java. First it was Java, then came Java 2, which for non-marketroid public meant 1.2 to 1.4, then Java x for the non-marketroid versions of 1.x. The marketing basically invented confusion where there was none, and they got their way.

      --
      My exception safety is -fno-exceptions.
    21. Re:Using a company field to extract key VM info? by catmistake · · Score: 1

      Let's not forget the Java Desktop System, which was a pretty slick gnome, even if it had nothing to do with Java.

    22. Re:Using a company field to extract key VM info? by Anonymous Coward · · Score: 0

      It's a large program. Leave a memory test running overnight (memtest86+), see if your RAM is rotting.

    23. Re:Using a company field to extract key VM info? by eennaarbrak · · Score: 1

      Poor planning. Eclipse should not use a 'company' field to be pulling key VM info from.

      Generally I would agree, but on this specific issue I don't see how else they would be able to solve this particular problem. The PermGen configuration used by Eclipse is specific to each VM implementation, and the company identification string is one way to determine how to supply it. I would love to hear of another way to achieve this without a proper VM standard on this. It may not even be possible to standardise this across VM implementations given that VM's are not always PC processes in the traditional sense, but I may be wrong on that.

      It is similar to an AJAX framework using the browser identification string to determine what flavour of JavaScript is supported - I don't really know how else they can do that either.

    24. Re:Using a company field to extract key VM info? by eennaarbrak · · Score: 2, Informative

      Added to that - some of the plugins used by Eclipse are not always up to scratch. I've installed various plugins over the years that basically broke my Eclipse, with the only option to de-install the plugin (and sometimes re-install Eclipse).

      Vanilla Eclipse has always been rock solid in my experience, ever since version 2 at least when I started using it. And I believe they have done a lot of work in the later releases to lessen the plugin-hell.

    25. Re:Using a company field to extract key VM info? by Anonymous Coward · · Score: 0

      weak

    26. Re:Using a company field to extract key VM info? by Anonymous Coward · · Score: 0

      Mind you, it isn't their fault as such, but pissing off all of those using Eclipse is mightily retarded.

      I can't help but feel that most Eclipse users won't notice one more source of random crashes on startup.

      Not true. Eclipse hangs on startup. After the random crashes shut it down.

      I've learned to automatically delete all the "snap" files from the workspace whenever Galileo crashes.

    27. Re:Using a company field to extract key VM info? by jmrives · · Score: 1

      I suppose my statement was a little misleading. I do keep Eclipse open for days at a time. Its been running since Monday morning right now. Also, you are right about it being RAM hungry. The few crashes I have experienced have been because of just what you say. Practically though, I generally have it up Monday through Friday. Perhaps, its because I am running it on a Mac :-)

    28. Re:Using a company field to extract key VM info? by Anonymous Coward · · Score: 0

      Perhaps, its because I am running it on a Mac :-)

      Possibly. Not to start any kind of OS flame war, but I think most of the complaints about Eclipse's stability have been from Linux users. Personally, I've never had any issues with it running on Windows. It doesn't crash, hang, or otherwise cause problems of any kind— ever. And I use it daily, both at home and at work.

    29. Re:Using a company field to extract key VM info? by TheThiefMaster · · Score: 1

      It even has some simple yet useful features I wish Visual Studio (my normal world) would copy.

      As someone who's barely used Eclipse, but uses VS pretty much constantly, what am I missing out on?

    30. Re:Using a company field to extract key VM info? by demongp · · Score: 1

      I actually find this to be a rather short sighed and arrogant comment.

      With the amount of updates coming through these days its quite probably impractical for each person or organization to test them all. If you were to do that you would probably be testing patches all the time - and I assure you that in smaller organization this has a cost impact that is extremely difficult to justify.

      Worse, imagine you didn't deploy a security update as soon as possible and you get hit by a malware attack - not fun.

    31. Re:Using a company field to extract key VM info? by peppepz · · Score: 1

      No, it's like painting your name in new releases, that *you* are developing, of that painting.

    32. Re:Using a company field to extract key VM info? by middlemen · · Score: 1

      As someone who's barely used Eclipse, but uses VS pretty much constantly, what am I missing out on?

      You're missing out on Java.

    33. Re:Using a company field to extract key VM info? by Boldoran · · Score: 1

      Huh? Vanilla Eclipse is very solid. It's the bazillion of plugins that the typical developer has installed. Sometimes you get one that is not up to par.

    34. Re:Using a company field to extract key VM info? by Boldoran · · Score: 1

      Yeah I have been slightly annoyed by this too. It seemed like the most important thing for them was not to advance java as a language but to kill every occurence of the Sun name on every webpage, splashscreen and hidden property field as fast as possible. I wonder when they will start to rename the package structure of the API.

    35. Re:Using a company field to extract key VM info? by Anonymous Coward · · Score: 0

      Nobody is missing out on Java.

    36. Re:Using a company field to extract key VM info? by ultranova · · Score: 1

      It was poor planning on the specification of the JVM that there is not a standard way to specify the requested heap size.

      It was poor planning on the implementation of the JVM that the heap size needs to be specified. I'd understand if it was a matter of optimization: request a specific heap size right from the beginning to avoid garbage collecting as often. However, if the choice is between throwing an OutOfMemoryError or growing the heap size, the default should be to grow the damn heap, and only throw the error if that fails.

      The only reason I can imagine why anyone could possibly consider this a good idea is that garbage collection and swap interact badly, but surely it's better that the application trashes than outright dies? Unless, of course, we have a memory leak, but surely that would be the expection rather than the norm?

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    37. Re:Using a company field to extract key VM info? by RivieraKid · · Score: 1

      How's this: write a short Java stub that detects the runtime environment from within the VM and passes back a guaranteed consistent string to the wrapper that then decides how to start the Java VM and run the main application.When your supported VMs are upgraded by the vendor - you've got a tiny little Java app to update and the rest of the behemoth is never touched.

      Hell, you could even have the runtime detection code return the actual command line to start the main application so that the wrapper can be as simple as possible.

      Is this rocket science? No.
      Is this difficult? No.
      Is this inefficient? No - it's about the best option when you can't change the VM runtime parameters at runtime. You've got one more VM invocation for an app that will probably run for 8 or more hours at a time.
      Does this suffer from the schoolboy error of accepting arbitrary unvalidated variable input and assuming it is 100% correct, immutable, and altering your whole user experience based on it? No.
      Does this have the geek credit associated with extracting the vendor string from a Windows executable? No.

      Considering that the alternative is so simple, and would be cross-platform to boot, I call shenanigans on the Eclipse Windows devs and assume the last point was the one that drove them to do it the way they did.

      It doesn't help your confidence in their development skills that their way is also a classic security blunder. Since there's no way to validate the input, they shouldn't be even considering using it without sanitation, and even then - there's no way to know if it's correct. The runtime detection I have described will at least give them the configuration of the *runtime* which is, after all, what they are looking for. While the Java VM may protect them from certain kinds of vulnerability - the fact that their mindset is such that they are happily relying on unverifiable, uncontrollable data as a means to control the entire behaviour of their application is astonishing and makes me question the security of the whole app.

      --
      "Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves
    38. Re:Using a company field to extract key VM info? by eennaarbrak · · Score: 1

      How's this: write a short Java stub that detects the runtime environment from within the VM and passes back a guaranteed consistent string to the wrapper that then decides how to start the Java VM

      I am keen to see the code for this stub. At least point me in the right direction - which API can I use to achieve this?

    39. Re:Using a company field to extract key VM info? by RivieraKid · · Score: 1

      I'm not near my usual machine so can't write any proper code, however, take a look here, the relevant parts seem to be:

      System.getProperty ( "java.version" ) - Java Runtime version
      System.getProperty ( "java.vendor" ) - Java Runtime vendor
      System.getProperty ( "java.specification.version" ) - Java Runtime specification version
      System.getProperty ( "java.specification.vendor" ) - Java Runtime specification vendor
      System.getProperty ( "java.specification.name" ) - Java Runtime specification name
      System.getProperty ( "java.vm.version" ) - Java VM version
      System.getProperty ( "java.vm.vendor" ) - Java VM vendor
      System.getProperty ( "java.vm.specification.version" ) - Java VM specification version
      System.getProperty ( "java.vm.specification.vendor" ) - Java VM specification vendor
      System.getProperty ( "java.vm.specification.name" ) - Java VM specification name

      I'd guess that the VM versions are more relevant for Eclipse, though the VM specification may be the best bet since (I assume, I haven't actually researched that bit), it will likely uniquely identify the Sun/Oracle VM better than the vendor string. Of course, this way means there is more work involved maintaining a database of VMs and their required tweaks.

      This kind of stuff isn't publicised well as well as I would hope, but is by no means super-secret hidden knowledge meant only for the elite. Given that I hunted it out when creating a cross-platform (Solaris/AIX/Linux/Windows) utility at my last job just last year, and a quick check here shows it's been in Java since JDK 1.0, I find it utterly unbelievable that nobody on the Eclipse dev team realised there was a better way to get the JVM vendor information.

      --
      "Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves
    40. Re:Using a company field to extract key VM info? by eennaarbrak · · Score: 1

      You still use the vendour name to create the input arguments for your 2nd invocation. How is that any better than

      the schoolboy error of accepting arbitrary unvalidated variable input and assuming it is 100% correct, immutable, and altering your whole user experience based on it?

      In the previous post, you also said...

      When your supported VMs are upgraded by the vendor - you've got a tiny little Java app to update and the rest of the behemoth is never touched.

      So even if the Eclipse devs followed your advice, it still would have been broken, because you have to update at least something.

      You rant quite a lot about how incredibly bad the Eclipse devs did this job, but your "solution" would have resulted in exactly the same situation.

    41. Re:Using a company field to extract key VM info? by RivieraKid · · Score: 1

      You still use the vendour name to create the input arguments for your 2nd invocation. How is that any better than

      It's better because you're at least asking the runtime to describe itself instead of asking Windows to describe a DLL file. A DLL that you may not be able to trust is the correct DLL. If the runtime is lying to you, then you have much bigger issues to worry about and this whole point is moot.

      In the previous post, you also said...

      When your supported VMs are upgraded by the vendor - you've got a tiny little Java app to update and the rest of the behemoth is never touched.

      So even if the Eclipse devs followed your advice, it still would have been broken, because you have to update at least something.

      Actually, no it wouldn't, and here's why: from the first link in the summary:

      An engineering side note: The "Java" property values for java.vendor and java.vm.vendor were never changed in the jdk6 releases and will remain "Sun Microsystems, Inc.".

      and

      The Windows specific exe/dll file "COMPANY" value is what is at issue here, not the Java properties. It came as a surprise to us that anyone would be inspecting or depending on the value of this very platform specific field.

      So, while I totally agree that if the reported vendor changes, and if there aren't sufficient checks to handle this then yes, this exact same problem would still be there.

      However, JDK and it's updates will "never" change the vendor string. If the Eclipse devs had taken the more correct route of determining the properties of the actual runtime they would be running under, we would never have seen this problem.

      Also, from the first link:

      Note that the jdk7 releases will eventually be changing to Oracle, including the java.vendor and java.vm.vendor properties.

      So, we know also for a fact that with JDK 7, even java.vendor, and java.vm.vendor will change. Well, so what? We have plenty of notice, and the Eclipse devs could add code in *right now* to also allow "Oracle" in the vendor string and use the same workaround. That's what I would do.

      If the workload of ensuring that your Java IDE (of all things) works with the new releases of the major JVMs is too much for you, then frankly, you're in the wrong business. Now, I accept that this change was difficult to predict, but the devs took such a short-sighted and broken view of what defined the JVM vendor that they really have to accept the blame here. Worse than that - they created an overly complicated proprietary mess to deal with it when they could have achieved the same with about 3 lines of code - code that would be cross-platform and not a special case hack.

      You rant quite a lot about how incredibly bad the Eclipse devs did this job

      Actually, I ranted about how there's a much better way, and somebody on the cross-platform Java IDE development team really should have known about it since it's also the class that provides you information about the nature of the freakin platform you're running on. Though, now that you mention it - yes, I agree with you, they did do an incredibly bad job, overcomplicating the whole issue, and guess what - they screwed up. Any change, intentional or not in the "COMPANY" field of the DLL (assuming they are even checking the DLL that the runtime is using - that's not even certain) will render their application totally unusable. So yes, they did do an incredibly bad job on this small part of it.

      but your "solution" would have resulted in exactly the same situation.

      As I've shown, my "solution" would have worked perfectly in this case, since the return value from the API has not changed. Since we also know that it will change with JDK 7, if they were using my "solut

      --
      "Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves
    42. Re:Using a company field to extract key VM info? by eennaarbrak · · Score: 1

      You know, I really don't like the quotes around solution - since I actually have produced a solution that would have prevented this issue, and would be easy to maintain in future if the devs are doing their due diligence properly, I think it's fair to remove those quotes, don't you?

      OK, we are obviously debating orthogonal issues. I'm bemoaning Eclipse's lack of choice in using a vendour name to make critical decisions, while you are concerned with the mechanism on how they got the vendour name. I thought your Java stub may provide a way to bypass the vendour, but unfortunately it does not, so in my view it suffers from the same intrinsic problem. But it is technically still way better than reading a DLL field, so fair enough - I retract my statement about your solution not working (in this case). And you can consider the quotes removed.

    43. Re:Using a company field to extract key VM info? by nmb3000 · · Score: 1

      As someone who's barely used Eclipse, but uses VS pretty much constantly, what am I missing out on?

      There were lots of small things, none of which are huge individually, but which I missed when I went back to my normal work in VS. Some can be provided by addons to VS, but I never have good luck with those.

      Here's a few I can remember:

      Spell checking - built in and designed for code. For example, it's smart enough to see CamelCase as two words.

      Along the same lines, using keyboard shortcuts like CTRL+Arrow keys to move between word boundaries can be set to see CamelCase as two words. This makes highlighting a logical part of a variable name or method really easy.

      Subclasses which override a parent's method have little up arrows in the margin which can be used to instantly jump to the overridden method. There is a similar mechanism for interfaces.

      Clicking any kind of text (variable, method, etc) will temporarily highlight all instances of that "word" in the current document. Makes it easy to see everywhere something is being used. Notepad++ has a similar feature.

      The whole "quick fixes" system is pretty nice. Few examples: fix misspellings, automatically fix code warnings such as a never-read variable by removing all references to it. All done by hovering over various parts of the code and using the flyout menus.

      Fast scrolling through a document by holding CTRL plus mousewheel scrolling.

      Best for last: Jumping to class/interface/variable/method declaration and definition. You can do this in VS via F12, but in Eclipse if you hold the CTRL key down, any code element you mouse over will turn into a hyperlink which you can click to jump to it's definition/declaration. Fantastic feature. The only thing VS has over this is it's almost unique support for mouse forward and back buttons. It's really neat to be able to jump to a definition then hit the mouse's Back button to go back to the file/line you were previously on. The two features combined would be perfect :)

      --
      "What do you despise? By this are you truly known." --Princess Irulan, Manual of Muad'Dib
      /)
  10. Wrong title. by CannonballHead · · Score: 1

    The real title should be "Enterprise Software Breaks when Oracle Changes Name."

    Thick-client software that relies on a branding for string comparisons or regular expressions (I don't know which it is)? Hum.

    (I say "thick-client" because "thin-client" ... or, hosted ... is a lot easier to push updates for :) )

    1. Re:Wrong title. by thoughtsatthemoment · · Score: 1

      What's the difference? Your browser is a thick client too.

  11. Reminds me of some windows progs back in the day by jaymz2k4 · · Score: 4, Insightful

    I can remember trying to install programs to D:\ rather than C:\ - That caused no end of problems due to developers hard coding in and just assuming that windows and themselves would be installed on the conventional C: That anyone would ever use any other drive letter didn't seem to occur to them. If I remember correctly this happened to me with a version of matlab (or something in that family).

    --
    jaymz
  12. Clearly... by by+(1706743) · · Score: 3, Funny
    Eclipse wasn't built leveraging the doWhatIWant() function (not to mention doItFaster(doWhatIWant())).

    Tangentially related, what does the following do:

    doItRecursively(doWhatIWant()) { return doItRecursively(doItFaster(doWhatIWant()); }

    I'm guessing it does it instantaneously...or never.

    1. Re:Clearly... by Draek · · Score: 1

      It does it by yesterday.

      --
      No problem is insoluble in all conceivable circumstances.
    2. Re:Clearly... by mysidia · · Score: 1

      Ah, it used to call doWhatIwant.

      Unfortunately, after Sun was bought out there was a change to the symbol table to insert the function doWhatOracleWants into the symbol table.

      As a result, all the other system calls were shifted down one in the symbol table.

      So old source code compiled using doWhatIwant() winds up invoking doWhatIdontWant() instead of what is expected.

    3. Re:Clearly... by Anonymous Coward · · Score: 0

      Finally, something I can usse the Lisp REPL for. DWHATIWANT was simply defined as (format t "foo"), but of course this is Lisp so I'm still not sure if I did it right.

      >>(doitrecursively (dowhatiwant))
      foo
      Error: Frame stack overflow.
      Fast links are on: do (si::use-fast-links nil) for debugging
      Error signalled by DOITRECURSIVELY.
      Backtrace: system:universal-error-handler > evalhook > doitrecursively > doitrec
      ursively > doitrecursively > doitrecursively > doitrecursively > doitrecursively
      > doitrecursively > doitrecursively > doitrecursively > doitrecursively > doitr

      Followed a little later by:

      ly > doitrecursively > doitrecursively > doitrecursively > doitrecursively > do
      trecursively > DOITFASTER

      Broken at EVAL.
      >>

    4. Re:Clearly... by cpghost · · Score: 1

      Ah, it used to call doWhatIwant.

      As an old LISPer, I miss DWIM...

      --
      cpghost at Cordula's Web.
  13. Eclipse fucked up here. by Anonymous Coward · · Score: 4, Insightful

    I don't know why they're blaming Oracle. This is clearly a fuck-up made by the Eclipse developers.

    If any other piece of software checked the platform it was running on and didn't handle unexpected cases properly, it wouldn't be the platform developer's fault. The blame would rest solely with the application developer.

    1. Re:Eclipse fucked up here. by Anonymous Coward · · Score: 0

      I don't think the blame should go to Eclipse either. I know a lot of companies use the vendor field to identify the JVM including Oracle's own WebLogic (9.2) server uses this field to identify if the JVM is from SUN or BEA's JRocket.

  14. Maybe. by Zancarius · · Score: 1

    Should they?

    I seem to remember some applications not fully working with Blackdown and possibly others facing some breakage with other JVMs. So while it's stupid to rely on the vendor field in general, I can sort of understand why they'd examine it for purposes of compatibility. It goes both ways.

    Let's just blame everyone and get it over with.

    --
    He who has no .plan has small finger. ~ Confucius on UNIX
    1. Re:Maybe. by cynyr · · Score: 1

      isn't there a way to test for support in java?
      Something like the try: statement in python, along with things like pygtk.require('2.12')

      --
      All of the above was encrypted with a Quad ROT-13 method. Unauthorized decryption is in violation of the DMCA.
    2. Re:Maybe. by jimfrost · · Score: 1

      It's always been the case that there are application-visible differences in JVMs. (Remember that Java is "write once, debug everywhere." It's not just a funny tag line.) You have to detect and work around them somehow and the combination of vendor string and version is a reliable way to do that.

      --
      jim frost
      jimf@frostbytes.com
  15. IT'S ALREADY FIXED!! by Anonymous Coward · · Score: 4, Informative

    They already released a fix, with the original "Sun Microsystems" embedded in the exe on Monday. WTF, was this posted by kdawson? The FUD is strong in this one.

    1. Re:IT'S ALREADY FIXED!! by Anonymous Coward · · Score: 0

      No, this one was posted by the hapless Timmeh...

    2. Re:IT'S ALREADY FIXED!! by Sir_Lewk · · Score: 4, Interesting

      Their fix was lying and claiming that the company is still Sun Microsystems, and you think this isn't still news? As far as I can tell, that is an incredibly shitty work-around and the real problem still exists.

      Of course, the "real problem" isn't that Oracle changed the company field, it's that "Java programmers still continue to use poor programming practices despite layers and layers of 'best practice' crud". Seriously, isn't the great appeal of Java supposed to be that you can avoid shit like this?

      --
      "linux is just DOS with a UNIX like syntax" -- Galactic Dominator (944134)
    3. Re:IT'S ALREADY FIXED!! by Anonymous Coward · · Score: 0

      No, no, no -- it's not about that, the thread is a demonstration of how little /. posters know about Java, and how much they want to share it.

    4. Re:IT'S ALREADY FIXED!! by Anonymous Coward · · Score: 0

      You can lead a horse to water...

    5. Re:IT'S ALREADY FIXED!! by cbhacking · · Score: 0

      Holy crap, you call that a fix? That's an incredibly hackish work-around to an atrocious bug that should never have seen the light of day in the first place, which is triggered in a "feature" that would have failed design review guidelines by anybody moderately competant. What's more, it'll prbably stay there for months if not years, instead of fixing the hideious underlying problems.

      For those who are curious: the atrocious bug is that finding a short and completely valid (as in, well formed and not in violation of any spec) unexpected string in the runtime will *CRASH* your IDE. To add insult to injury, the crash error doesn't give any clue as to what the problem is, in fact suggests a completely different issue (that your computer has too little RAM, which admittedly might be true if you tried to run Eclipse on something without a couple gigs). The incredibly incompetant design error was relying on a hard-coded string to identify your runtime, instead of using it as a vague hint at best. Among other things, Reflection is perfectly suited to determining the runtime's capabilities. Strings change, and the incredible clusterfuck that is a modern browser's User Agent string (not to mention the similarly incredible clusterfuck that results from servers trying to customize their code for that string) should have been more than enough warning that this was a terrible idea.

      --
      There's no place I could be, since I've found Serenity...
    6. Re:IT'S ALREADY FIXED!! by martin-boundary · · Score: 1

      Hold on, doesn't Sun technically still exist? Just because it's a wholly owned subsidiary of Oracle doesn't mean it's technically no longer registered as a company.

    7. Re:IT'S ALREADY FIXED!! by Tim+C · · Score: 2, Funny

      You mean it's possible to make poor design decisions and write shit code whatever your language/platform of choice? Say it ain't so...

    8. Re:IT'S ALREADY FIXED!! by IBBoard · · Score: 1

      Can someone mod the parent down so that those who are curious don't get the wrong answer?

      For those who are curious: the atrocious bug is that finding a short and completely valid (as in, well formed and not in violation of any spec) unexpected string in the runtime will *CRASH* your IDE.

      No, the atrocious bug is that not finding the Sun string in the Company attribute of one file means that Eclipse doesn't set a custom PermGen size to make the Sun one big enough to work with. That does make it crash quickly, but it's a memory size issue because of a work-around that fails for a default that is deemed too small

      All in all it is still a poor and brittle design decision, and I'd rather try to make Eclipse not need the PermGen to be bigger than the Sun default rather than just increasing it, but it isn't just "oh dear, unexpected but valid string...crash!"

    9. Re:IT'S ALREADY FIXED!! by Youngbull · · Score: 1

      ...Seriously, isn't the great appeal of Java supposed to be that you can avoid shit like this?

      Java is full of bugs that needs to be supported for backwards compatibility reasons. Just check out this java puzzlers presentation to get a showcase of the funniest.

    10. Re:IT'S ALREADY FIXED!! by Anonymous Coward · · Score: 0

      It has not been fixed. I downloaded the JDK just now and it is still "faulty".

    11. Re:IT'S ALREADY FIXED!! by Anonymous Coward · · Score: 0

      Of course, the "real problem" isn't that Oracle changed the company field, it's that "Java programmers still continue to use poor programming practices despite layers and layers of 'best practice' crud". Seriously, isn't the great appeal of Java supposed to be that you can avoid shit like this?

      The great 'appeal' of Java is exactly layers of layers of poor programming tolerated through deprecation and quick fixes like the one for this problem.

      In short: Java will never be a serious enough thing.

    12. Re:IT'S ALREADY FIXED!! by peppepz · · Score: 1
      Yes, because you can't write puzzlers in any other language.

      It's also interesting to note that the publishers of that video choose Java as (among other things) the language for their mobile operating system (Android) and for their web widgets toolkit (GWT).

    13. Re:IT'S ALREADY FIXED!! by Anonymous Coward · · Score: 0

      Read the Eclipse bug to understand the reason.

      tl;dr: They need to pass in a Sun-specific argument when run on the Sun/Oracle VM to avoid the OutOfMemory exception. This argument is invalid for other VMs. At the point of firing up the VM they don't really have any other choices, since "java.exe" doesn't necessarily correspond to "jvm.dll", and they load the JVM dll directly into their process. (if they fired up java.exe, then they could run "java -version" to get a more reliable source of information, but that's not applicable here). As a result, they have to look in the properties of the DLL to grab that information. Their detection logic failed when the company changed to Oracle, so they didn't pass the argument to the JVM, and thus it crashed.

    14. Re:IT'S ALREADY FIXED!! by RivieraKid · · Score: 1

      No, their detection logic failed because they were lazy and wanted nerd kudos for extracting the vendor string from a DLL.

      Simple: Java stub to do the runtime detection and output to STDOUT the correct command line for starting the main application.

      How on Earth could they not possibly figure this one out instead of whining that they can't detect the JVM without starting the JVM????? Well, start the freakin JVM, do the detection you need and use *that* information to start a new JVM.

      Really, I'd like to know how they could be so short sighted!

      --
      "Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves
    15. Re:IT'S ALREADY FIXED!! by RivieraKid · · Score: 1

      I agree that Eclipse is at fault here, and that they should fix their app instead of hacking the JVM, but the fact remains that the crash is a *direct* result of an"unexpected but still valid string".

      So, actually, you and cbhacking are both correct.

      --
      "Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves
    16. Re:IT'S ALREADY FIXED!! by Anonymous Coward · · Score: 0

      But a pencil must be lead

    17. Re:IT'S ALREADY FIXED!! by IBBoard · · Score: 1

      No, the crash is because of "didn't get expected string as an indicator that I'm running on one JVM with a specific limitation" - that's entirely different to "unexpected but still valid string", which would be "OMG, I can't handle 'fibble' in a string *crash*".

      The problem is that the PermGen setting is specific to Java's JVM (hence why it is a "-XX:" custom value) and it apparently crashes other JVMs. I'd say there are probably actually several at fault in a way - Sun for its JVM having a old/low limit, other JVMs for crashing when the PermGen option is set, even though most others don't use it, and Eclipse for bodging the fix in there and not getting it resolved in Java more correctly.

  16. Re:Reminds me of some windows progs back in the da by LostCluster · · Score: 1

    I remember seeing "how to" articles for various languages there to determine the drive the app is on, and the drive and directory where Windows is. Programmers who didn't learn from these things were ignorant.

  17. Developers Developers Developers by dugn · · Score: 4, Funny

    From the guy who proposed the fix in the triage meeting, "It's only a one-line change."

    1. Re:Developers Developers Developers by masterwit · · Score: 1

      You'd be surprised how many non-informed individuals think this is the case...

      Anyways, hilarious.

      --
      We should start a new Slashdot and return control to the geeks. It actually wouldn't be that hard to get some users to
  18. You'd figure that if there were one Java app... by dominator · · Score: 1, Insightful

    that they'd test, it'd be Eclipse.

    1. Re:You'd figure that if there were one Java app... by mmkkbb · · Score: 2, Funny

      Why? They can just tell everyone to use NetBeans or JDeveloper!

      --
      -mkb
    2. Re:You'd figure that if there were one Java app... by (H)elix1 · · Score: 1

      Well, sort of. For folks doing weblogic portal development or even the stock weblogic server install, it still uses the eclipse based IDE as part of the install. Heck, I use it. The reason why it might not show up is the wls/wlp version also comes with jrocket - the former intel jvm which is smoking fast on x86/x86-64 hardware. I know I did not have any hiccups.

    3. Re:You'd figure that if there were one Java app... by HiThere · · Score: 1

      Well...
      I downloaded a copy of NetBeans 6.9 updated after the takeover. It's so unstable that I stopped using it nearly immediately.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
  19. Ouch by Anonymous Coward · · Score: 0

    Oracle, why didn't you just operate Sun as a subsidiary and brand instead of trying to merge it all in?

    1. Re:Ouch by Zancarius · · Score: 1

      Oracle, why didn't you just operate Sun as a subsidiary and brand instead of trying to merge it all in?

      That's actually not a bad idea, and I'm surprised they didn't do this. Well, mostly, but it does depend on how, exactly the other company was involved in the merger/acquisition. I wouldn't be too surprised if in a few years, Oracle spins off Sun as a wholly-own Subsidiary. But don't expect much; it's worth more to Oracle to be able to put their company logo on machines sitting in your data center. Free advertising is a powerful thing.

      On the other hand, it might not be such a bad idea for established IP like Java, and maybe not retaining some of the Sun branding is more damaging (dependencies notwithstanding).

      --
      He who has no .plan has small finger. ~ Confucius on UNIX
    2. Re:Ouch by mysidia · · Score: 1

      No they're not. After the fiasco regarding blocking access to firmware updates for Sun servers on the new site we stopped considering using any more Sun/Oracle products for new deployments.

      Of course old equipment is still badged with the Sun name. Whatever Oracle's doing is getting the opposite of advertising.

      Running away from them as fast as possible.

    3. Re:Ouch by Anonymous Coward · · Score: 0

      Wouldn't Oracle run afoul of competition malarky with the Exadata product (and whatever else comes along after) if Sun was operated as a subsidiary?

    4. Re:Ouch by Zancarius · · Score: 1

      Of course old equipment is still badged with the Sun name. Whatever Oracle's doing is getting the opposite of advertising.

      Running away from them as fast as possible.

      Very interesting. In that case, it's almost humorous, is it not? (Well, not for your needs, I realize, but the general notion that they're doing more to damage their reputation certainly is!)

      --
      He who has no .plan has small finger. ~ Confucius on UNIX
  20. Re:Reminds me of some windows progs back in the da by jonbryce · · Score: 1

    Something along the lines of looking in %windir% rather than c:\windows. Not really that difficult.

  21. Yes and no... by Zancarius · · Score: 5, Informative

    Yes and no. While it's not the best practice to rely on some field assuming it'll forever remain static, if you read the bug report in TFA (surprise, surprise), you'll find this:

    This causes a severe regression for programs that need to identify the Sun/Oracle HostSpot VM such that they know whether the "-XX:MaxPermSize" argument needs to be used or not.

    So, the reason they examine it in the first place is to know whether or not they need to set specific values that are supported by the Sun/Oracle JVM. It's not optimal, but I can't exactly fault them for that.

    --
    He who has no .plan has small finger. ~ Confucius on UNIX
    1. Re:Yes and no... by beanluc · · Score: 5, Insightful

      Is "company name" *really* part of any intended-to-be-reliable way to identify the VM?

      Is "company name" *really* necessary for identifying the VM?

      If either answer is "yes", then, I agree, and I add, shame on the VM designers. Shame.

      Otherwise, shame on any team who developed apps depending on that.

      One way or the other, this is *not* a benign, forgivable occurrence.

      --
      Say it right: "Nuc-le-ah Powah".
    2. Re:Yes and no... by mysidia · · Score: 1, Flamebait

      So if Microsoft gets bought out by Oracle and the User-Agent string of IE6, IE7, and IE8 are immediately updated to be OIE6 7 or 8, respectively, with a surprise critical update..

      You are saying it's the web developers' fault, and not Oracle's, when this poorly conceived change breaks the web and compatibility for IE users?

    3. Re:Yes and no... by XanC · · Score: 5, Informative

      Yes. It is. You shouldn't detect whether you can use a feature based on the User Agent, you should detect based on the presence or absence of that feature. Anything other than that is absolutely the web developers' fault.

    4. Re:Yes and no... by sgbett · · Score: 1

      No silly, that would *always* be Microsoft's fault!

      --
      Invaders must die
    5. Re:Yes and no... by Chuck+Chunder · · Score: 4, Insightful

      Yes. It is. You shouldn't detect whether you can use a feature based on the User Agent, you should detect based on the presence or absence of that feature.

      How does that technique solve the problem where a feature exists but is implemented differently?

      --
      Boffoonery - downloadable Comedy Benefit for Bletchley Park
    6. Re:Yes and no... by XanC · · Score: 1

      Like what?

    7. Re:Yes and no... by AaronLS · · Score: 1

      Sometimes the lack of any other god indicator leaves you having to really on that. Imagine if you had to right some javascript that was compatible with IE and another version for Firefox and you used the agent string to determine which code to run. Easy enough. Now imagine a hypothetical world where the agent string doesn't exist and you instead have to use some other identifier like the company name. As a developer you would probably know it was bad to depend on the company name field, but it might be the best you've got.

    8. Re:Yes and no... by bluesatin · · Score: 1

      Hello margins my old friend.

    9. Re:Yes and no... by spynode · · Score: 1

      Looks like you haven't done much web designing with cross browser compatibility.

    10. Re:Yes and no... by multi+io · · Score: 1

      Finding out whether the user has clicked the left or middle mouse button.

    11. Re:Yes and no... by AaronLS · · Score: 1

      I totally agree Chuck. When an application exposes metadata like this, and there is no more discrete/better alternative, then developers have no choice and you are going to end up with alot of applications tightly coupled to that metadata.

    12. Re:Yes and no... by PCM2 · · Score: 1

      So, the reason they examine it in the first place is to know whether or not they need to set specific values that are supported by the Sun/Oracle JVM.

      ...and if they can't determine the answer for sure, the correct procedure is to terminate with an out of memory exception?

      --
      Breakfast served all day!
    13. Re:Yes and no... by nigelo · · Score: 5, Informative

      The FBR states that this is a file attribute only present under Windows, which seems like an odd choice by the Eclipse developers:

      "An engineering side note: The "Java" property values for java.vendor and java.vm.vendor were never changed in the jdk6 releases and will remain "Sun Microsystems, Inc.". It was understood that changing the vendor property values could impact applications and we purposely did not disturb these vendor properties. The Windows specific exe/dll file "COMPANY" value is what is at issue here, not the Java properties. It came as a surprise to us that anyone would be inspecting or depending on the value of this very platform specific field. Regardless, we will restore the COMPANY field in the jdk6 releases. Note that the jdk7 releases will eventually be changing to Oracle, including the java.vendor and java.vm.vendor properties.
      Posted Date : 2010-07-22 15:50:53.0"

      --
      *Still* negative function...
    14. Re:Yes and no... by Anonymous Coward · · Score: 4, Informative

      While there certainly are cases where you have to identify whether a user is on IE, particularly IE6, your example is less than spectacular since the very link you provided is an explanation of how to handle margins without having to detect the User Agent.

    15. Re:Yes and no... by jimfrost · · Score: 2

      The application didn't do that deliberately, it was a side effect of launching the JVM with a too-small maximum heap size. Because the option to change the VM size is specific to the individual JVM implementation you can't just guess which flags to put in there. They did the reasonable thing in the case that they couldn't identify the JVM and didn't pass any option; unfortunately that meant it ran out of memory.

      --
      jim frost
      jimf@frostbytes.com
    16. Re:Yes and no... by jgagnon · · Score: 2, Insightful

      There are still far smarter ways to code something like this. Create a function with a return type YOU can rely on and have it determine the platform specifics. Then if crap like this happens you only have to change one function and suddenly everything works again. MUCH smarter than constantly checking some browser string...

      --
      Remember to maintain your supply of /facepalm oil to prevent chafing.
    17. Re:Yes and no... by petermgreen · · Score: 1

      A good example is text areas, all browsers I know of support them but not all browsers will correctly handle unicode text in them. More specifically older browsers (most notably IE for the mac and netscape 4.x) convert the text into a platform specific legacy encoding (and in the process destroy anything not present in that encoding), let the user edit it and then convert it back to unicode. This presents a big problem for unicode based wikis (a handful of users having broken browsers can lead to a low of broken pages).

      So if you see a browser that doesn't handle it properly you either want to refuse to let them edit or (as mediawiki does) apply an armouring/dearmouring process to the text to allow editing the ascii parts of pages (and if you are detemined the rest too) without breaking the non-ascii parts.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    18. Re:Yes and no... by petermgreen · · Score: 1

      It sounds to me like they fell back to not setting them and that caused the default memory limit to be used which is too low.

      One of the annoyances with the sun JVM is that it has to have a memory limit set (I belive because of the way the implemented GC) and the default is rather low.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    19. Re:Yes and no... by dgatwood · · Score: 0

      Why is a virtual machine being run with a heap size limit by default anyway? I could understand having one for a VM when running server-side to prevent out-of-control processes from killing the server, but for a client installation? Sounds like the workaround breaking is merely symptomatic of a much bigger design flaw to me.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    20. Re:Yes and no... by theshowmecanuck · · Score: 1

      write once run^H^H^H debug everywhere... case in point?

      --
      -- I ignore anonymous replies to my comments and postings.
    21. Re:Yes and no... by mysidia · · Score: 2, Interesting

      This does not work so well when the feature is present but buggy in various browsers, or for features whose presence or absence cannot easily be detected, the result would be inconsistent rendering if user agent was not checked to redirect the user to the proper page.

      It is not a best practice to rely on attempts to "test for the presence" of a feature, to determine whether it should be used.

      "Detection" is only possible if using javascript: not all browsers support, and some users might have it turned off.

      User agent is commonly used for this purpose, and it is the best practice as defined by the standard to use the user agent field for the purpose of tailoring responses to avoid particular user agent limitations

    22. Re:Yes and no... by GaryOlson · · Score: 2, Informative

      Why is a virtual machine being run with a heap size limit by default anyway?

      Because the developers are too lazy to read the documentation. I don't know how many Java developers I have had complain about slow performance. Show them how to launch a jvm not using default values, point out the information in the docs, and suddenly I am a genius. Had a whole project group ask for 16 J2EE servers because they used the default heap size; and the web apps were abysmally slow.

      I'd publish a FAQ; but developers would never read it.

      --
      Every mans' island needs an ocean; choose your ocean carefully.
    23. Re:Yes and no... by dgatwood · · Score: 1

      Of course, none of this would be an issue if Java didn't forgo proper memory management in favor of garbage collection. Just saying.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    24. Re:Yes and no... by Anonymous Coward · · Score: 0

      the lack of any other god indicator

      Any other? Good god, man, how many god indicators do you need?

    25. Re:Yes and no... by Anonymous Coward · · Score: 0

      The case in this point is that you're an idiot.

    26. Re:Yes and no... by trg83 · · Score: 1

      True, but you are bringing up completely irrelevant facts to make a point. This discussion is around Java VM initialization, not web development.

    27. Re:Yes and no... by SanityInAnarchy · · Score: 1

      Sorry, what's "proper" about manual garbage collection? Is that like blaming C for forgoing proper registry management?

      --
      Don't thank God, thank a doctor!
    28. Re:Yes and no... by MillionthMonkey · · Score: 1

      The ability to run on multiple VMs doesn't prevent vendor-specific coding. Now that would be impressive.

    29. Re:Yes and no... by BasilBrush · · Score: 1, Insightful

      As other posters have pointed out, there are times when you need to act based on the user agent string. Similarly I can believe there is a need to read the company string of the Java VM. These things are not ideal, but they are part of the realities of programming.

      No, the fault lies with having an app that crashes when there is something unexpected in those string fields. Rather, an unexpected string should cause the app to operate in a compatibility mode which will work across any browser/vm/whatever. At the very minimum it should fail with an error message indicating that it failed because it didn't recognise the particular string in question.

    30. Re:Yes and no... by BasilBrush · · Score: 2, Informative

      Not really. Compilers are probably better at deciding what should go in registers than programmers are. But programmers are probably better at releasing garbage promptly than garbage collectors. So manual memory management will generally need less memory than GCs.

      This is why Obj-C now has optional garbage collection for Mac programming, but it's not allowed for iPhone programming.

    31. Re:Yes and no... by Lazy+Jones · · Score: 2, Insightful

      How does that technique solve the problem where a feature exists but is implemented differently?

      From the bug reports I gather that in this specific case, the problematic checks were a workaround for other JVMs that did not implement a specific option ("-XX:MaxPermSize=256m") and did not start at all when it was used. Looks like a poor workaround to me, when we've been using installation time checks as a de facto standard for such things (i.e. GNU Autoconf) for more than a decade to avoid such issues. Eclipse could simply have tried to start the JVM with said option at installation time and if that failed, disabled the option.

      --
      "I love my job, but I hate talking to people like you" (Freddie Mercury)
    32. Re:Yes and no... by Chuck+Chunder · · Score: 1

      An install time check would cause problems if you changed VMs post installation.

      --
      Boffoonery - downloadable Comedy Benefit for Bletchley Park
    33. Re:Yes and no... by Anonymous Coward · · Score: 1, Informative

      >seems like an odd choice by the Eclipse developers

      Maybe it's because they need to determine what startup parameters to pass to the VM, and you have to know those things BEFORE you start the VM. If you check vm values after you start up, it's a little late.

    34. Re:Yes and no... by JediTrainer · · Score: 5, Funny

      It'll be even more fun when they decide to rename the com.sun.* packages :)

      --

      You can accomplish anything you set your mind to. The impossible just takes a little longer.
    35. Re:Yes and no... by mysidia · · Score: 2, Interesting

      Maybe they'll just clone them, creating identical com.oracle.* packages. Meanwhile the com.sun.* packages will ship with java, be deprecated and not receive any updates.

      Not like anyone will notice their JRE installs growing from 700mb in size to 1000mb in size.

    36. Re:Yes and no... by beanluc · · Score: 1

      You are saying it's the web developers' fault, and not Oracle's, when this poorly conceived change breaks the web and compatibility for IE users?

      First: I wasn't talking about the web, web developers, or IE users at all.

      Second: I didn't even say whose fault it actually was. What I did was ask some questions which showed that "One way or the other, this is *not* a benign, forgivable occurrence".

      The point being that, one way or the other, either the app developers or the JVM developers failed to handle a predictably unpredictable case. Take your pick, based on the answers to the questions I posed.

      --
      Say it right: "Nuc-le-ah Powah".
    37. Re:Yes and no... by jimfrost · · Score: 1

      There are a lot of possible answers to that. The most obvious is that you want to limit the growth of the JVM; with garbage collecting there is a tendency to grow the heap without limit.

      That was never a satisfactory answer to me, though, because it is not at all difficult to set up an heuristic to watch GC activity and grow the available heap when it looks like memory is tight -- and certainly to try it before throwing OutOfMemory! In fact, it wasn't very long before JVMs that did this started popping up (I think Microsoft's was the first; I think it's pretty darn ironic that the best JVM out there when Sun sued Microsoft was actually Microsoft's, and by no small margin).

      IMO it's an anachronism that Sun's JVMs still have the hard fixed limit without even the choice to turn it off. Larger Java applications (e.g. Eclipse, Maven, and of course the web app servers) regularly break for no other reason than running into heap limits even when there is plenty of memory available on the system. I find it a huge and unnecessary irritation.

      --
      jim frost
      jimf@frostbytes.com
    38. Re:Yes and no... by nigelo · · Score: 1

      Not like anyone will notice their JRE installs growing from 700mb in size to 1000mb in size.

      700mb? You mean 700 MB?

      You may have a point, but I believe you are off by nearly an order of magnitude if you meant mega bytes; the JRE is about 70 MB and the JDK is 'only' 160 MB.

      So, not exactly small, but nowhere near the 1 GB you were implying...

      --
      *Still* negative function...
    39. Re:Yes and no... by peppepz · · Score: 1

      And why is GC allowed on the Android platform, whose applications are written in Java, and run flawlessly on hardware which costs half as much as the one of the iPhone?

    40. Re:Yes and no... by theshowmecanuck · · Score: 1

      oh ho! the wit of the AC is without bound! touche good sir, touche!

      --
      -- I ignore anonymous replies to my comments and postings.
    41. Re:Yes and no... by ultranova · · Score: 2, Informative

      From the bug reports I gather that in this specific case, the problematic checks were a workaround for other JVMs that did not implement a specific option ("-XX:MaxPermSize=256m") and did not start at all when it was used.

      According to docs, MaxPermSize is "Size of the Permanent Generation". So... Why does Eclipse care about this? In my experience needing any of the XX options to work, as opposed to Xmx (which sets the maximum memory the VM will allocate), is a sign of the program breaking Java Memory Model - in other words, a (stupid) bug.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    42. Re:Yes and no... by kalirion · · Score: 1

      How does that technique solve the problem where a feature exists but is implemented differently?

      Obviously the program must contain a sandbox environment which runs a suite of unit tests against the feature to figure out just how it functions.

    43. Re:Yes and no... by ultranova · · Score: 1

      But programmers are probably better at releasing garbage promptly than garbage collectors.

      For trivial applications with exactly one developer, that might be true. For anything more complex than that, you run into problems of who should free what when.

      Or, in other words: top 1% of programmers might be able to do better than compilers, but for the rest 99% of you, please use all the help you can.

      So manual memory management will generally need less memory than GCs.

      Actually, no: garbage collected languages can compact the heap, while manually managed can't. That means that a garbage collector has potentially smaller memory usage than a manually managed one, where heap fragmentation tends to cause gaps of wasted memory to appear.

      The real problem with garbage collection is its interaction with swap/cache: full garbage collection basically requires going through all application memory in random order, following all pointers to objects, then all pointers in them, and so forth. As a result, it requires reading a lot of stuff to either main memory or caches, most of which is not accessed again anytime soon.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    44. Re:Yes and no... by Blakey+Rat · · Score: 1

      Detecting which mouse button was pressed would be the obvious case here. The problem is that the W3C mouse button definitions, while "standard", are retarded. Microsoft implemented a system (I dunno whether they did it before or after the W3C spec was approved) that makes a hell of a lot more sense.

      See this page for a bit of commentary: http://www.quirksmode.org/js/events_properties.html#button

      There happens to be enough agreement that you can correctly detect the right button, but detecting the left button or middle button is a huge pain. (If you get the event at all, and it's *not* the right button, you can generally assume it's the left button... so.)

      Note to IE bashers: most places where IE deviates from the standards, the IE implementation makes a hell of a lot more sense. There are entire JavaScript applications I can't deploy on anything but IE because of the standards' lack of a property like ReadyState.

    45. Re:Yes and no... by ultranova · · Score: 1

      And why is GC allowed on the Android platform, whose applications are written in Java, and run flawlessly on hardware which costs half as much as the one of the iPhone?

      How do you know how much iPhone's hardware costs, as opposed to the Apple logo?

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    46. Re:Yes and no... by jimfrost · · Score: 1

      Manual management, when it's done properly, is certainly smaller ... but you have to balance that against the much larger chance of making errors[1] -- not just a significantly increased tendency to leak, but also serious errors like double-frees and use-after-free and the development time spent tracking that stuff down. (To say nothing of the costs of dealing with customers when their software crashes.) In addition GC mechanisms can have lower overall CPU costs, there are interesting optimizations available when you're doing things in bulk, but you pay for that in less predictability.

      There's give and take and strong reasons to pick one or the other depending on the application type. If you step back and think about it, though, there aren't that many cases where the benefits of GC are outweighed by its costs. Software using GC tends to be easier to write and much less prone to crashing, and unpredictability is not usually in the user-perceptible (to say nothing of critical) range. Given that most of the cost of software is writing and maintaining it anything you can do to depress those costs is a big win.

      Obviously there are cases where the tradeoffs are too expensive. Cellphones, as you point out, may be one of those -- but Android seems to be doing fine with Java as its principal runtime environment. (Honestly, your typical smartphone has way more memory and CPU than servers did not so long ago, to say nothing of the set-top boxes for which Java was originally designed.) Operating systems, realtime systems, and embedded systems are other cases.

      [1] Brooks' _Mythical Man Month_ makes a strong case for development systems that optimize for reduced errors even at the cost of some performance. He was talking about assembly versus high level languages but (perhaps not surprisingly) the more things have changed the more they have remained the same. We have a lot of data on development and maintenance costs of various software environments now and costs tend to be lowest in the cases where the environment makes it harder for programmers to screw up. Usually by significant margins; my experience in comparing Java and C# versus C++ indicated an average time-to-completion differential of 300%, and a bug count reduction of more than 90%, over the long term. In some cases -- like network applications and servers -- the improved libraries found in Java and C# versus C++ yielded order-of-magnitude improvements. These are numbers you can take to the bank. Even if the first generation of the software is slow relative to a language like C++, the ability to rev the software three times as fast means much faster algorithmic development. It is often the case that the Java code would outperform C++ within three or four versions if the code was particularly complicated.

      Of course C++ -- as with C before it -- is a particularly lousy language when it comes to memory management. It's a lot closer if you're using something that has, for instance, real arrays or heap validity checking. It annoys me to no end that none of the standard C++ development environments builds in debugging aids as a matter of course on non-release builds. If they exist at all they're hidden features (look at all the debugging heap features Microsoft Visual Studio will give you if you can figure out how to turn it on), and most of the time you have to go buy expensive add-ons (like BoundsChecker or Purify) to do things that would be trivial for the compiler writer to manage with a little extra instrumentation and integration with the library system. Alas. I actually had better debugging tools at my disposal for C++ in 1994 than I do today (although Valgrind is not bad at all), and that really pisses me off given how much money Microsoft gets for the tools I use.

      --
      jim frost
      jimf@frostbytes.com
    47. Re:Yes and no... by b4dc0d3r · · Score: 1

      You're not supposed to detect the browser, you're supposed to detect the engine. Presence or absence of a feature is one way, but there are lots of other ways. One particular engine might have an existing but bad implementation, but it also has a CSS parsing bug. This is how IE gets worked around most of the time. The engine detects itself, but that's not scripting.

      I can change the user-agent of a browser, including IE. But I would expect the website to render properly even so. Yes I'm a web programmer and yes I know how much of a pain this is. But relying on an arbitrary identifier that can be updated when different software is installed is terrible. I can use Firefox with IETab, so my user-agent is misleading but accurately represents the engine (IETab sends an IE user-agent). Or I can change my user-agent to get around poor JavaScript detection, so the user-agent is wrong. Remember when IE changed to "Mozilla/4.0 (compatible; ...)"? It threw people off because they were looking for Mozilla user-agent, and it detected, and the site broke.

      Now, you can create a signature-based detection based on whether things exist. Not a single feature, but several together. Just like netcraft uses several data points to create a signature of a web server, even if it doesn't report useful headers like "X-Powered-by: ASP.NET".

      Create an array of functions or objects, which fills it with the functions or null. Convert it into 1 for exists, 0 for doesn't exist. Join the array (or skip this step and just think about it as binary), and convert from a binary representation to numeric. That's your signature based on the presence or absence of a feature. You just need to know which features to check for. Now you know which engine is being used, and you can know what works as expected. if (browser_engine = 34510) {do stupid IE processing } else {do normal processing}. What if a new browser comes along that matches the signature but doesn't behave? Same thing that happens if you check user-agent strings and then throw everything you don't know about into the "else" block, unexpected or undefined behavior. It's very unlikely that someone would make a browser that has the same existing and missing function signature but still have a poor implementation of something you rely on. This requires no more discovery than normal user-agent based techniques, since you still have to know that the browser exists to fix it.

      For added flair, you can set up a test case, and if it passes that's a 1 and it fails that's a 0, instead of whether it exists or not. This gets run once, on the client side, and stored in the cookie or querystring or hidden form, or runs every time on the client if you prefer.

      Not saying I'd use this, but it does answer your question.

    48. Re:Yes and no... by ukyoCE · · Score: 1

      Wouldn't the proper scenario here be that with the update to "OIE6/7/8" the IE-specific hacks stop working, and the web page defaults to functionality that works in all browsers?

      Same thing here - can Eclipse not run at all without using the -XX:MaxPermSize? Shouldn't it default to not using this argument if it sees an unexpected vendor name?

    49. Re:Yes and no... by peppepz · · Score: 1

      Let's put it another way: IIRC the least powerful iPhone has a 600 MHz CPU with a GPU, the cheapest Android phone I know (mine! :D) has a 500 MHz CPU of the same family and no GPU. It still handles Java's GC just fine.

    50. Re:Yes and no... by mysidia · · Score: 1

      700mb? You mean 700 MB?

      No I don't. I mean 700 million bits.

      The term "Megabytes" is ambiguous, because some say 1 Megabyte = 8,000,000 bits.

      Other people say 1 Megabyte = 8,388,608

      Bits is the preferred method of counting storage used, because the amount specified is unambiguous. Nobody can dispute how many bits there are in 700 * 10^6 bits.

    51. Re:Yes and no... by mysidia · · Score: 1

      No, because there are mutual incompatibilities. The same thing can't work correctly in all browsers.

      Also, it is logical for the default to be standards compliant behavior (just about everything except IE)

    52. Re:Yes and no... by BasilBrush · · Score: 1

      And why is GC allowed on the Android platform, whose applications are written in Java, and run flawlessly on hardware which costs half as much as the one of the iPhone?

      Flawlessly? You're claiming there are no flaws on Android apps? The miracle platform!

      Seriously though, GC is slower and more memory hungry than manual memory management. The same app using the same algorithms using Java with GC will be slower and use more memory than Obj-C using manual reference counted memory management. Whether you're going to notice it or not depends on how hard the app pushes the limits.

      Apple COULD allow GC on iPhone, and it would work. Someone might even claim flawlessly. But the fact is it would be slower and more memory hungry.

    53. Re:Yes and no... by BasilBrush · · Score: 1

      For trivial applications with exactly one developer, that might be true. For anything more complex than that, you run into problems of who should free what when.

      Speaking for the platform I'm currently most familiar with, that's not true. The rules are clear, and don't rely on individual programmer knowledge of an app. Obj-C on Cocoa uses manual reference counting. If you are interested in an object you retain it (increase the reference count by one.) If you create, copy or retain an object, then you release it. When everyone has released it, it is freed.

    54. Re:Yes and no... by nigelo · · Score: 1

      Bits is the preferred method of counting storage...

      I haven't seen anyone else describe storage used in millions of bits, so maybe it's just your preferred method?

      It certainly is unambiguous, though, once you've confirmed your units.

      --
      *Still* negative function...
    55. Re:Yes and no... by BasilBrush · · Score: 1

      Honestly, your typical smartphone has way more memory and CPU than servers did not so long ago, to say nothing of the set-top boxes for which Java was originally designed.

      That's true, but the typical smartphone is also presenting graphics with complex animated transitions of graphics. With large media to process.
      A simple image viewer can quite easily run out of memory unless care is taken with memory usage. Often the trouble with GC is that programmers are not aware of the memory they are using.

      It annoys me to no end that none of the standard C++ development environments builds in debugging aids as a matter of course on non-release builds. If they exist at all they're hidden features (look at all the debugging heap features Microsoft Visual Studio will give you if you can figure out how to turn it on), and most of the time you have to go buy expensive add-ons (like BoundsChecker or Purify) to do things that would be trivial for the compiler writer to manage with a little extra instrumentation and integration with the library system. Alas. I actually had better debugging tools at my disposal for C++ in 1994 than I do today (although Valgrind is not bad at all), and that really pisses me off given how much money Microsoft gets for the tools I use.

      Obj-C/Cocoa uses bounds checked array objects, and XCode ships with "Instruments" for dynamic analysis, and is as simple to run as selecting the menu option "Run with Performance Tool...". It also optionally compiles with LLVM which does a pretty good job of static analysis - finding a lot of those memory management errors that might have been made, before you even get as far as spotting them with Instruments.

      Xcode and the developer tools are free of charge.

    56. Re:Yes and no... by Chuck+Chunder · · Score: 1

      You're not supposed to detect the browser, you're supposed to detect the engine. Presence or absence of a feature is one way, but there are lots of other ways. One particular engine might have an existing but bad implementation, but it also has a CSS parsing bug. This is how IE gets worked around most of the time. The engine detects itself, but that's not scripting.

      While that is true (and very widely used) I'm not sure it's an inherently better solution.

      Typically the "parsing bug" that is used in the hack is unrelated to the bug being worked around. By using the bug to get desired behaviour it elevates the bug to a required feature that can't be fixed for backwards compatibility. It also assumes a similar bug won't crop up in another user agent which doesn't need the fix.

      Fundamentally I don't think it's wrong to switch based on user agent. At the end of the day the reason the user-agent header/field exists is precisely to let the server or application know what it is working with. I don't think the problem is using user-agents, rather that historically they have been used badly. Rather than being used to handle exceptions they have been used to present entirely different code paths to a select few browsers such that unexpected user-agents got a very bad experience.

      Even that probably stems from the fact that in the "old days" the browsers (Netscape, IE) were so incompatible on anything but the most basic level there wasn't much alternative than vastly divergent code paths.

      --
      Boffoonery - downloadable Comedy Benefit for Bletchley Park
    57. Re:Yes and no... by jd · · Score: 1

      What you want is a matrix. Not the matrix, just a matrix. Assuming a standard registry (similar to IANA) that documents what standard number a given feature should be assigned and what standard number a given manufacturer's reference implementation should be assigned (the formal specification always having a value of 0):

      One axis would denote each large scale feature, another would denote each sub-feature, another would denote the major versions of the API and yet another would denote all variants of the API. The node at the intersection of these would define the start and end minor and trivial version numbers supported.

      This would be an extremely sparse array, so you'd probably want to use a slightly different structure internally, but this would provide a completely agnostic way of accessing a list of all supported versions of all supported APIs.

      An alternative would be to have each and every function self-announcing, such that any external program can query what the exposed API is and be given back a complete list of calls (with parameters), return types and some vendor-neutral representation of the capabilities and limitations of the call. The problem with this approach is that it's a lot more complex to maintain and a lot slower to utilize. Having a static object which can be examined that provides all that information would have enormous advantages. Further, said static object could be on some server tree, not too far removed from how DNS works. That way, the program itself doesn't need to maintain all that information.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    58. Re:Yes and no... by anomaly256 · · Score: 1

      iPhone/iPad OS's version of Safari LIES about capabilities, says a lot of html5 stuff is supported when it isn't and just silently ignores it. This is why we still need to use user agents... sure they aren't reliable, or even accurate sometimes but that is the web browser designer's fault for not conforming to standards, not the web developer's.

    59. Re:Yes and no... by Anonymous Coward · · Score: 0

      Why does Eclipse care about this?

      Because Eclipse doesn't work if that size is too low, and by default, it is. Classes (and intern'ed Strings) always go in that permanent generation, and Eclipse has too many to fit in the default sizing.

      In other words, XX:MaxPermSize is the new Xmx. They are both fixed maximums and they both need to be sufficiently large for whatever program you're trying to run.

      (Why exactly the perm gen needs a fixed max size... is a very good question; other vendors' JVMs don't have that limitation).

    60. Re:Yes and no... by T-Bone-T · · Score: 1

      Teardowns usually give a pretty good idea.

    61. Re:Yes and no... by gmueckl · · Score: 1

      Eclipse isn't strictly breaking the Java memory model - only by being such a huge application. The permanent generation is used for constant values/objects and Java class bytecode. The latter turns out to be the critical issue here: With a couple of plugins installed, Eclipse can easily grow to such a huge binary code size that the default permgen size is not sufficient, which leads to weird out of memory crashes of Eclipse once the permgen is full. And the permgen has a fixed size that does not depend on stack and heap size.

      --
      http://www.moonlight3d.eu/
    62. Re:Yes and no... by Anonymous Coward · · Score: 0

      What does this have to do with web development? This is about Eclipse, the Java programming environment. It has nothing to do with user agents, but with Java Virtual Machines.

      Time to read up on what the terms everyone is using mean, XanC.

    63. Re:Yes and no... by SanityInAnarchy · · Score: 1

      That depends how "promptly" you really need, and how much you care about memory usage.

      One common performance hack is to use an allocation pool specifically for your own application, so you can malloc/free in large chunks.

      But garbage collection does exactly that, it just doesn't require you to manually track memory. It might even be faster at it -- you may shudder at the thought of stopping the world to collect garbage, but consider that while garbage collection is idle, you have very little memory-related code running at all, meaning your code is smaller and faster -- significantly so, when it means fewer cache misses. The garbage collector itself could likely fit into cache while it's running.

      There is something garbage collection can't account for, and that's freeing an object as soon as you're done with it -- but people often override malloc/free with some sort of pool management system. I suppose you could make the point that it's useful to free memory back to the system as soon as possible, but then, malloc/free, at the system level, have garbage-collection-like performance characteristics.

      About the only reasonable argument I can think of in favor of manual memory management is the same argument that's in favor of assembly language -- programmers are by definition better at deciding what should go into registers than compilers are, in that programmers could, at the very least, take the output of a compiler and hand-optimize it. People do still hand-tune performance-critical bits in assembly, and I think the ones who are doing it right are hand-tuning performance-critical bits in C, as is often the case in Perl, Python, and Ruby.

      But so far, I'm only comparing which gives you a faster system, in terms of either memory or CPU. I think GC is close enough, and often faster than manual memory management -- but even if it was a 2x or 4x performance hit, I'd much rather have a program even ten times slower that never segfaults or leaks memory.

      --
      Don't thank God, thank a doctor!
    64. Re:Yes and no... by XanC · · Score: 1

      The thread I replied to said this:

      So if Microsoft gets bought out by Oracle and the User-Agent string of IE6, IE7, and IE8 are immediately updated to be OIE6 7 or 8, respectively, with a surprise critical update..

      You are saying it's the web developers' fault, and not Oracle's, when this poorly conceived change breaks the web and compatibility for IE users?

      Time to pull your head out, AC.

    65. Re:Yes and no... by peppepz · · Score: 1

      Flawlessly? You're claiming there are no flaws on Android apps? The miracle platform!

      No, I didn't mean that Android has no flaws (sorry about the weakness of my English), in fact I have quite a history of Android-bashing here on Slashdot. I just meant that "perceived slowness" or "memory exhaustion" aren't among them.

      Apple COULD allow GC on iPhone, and it would work. Someone might even claim flawlessly. But the fact is it would be slower and more memory hungry.

      Yes, and it's a fact that objc applications will be slower and more memory hungry than applications directly coded in ARM assembly. But the world is moving in the opposite direction, end users are happy, and developers are even happier.

      By the way, shall we bet that sooner or later Apple will enable GC by default on all of its platforms?

    66. Re:Yes and no... by Anonymous Coward · · Score: 0

      700mb is 700 millibits, or 0.7 bit.

    67. Re:Yes and no... by BasilBrush · · Score: 1

      By the way, shall we bet that sooner or later Apple will enable GC by default on all of its platforms?

      I don't doubt that they will. It's certainly already a good idea to use it on Macs. Moore's law will deliver that position for iPhones too in time.

    68. Re:Yes and no... by ultranova · · Score: 1

      Obj-C on Cocoa uses manual reference counting. If you are interested in an object you retain it (increase the reference count by one.) If you create, copy or retain an object, then you release it. When everyone has released it, it is freed.

      Reference counting is a form of automatic, not manual, memory management. It also requires memory and has an overhead - all those counts need to be kept somewhere and updated. It also can't deal with cyclic references without the programmer manually using soft references. On the good side, it frees objects - and calls any associated destructors - as soon as possible, and doesn't require reading through the whole memory space like GC does. Ref counting is optimized for low, predictable latency, while GC is (usually) optimized for correctness and throughput.

      In other words, you aren't arguing for manual memory management here, you're arguing for one automation technique over another. That kinda proves my original point :).

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    69. Re:Yes and no... by Rexdude · · Score: 1

      This is because the -X options are non standard and subject to change. Different vendors may choose to implement different switches. I work on the IBM JDK, and it does not support -XX:MaxPermSize parameter, since that is specific to Sun/Oracle's HotSpot VM, and IBM Java uses its own J9 VM, which has different configuration parameters.

      --
      "..One hosts to look them up, one DNS to find them, and in the darkness BIND them."
    70. Re:Yes and no... by BasilBrush · · Score: 1

      Reference counting is a form of automatic, not manual, memory management.

      No. Auto garbage collectors can use reference counting. But when the programmer is using it it is most certainly manual. Obj-C/Cocoa has always used reference counting, but no one would say it had automatic memory management until the GC was introduced recently.

      It also requires memory and has an overhead - all those counts need to be kept somewhere and updated.

      It requires one integer per allocation. Plus an autorelease pool which is a container of pointers of objects returned from factory functions. Which I would guess is typically less than 1KB or perhaps a handful of KB.

      It also can't deal with cyclic references without the programmer manually using soft references.

      Again, I'm talking about manual memory management here, not GC. Circular references are not a problem. Circular references can be unlinked by the programmer just as easily as they've been linked. The only reason they are a problem for GCs is that they break cascading deallocs. In a manual reference counted system, if a programmer leaves a circular reference undeleted when it's no longer needed, that's simply a bug caused by his oversight, not a limitation of the system, as it would be for a GC.

      In other words, you aren't arguing for manual memory management here, you're arguing for one automation technique over another. That kinda proves my original point :).

      I'm afraid it only proves that you are not familiar with manual reference counting.

    71. Re:Yes and no... by ultranova · · Score: 1

      No. Auto garbage collectors can use reference counting. But when the programmer is using it it is most certainly manual. Obj-C/Cocoa has always used reference counting, but no one would say it had automatic memory management until the GC was introduced recently.

      Do you use something like

      obj.increaseRefCount();
      obj2 = obj;
      obj2.doSomething(); obj2.decreaseRefCount(); obj2 = null;

      or

      obj2 = obj; obj2.doSomething(); obj2 = null;

      The former is manual reference counting, the latter is automatic.

      Circular references are not a problem. Circular references can be unlinked by the programmer just as easily as they've been linked. The only reason they are a problem for GCs is that they break cascading deallocs.

      Circular references are not a problem for GCs. They are only a problem for reference counting, since the count never goes to zero for any object in the cycle.

      You do realize that reference counting and garbage collection are different algorithms, right?

      In a manual reference counted system, if a programmer leaves a circular reference undeleted when it's no longer needed, that's simply a bug caused by his oversight, not a limitation of the system, as it would be for a GC.

      Obviously any mistake is a programmer mistake in a manually managed system.

      I'm afraid it only proves that you are not familiar with manual reference counting.

      Could be. I prefer using garbage collected languages, after all :).

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    72. Re:Yes and no... by BasilBrush · · Score: 1

      The former. Your code in ObjC would be:

      obj2 = [obj retain];
      obj2.doSomething();
      [obj2 release];
      obj2 = null;

      The retain method increases the count, the release decreases the count and deallocs if it reaches zero. So yes, as I say it's manual reference counting.

      Circular references are not a problem for GCs. They are only a problem for reference counting, since the count never goes to zero for any object in the cycle. You do realize that reference counting and garbage collection are different algorithms, right?

      I understand this stuff well. GCs may use reference counting, they may use other algorithms. My point was that it's a problem for reference counting GCs, but not a problem for manual reference counting.

      Could be. I prefer using garbage collected languages, after all :).

      I'm happy either way. Whatever the needs are for the system in question. I enjoy the simplicity of Python with it's GC, but I find I get lazy and stop considering memory use at all, with the consequence of far more memory used than I need.

      Manual GC for Obj-C is pretty easy, you follow it's rules and it just works, and it's rare when you have to think through a memory allocation issue. Particularly as static and dynamic analysis finds the problems for you if you make a mistake. But doing it is a constant reminder of when you are not programming frugally.

      Next Mac App I do, I'll probably use the GC anyway. But even if/when a GC is available for iPhone, I probably won't use it.

  22. Then Eclipse Was Already Broken by Anonymous Coward · · Score: 0

    If this "broke" Eclipse, than it was already broken. Running out of memory because a string is not as expected?

    1. Re:Then Eclipse Was Already Broken by petermgreen · · Score: 1, Informative

      Not exactly

      The trouble is due to the way suns GC is designed it essentially needs to work with a limited size pool of memory. Make the pool too big and you end up with a machine that swaps instead of garbage collecting when memory gets tight under high load and/or a java app unnessacerally hogging memory other apps need. Make it too small and you get out of memory errors.

      Bloatware like eclipse needs the pool set large than the default, so there is code that sets that if it sees a VM that it thinks needs it setting. The trouble is the change to the vendor string meant that the VM was no longer being identified as one that needed it.

      That's my understanding of the issue anyway.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  23. Why design the VM that way? by Chemisor · · Score: 3, Interesting

    I don't get it. Why would you design the VM to have a fixed size address space in the first place? Anybody here remember the reason? And how come there is no standard option to change that size so Eclipse has to resort to platform-specific hacks to do it? 128M ought to be enough for everybody, I guess...

    1. Re:Why design the VM that way? by loubs001 · · Score: 5, Informative

      One reason... security. Prevents a unstable application from growing out of control, causing the whole system to start paging which with a GC becomes a diaster, dragging the whole system to a hault makign it unresponsive. So you set a heap size to "more than you'll ever need" so that it aborts if something goes wrong. There are technical advantages too. But still... I agree. The fixed heap limits are more of a pain than a benifit, especially when the default setting for the client JVM was 64MB until recently because it handnt been changed since around 1997.

    2. Re:Why design the VM that way? by Chemisor · · Score: 1

      Ok, here's some research. First, there are actually two memory areas in the VM, the heap and the Permanent Generation. It is a PermGen overflow that's causing Eclipse's problems, not heap overflow. As I understand from the linked article, PermGen is a place where VM data is stored; stuff like the class structure, method bytecodes (is that just a copy of the executable?), heap content information, etc. PermGen info used to be stored in the heap, but was moved out as a performance optimization, which incidentally is no longer relevant. I'm still not quite clear why PermGen has a fixed size. Evidently there are quite a few applications out there that routinely overrun PermGen and have to increase it. The cause seems to be people writing custom classloaders that bypass the "class already loaded" optimization, which I suppose makes sense for Eclipse where you keep modifying the class all the time and want to keep reloading it into the VM for testing. Apparently it is possible to write them in such a way that the resultant class metadata "leaks", resulting in overflow. Now, I think I'll just take a small break laughing my ass off at how those poor Java kids need 256M just to store their class definitions. I say, collect your garbage off my lawn and learn C++ already! It seems your fancy Java doesn't absolve you from the need to learn memory management after all :)

    3. Re:Why design the VM that way? by Anonymous Coward · · Score: 3, Insightful

      I don't think that's the reason. In fact, it's not a fixed size. You can specify min and max sizes for the VM. I believe the requirement is that the address space is contiguous.

    4. Re:Why design the VM that way? by Anonymous Coward · · Score: 0

      Im sorry, is 128M not enough for a fuckin text editor?

    5. Re:Why design the VM that way? by mysidia · · Score: 1

      Because, without a fixed size, the VM would always eventually grow to consume all available memory.

      Recall, Java programmers don't manage their memory, they rely on Java's garbage collection.

      GC is triggered when the amount of memory available to the VM drops below a specified threshold.

      If the VM can grow to use all available memory, that threshold won't ever be reached, until java is taking over all physical memory: even with the limit it tends to do so anyways, but i'm just saying.....

    6. Re:Why design the VM that way? by Vellmont · · Score: 1


      I don't get it. Why would you design the VM to have a fixed size address space in the first place? Anybody here remember the reason?

      Suns VM doesn't have a fixed size address space, per se. The --maxpermsize option in Sun's JVM adjusts the "perm gen" space. Perm gen space is supposed to be the "permanent generation" portion of memory that doesn't get garbage collected. I couldn't tell you about the specifics of why, but it's part of the garbage collection strategy that Sun uses in its JVM, and involves class loading.

      I know this, because permgen space is a resource that's often depleted by some applications that load a lot of classes over and over, like say an application server in a development environment. It's a quite ugly problem that winds up being a finger pointing exercise between Sun and the App developers. There are JVMs that don't use a permgen approach, notably IBM.

      --
      AccountKiller
    7. Re:Why design the VM that way? by PotatoFarmer · · Score: 1

      I find it ironic that you're laughing your ass off at the poor, ignorant Java kids when your grasp of the situation is so deficient.

      First off, permgen is not just class definitions. One of the largest consumers of permgen space is intern'd Strings. Secondly, despite its name permgen does have garbage collection in modern VMs; it's not as frequent as what is done to reclaim heap but it does happen. Thirdly, the issue with Eclipse is that it doesn't set a correct pergmen size at startup due to an acknowledged bug, this isn't a case where it's eating up too much space because of a funky classloader.

      No good programmer thinks that resource management is unimportant, regardless of language.

    8. Re:Why design the VM that way? by Vellmont · · Score: 1


      It seems your fancy Java doesn't absolve you from the need to learn memory management after all :)

      Partially true, but hardly as true as it is in C++. You can certainly run into the issue, but it's relatively isolated. If you desperately want to avoid it, use a different JVM that doesn't have permgen space. permgen isn't part of the JVM spec.

      --
      AccountKiller
    9. Re:Why design the VM that way? by Chemisor · · Score: 1

      > I find it ironic that you're laughing your ass off at the poor, ignorant Java kids when your grasp of the situation is so deficient.
      > First off, permgen is not just class definitions. One of the largest consumers of permgen space is intern'd Strings.

      Oh God, now I'm laughing even harder. I can't even imagine where you would get 256M of strings, much less see why you would want to keep them loaded in memory all at once. You see, there's this nifty thing called a "database" that you should be using for that purpose.

      > Thirdly, the issue with Eclipse is that it doesn't set a correct pergmen size at startup due to an acknowledged bug,
      > this isn't a case where it's eating up too much space because of a funky classloader.

      From my old-fashioned C++ perspective, any program that needs 256M of metadata is a defective program. firefox, for example, is a particularly badly designed program, IMO, and it only has a 118M resident set according to top as I'm using it to type this comment. That's all its internal data, not just the program description. 10-20M is more common, and I consider those bloated. Java programmers, on the other hand, are totally oblivious to bloat in their programs, and solve all their problems by throwing memory at them. It isn't that they care about my disdain for them, of course, but I can still have a good sad laugh at the whole situation and lament about how it is only likely to worsen in the future.

    10. Re:Why design the VM that way? by Anonymous Coward · · Score: 0

      Yes it is a rather large pain. I personally just built an App in work to parse XML files, the problem is most of them were over 50 megs...long story short once I added the PrintStream and saved some values... Every rev had to be tested through cmd using JAR's: I'm lazy I do not like this!

      Guess it is time to switch my IDE: this news report may have been the wake up call I needed.

      But back to your comment, fixed space is bad, not letting the user adjust the amt before the application starts is also annoying.

    11. Re:Why design the VM that way? by Anonymous Coward · · Score: 0

      Just glancing at other comments here, I gathered the setting in question was MaxPermGen, which is not at all the total heap size. It's only a small part of the total heap where compiled classes are stored and scratch space where JIT is done. Really large applications have to set it higher than the default, so do Java application servers like Tomcat/JBoss/Glassfish/whatever because they load an indeterminate amount of classes later on in life. This space contains the actual instructions that makes up your application. In a native application this space is not normally even writable! It is writable in Java because of JIT recompilation. Even with JIT on, the JVM bumps the permgen size up a fixed amount automatically.
      (if you have more in-depth knowledge of permgen, this isn't for you)

      I think it's reasonable to compare permanent generation size to the stack size of native applications. Is there a good reason for that to be dynamic, or for the developer not to know the requirements well in advance of handing it to customers? No...

      As to the actual heap, it can be dynamic, but has limits too. The heap size either doesn't really matter and you take the defaults or it REALLY matters and you dial it in to specifications. There is little middle ground where the end user should need to fuss with it. I call that a success. Even on single purpose systems with 100+GB of RAM, you don't tell the main application "hey Oracle/SQL/WE, just use whatever you can." You dial it in precisely to make it a tad more deterministic.

    12. Re:Why design the VM that way? by Anonymous Coward · · Score: 0

      No, no, no and once again no.

      Oh, and before I forget: no.

      The JVM has no (as in no) business restricting its own memory usage, especially when it is not asked to do so.

    13. Re:Why design the VM that way? by Anonymous Coward · · Score: 0

      Ok, here's some research. First, there are actually two memory areas in the VM, the heap and the Permanent Generation. It is a PermGen overflow that's causing Eclipse's problems, not heap overflow. As I understand from the linked article, PermGen is a place where VM data is stored; stuff like the class structure, method bytecodes (is that just a copy of the executable?), heap content information, etc. PermGen info used to be stored in the heap, but was moved out as a performance optimization, which incidentally is no longer relevant. I'm still not quite clear why PermGen has a fixed size. Evidently there are quite a few applications out there that routinely overrun PermGen and have to increase it. The cause seems to be people writing custom classloaders that bypass the "class already loaded" optimization, which I suppose makes sense for Eclipse where you keep modifying the class all the time and want to keep reloading it into the VM for testing. Apparently it is possible to write them in such a way that the resultant class metadata "leaks", resulting in overflow. Now, I think I'll just take a small break laughing my ass off at how those poor Java kids need 256M just to store their class definitions. I say, collect your garbage off my lawn and learn C++ already! It seems your fancy Java doesn't absolve you from the need to learn memory management after all :)

      If you're incapable of doing memory management, you're an incompetent boob of a coder.

    14. Re:Why design the VM that way? by ultranova · · Score: 1

      If the VM can grow to use all available memory, that threshold won't ever be reached, until java is taking over all physical memory: even with the limit it tends to do so anyways, but i'm just saying.....

      *Sigh*

      If you run out of memory, perform garbage collection. If you still don't have enough memory to satisfy an allocation request, allocate more from the OS. Also, if it's been less than a certain treshold, allocate anyway. If it's been more than a certain other treshold, and you have enough memory to perform the allocation, release memory to the OS.

      And if this was really too difficult for you to figure out, you shouldn't be allowed anywhere near C/C++.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

  24. If Slashdot was changed to DotSlash by Anonymous Coward · · Score: 0

    A lot of nerds would be broken too.

    Also Goatse is now kown as the Oracle of the Open Anus.

  25. Write once huh? by sjames · · Score: 4, Funny

    Write once, run nowhere?

    1. Re:Write once huh? by Carnildo · · Score: 1

      You must be new. The tagline for Java is "Write once, test everywhere".

      --
      "They redundantly repeated themselves over and over again incessantly without end ad infinitum" -- ibid.
  26. I wouldn't figure that... by DragonWriter · · Score: 3, Insightful

    You'd figure that if there were one Java app that they'd test, it'd be Eclipse.

    I wouldn't even think that that would be the Java IDE they'd be most likely to test -- I would pick NetBeans for that.

    I mean, saying that if they were going to test one app on a new Java update it would be NetBeans is like saying if Microsoft was going to test one app on a Windows update it would be iTunes.

    1. Re:I wouldn't figure that... by Luthair · · Score: 1

      Really it depends, if its the Sun guys, then its true Netbeans would probably be more tested. that may change as however, Oracle is heavily involved in the Eclipse community

  27. Oracle Responded Well by loubs001 · · Score: 5, Informative

    To Oracle's credit, when Eclipse dev's reported the issue (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6969236) Oracle immediately reverted the change within 2 days (http://hg.openjdk.java.net/hsx/hsx17/baseline/annotate/1771222afd14/make/hotspot_distro). They could have argued that it was Eclipse's fault for depending on the value in the first place and that rebranding their VM is something they should be allowed to do. But they put the best interest of other applications first. Still, it raises an issue that no one has really bothered with before. There are many Hostpot "vendor specific" options that are very commonly used. Almost every large application would configure heap sizes. There should be a standardized mechanism to define these options and thus avoid these very problems.

    1. Re:Oracle Responded Well by h4rr4r · · Score: 2, Interesting

      Oracle immediately reverted the change within 2 days

      I don't think that is what immediately means.

    2. Re:Oracle Responded Well by H0p313ss · · Score: 1

      Oracle immediately reverted the change within 2 days

      I don't think that is what immediately means.

      Immediate enough that by the time it hit Slashdot it had already been fixed for several days. Official updates had been available since Monday. This is last weeks news.

      Add to that the fact that the workaround had been passed around the Eclipse within 24 hours and I'd say that Oracle did fine.

      Even the Eclipse community agrees and blames the silly hack on the Eclipse launcher not Oracle.

      --
      XML is a known as a key material required to create SMD: Software of Mass Destruction
    3. Re:Oracle Responded Well by kcitren · · Score: 1

      Oracle immediately reverted the change within 2 days

      Immediately? or 2 days?

    4. Re:Oracle Responded Well by h4rr4r · · Score: 1

      I do not disagree with any of what you said, but 2 days != immediately.

      You must be new around here though, because Slashdot is always a week or more behind.

    5. Re:Oracle Responded Well by Anonymous Coward · · Score: 1, Insightful

      There should be a better way indeed. Under UNIX programs like 'autoconf' are commonly used to 'probe' for capabilities of things like the OS, the compiler, the linker, the file-system, et. al. Often these probes are just automatically generating a 'test' script that *tries* to do something in a specific (vendor / API / OS / filesystem / compiler / whatever) way and runs the script in a sub-process. If it fails to build / run correctly, the conclusion is made that "oops, I guess that option isn't going to work" and it generates a run-time / build-time configuration flag "Ouch, don't do that!" for the particular option and moves on. It does that like x1000 to handle all the various permutations of possible conditions.

      Considering all the methodological engineering available for doing things like "design by contract", interface definition languages, schemas, formal grammar definitions, SQL, XML, et. al. I often wonder why we're STILL resorting to such poorly specified and engineered "interface definitions" and "documentation" for things like program command line options, configuration file formats, data file formats, APIs, documentation, et. al. You don't have to look very deeply into almost any OS or major piece of software to find that at least some of these things are poorly / arbitrarily / not well specified and are just relying on ad hoc kludges for generating / parsing / using the code vs. the external dependencies of the file or configuration or documentation or whatever.

      Seems like it wouldn't take much OOP / UML / SQL / IDL / whatever design to at least formally specify what inputs / outputs / interfaces your particular application provides and consumes and then be able to automatically validate those as compatible versus whatever dependency resources it has to interface with.

      There's "JavaDoc" for the JAVA platform APIs themselves, but something like this implies that the actual command line or VM capabilities themselves aren't necessarily formally defined which is bizzarre.

      JAVA's system.getProperties attributes can be inquired to tell you a lot about a particular runtime platform's capabilities, but obviously having to rely on
      java.vendor Java Runtime Environment vendor
      java.vendor.url Java vendor URL
      java.home Java installation directory
      java.vm.specification.version Java Virtual Machine specification version
      java.vm.specification.vendor Java Virtual Machine specification vendor
      java.vm.specification.name Java Virtual Machine specification name
      java.vm.version Java Virtual Machine implementation version
      java.vm.vendor Java Virtual Machine implementation vendor
      java.vm.name Java Virtual Machine implementation name
      java.specification.version Java Runtime Environment specification version
      java.specification.vendor Java Runtime Environment specification vendor
      java.specification.name Java Runtime Environment specification name ... is not sufficiently rich since then you have to hard-code things like what derivative capabilities and command interface and such depends on a given version of a given runtime environment.
      There ought to just be a standard IDL database of what the actually available APIs or capabilities are available and then have the thing take advantage of those automatically or at least automatically check for interface / operational compatibility in a way better than "run me and see if I crash". Not very design-by-contractish.

    6. Re:Oracle Responded Well by Anonymous Coward · · Score: 0

      I do not disagree with any of what you said, but 2 days != immediately.

      You must be new around here though, because Slashdot is always a week or more behind.

      Sounds like you are saying something that would conveniently fit into a damned if you do (QA), damned if you don't (QA) statement. 2 days is a pretty fast turn around, for a company as large as Oracle, or pretty much any shop for that matter.

    7. Re:Oracle Responded Well by ShakaUVM · · Score: 1

      There should be a better way, indeed. I used to work doing Java development.

      Java was built with the braindead/naive idea that it would run equally on all platforms. So when we found that the implementation on some obscure platform had a bug, we couldn't just #define a way around it like you can in C. Therefore you have to use more hackish tricks like these.

      If you really want to horrify Java coders, think about what would happen if all the com.sun libraries got renamed to com.oracle. =) =)

    8. Re:Oracle Responded Well by h4rr4r · · Score: 1

      I do not disagree with any of what you said, but 2 days != immediately.

    9. Re:Oracle Responded Well by Anonymous Coward · · Score: 0

      When the Eclipse devs discovered the issue, why didn't they fix it themselves instead of forcing a second update to everyone that uses java?

    10. Re:Oracle Responded Well by davecb · · Score: 2, Informative

      Indeed: Oracle now employs my former Sun boss, David J. Brown, who pointed out on the order of ten (10!) years ago that one needed to distinguish between stable and unstable interfaces. He then labeled all the interfaces with the number of their standard document, and all the unstable ones SUNWprivate.

      And yes, you can ask the JVM if any of the Java interfaces are supported, so switching on the name of the company that produced them is unnecessary. The company name is neither a necessary nor a sufficient test for anything. For those kinds of tests you use this reflective thingie they invented...

      --dave

      --
      davecb@spamcop.net
    11. Re:Oracle Responded Well by mysidia · · Score: 2, Funny

      The definition of 'immediately' depends on who you are. If you're MS patching a security vulnerability, "immediately" may mean 60 to 90 days.

    12. Re:Oracle Responded Well by pspahn · · Score: 2, Funny

      I think he heard you, just give him a couple days to figure it out.

      --
      Someone flopped a steamer in the gene pool.
    13. Re:Oracle Responded Well by complete+loony · · Score: 1

      But, what went wrong in this case is contained within a small bootstrap application for starting the VM. How are you supposed to use reflection to identify the set of custom startup options your application needs in order to function within a specific vendors JVM implementation?

      --
      09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
    14. Re:Oracle Responded Well by prionic6 · · Score: 1

      And yes, you can ask the JVM if any of the Java interfaces are supported, so switching on the name of the company that produced them is unnecessary. The company name is neither a necessary nor a sufficient test for anything. For those kinds of tests you use this reflective thingie they invented...

      --dave

      Interesting, how would you query the java vm (before calling it's binary), whether it supports -XX:MaxPermSize? I'd say you could execute "java -X" to see the -X parameters that are supported, but -XX: seems to be out of control. Those are documented at http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html and maybe it was dumb of the eclipse staff to try detect a sun vm by looking for the company name... I'd even say the eclipse launcher is a complete hack, but necessary. JAR-Files are not sufficient as directly executable files, because launching a jar often needs to be done with the correct settings for the java vm executable, like in this case to set memory or permgenspace (or on osx, -XstartOnFirstThread for any SWT app). That completely fucks up distribution of java software as JARs.

    15. Re:Oracle Responded Well by prionic6 · · Score: 1

      This is the code used by eclipse to detect a SUN vm (http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.equinox.executable/library/win32/eclipseWin.c?view=markup):

      int isSunVM( _TCHAR * javaVM, _TCHAR * jniLib ) {
          _TCHAR *vm = (jniLib != NULL) ? jniLib : javaVM;
          int result = 0;
          DWORD infoSize;
          DWORD handle;
          void * info;

          _TCHAR * key, *value;
          size_t i;
          int valueSize;

          if (vm == NULL)
              return 0;

          infoSize = GetFileVersionInfoSize(vm, &handle);
          if (infoSize > 0) {
              info = malloc(infoSize);
              if (GetFileVersionInfo(vm, 0,  infoSize, info)) {
                  TRANSLATIONS * translations;
                  int translationsSize;
                  VerQueryValue(info,  _T_ECLIPSE("\\VarFileInfo\\Translation"), (void *) &translations, &translationsSize);

                  /* this size is only right because %04x is 4 characters */
                  key = malloc( (_tcslen(COMPANY_NAME_KEY) + 1) * sizeof(_TCHAR));
                  for (i = 0; i < (translationsSize / sizeof(TRANSLATIONS)); i++) {
                      _stprintf(key, COMPANY_NAME_KEY, translations[i].language, translations[i].codepage);

                      VerQueryValue(info, key, (void *)&value, &valueSize);
                      if (_tcsncmp(value, SUN_MICROSYSTEMS, _tcslen(SUN_MICROSYSTEMS)) == 0) {
                          result = 1;
                          break;
                      }
                  }
                  free(key);
              }
              free(info);
          }
          return result;
      }

    16. Re:Oracle Responded Well by davecb · · Score: 1

      So it's a temporary hack in Eclipse while the Sun bug gets fixed (;-))

      Reminds me of a program named "netnews", that was going to be used for a few weeks in 1979, until Duke University set up an X.25 link to the University of North Carolina.

      --dave

      --
      davecb@spamcop.net
    17. Re:Oracle Responded Well by peppepz · · Score: 1

      Java was built with the braindead/naive idea that it would run equally on all platforms.

      And it's the language that got closer to that achievement.
      Of course every software architecture has its limits, and in particular, no language can stop a programmer from making bad choices (although the original Java strove to, and received quite a bunch of complains from "good" programmers for this reason).

      So when we found that the implementation on some obscure platform had a bug, we couldn't just #define a way around it like you can in C. Therefore you have to use more hackish tricks like these.

      Using #define would produce an entire set of incompatible, specific binaries for each of those obscure platforms. I can't see how this would be less "hackish" than inserting runtime checks.

      You can also use cpp on the .java sources if you really miss that thing!

      If you really want to horrify Java coders, think about what would happen if all the com.sun libraries got renamed to com.oracle. =) =)

      That would distinguish regular coders, from "coders" who chose to use proprietary, unpublished, deprecated apis despite the fact that all documentation and tools warned not to make use of them. And nothing of value would be lost :) .

    18. Re:Oracle Responded Well by RivieraKid · · Score: 1

      But, what went wrong in this case is contained within a small bootstrap application for starting the VM. How are you supposed to use reflection to identify the set of custom startup options your application needs in order to function within a specific vendors JVM implementation?

      Here's a thought - write the bootstrapper in Java, have it use reflection to get all the good stuff you're looking for, and then execute the real application with sane options.

      With just a tiny little bit of lateral thinking, it really doesn't have to be a chicken and the egg scenario. You may still need a wrapper to get the bootstrapper running, but that's not a big deal when you look at the alternative.

      Unfortunately, the Eclipse devs, and many people right here on Slashdot don't seem to grasp the simplicity of the solution, instead getting themselves caught in the chicken and egg trap.

      --
      "Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves
  28. OOM? by nblender · · Score: 1

    Ignoring the 'one line change', does it seem appropriate that changing a company string should cause an "Out of memory" error? I realize the OOM error happened about 8 stack frames later but I mean, seriously ?

    1. Re:OOM? by DragonWriter · · Score: 1

      Ignoring the 'one line change', does it seem appropriate that changing a company string should cause an "Out of memory" error? I realize the OOM error happened about 8 stack frames later but I mean, seriously ?

      Apparently, the VM sniffing was done to determine whether to use a particular mechanism to adjust memory settings. So, while it probably should have thrown up a "this is an unknown VM and things might not work" type of error at least the first time it encountered the unknown VM, its not entirely surprising that on an VM that it didn't know how to handle it ended up getting a memory-related error.

    2. Re:OOM? by H0p313ss · · Score: 1

      Ignoring the 'one line change', does it seem appropriate that changing a company string should cause an "Out of memory" error? I realize the OOM error happened about 8 stack frames later but I mean, seriously ?

      It was a "clever hack" is that turned out to be a bug waiting to happen. This is generally acknowledged within Eclipse. Shame on Eclipse, kudos to Oracle for bending over backwards to help a competitor.

      --
      XML is a known as a key material required to create SMD: Software of Mass Destruction
  29. Re:It goes both ways by beanluc · · Score: 1

    Yeah but #33063012

    --
    Say it right: "Nuc-le-ah Powah".
  30. What? by countertrolling · · Score: 1

    People actually trust automatic updates? I have to admit I find that rather humorous...

    --
    For justice, we must go to Don Corleone
    1. Re:What? by Thundersnatch · · Score: 2, Insightful

      Do you trust apt/yum/portage/whatever on your Linux/BSD distro of choice? Same thing... you trust that the developer's code-signing and key management policies are solid, and they won't dick you by releasing something really bad.

      If you're not turning on automatic updates on Windows boxes (and even MacOS and Linux boxes), you might be part of the problem. Yes, you should have centralized patch review and deployment in place for all the machines you manage... but make sure it is all of them. All my company's servers and workstations have managed deployments, but I've configured Mom's laptop to get all updates ASAP straight from the vendor so I don't have to fuck with it and she remains malware-free. She hasn't had major breakage from an automatic update from any vendor in more than a decade (unless you count Adobe, whose best code is still horribly broken). There are probably 20-30 machines I "manage" informally at any given time, and I don't want to tackle patching them interactively, or deal with setting up my own WSUS or apt repository for them.

    2. Re:What? by countertrolling · · Score: 1

      Do you trust apt/yum/portage/whatever on your Linux/BSD distro of choice?

      Nope

      Same thing...

      Yep...

      If you're not turning on automatic updates on Windows boxes (and even MacOS and Linux boxes), you might be part of the problem.

      Nu'uh

      I've configured Mom's laptop to get all updates ASAP straight from the vendor... She hasn't had major breakage from an automatic update from any vendor in more than a decade (unless you count Adobe, whose best code is still horribly broken)

      What?

      To steal a proverb:

      One martini is not enough
      Two martinis is too much
      Three martinis is not enough...

      What does that have to do with the price of rice? Beats me... but thanks for making my point. Trust, but verify.. first

      --
      For justice, we must go to Don Corleone
  31. Re:Fucking Retard by sjames · · Score: 3, Funny

    Look again, I most certainly am NOT fucking you!

    Lemme guess, you're sweating bullets wondering if you're going to spend all night pissing on fires while the C guys laugh at you and drink beer?

  32. Why check for vendor? by ilsaloving · · Score: 1

    I'm having trouble understanding why someone would code an application in a widely implemented language like Java, yet check for the vendor of the VM. It would make more sense to check availability of specific libraries or what have you, wouldn't it?

    1. Re:Why check for vendor? by Anonymous Coward · · Score: 1, Interesting

      Because the Sun VM has a bug in it that eclipse works around if it can detect that it's indeed the Sun VM. Nothing to do with library support (and the existence of "sun.*" classes wouldn't help since most everyone else implements those too)

    2. Re:Why check for vendor? by peppepz · · Score: 1
      Because eclipse depends on non-standard, specific behavior of the Sun VM so it checks if it can detect that it's indeed the Sun VM.

      There, fixed that for you.

  33. Re:Reminds me of some windows progs back in the da by DarkKnightRadick · · Score: 1

    I don't program and even I know better than that. Sheesh.

    --
    "There is a way that seems right to a man, but its end is the way of death." Proverbs 16:25 (NKJV)
  34. may windwos apps are stuck in the 9x system with by Joe+The+Dragon · · Score: 1

    may windows apps are stuck in the 9x system with witting to there own folder and little to no per user stuff.

  35. Oracle +1 by nurb432 · · Score: 0, Offtopic

    Oracle doing the right thing for the right reason, AND getting credit for it.. Who would have imagined?

    Was that a pig i just saw fly by my window?

    --
    ---- Booth was a patriot ----
  36. Re:OOM? Yes Really. by Anonymous Coward · · Score: 2, Insightful

    Read the bug. It's not the heap or the stack that is running out of memory (something that is completely within the developer's control), it's the space the VM uses internally for storing class definitions. All big apps( ie those with a lot of classes) that use Sun's VM have to configure the permanent generation space size or they hit this issue. As this configuration is vendor specific and eclipse is designed to support multiple VM vendors, the only way to tell if the custom Sun -XX option should be set is the company name. I agree with the previous commentator, this is a flaw in Java:

    "There are many Hostpot "vendor specific" options that are very commonly used. Almost every large application would configure heap sizes. There should be a standardized mechanism to define these options and thus avoid these very problems."

    And I mean from within the VM too.

    BTW: java -X which is suppose to give you a listing of non-standard options doesn't include all of the Sun / Oracles options so you can't even uses that...

  37. This is why I use Open Source by Anonymous Coward · · Score: 1, Funny

    Because Open Source software never breaks.

    1. Re:This is why I use Open Source by marcello_dl · · Score: 1, Insightful

      > Because Open Source software never breaks.

      Citation needed.

      --
      ---- MISSING MISCELLANEOUS DATA SEGMENT --- [sigdash] trolololol
    2. Re:This is why I use Open Source by persicom · · Score: 3, Insightful

      Unless closed-source schmucks start mucking with it. Helloooooo. QA? Testing? ANYONE?

  38. Better approach? by istartedi · · Score: 0

    It's understandable that they might not want to run on just anybody's Java. For that matter, they might have only tested on a particular version. I haven't looked into it, but it seems likely there's a standard API to check Java's version. It seems like the proper way to address this is to pop up something that says, "This is Java vX.Y from company Foo, we haven't tested with it so it may not work. Conntinue? (button) Do not show this dialog again (checkbox)".

    Plainly, whatever they did that caused an "out of memory" error was quite a goof.

    --
    For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    1. Re:Better approach? by Vellmont · · Score: 1


      It's understandable that they might not want to run on just anybody's Java.

      That's not the issue at all. Identifying the jvm vendor is simply a means to identify if the permgen size should be set, which is a vendor specific setting. Eclipse requires a large permgen space on the sun JVM. When this didn't get set it ran out of permgen memory, and thus the error.

      I haven't looked into it, but it seems likely there's a standard API to check Java's version.

      Given that Eclipse operates in this odd way, my guess is there's no standard API to check. I do agree it's a stupid workaround though.

      --
      AccountKiller
    2. Re:Better approach? by istartedi · · Score: 1

      That's not the issue at all. Identifying the jvm vendor is simply a means to identify if the permgen size should be set, which is a vendor specific setting

      Ahhh... so what Java really needs is something like #ifdef, so you can work around--Hey! Waaaaait a second. Wasn't it supposed to eliminate that?

      Heheh. All this time, and I'm still glad I'm not a Java developer.

      --
      For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    3. Re:Better approach? by Vellmont · · Score: 1


      Ahhh... so what Java really needs is something like #ifdef, so you can work around-

      Not really. It's a runtime configuration. It's something you can just set via command line and distribute the JVM packaged along with your product.

      Heheh. All this time, and I'm still glad I'm not a Java developer.

      We don't live in a perfect world. I'm sure I could point out several flaws of whatever language you personally choose. The permgen issue has existed for years, but it's relatively minor. If you're going to pick something to complain about in Java, at least pick something that's a real issue.

      --
      AccountKiller
    4. Re:Better approach? by istartedi · · Score: 1

      Of course we don't live in a perfect world. C and C++ never promised "write once, run everywhere". Java did. That's why it's flawed. Really, I wouldn't have any problem with Java if they had simply done what would have made sense: Run C++ in a virtual machine. In other words, the MS approach minus the new C# language. They would have accomplished roughly the same thing, in a much more straightforward way. Instead they gave us C++ with a GC, a little different syntax, and then evolved it from there. I was, and continue to be, unimpressed.

      --
      For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    5. Re:Better approach? by Vellmont · · Score: 2, Informative


      Of course we don't live in a perfect world. C and C++ never promised "write once, run everywhere". Java did. That's why it's flawed.

      Really? That's the big flaw? Java works quite well cross platform, thank you. Please try again and find some real flaws rather than the illusory ones people tried to pin on it 10 years ago.


      They would have accomplished roughly the same thing, in a much more straightforward way. Instead they gave us C++ with a GC, a little different syntax, and then evolved it from there. I was, and continue to be, unimpressed.

      Some of us actually think not having to manage resources like memory on an active basis to be an advantage. Fine if you don't, but snide remarks don't really impress me. Java most certainly has flaws, but you have to actually know the language and work with it to identify them, not just take a couple pot shots from comments you've heard from others.

      --
      AccountKiller
    6. Re:Better approach? by istartedi · · Score: 1

      It had been a while since I got into this kind of thing on /., or anywhere on the Internet. I recognize it as the social equivalent of an anti-pattern, and went for a short walk. I feel much better now. Good-night.

      --
      For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
  39. Re:It goes both ways by Zancarius · · Score: 1

    I like that approach. Then I can forget about who I was supposed to blame!

    --
    He who has no .plan has small finger. ~ Confucius on UNIX
  40. Re:Reminds me of some windows progs back in the da by spongman · · Score: 1

    LOL, I used to have windows on my D: drive (in d:\winnt), and my C: drive was my CD-ROM.

    i can't tell you how many times my CD tray would open followed shortly by some poorly written piece of crap crashing.

  41. Not Oracle's fault by gig · · Score: 4, Insightful

    Actually, it was a great idea to change the company field since it maintained accuracy.

    The problem is the apps that were poorly coded and assumed that Java would be owned by Sun for the next thousand years. They deserved to break.

    1. Re:Not Oracle's fault by pspahn · · Score: 1

      This is exactly how I feel about my previous Ask Slashdot re: online education.

      I was rushed and was naive. In the long run, however, I am glad that I caught my mistake when I did (and thanks for the great feedback everyone).

      As an update, I am going to withdraw from UoPx soon and will be transferring to Regis University. While not the most ideal of schools (it is Jesuit, I am agnostic, hahaha, that should be fun!) it does seem like a relatively good fit. And hey, I might even try out for the baseball team.

      --
      Someone flopped a steamer in the gene pool.
    2. Re:Not Oracle's fault by C_Kode · · Score: 2, Insightful

      Wrong, it should have the App and version. (Java: version#) and thats it.

      It's companies needing to attach their name to everything (marketing) that causes the problem.

      Redhat suffers from the same problem. It's why CentOS has /etc/redhat-release file. It should just be /etc/release for ALL OSes. (meaning Unix too)

      If they did that, any app would know exactly what OS they were running on without multiple checks. Easy breezy.

    3. Re:Not Oracle's fault by Dhalka226 · · Score: 1

      The company field should not contain the company name?

      The problem is obviously differences between Java distributions, or developers wouldn't bother polling the company field to begin with.

      There's nothing wrong with what Oracle did. In fact, the Eclipse people should have seen it coming since just about every company re-brands things after an acquisition. It's not worthy of a story, much less one blaming Oracle.

    4. Re:Not Oracle's fault by quantaman · · Score: 1

      It's not quite that simple. If you read the bug reports it sounds like the Sun (ok Oracle) VM has a lower than usual memory limit, thus requiring the "-XX:MaxPermSize" argument (which may not always be available) to be used to increase the memory limit.

      Therefore you need to use -XX:MaxPermSize for Sun, but for another VM the argument might not only be unnecessary, but break that VM since it's an unsupported argument. Eclipse, and other applications also running into memory limits who want to fix the issue automatically, need two things, 1) a way to detect the memory limit, and 2) a way to detect if -XX:MaxPermSize is supported. Since they've apparently written an isSunVM method to try to solve this issue I'm guessing 1&2 aren't available.

      Yes it's an ugly hack, but it sounds like it's a hack necessitated by a shortcoming in Java.

      As for Oracle it's a bit of bad luck on their part, but I am a little surprised that at no point in their QA did someone try running Eclipse, the most popular Java IDE, on their update.

      --
      I stole this Sig
    5. Re:Not Oracle's fault by swordgeek · · Score: 1

      It's still an incorrect hack.

      Go read this article: http://it.slashdot.org/comments.pl?sid=1735848&cid=33066158

      There is an approved interface to figure this out, it's staying constant, and Eclipse didn't use it.

      --

      "People who do stupid things with hazardous materials often die." -- Jim Davidson on alt.folklore.urban
    6. Re:Not Oracle's fault by quantaman · · Score: 1

      Partially, according to that post java.vendor and java.vm.vendor also have the Sun ID and those were never changed, eclipse was looking for the name in another (less standard?) location which did get changed.

      So if this is the case and eclipse did mess up by looking for the name from a non-standard location, but my comment is still valid as to the issues with Java.

      What was described is not "an approved interface to figure this out", it's an approved interface to figure out the vendor, but it says nothing about the vendor and those properties still need to be done on an ad-hoc per vendor basis.

      --
      I stole this Sig
    7. Re:Not Oracle's fault by Luthair · · Score: 1

      Its pretty clear from your post that you aren't particularly familiar with Java development. Some JVMs have arguments which aren't part of the standard, so if your application wants, or needs to take advantage of these then you need to start mucking about with VM detection.

  42. How about uname? by KonoWatakushi · · Score: 4, Insightful

    Shh! Don't tell Oracle that the uname command returns SunOS, or all hell will break loose.

    The obsession with removing the Sun name from everything is petty in the extreme, to say nothing of tacking Oracle on where inappropriate, ie. Oracle Solaris. It as if Larry were a kid who felt the need to stamp his name on all of his possessions.

    1. Re:How about uname? by El_Oscuro · · Score: 1

      When I started Open Office for the first time after upgrading Ubuntu, it had the Oracle logo on it. Truly evil.

      --
      "Be grateful for what you have. You may never know when you may lose it."
    2. Re:How about uname? by icepick72 · · Score: 1

      Oracle owns it. This is less likely a Larry thing and more likely regular marketing dept changes. From a pure business standpoint (ignoring the technical issue for a moment) why is there anything wrong with a name change to bring a new acquisition in line with yourself? There's not. If you were to keep the original company name on every product acquired from every company acquired, especially when the size or Oracle, it would become hard to manage everything.

    3. Re:How about uname? by Anonymous Coward · · Score: 0

      The obsession with removing the Sun name from everything is petty in the extreme, to say nothing of tacking Oracle on where inappropriate, ie. Oracle Solaris.

      In business it has a case in having single brand of software for everything, much like Microsoft has "MS ".

      Likely reason is to simplify product line-up.

    4. Re:How about uname? by MistrBlank · · Score: 1

      Larry was basically the last kid picked. He's an arrogant prick that isn't happy that his name isn't as well known as Steve Jobs or Bill Gates so now he has to slather his company name all over everything.

      Did you not see him in Iron Man? Yeah it wasn't a coincidence he was in it.

      As far as I'm concerned, the rest of the world needs to get off the Oracle DB dependence and the buyout of Sun was BS as it eliminates one of their few competitors in the open source market.

    5. Re:How about uname? by Trails · · Score: 1

      It's not petty, it's rebranding.

    6. Re:How about uname? by KonoWatakushi · · Score: 2, Insightful

      Yes, Oracle owns it; they bought it. You may justify it however you want, but it doesn't make it right. What Oracle is doing is dishonest; it is akin to replacing the manufacturer's label with your own.

      I don't stamp my name on someone else's product even after I purchase it, and nor do most other companies after acquisitions where they continue to sell products which are clearly not of their own creation. If the company brand has recognition, it is usually kept, and if not, the changeover typically takes place with new product lines. This is clearly not appropriate for an established OS with decades of development.

      Oracle is fooling no one, just making themselves look like asses.

    7. Re:How about uname? by Anonymous Coward · · Score: 2, Insightful

      Umm.. Rebranding is pretty common in business acquisitions. There are some cases where the business case not to rebrand exists, but otherwise its very standard practice. The tech industry is full of countless examples.

      It's hardly dishonest - companies are merely legal entities, the people have a stake in the company come and go. CEOs change, employees change, investors change, and so forth. The company that existed 10 years ago may still exist today but could, because of management shakeups, layoffs, employee turnovers, and 10 years worth of buying and selling on the market, be essentially a different company in many regards. Is an acquisition fundamentally different? An acquired company just goes through some legal procedures in which the management tasks, ownership, and financials are folded into the acquiring company.

    8. Re:How about uname? by Anonymous Coward · · Score: 0

      MySQL isn't a competitor to Oracle and other than that, there was little overlap with Sun's shit.

    9. Re:How about uname? by tokul · · Score: 1

      It as if Larry were a kid who felt the need to stamp his name on all of his possessions.

      He paid 7 billion for that and he wants something in return. Or he wants to destroy all traces of Sun and in 5-10 years people will remember only Oracle Java, Oracle Office and Oracle servers&desktops.

    10. Re:How about uname? by Anonymous Coward · · Score: 0

      nor do most other companies after acquisitions where they continue to sell products which are clearly not of their own creation

      Of course. Microsoft never put their name on Spyglas Mosaic, BMW never put their name on the Mini, and the Sears Tower isn't now called the Willis Tower.

      Oracle is fooling no one, just making themselves look like asses.

      No actually I think that's you.

    11. Re:How about uname? by Anonymous Coward · · Score: 0

      > I don't stamp my name on someone else's product
      > even after I purchase it, and nor do most other
      > companies after acquisitions where they continue
      > to sell products which are clearly not of their
      > own creation

      Counter-examples just off the top of my head:

      Boeing C-17
      Microsoft Visio
      Google Earth

      None of these products were the current brand's own creation.

      It's a common practice.

    12. Re:How about uname? by Anonymous Coward · · Score: 0

      Oblig car analogy:
      When you buy a car, each part is not still labeled by the original manufacturer, but by the company owning the final product.

      When parts of Java are programmed, the original programmer does not get a component named after him. It is named after Sun. If they buy some component and integrate it, it is not named from the developer (usually) but by the final owner, Sun.

      Java is a component of the enterprise offerings from Oracle. It is suitable that they rename it after Oracle.

      To call them foolish looking and asses for that has the reverse effect of what you wanted.

    13. Re:How about uname? by toby · · Score: 2, Insightful

      Quite so. It's also a potential marketing error. Sun's hardware and software engineering, pre-Oracle, had one of the best reputations in the industry (even if their sales organization wasn't so highly regarded).

      McDonald's owns Chipotle, but that doesn't mean you can only buy McBurritos there, because that would likely send exactly the wrong message. Just like McDonald's, Oracle's brand has various negative connotations. Another example: Microsoft is very careful about this - for example, Xbox marketing materials often carry no Microsoft branding.

      Ownership certainly does not mean you must piss all over everything to mark it as yours.

      --
      you had me at #!
    14. Re:How about uname? by Anonymous Coward · · Score: 0

      I don't stamp my name on someone else's product even after I purchase it,

      You would if you were the *manufacturer* of that product, not the end user. Oracle didn't change the copyright on earlier version of Java, it's doing so in the new releases *they* are developing.

      and nor do most other companies after acquisitions where they continue to sell products which are clearly not of their own creation. If the company brand has recognition, it is usually kept, and if not, the changeover typically takes place with new product lines.

      I've seen the opposite happen often, the brand name is changed slowly (to let the customers acquaint themselves with the change) but constantly. I've seen it happen all the time (e.g. Daewoo -> Chevrolet, Digital-> Compaq, ...), and Sun itself used to rebrand the product lines they acquired (VirtualBox, MySQL, Netbeans).

    15. Re:How about uname? by Matt+Perry · · Score: 1

      What Oracle is doing is dishonest; it is akin to replacing the manufacturer's label with your own.

      Except in this case, Oracle is now the manufacturer. It's wholly appropriate to change the label.

      --
      Slashdot: Failed Car Analogies. Amateur Lawyering. Anecdote Battles.
    16. Re:How about uname? by swordgeek · · Score: 1

      Yes, they own it. That's fine. What they're trying to do now, though, is say that they _always_ owned it.

      You can now get information on "Oracle Solaris 9 and earlier", and that is utterly disingenuous. Solaris 8 was not, and will never be an Oracle product.

      --

      "People who do stupid things with hazardous materials often die." -- Jim Davidson on alt.folklore.urban
    17. Re:How about uname? by Mal-2 · · Score: 1

      So that's why my spiffy Altec Lansing stereo Bluetooth headset says Plantronics on it -- because companies don't like to stamp their names on things when they buy out companies.

      Oh, wait...

      --
      How is the Riemann zeta function like Trump rallies? Both have an endless number of trivial zeros.
    18. Re:How about uname? by Kyusaku+Natsume · · Score: 1

      Aside from that, they are brushing aside a well established brand in hardware and software. Next, they will be selling hardware in the blue and white color scheme or what? I undestand the change if Sun and Oracle overlapped significantly in they offers, but this is not the case like the merge of DEC/HP/Compaq.

      --
      Mexico: 100% conservative's America now!
    19. Re:How about uname? by RivieraKid · · Score: 1

      Quite so. It's also a potential marketing error. Sun's hardware and software engineering, pre-Oracle, had one of the best reputations in the industry (even if their sales organization wasn't so highly regarded).

      McDonald's owns Chipotle, but that doesn't mean you can only buy McBurritos there, because that would likely send exactly the wrong message. Just like McDonald's, Oracle's brand has various negative connotations. Another example: Microsoft is very careful about this - for example, Xbox marketing materials often carry no Microsoft branding.

      Ownership certainly does not mean you must piss all over everything to mark it as yours.

      No, but it does mean you can, because it is yours - that's what "ownership" means.

      --
      "Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves
    20. Re:How about uname? by Anonymous Coward · · Score: 0

      This isn't marketing, it is changing the company name in a string in the software, which is quite possibly the worst place to market the change of ownership (if that was the intent, which it wasn't). I don't have an Xbox360 to hand to check, but the original Xbox has the Microsoft logo on the front, so it's not like Microsoft hide the fact they own and make the Xbox, so why should Oracle hide the fact that they now own and make Java? This is just what happens when one company buys another, perhaps not always, but most of the time.

  43. Even if that is the case by Anonymous Coward · · Score: 0

    The application shouldn't crash with OutOfMemoryError. If such a change causes *that* error, there is SOME flaw in the software design. Now, it is somewhat easy to understand that the developers didn't believe they should anticipate this kind of a problem... But somewhere in their code there is a missing "throws WeThoughtThisWouldNeverHappenAndAreVerySorryException" line.

  44. Re:Reminds me of some windows progs back in the da by Anonymous Coward · · Score: 0

    Sadly enough the worst one for me was Stalker: Shadow of Chernobyl. I had XP Pro on my D: drive and I think C: was my Vista drive. I was gaming in XP as I was having issues with Vista and punkbuster. Every time I tried to save in Stalker, it would try to write the files to the Vista drive and it wouldn't be able to as XP didn't have ownership of the file system.

    I remember talking to their tech support and they seemed to not understand what I was talking about. That was a rather frustrating phone call....

  45. This highlights a common problem with software... by j741 · · Score: 0

    "the company field was changed" .... "crash with an OutOfMemoryError".

    Why should changing the name of a company cause an out-of-memory error? That's just bad usability. What's the user going to assume form this; "I need more memory", which is not truly the root cause of the problem.

    This is just one example of common problems with software today; the error messages often do not accurately identify the root cause of the problem. These days I'm a user, not a programmer (although I have done some very simple programming in the distant past), and this sort of thing really bugs me as a user. Uninformative or innaccurate error messages serve absolutely no purpose.

    --
    - James
  46. Java is not universal by Anonymous Coward · · Score: 0, Troll

    Java is no better than Visual Basic, where the JRE is just a big VB runtime. But slower. And buggier. And fatter. And it's not the panacea that Sun made it out to be. I'm not impressed by Sun's promises, JRE dependencies, the huge meaningless dumps when an error occurs, and that frickin' garbage collection. I'm a recipient of apps that are bug-laden due to devs using class libs that they can't debug and fix. Instead of writing something that they know works, they'll grab some reusable class that shouldn't be reused, but something new and appropriate should have been coded instead. "Run anywhere" is "Runs mostly" in my production environment, and it's BS. Fanboys can bury this all they want, but I'm not impressed by Sun's promises. Reusable my ass.

  47. Re:Reminds me of some windows progs back in the da by yuhong · · Score: 1

    Don't forget the NEC PC-98 that put hard drives on A: and B:.

  48. Re:Reminds me of some windows progs back in the da by antifoidulus · · Score: 1

    Yet another reason why intertwining the physical and logical arrangement of storage was a dumb idea. Microsoft really needs to ditch the whole "drive letter" concept and move to a single file system tree a la unix.

  49. Re:Reminds me of some windows progs back in the da by Tablizer · · Score: 1

    I can remember [installers] trying to install programs to D:\ rather than C:\

    640 letters otta be good enough for anyone
    -Gill Bates
       

  50. Re:Reminds me of some windows progs back in the da by GaryOlson · · Score: 1

    I don't know whether to call you sadist, masochist, psychotic, or just truly adventurous.

    --
    Every mans' island needs an ocean; choose your ocean carefully.
  51. Re:Reminds me of some windows progs back in the da by GaryOlson · · Score: 1

    Yes, Microsoft should license Veritas technology and add another layer of abstraction into the whole operating system function.

    --
    Every mans' island needs an ocean; choose your ocean carefully.
  52. GC is not the problem by Anonymous Coward · · Score: 0

    There are lots of GC'd languages which don't have this problem.

    You're an uninformed idiot. Just saying ;).

  53. Everyone's fault... by SanityInAnarchy · · Score: 4, Insightful

    It's true, you shouldn't detect browsers based on user-agent.

    But then, the other ways aren't terribly reliable. I remember, once upon a time, trying to find "The Right Way" to deliver XHTML with an XML mime type for browsers capable of it, and as HTML for everyone else.

    There isn't a right way.

    The closest I got was the Accept header. The problem here is that every single browser out there sends a */*, because every browser can accept downloads. At the time, I remember one browser (can't remember which, maybe Safari) sent a */* and nothing else -- while others sent a string explicitly mentioning a few and assigning priorities to them.

    The problem was, there wasn't any way for me to specify my preference on the server side, and there certainly wasn't a good way for a browser to say what it natively supports, what it can open in external programs, and what it can only download and bother the user about. All I could do is follow the browser's own preferences, and feed it whatever it ranked highest -- and even then, I'd have to prefer text/html (even though I really prefer application/xhtml+xml) for those browsers which don't specify preferring html to */*, but really don't support xhtml...

    At the end of the day, my options were pretty much to either stop caring about the standards, or interpret them in a very non-standard way, or use User-Agent detection, or just give up and serve it as text/html.

    And that's just getting the thing to render. It only gets messier from there...

    So yes, it's my fault, as a web developer, that I might fall back on user-agent detection -- and, in particular, I'm likely to detect IE so I can work around some of its many deficiencies. It's also the fault of the standards for not defining clearer ways to negotiate capabilities. It's also the fault of browsers for not following what standards do exist.

    I certainly try to avoid browser detection and focus on feature detection, as you suggest. But your blanket statement, like many blanket statements, is just wrong.

    --
    Don't thank God, thank a doctor!
    1. Re:Everyone's fault... by Anonymous Coward · · Score: 0

      The closest I got was the Accept header.

      Which is the correct way to detect what the browser will accept, no?

      FWIW, perhaps it was worse when you were trying to use it, but here is today's string from Firefox:

      text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

      application/xhtml+xml with a q factor of 1.0 == go for it.

    2. Re:Everyone's fault... by SanityInAnarchy · · Score: 1

      Yes, Firefox did that -- but Safari doesn't set the standard. There's nothing in the standard, at least when I looked into it, to suggest that there was anything wrong with a user-agent doing this:

      Accept: */*

      And at least one did that, while being capable of interpreting application/xhtml+xml.

      You also ignored this point:

      there wasn't any way for me to specify my preference on the server side, and there certainly wasn't a good way for a browser to say what it natively supports, what it can open in external programs, and what it can only download and bother the user about.

      In other words: What do I do with a browser that has a lower q factor for xml than for html?

      A q factor of 1.0 isn't good enough, though, when some browsers have */* at a q factor of 1.0.

      So again: It's everyone's fault.

      It's the fault of the spec for not defining a way for a user-agent to specify how it can handle a given format.

      It's the fault of the browser vendors for getting this wrong, at least when I was doing it.

      It's my fault for continuing to encourage this behavior by giving up and either using browser detection or delivering as text/html.

      A more recent example: At least last I checked, Konqueror's XMLHttpRequest didn't deliver partial updates, at all, ever, making it useless for things like Comet. There are workarounds using things like hidden iframes, but they suck compared to an actual XMLHttpRequest. I should implement an abstraction layer that uses XHR when it works, and iframes when XHR isn't available (or at least, isn't reliable) -- but how do you suggest I detect that at runtime?

      There just isn't a clean solution here. I agree with you in principal, but in practice, it can be difficult to detect a given behavior in a reliable way.

      --
      Don't thank God, thank a doctor!
  54. Why do mods use "-1 troll" incorrectly? by Anonymous Coward · · Score: 0

    The parent post is *NOT* a troll... At best, offtopic, since it didn't actually answer the GP's question, but it's definitely not a troll.

  55. Re:Reminds me of some windows progs back in the da by drinkypoo · · Score: 1

    Microsoft really needs to ditch the whole "drive letter" concept and move to a single file system tree a la unix.

    Windows has had "proper" mount point technology since Windows 2000. DOS has "subst" (path as drive) and assign (drive as path.) NT4 has "subst" but not "assign".

    --
    "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  56. A somewhat complex and interesting problem by suresk · · Score: 5, Informative

    Someone in our company ran into this several weeks ago, and I had kind of a fun time tracking down the problem. The summary and most of the comments are missing a lot of details and nuance, which actually make this problem kind of interesting.

    1) It wasn't even running out of memory

    Sun/Oracle's VM implementation (HotSpot) has a concept of a permanent generation, which is separate from the rest of the heap and has its own maximum size. This generation holds stuff like the code cache and interned strings. Whether or not this is a good concept is debatable, and as far as I know, they are planning to do away with it in the future as JRockit and HotSpot merge. At any rate, this is the space that was filling up. This probably didn't happen very quickly on a normal Eclipse distribution, but with a lot of plugins installed (and thus a lot of classes being loaded) it crashed pretty quickly.

    2) This is only because of somewhat subtle differences between the various VMs

    HotSpot is the only major JVM I know of that has a PermGen space - J9 (IBM) and JRockit (Oracle, via BEA) don't have this concept. Thus the requirement to be able to behave differently based on which VM you are using. Being able to behave properly on multiple VMs is especially important for Eclipse because not only do they have a lot of people using it on HotSpot, but because it is the basis for IBM's RAD, they have a ton of people using it on J9 as well.

    3) This problem is in the launcher, not Eclipse itself

    So, the crux of the problem is that Eclipse needs to start a VM, and has to know the proper flags to pass to it *before* it starts up. A few people have suggested trying reflection or other runtime methods as a better way to solve this, but this ignores a) Once the VM has started up, you can't change the heap or PermGen sizes, and b) As far as I know, there is no way to query the VM at runtime to figure out what its underlying heap structure looks like - that is an implementation detail.

    So, while it does kind of suck that Eclipse was relying on a vendor name, it is trickier to solve than it appears at first glance. The only really graceful ways I can think of to solve this problem rely on some changes to the VM spec.

    1. Re:A somewhat complex and interesting problem by dkf · · Score: 1

      The only really graceful ways I can think of to solve this problem rely on some changes to the VM spec.

      The only two relatively-clean ways to deal with this stuff is to either pass in the arguments in a test run, or to switch off some cheaply-available name. Of the two, switching on the name is much cheaper but also more fragile...

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
  57. Re:Reminds me of some windows progs back in the da by heson · · Score: 1

    Its not a proper mount point, its almost a proper mount point, a lot of bugs appear if you use it, atleast in XP and win2003.

  58. I've seen this before... by Anonymous Coward · · Score: 0

    I believe it was the same developer who checked for "Dr Dos" when installing windows...

  59. Re:Reminds me of some windows progs back in the da by Anonymous Coward · · Score: 1, Interesting

    Yes. not to mention some (many, a lot) developers assuming the OS is installed in English and all the directory names are in the same language. I've had my share of problems between "C:\Program Files" and "C:\Archivos de Programa"... to give an example.

  60. Re:Reminds me of some windows progs back in the da by Anonymous Coward · · Score: 0

    One enterprise software I needed to install was able to install itself on other drives than C: but the installer checked the available diskspace from C:. The software in question took around 5Gb of space and when my C: did not have enough I was unable to install to D: until I cleared enough space to C:

  61. from tfa by smash · · Score: 3, Informative

    ... i know its cool to post first before reading and all but...

    An engineering side note: The "Java" property values for java.vendor and java.vm.vendor were never changed in the jdk6 releases and will remain "Sun Microsystems, Inc.". It was understood that changing the vendor property values could impact applications and we purposely did not disturb these vendor properties. The Windows specific exe/dll file "COMPANY" value is what is at issue here, not the Java properties. It came as a surprise to us that anyone would be inspecting or depending on the value of this very platform specific field. Regardless, we will restore the COMPANY field in the jdk6 releases. Note that the jdk7 releases will eventually be changing to Oracle, including the java.vendor and java.vm.vendor properties.

    So, it looks like

    • it is windows only
    • programmers should not be relying on that field
    • the change is being backed out until Java 7
    --
    I run: Windows, OS X, Linux, FreeBSD. Just because you have a hammer, doesn't mean everything is a nail.
  62. Anonymous Coward by Anonymous Coward · · Score: 0

    If Oracle can take months to announce to the whole world they are merging java.sun.com, bigAdmin etc into one dull clunky diagram, why was there no warning of any sort given that we are dealing with the java implementation now.

    I hate Oracle, their desire is replace anything *sun*. I remember when Sun acquired MySql, you could hardly tell an acquisition has happened. I sure hate Oracle.

  63. Sounds familiar... by FridayBob · · Score: 1

    When my Sun VirtualBox application asked me to upgrade recently to version 3.2.6, I thought nothing of it; sure, always good to stay up to date, right? It proceeded without a hitch, although the only difference seemed to be that the branding had been changed from "Sun Microsystems Inc." to "Oracle" along with some corporate artwork. Was that all? Apparently not. Afterwards, several Linux distros refused to install as virtual machines: somewhere half-way, the process would report a generic failure. Strange, because I had installed the same distros many times before (at least the older VMs I had of them were still working). So, suspecting a bug, I downgraded back to v3.1.8 r61349 and the problem vanished. Pretty weird for what's ostensibly just a cosmetic change. At any rate, I feel this does not bode well for the future of VirtualBox and I've already been looking into the alternatives; perhaps something a little less dependent on some corporate overlord will be a safer choice.

    1. Re:Sounds familiar... by Anonymous Coward · · Score: 0

      Dude, there were a metric shitload of core VM changes between 3.1.8 and 3.2.6.
      Triaging and reporting the bug would probably help a lot more than tinfoil-hat ranting.

    2. Re:Sounds familiar... by cpghost · · Score: 1

      So, back to qemu then?

      --
      cpghost at Cordula's Web.
    3. Re:Sounds familiar... by FridayBob · · Score: 1

      Or Xen, or KVM...

  64. No issue by rec9140 · · Score: 0

    Not an Oracle issue.

    1) Bad programming by Eclipse

    2) Its a win only issue, therefore

      "Won't Fix ." Closed.

    --
    1311393600 - Back to Black
  65. Re:Reminds me of some windows progs back in the da by Anonymous Coward · · Score: 0

    Not only that, but some windows folders were translated in other languages. For example, "Program Files" was "Archivos de Programa" in Spanish.
    Some programs insisted on installing themselves on "C:\Program Files", regardless of the actual folder used by Windows (the translated one).
    The result of that was that the non English people used to have 2 types of "program files" folders, one in English (full of crappy apps) and other localized in their language.

  66. Oracle OSM uses Eclipse by Anonymous Coward · · Score: 0

    FYI - Oracle's OSM7 product (Order and Service Management for Telcos) uses Eclipse - and there's no plans to migrate it to JDeveloper. So why the hell would Oracle chop its nose off to spite its face?

  67. Re:Reminds me of some windows progs back in the da by drinkypoo · · Score: 1

    Its not a proper mount point, its almost a proper mount point, a lot of bugs appear if you use it, atleast in XP and win2003.

    Bugs in the OS, or bugs in incorrectly written applications?

    --
    "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  68. Thank you Oracle! It is only a begining by Anonymous Coward · · Score: 0

    Thank you Oracle you are taking the way to restore the places of all of us, C/C++ coders, demonstrating that cheap and pseudo(=scripting) programming languages on VM hyper-eavy-overload are NOT always the solution... Not talking about internet, browsers and jscript as if the Internet is a Global computer and client browsers as Window Managers. This is insane waste of today's powerfull and precious CPU cycles, just to save money.

    I am actually developing a complete Integrated solution for customers and requests support system that hooks on a (distant)controler - All written in C/C++. If crashes occur it is MY fault! not the C/C++ compiler. btw, I see Garbage collectors like
    our SAAQ ( Société de l'Assurance Automobile du Québec ) where drivers crashes and kill people without beeing responsible of their stupid and dangerous incompetences ( no-fault law )

    Thank you for "reading" , make me feel better now :-)

    1. Re:Thank you Oracle! It is only a begining by peppepz · · Score: 1

      Try writing some high level code in C, then some equivalent code in Java.
      Run the results.
      Notice which one is faster, and which one was easier to write, is easier to read, and will be easier to maintain. Hint: it will be the same one in both cases.

    2. Re:Thank you Oracle! It is only a begining by cpghost · · Score: 1

      Thank you Oracle you are taking the way to restore the places of all of us, C/C++ coders, demonstrating that cheap and pseudo(=scripting) programming languages on VM hyper-eavy-overload are NOT always the solution...

      Actually, it's a matter of choosing the right tool for the job. In systems programming, C (and to a lesser extent C++) rule supreme, and that's as it should be. Application programmers are free to choose Java if they so desire, or if they are forced to by existing frameworks. Personally, I'm a huge fan of C and C++, but I'm not afraid to touch Java code every now and then... if absolutely necessary, that is.

      --
      cpghost at Cordula's Web.
    3. Re:Thank you Oracle! It is only a begining by Anonymous Coward · · Score: 0

      Notice which one is faster[1], and which one was easier to write[2], is easier to read[3], and will be easier to maintain[4]. Hint: it will be the same one in both cases.

      "both". I don't think that word means what you think it does.

  69. lol by Anonymous Coward · · Score: 0

    It's funny to see how you can render all that portability and platform-agnosticism useless with only one "if".

  70. Eclipse helios Crashed after updating Java by dudeanand · · Score: 1

    Same thing happend to me, it was giving spacegen , outofmemory error all of a sudden and eclipse would crash.... I almost wasted 4hrs to find out the problem..

  71. Re:Reminds me of some windows progs back in the da by Anonymous Coward · · Score: 1, Funny

    Yes.

  72. FUD! by Anonymous Coward · · Score: 0

    Works fine for me, jdk1.6.0_21 eclipse 3.6 (Helios) on LINUX! (CentOS 5.2). Must just affect those worthless Windoze boxes.

  73. JVM CAPABILITY by Anonymous Coward · · Score: 0

    Hum... dont look at the symptoms, look at the cause... maybe a JVM CAPABILITY JSR should solve the issue....

    []s, gandhi

  74. Re:Reminds me of some windows progs back in the da by Anonymous Coward · · Score: 0

    It's not even "back in the day", Gears of War for PC refused to install anywhere other than the default directory, even when I explicitly gave it a new directory.

  75. Stallman did this too by IGnatius+T+Foobar · · Score: 3, Interesting

    Quite a lot of software development tools and build scripts also broke when Richard Stallman changed the gcc target "i386-pc-linux" to "i386-pc-linux-gnu". GCC development had long since been taken over by other people but RMS just had to commit his little political agenda to the build, and broke a lot of builds in the process. Same thing here.

    --
    Tired of FB/Google censorship? Visit UNCENSORED!
  76. One line fix by flink · · Score: 2, Informative

    Launch your copy of Eclipse like so:

    "D:\Program Files\eclipse\eclipse.exe" -data %APPDATA%\"Eclipse\workspace" -vm "D:\j2sdk-1.7.0\bin\javaw.exe" -vmargs -Xms256m -Xmx1024m -XX:MaxPermSize=128m

    This will override the eclipse launcher's default set of JVM arguments with a custom set. The MaxPermSize is the issue. If the eclipse launcher can't identify the JVM, then it doesn't know to specify a larger permanent generation size for the Sun/Oracle JVM.

    To those people saying that this was a lousy design decision by the Eclipse devs:

    D:\>java -X
        -Xmixed mixed mode execution (default)
        -Xint interpreted mode execution only
    ...
        -Xshare:on require using shared class data, otherwise fail.
     
    The -X options are non-standard and subject to change without notice.

    Since a nonstandard switch is required at launch by the JVM, the only way to know what set of switches to pass is to query the JVM vendor string. It's not a clean solution, but it's a solution dictated by the platform.

    1. Re:One line fix by RivieraKid · · Score: 1

      The -X options are non-standard and subject to change without notice.

      Since a nonstandard switch is required at launch by the JVM, the only way to know what set of switches to pass is to query the JVM vendor string. It's not a clean solution, but it's a solution dictated by the platform.

      No, it's not the only way and it certainly isn't the best way.

      How about we query the runtime to determine which (if any) switches are required and then use that information to construct the command line for the real app?

      If you must, you could even query the vendor string from within the runtime, but querying it from such an ephemeral location as metadata from a Windows DLL? Are you absolutely sure of your position that it's dictated by the platform that you must do it that way?

      --
      "Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves
  77. Behemoth Oracle by toxonix · · Score: 1

    This is typical of Oracle's acquisitions. Not only do they rewrite licensing agreements, they have to go an re-brand all the code. We are running lots of Tangosol Coherence instances. When Oracle bought Tangosol out, we had to change the way we deploy nodes to avoid blowing our costs up. Oracle loves node/cpu licensing.

  78. Yah, I see a trend there... by RichiH · · Score: 1

    Ever tried OCFS2? Oracle deserves to be shot just for that.

  79. Re:Reminds me of some windows progs back in the da by rdnetto · · Score: 1

    The easiest (though certainly not the most elegant) way to get this to work is to have both drives formatted as NTFS then set 'D:' to mount to C:\Program Files (you can do this via Disk Management in the MMC)

    --
    Most human behaviour can be explained in terms of identity.
  80. Siva Thumma ( Not a Coward like Coward ) by Anonymous Coward · · Score: 0

    May be people who do not know about the java -xm ( Extended Memory Option ) could have reported this.