Slashdot Mirror


James Gosling Leaves Google

scottbomb writes "Well, that didn't take long: 'After only a few months at Google, Java founder James Gosling has left the search engine giant to go to a small startup company specializing in ocean-based robotics.' In a brief blog post about his new company, Gosling says, 'They have a growing fleet of autonomous vehicles that roves the ocean collecting data from a variety of onboard sensors and uploading it to the cloud. The robots have a pile of satellite uplink/GSM/WiMax communication gear and redundant GPS units. They have a bunch of deployments. For example, one is a set of robots patrolling the ocean around the Macondo well in the Gulf of Mexico monitoring water chemistry. These craft harvest energy from the waves for propulsion and can stay at sea for a very long time. The longest that one craft has been out is 2.5(ish) years. They can cross oceans.... Slowly. They only move at 1-2 knots, which is a great speed for data collection.'"

38 of 192 comments (clear)

  1. SkyNet by Niomosy · · Score: 3, Funny

    At least we can take comfort in the robots likely getting a java.lang.OutOfMemoryError: Java heap space error.

    1. Re:SkyNet by _xeno_ · · Score: 3, Informative

      I doubt Gosling has problems managing memory in Java.

      I dunno, you've never run into the more infamous "java.lang.OutOfMemoryError: PermGen space"?

      This is the error that's generated when the Java VM itself (well, the classloader, I guess) runs out of memory.

      Because, unlike Java code itself, the Java classloader never frees memory it uses, which means that if you use a class briefly on startup, that code itself will be kept in memory indefinitely and never freed.

      Which wouldn't matter as much, if there weren't this special "PermGen" space that used to default to 1MB. (It's slowly been increased as the versions go on and the size of Java programs continued to bloat, I think the default is now something like 16MB and can, as of five years ago, be user-set via a command line parameter.)

      So what does this have to do with SkyNet? Well, if it's written in Java, it will run out of PermGen space well before its self-modifying code can accomplish anything.

      And, given that PermGen space is never freed, apparently James Gosling does have problems managing memory in Java.

      --
      You are in a maze of twisty little relative jumps, all alike.
    2. Re:SkyNet by binarylarry · · Score: 5, Informative

      PermGen is gone in newer versions of Java.

      --
      Mod me down, my New Earth Global Warmingist friends!
    3. Re:SkyNet by GodfatherofSoul · · Score: 3, Informative

      Correct me if I'm wrong, but while the JVM doesn't free memory, it does recycle memory from it's allocated space. So, just because you might have accumulated the max memory your JVM might allocate, that doesn't mean your app isn't releasing memory back to the JVM. Kind of like super fetch except allocation is passive.

      --
      I swear to God...I swear to God! That is NOT how you treat your human!
    4. Re:SkyNet by dshk · · Score: 2

      I do not know a solution. But I know that Apache Tomcat developers made an effort to eliminate all class loading leaks from Tomcat itself, moreover in the last versions there is a mechanism in Tomcat which tries to detect and log possible class leak issues. It indeed show a few problems in my code.

    5. Re:SkyNet by pavon · · Score: 2

      Larry is right. I have had to deal with this at work. Our applications create machine generated code, which is compiled and then loaded. I don't know about Java 1.7, but in 1.6 the default garbage collector does unload these classes when there are no more instances of them. The concurrent garbage collector doesn't by default but you can pass the "-XX:+CMSClassUnloadingEnabled" flag to the JVM to enable it.

    6. Re:SkyNet by goofy183 · · Score: 3, Informative

      As the other reply alluded this isn't a JVM problem but a problem with poorly written libraries. If a library sticks something in a ThreadLocal, creates a Thread, registers a JDBC driver, or several other tasks using classes from the webapp class loader and then DOESN'T CLEAN THEM UP when the webapp context is destroyed you get a ClassLoader leak. Just like any other Java memory leak it stems from having classes in the loader still reachable from the GC root.

      Tomcat has made some great changes to their webapp classloader to watch for this bad behavior and forcibly remove/cleanup these references when a webapp shuts down, solving this problem in many cases.

    7. Re:SkyNet by TheRaven64 · · Score: 2

      Correct me if I'm wrong

      Okay. The JVM uses a generational GC. This actually uses a few generations, but I'll talk about a simpler version than Java uses, because it's easier to understand:

      When you allocate objects, it uses a simple bump-the-pointer allocator in the short-lived generation. If an object stays around for a while, it is moved into a longer-lived generation. If not, it is deleted. I'm skipping over most of the details here, because they're not relevant. The important thing is that the generations are scanned approximately independently, and each maintains a remembered set of all of the objects in another generation that it references.

      Some things, however, are not dynamically allocated. If you write Hello World in Java, you will have a string object that you wrote as "Hello world" in your source code. This object never needs to be deallocated. Neither does the class with your static main() method. The string is simple - it doesn't have any pointers - but the class is more complicated. It may have static fields (class variables, for Smalltalk programmers) that reference other objects. The GC must be able to follow these pointers, or it will prematurely deallocate objects. The class is therefore allocated in memory that is scanned by the GC, but not managed by the GC. This is the permanent object generation: the PermGen that the grandparent was talking about. This is fine for most programs, which generate classes by compiling Java code and have a smallish fixed number of them. It's a problem for self-modifying programs that generate new classes on the fly (something that Java has had APIs for since the start).

      --
      I am TheRaven on Soylent News
    8. Re:SkyNet by gutnor · · Score: 2

      poorly written libraries

      I have had my share of PermGen issue. I wouldn't put the blame fully on the developer here.
      It is extremely easy to create PermGen issue (immortal classes object) but the JVM provide very little (closer to nothing) to address that issue: no guideline, no debugging tool, no warning or easy way to detect a leak, .... This is a java self-inflicted problem, you shouldn't need advanced knowledge of the classloader inner-working (actually, the fact that you need to know about classloader at all to create a webapp is a bit silly to start with) or garbage collection implementation to write some basic CRUD webapp.

    9. Re:SkyNet by TheSunborn · · Score: 3, Informative

      You are both wrong and right. All objects allocated by Java can be garbadge collected. Including permgen. (See: http://blogs.oracle.com/jonthecollector/entry/presenting_the_permanent_generation)

      However this does often not happen because some objects keeps a (Normally static) reference to this class. An example where this often causes problems are with loggers because they often keep an static reference to a class, because they use it when generating debug output.

      Removing all references to a class when doing dynamic class loading is not as easy as it sound, and I know that tomcat had huge problems with this in tomcat 5.5 and 6. I had to restart my 6.0 tomcat server used for development due to this problem because I had it configured to auto reload all newly generated classes. But it seems that they fixed that problem with tomcat 7, because I have not seen a PermGen exception since I upgraded.

  2. Oracle? by shutdown+-p+now · · Score: 4, Interesting

    Makes you wonder if the whole Oracle patent shitstorm around Java is making Google reconsider its reliance on that technology. If so, would be interesting to see what they bring forth instead.

    1. Re:Oracle? by shutdown+-p+now · · Score: 2

      Add more and more junk like generics and you'll end with languages as byzantine as C++ or Java.

      Java is a "byzantine language", really? You must be a C coder if you seriously think so.

      KISS.

      Keep it Simple and Slow? ~

    2. Re:Oracle? by khr · · Score: 2

      ... If so, would be interesting to see what they bring forth instead.

      Dunno, maybe they'll switch to Forth as their language... That'd be pretty cool...

    3. Re:Oracle? by KiloByte · · Score: 2, Informative

      Java is a "byzantine language", really? You must be a C coder if you seriously think so.

      I'd say Linus Torvalds described this well enough.

      KISS.

      Keep it Simple and Slow? ~

      Well, we're talking about Java vs C...

      Seriously, there's a bad trend among some "modern" languages of piling up constructs without regards for efficiency, simplicity or sanity. For example, you can write a non-optimized compiler for languages I'd call sane in a week while for some a team in five years can't be expected to fully implement the standard. There is not a single compliant compiler of C++, and for Java it's only because of a skewed definition of "compliant" Sun has. And if you can't write a compiler reliably, how can you program in it?

      The language with best balance between simplicity and featuritis I know is LPC. It has things sorely missing in C, like strings (something that C++ scrrewed in epic ways...), refcounted structures (arrays, mappings), closures, rudimentary OOP.

      I did not get to learn golang yet, but it looks promising. I do have a bit of beef with some details, but nothing that'd make me vomit.

      --
      The creatures outside looked from Alt-Right to Antifa; but already it was impossible to say which was which.
    4. Re:Oracle? by lennier · · Score: 4, Funny

      Dunno, maybe they'll switch to Forth as their language... That'd be pretty cool...

      FORTH GO MULTIPLY AND

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
    5. Re:Oracle? by shutdown+-p+now · · Score: 2

      Seriously, there's a bad trend among some "modern" languages of piling up constructs without regards for efficiency, simplicity or sanity.

      You have a point with respect to C++, though I think that's precisely what makes it invaluable for certain tasks - sometimes you do have a team that knows what they're doing, and they can do it so much better with that pile of features.

      But what about generics that makes you lump them into the same category? Efficiency? - but C++ std::sort will beat qsort any day precisely because all polymorphism there is compile-time, and can be fully optimized. Simplicity? Granted, C++ templates are very complicated, but e.g. C# has a much simpler model for generics (it's also correspondingly feature-limited, but it covers most common cases like generic collections and algorithms well) which could be easily ported on top of C. Sanity? I'd argue that it's insane to have a statically, strongly typed language where all that strong typing goes out of the window, and you start scattering casts all over the code, the moment you start dealing with rich collections rather than atomic values or arrays.

      Actually, my long-standing wish was to have well-designed generics added to C in a clean way. I'd take something like OCaml functors as a model for that - they're fully type safe, and also have to be explicitly instantiated before use; they cover all practical use cases; and they can be optimized as well as the corresponding manually written (separately for each instantiation) strongly typed code.

      Another thing I'd kill for in C is a limited form of RAII, namely scope guards - the ability to say at any given point, "when the scope ends, run this before leaving it". So that you could do something like "FILE* f = fopen(); cleanup { fclose(f); }", and know that the handle is properly closed on all code paths, regardless of "return" or "goto" or whatnot.

    6. Re:Oracle? by dudpixel · · Score: 4, Interesting

      Are you surprised?

      Google is pretty poor at supporting anything longer than a week past the initial launch date.

      The whole Google business model appears to go like this:
      1. Invent cool tech
      2. Make it into an awesome product. Functional, and working, but not finished.
      3. Dump it on the public (as a "beta") with a half-hearted launch effort.
      4. Start on next project.

      For GMail - it worked, partially because a functional product is really all most of us want.

      Search is one of the few projects they continually work on - because its what makes them money.

      For many of their projects, including Google+, they fail because Google fails at marketing and seeing a project through. Have a look at how Apple launch a product, compared to Google. Apple are often still telling us how wonderful they are even years later, while Google seems to forget about its own achievements after a week.

      I like Google - I use many of their services, and have and Android phone + tablet and develop Android apps...but its just plain disappointing to see how little effort is put into their products post-launch. I'm specifically talking about marketing effort, as I'm sure they are working hard behind the scenes.

      --
      This seemed like a reasonable sig at the time.
    7. Re:Oracle? by Digi-John · · Score: 2

      I have helped write non-trivial programs in Go. It's quite pleasant. I think the big reason Google hasn't bothered to provide "adequate tooling" is the developers. That is, I think many of the creators and big users prefer to just work with a plain text editor rather than an IDE. There's a reasonably decent Emacs mode for Go, but it's readable enough without any syntax highlighting, and gofmt will fix your indentation and such for you. As for the debugger, well, there's http://blog.golang.org/2010/11/debugging-go-code-status-report.html (very old but even then they already had GDB support going), but as the first line says, "When it comes to debugging, nothing beats a few strategic print statements to inspect variables or a well-placed panic to obtain a stack trace", which is all I ever used to debug my Go code--and found it reasonably painless! Oh, and regarding generics--I'm not sure they'll ever go in. It is proposed CONSTANTLY on the mailing list, and Pike et al always indicate that they're not interested.

      --
      Klingon programs don't timeshare, they battle for supremacy.
    8. Re:Oracle? by bonch · · Score: 2

      Add more and more junk like generics and you'll end with languages as byzantine as C++ or Java.

      Yeah, nobody uses those!

    9. Re:Oracle? by bertok · · Score: 2

      Seriously, there's a bad trend among some "modern" languages of piling up constructs without regards for efficiency, simplicity or sanity.

      It's not so much the languages, but the standard libraries. I've spent a lot of time writing performance optimised code (3D engines, large database-type apps, etc...), and the thing that shits me is this:

        foreach( x in list_of_x ) { foo( x ); }

      where 'foo' does something like:

        prep();
        work_on( x );
        cleanup();

      That is bad, especially if 'work_on(x)' has a couple of layers of the same kind of thing -- then there's virtually no hope of the compiler ever optimising that loop in any significant way, and there's nothing the programmer can do either. Magic tricks like static call analysis can sometimes help, but usually not.

      When that kind of pattern is baked into a wide range of interfaces, there's just no avoiding it, and performance goes right out the window.

      What would work a lot better if more APIs supported batch operations, e.g.:

          foo( list_of_x )

      or more elegantly:

          foo( iterator_over_x )

      That way, the 'prep()' and 'cleanup()' only happens once. If the list is big enough, the language overhead becomes irrelevant. Even if 'foo' is some expensive virtual function call, the cost is spread out over many items.

      Unfortunately, efficient batch-style programming APIs are few and far between. While most of the old-school low level APIs use buffers (think file IO), the majority of business-oriented libraries and APIs are very inefficient. This is one of the reasons that complex business apps can take minutes to perform trivial processing over megabytes of data, but the same computer can pump gigabytes through a 3D game engine every second.

      By far the worst offenders are n-tier applications, where some of those overheads can be network traffic. If an RPC function is called inside a loop, it's game over. This is why any time someone comes up with a marvellous framework that "unifies local and remote computing", or makes "RPC calls and local calls work the same", I just laugh and laugh....

    10. Re:Oracle? by TheRaven64 · · Score: 2

      Another thing I'd kill for in C is a limited form of RAII, namely scope guards - the ability to say at any given point, "when the scope ends, run this before leaving it"

      If you are willing to limit yourself to GCC-compatible compilers (GCC, clang, ICC, Path64, and - I think - XLC), then you should look up __attribute__((cleanup)). I use this for locks in C all the time. I just have a LOCK_FOR_SCOPE() macro, and the lock is automatically released when it goes out of scope. It's even exception safe if you compile with -fexceptions, so if some C++ or Objective-C throws an exception through your stack frame, it works nicely.

      --
      I am TheRaven on Soylent News
  3. hmm by nomadic · · Score: 3, Interesting

    Definitely sounds a lot more interesting than working at Google.

  4. ... just like Java by ccr · · Score: 5, Funny

    The first thing that popped out as I glanced through the post was:

    "They can cross oceans.... Slowly. They only move at 1-2 knots, which is a great speed for data collection."

    And I thought to myself, "slowly? .. well, it's father of Java, after all."

    1. Re:... just like Java by Miamicanes · · Score: 3, Interesting

      Honestly, JVM hell is caused more by Sun's shitty documentation on how to properly specify JVM versions in a manifest or applet CLSID. Sun historically did a crap job of explaining how to specify things like, "Use the newest version of Java installed on this machine, as long as it's 1.6 (or 1.5, or 1.4) or newer", and instead gave examples that induced people to create needless dependencies on old versions of Java for no real reason besides lack of proper documentation. The fact that Oracle now owns Java makes things worse, because Oracle software was historically the worst of all about creating stupid dependencies on old versions of Java for no real reason (or because for political reasons, they wanted you to use the "thick" OCI drivers that tied you down to a specific runtime environment instead of the "thin" type 4 drivers that would "just work" on anything with a JVM).

      The truth is, as long as an Oracle native-code database driver isn't involved and the developer doesn't go out of his or her way to needlessly specify some specific, arbitrary version of Java, 99.999% of anything you write in Java will work on any JVM that's as least as new as the one you compiled it under. I have 9 year old jarfiles built with pre-alpha 1.4 JDKs that still work fine under 1.6.0.${whatever}.

      True story: at work, we had a notorious internal application whose development team bent over backwards to make users with newer JDKs and JREs installed miserable. Basically, it used the CLSID that told the JPI, "ignore the user's Java control panel settings, and always use the latest version of Java installed on this machine". Then, a few HTML lines later, used Javascript to commit suicide if that version of Java happened to be newer than 1.6.0.18. Sigh.

    2. Re:... just like Java by TheRaven64 · · Score: 2

      That garbage collection really screws up anything with realtime involved

      I'm sure David F Bacon, who wrote an realtime GC for Java for embedded applications almost a decade ago, will be fascinated to hear that.

      --
      I am TheRaven on Soylent News
  5. What do you wanna bet... by interval1066 · · Score: 4, Interesting

    ...that the REAL reason Gosling left was because the google execs were like "Ok Jimmy, here's your office, lets tuck you in... all nice and comfy? Good... now just rest here until we need you." I think the coolness of having the inventor of Java trolling 'round the office was greater than any expectation that he'd actually invent something for Google.

    --
    Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    1. Re:What do you wanna bet... by martin-boundary · · Score: 5, Interesting
      I doubt it. If you read Gosling interviews from the past few years, one of the ideas he likes to talk about a lot over and over is embedding millions of sensors into the world - in roads, walls, etc. Tiny little bugs that measure something, which can be combined into a completely novel picture of the world.

      That's not really what Google does, they're an advertising company whose primary inputs are words and human behaviours.

      The first is closer to hands on lab work, while the second is pure data munging, and my impression is Gosling's not that interested in the latter.

    2. Re:What do you wanna bet... by TubeSteak · · Score: 4, Interesting

      I was in Washington Dulles International Airport (IAD) a few months ago and sitting right behind me was a salesman from Liquid Robotics* giving his pitch to a potential client.

      I'll admit, I listened in. The technology he was describing sounded amazing.
      Alternative solutions are crazy expensive or have limited range/loitering/real-time capabilities,
      while this thing can stay out more or less indefinitely if you pay for a big enough battery pack.

      I recall something that a quick google search doesn't turn up in any articles:
      The salesman mentioned that Liquid Robotics keeps their costs down by contracting fishing boats to drop off and pick up the Wave Gliders. Because, while you could wait for it to come home at 1.5 knots/hr, it's a lot faster (and not very expensive) to have it swim to/from a spot that someone was going to be at anyways.

      By the time I had to leave, I was ready to buy one and I don't even need it.
      I seriously feel that their technology is going to be the future of unattended oceanographic research
      and if I had a million dollars to invest, I would.

      *I never actually caught the name of the company, but from the /. summary, I immediately recognized the technology being described.

      --
      [Fuck Beta]
      o0t!
  6. Gosling leaving? by the_humeister · · Score: 3, Funny

    So, that means Kate is staying then?

  7. No change by jdavidb · · Score: 3, Funny

    Now he's just doing Google Streetview underwater!

  8. Suspended by BluBall · · Score: 2

    Truth is that he was suspended for failing to sufficiently prove he was *the* James Gosling quickly enough.

  9. Re:I take out Gosling's trash by qxcv · · Score: 2

    Linky

    (From here)

    --
    "The most dangerous enemy of a better solution is an existing codebase that is just good enough." -- Eric S. Raymond
  10. once you hit it big, you can be this scaterbrained by buback · · Score: 2

    If I told my parents I was leaving google to go start my own undersea data collecting company, they'd look askance at one another and wonder what type of mid-life crisis i was having. But I guess once you start something like java, you get free rein to do whatever-the-hell crazy-assed thing you want, even if it means leaving a steady job behind, and nobody thinks it's that crazy.

  11. Re:once you hit it big, you can be this scaterbrai by macshit · · Score: 2

    Er, yes, once you become super famous and renowned, the concept of a "steady job" loses some of its allure, and you can do cool-but-risky things instead if you want to. The parameters of your risk equation change. But note that such behavior is not at all uncommon even amongst the non-famous — I know tons of people who left "secure" jobs with big companies to join startups — though it's easier when you're young (e.g., no family to support), and perhaps somewhat more attractive for the middle-aged (there's a sense of "now or never").

    You can hardly blame Gosling — he's spent 20 years as "big name at big company", with all the crap that entails (even at "good" big companies), and is probably quite sick of it by now. Given that he does have the ability to do more quirky and interesting things without undue personal risk, and apparently hadn't put down any roots at Google, it doesn't seem particularly surprising that he made this choice.

    --
    We live, as we dream -- alone....
  12. Re:Can you say "Hazard to Navigation"? by macshit · · Score: 2

    The "autonomous boats" are very small, and most of the mass is actually a fair distance below the surface, tethered to a surface float. If there's a collision, even with a very small ocean-going sailboat, it seems very likely that the sailboat is going to win...

    You can look at Liquid Robotic's (brief) Waver Glider specifications page for a bit more detail (mostly in this PDF file).

    --
    We live, as we dream -- alone....
  13. Left eh? by DarkOx · · Score: 2

    Come on its obvious Gosling was forced out to make room for Cmdr Taco

    --
    Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
  14. Re:once you hit it big, you can be this scaterbrai by kangsterizer · · Score: 2

    wah
    undersea data collecting IS interesting, challenging, something worth working for.

    working for Google just to, like, work at Google should be the reasonable choice here? Heck, work is where you spent the very major part of your life, so it better be something you value. I would totally do the same as he's doing. In fact, I would very much like to work for such a company that's actually doing something interesting.

  15. SPOT by jDeepbeep · · Score: 2

    would be interesting to see what they bring forth instead

    possibly Spot

    --
    Reply to That ||