Waiting for the keynote to start I see guys demoing an SL based (WRONG! It's Darkstar based - I should have known. Less lag ;-) (?) collaborative working env. called MPK20 (Project "Wonderland"). I'd never heard of it before but it looks very cool. I need to find out more. They showed how you can take your screen and share it in the virtual world and there are also noticeboards and common areas where you can paste up shared information. Each developer has their own office. Cool
Then they show Project Glassfish. There is a good crowd round the demo. Comparisons to Vista and the usual MSFT dig (shame). Otherwise exciting.
... the keynote is starting (video from Jonathan Schwarz). You get the distinct feeling that here under the dome the voice of god has spoken ... A little scary.
The next guy comes out. He's RL and more worryingly he's Californian. It gets worse. He has a beach ball. Everyone recoils in horror but then the mention of James Gosling gets a spontaneous round of applause. Now there is an announcement that there is going to be an unconference at the end of the day. Interesting to see if this catches on in the UK. Only ~10 put their hands when asked if they'd heard of the format...
Simon Ritter is up now. (Apparently the previous guy was called "Ricky"). Apparently 11,000 developers came to the developer days in Hyderabad (2.1% of the GDP in India is attributable to Java we are told). Unfortunately after Ricky, it now feels slightly like the Sun has gone in... Can I feel the wind start to pick up?..
James Gosling - "The Future is Open"
The Java landscape still has a great deal of innovation even though the VM and language has been stable for a long time.
We're on the road to ubiquitous computing. The network is spreading out to some really interesting edges and feeding on itself. 4 "Anywhere's" (Enterprise, Standard, Embedded and Card- interesting to see card up there still). The embedded world is tracking Moore's law pretty tightly. Its putting lots of stress and evolution in the APIs.
Java's Role: Conceptual framework which spans the network. It enables a homogeneous view of a heterogeneous reality; an ecological view. It's "learn once work anywhere". Its a realitively small step from Java on the desktop to Java on a coke machine, or in the enterprise. All the core learning carries forward.
It's used everywhere: Brazilian NHS (tracks every patient in one LDAP database and tracks every patient interaction across the entire country), giant telescopes, JPL, protein folding, eBay, Orbitz (Jini gets first mention ), FedEx (more Java developers than Sun), financial, web apps, games (e.g. A.I. engines)... It is now on > 1 billion handsets. There were 54 million JRE downloads in January ('07)
Web2.0 is now but what were the generations of technology? Early on it was rocket scientists (NASA) with bare metal and floating point operations. This hasn't gone away but it has morphed and grown. Thick client comes alon and now common within enterprises. Then Web apps. But what is "Web2.0"? Personally Gosling would delete the phrase from the vocabulary. It is a composite label for a bunch of underying ideas. What is in and what is not in the bundle depends on who is talking. The big thing is it's a lifestyle. (pic w. iTunes, Gmail, Yahoo,Google Maps, SalesForce, Rails, Basecamp). It's not the pure push models. Now the community is involved (Flickr, YouTube). In these sites they have produced almost othing. The content is generated by the community by their interactions with the services. They (Flickr and YouTube) provide the framework. You do the (s)mashing up.
It's a development model. It is very community oriented. People talk about Open Source (again it means so many things to so many people - forJames it's not the source it's the community. It's about collaborative development. People all around the world working to make stuff.) Then standard elements become important i.e. identity. What does your user look like?
A big thing has been AJAX. ("Gee you guys just realised you could do this? The browser has been capable of this for 10 years. Duh it's been sitting there"). What is important is not JScript and XML, it's the realisation that HTML alone does not give you a very good UI. Enhanced interfaces are possible. If you're doing forms use HTML, otherwise, it becomes difficult.
The JVM. It;s the integration hub. Most people forget about it. There are about >100 languages running on it. Many are not for all (Jmes wrote a Fortran 77 translator a few years ago for it "because he's stupid"). However the JVM is a mediator.
Weaving thrOUgh all these pieces is secuity. It's woven into the JVM. You don't go to the shop for anti virus software for Java. It doesn't need it. People have built all kinds of security sstems on it (banking, healthcare)
But this becomes inherantly complex. One of the jobs of the community is to battle it. The focus has been Java EE. 5,0 dealt with complexity via common scenarios by exploiting annotations and generics.
Historically people focussed on the API and the languages. Now it's also handled by the tools. Tools like Netbeans. It has a tremendous amount of work gone into it to simplify things. The app servers have also done the same (glassfish). All these pieces are developed in a very communal way. Sun showed the Java source since 1995. The only thing which changed was the licence.
Tying all the seperate dev.processes together is the JCP. Kind of like a standards organisation but kind of not. The big thing happening at the moment at the JCP is how to open up the process itself. List of JSR's. Mine (JSR 310) hasn't been mentioned yet but the point is that they are about simplifying things such as JSR-277 - the modular system.
JCP components are three fold:
- Specification - what is it for?
- Reference Implementation - can it be built?
- Compatability Test Suite - is my implementation complete?
NB also has a lot of support for enterprise dev. EJB, WS, debugging on the app server is greatly simplified.
Also refactoring, version control. More and more is being covered all the time.
[Aside: he's using a Mac for his presentation. He also seems to have written the slide presenation program he's using... Envy! Update: I'm told this is Huckster]
The desktop world has been changing. AJAX has driven the realisation that HTML does not produce a compelling user experience. THere is more than one desktop platform that people care about now. not just Windows but also Linux and OS X. (James refers to the perso app he's using and how it runs on any platform). The court cases with MSFT have been settled now and the JVM is ubiquitous. Web Start gives you a web-like way to find an application and download, install and run it. It does all the caching and version management. Plus if there is a new version of the system then it will do auto upgrades.
GWT - an interesting thing developing from AJAX. You write in Java but compile to Java script. The problem with JS is that there is so many different versions of it out there. When you use the GWT you can run on a pretty seerious spectrum of browsers. It's using Java to easy JS development.
Aligning the edge. So we have all these things on the edge, from the desktop, to cable TV, BlueRay, IPTV and mobile. They have all grown up somewhat independently. They all have APIs which are not too aligned. Aligning the APIs, E.g. mobile are growing up - they are converging towards Java SE. There is coming the MSA (Mobile Services Architecture) which declares standard functionality sets which different mobile devices support. There is also always the need for tools, tools, tools. To hide complexity and make development for multiple platforms easy. Not everyone is a developer and not all developers write code.
Macinac - real time code. JSR1: Realtime specification for Java. Originally desingned for extreme real time control in real world systems with complex sensor control feedback loops and a lot of scheduling.
What happens when you run an app server on a real time VM? It's damn quick per request almost always. On non realtime every now and then there are "excursions" while the system does a GC or a recompile. You just don't see it on realtime. SO why not all use the real time VM? There is a trade off betwen determinism and numbers. To get the max no of requests processed / per sec? Use the normal system. It exploits the common occurances and can gain much that way. You can't do that on real time.
Moore's Law. Moore's law was about # transistors, not clock rate. They aren't really getting that much faster not. Now it's a shift from clock rate to #'s of cores. Years ago, poor performance was OK because "whe things speed up on teh hardware we'll be cool". Now you must think about it. Java has a lot of support for multi threading. If you're lucky enough to do EE dev. you're protected. Otherwise...
The myth of Java performance... Dynamic compilation beats static (e.g. processor specialisation). Hotspot knows what silicon it is sitting on and will optimise accordingly. AMD can get stuff in and out of memory much much faster and better than Intel can even after Intel's recent speed bump. One cache miss means your app can slow down a lot.
Open Source. "Yes we really are going full open source". There are three reactions "hooray", "huh" and "no don;t you do that". There will be no compromise on quality. Just becasue there is a GPL licence on it does not mean anyone cancheck it put, change and commit. To become a committer the hurdles will be pretty strenuous. Most people who submit patches have broken 5 other things. There needs to be some policy for submitting so that they won't be looked at unless they pass the whole test suite.
[They hope to have moved to a new VCS by May.]
Which version of the GPL? GPL2 (+ the classpath exception) now but Sun are working with the GPL 3 folks.
So what comes next? Java is driven by the community. There is no way I (James) could have come up with all the wored and wonderful things that have been created by the community. Sign up to the community. Comment, create, debate participate. Do as much as you can to create something "really quite special". Enjoy your time. Thankyou.
Then rubber Duke's get thrown... Apparently we're (i.e. the British) harder to crack a smile on than even the Japanese.
Disclosure: I used to work for Sun between 1998 and 2005.