Breakfast with James Gosling 

I was lucky enough to have breakfast with James Gosling on Monday while he was here in Toronto for the Sun Developer Days. He was very gracious and insightful, and while I am very appreciative of the opportunity, I feel that his time could have maybe been better spent (and enjoyed) off somewhere coding something rather than meeting with me (and about a dozen others).
Below is a summary of some of the topics that were discussed. This is mostly from memory so is subject to failings of either memory an/or mis-interpretation.
- I asked about the JVM outliving Java, or to put it another way, how much JVM programming does he expect to see in ten years in some language other than Java?
- He said that he has been disappointed by the lack of language innovation on the JVM and that he is hoping for more innovation in the future; especially in the area of concurrency.
- Hopefully we'll see more progress in this area when the JVM has its bytecode extended to allow for more dynamic dispatch (See:
invokedynamic).
- He discussed how multiple cores on a chip will influence language design (like with Sun's new Niagra processor which appears as 32 CPU's).
- I asked about what the other groups within Sun, primarily the Solaris group, are doing to take advantage of Java from within their products (I see Microsoft doing lots of stuff within Windows, MONAD, LINQ, and MSQL to take advantage of the new found capabilities of C# but I don't see the same kind of work being done at Sun. To me, it seems that the Microsoft Windows developers believe more in the Java ideals than do the Sun Solaris developers.)
- James said he doesn't think that this is true and pointed to many instances of where the Solaris team is explicitly adding features for the benefit of Java (for real-time, GC, etc).
- He pointed to BeanShell as a substitute for MONAD. (We use BeanShell *extensively* where I work but I don't see it as being the same thing as MONAD at all.)
- I see this as a one way street. Solaris is benefiting Java, but not benefiting *from* Java.
- I asked if he saw devices high-volume devices like cellphones, PDA's, iPod's, becoming the new PC's in the future.
- His answer: absolutely
- He mentioned that the iPod actually runs OS-X and is actually just a little Mac.
- James talked about thinking about "Services" rather than "Servers" and designing your API's accordingly by not doing things like including hostnames or ip-addresses in the API's.
- By doing so you preclude a service from actually being implemented either locally or by a cluster or anything other than a single remote server.
- This is very Jini'ish and reminds me about Bill Joy's comments on "Protocols to Agents"
- The problem with Intel and AMD processors it that these chips are designed for the video game industry which is much larger than the IT industry
- As a result, when it comes to choosing between running cool (which is good for IT racks) or running Quake 3 fast, they choose the later.
- This is why they haven't given up on SPARC; it is the only remaining CPU designed for the Enterprise
- He talked a lot about Solaris and Java support for real-time programming. It seems that Java has become something of an unexpected success in this field. He says that they are getting excellent timing results (better than "C"). He talked about a lot of applications of Java in the avionics and automotive industries.
- Truly concurrent GC is hard and has a lot of overhead. Normally you trade performance for determinism and 99.9% of the industry cares more about performance. Real-time on the other hand cares about determinism. Deterministic GC has ~30-40% overhead.
- Java test suite is very extensive:
- It takes one machine week to run.
- They have more developers writing tests than the original code.
- How Canada and the USA are behind much of the rest of the world when it comes to running Java on cellphones.
- Java cellphone game market has really started to takeoff in Canada in the last year (only 4-5 years behind Japan).
- In Brazil you can file your taxes using a Java application running on your cellphone.
- There are 1 billion Java cellphones and 1 billion smartcards
- The future use of Java RFID chips in US passports.
- He lamented that developers don't spend enough money on tools.
- He mentioned that the average carpenter spends more on tools than the average software developer. (I remember how as a teenager growing up on a dairy farm, I saved up my money to send away for a C compiler. I actually bought an old version and then upgraded it because that was cheaper. Given that I made far less than minimum wage at the time, a few hundred dollars was a very large expense. Today everyone expects to get their languages for free.)
- I would argue that Sun helped start this trend by giving the JDK away for free. Before that people were buying their languages.
- He talked a lot about open-source and all the stuff that Sun is open-sourcing.
- He said that this works for server software because money is in services, not software.
- He said that this doesn't work for desktop software however because if it is done correctly it shouldn't require support.
- He mentioned Sun's cool new filesystem
ZFS, and Swing GUI builder
Matisse
- He talked about the importance of building security in from the very beginning and not adding it on as an afterthought (like MS does).
- He mentioned how difficult it is to work with MS API's and protocols because they are all closed/proprietary.
- He said that while reverse engineering is legal in the US, the DMCA makes reverse engineering anything related to "content management" illegal.
- As a result, MS is abusing this by touting everything they have as a "content management" feature, whether it makes sense or not.
- He mentioned that in Brazil they store entries for 120 million people in one (clusterd) Sun LDAP server.
- There was some talk about the JCP and how that while it slows Java progress down a bit; it leads to solutions which have a better chance of actually being useful in the end.
- He compares the JCP to a democracy and MS to a dictatorship. While the dictatorship is more nimble, people generally prefer democracies.
- The question of SOA and Web Services came up, to which James replied that he believed more in the actual concepts than in the marketing.
- If you actually spell them out, then "service oriented architectures" and "services over the web" are good things.
- CORBA and Jini are perfectly good at implementing "service oriented architectures", even if they aren't "SOA" (the marketing acronym) .
- He also mentioned that he hasn't been able to figure out yet what is meant by Web 2.0.
- He talked about the importance of developer support.
- While it may appear that technical decisions are made top-down, what really happens is that the CTO/CEO asks the person below them for their thoughts and they do the same. In the end it is the actual developers who influence technological choices.
- I would mention that this is why MS is trying to supplant Java with C# in Colleges and Universities
- (There was a
C# Fiasco at my alma-mater, the University of Waterloo, where there were allegations of MS inappropriately influencing curriculum through grants to the engineering department.)
- There was some talk about the tricks (techniques?) that lawyers use in order to prolong the patent rights.
- One thing that he mentioned several times was how the industry, out of ignorance of the past, keeps re-inventing or re-visiting the same ideas over and over again. Who wants to waste their time learning old stuff when you can be "inventing" new stuff instead ;-)? (I wonder how much this has to do with ignorance and how much it has to do with it being easier to market, sell, and/or write about newer stuff.)
I wanted to ask about Jini and MDA but didn't get a chance.
Now if I could only arrange lunch with Bill Joy and dinner with Alan Kay...