Skip to content

JavaOne 2008, Day 1

The day started out very well. My coworkers and I walked from our hotel to the Moscone Center for breakfast around 8:00am. Just outside the Moscone, we stopped at a crosswalk and realized that Ian Murdock was waiting right in front of us. We introduced ourselves and had the chance to talk with him for a few minutes outside the front door. He could have easily brushed us off, knowing that a never-ending stream of JavaOne attendees could corner him. But instead, he spent a few minutes with us and was genuinely interested in talking. What a personable guy. Its easy to see why Sun values him.

Following are additional topics from the day (too tired to write them now...just putting notes here to remind myself later).

General Session

The general session opened with an urban dance group performing to several songs. It kept the audience entertained until Rich Green (EVP, Software) came out and introduced this years theme: Java + You. He mentioned that never before have end users and content creators been given so much power. Rich internet applications are being fueled by higher bandwidth, and rich user experiences are becoming the norm.

The session was very long and diverse. It included John Gage, Chris Melissinos, James Gosling, Johnathan Schwartz, Robert Brewin, Nandini Ramani, and Jeet Kaul, all from Sun. Special guests were Ian Freed, the VP of Amazon's Kindle division, and Rikko Sakaguchi of Sony Ericson. The session was very fast-paced with plenty of good demos. Here's a brief summary of the topics:

  • John Gage mentioned the hardware monitoring devices placed throughout the Moscone center to track movement, CO2 levels, vibration, and electricity usage. Pretty cool way to optimize resources.
  • Ian Freed presented the Amazon Kindle - a book reader with an LCD screen. Piggybacks on the cellular network (Sprint EVDO) to deliver content from Amazon. You can sign up for newspapers, buy books, etc... Sounds like a great device,
    1. its odd that an internet-capable device with a keyboard can't do anything but buy books from Amazon.
    2. you can get data in/out via USB or an SD card. No PDF though...text-only, or one of those special book formats.
    3. the device runs java and can be extended with 'booklets'1
    4. it costs $400. Most people can't justify a purchase like that while still having to pay full [Amazon] price for a book.
  • Rikko Sakaguchi is a cool guy from Sony Ericsson. His most memorable statement was "the vision drives the implementation". Very cool to hear that, given my the current problem set. He showed a video that was used internally to get funding for a new phone product. Nothing of technical substance, but a cool teen-oriented video with lots of CGI.
  • JavaFX is the new easy-syntax way to write fat client applications for Java SE, Java ME, and Java TV (to debut later in 2008). Sun gave 3 incredible demos using Java FX:
    1. ConnectedLife - a social networking application that works across desktop, browser, and mobile systems to keep groups of friends in sync with each other in real time.
    2. Movie Cloud - a globe that shows movies as panels on a constantly-moving 3D globe. The presenter said he had gone as high as 200 simultaneous movies, but I wonder about the bandwidth and CPU use when it goes that high. Regardless, its impressive to see Java3D in heavy use like that through a simple scripting languge.
    3. Photo Flockr - a visual Flikr tool that finds photos via tags, and displays the results as floating thumbnails on the screen. clicking a photo can enlarge it or cause a second tag search to be executed.
  • Java statistics.
    • 85% of phones have Java
    • 91% of desktops hava Java
    • 100% of BlueRay players have Java
    • 48 million JRE downloads per month
    • Java SE Update 10 released today
  • Glassfish has a 98K kernel (with no containers loaded--servlet, EJB, JBI, SIP, etc...). Will be available as a media server for set-top use, and as a small device server for embedded use.
  • OpenJDK - officially released today as part of Ubuntu 8.04 Hardy Heron and RedHat Fedora
  • Mysql has achieved 65,000 downloads per day
  • NetBeans is seeing 44% year-over-year growth
  • Project Hydrazine is a web computing effort that ties together SOA and SaaS practices behind JavaFX (and other technologies?). The presentation was a bit vague, but the link to the website should help. Rich Green said Hydrazine will give content creators and owners more insight into how their apps and data are being used than any other platform. A very useful tool if your application isn't the only app using your services and your data.
  • Content creators & developers will be working smoothly together. They showed a demo of one person using Gimp (or Photoshop) and sending content updates to another developer working in JavaFX. They discussed a graphics change, made it, deployed it, and showed it running on a cell phone in about 5 minutes.
  • The Neil Young Blue-Ray DVD Project. Musician Neil Young came on and talked about his 40+ year music career. Said that he always wanted to build a video archive, and was disappointed when the entertainment industry created DVDs with so few features. Blue-Ray finally gives him the power he needs to deliver his archives in the way he's always dreamed, and the ability to add more content in the future while maintaining a seamless experience for the user. Notes:
    1. on May 12, 2008, his website had a scrolling banner at the bottom of the page saying that he was speaking at JavaOne.
    2. hows that for forward thinking --a musician talking to 10,000+ developers about code. Ha!
  • OpenEco is a website where companies' energy use is monitored online. This story is related to the company that built and installed the sensors for JavaOne. Its about being environmentally responsible

Overview of JavaFX

TS-5152, by Chris Oliver, the creator of F32--the precursor to JavaFX.

  • Chris was interested in linguistics. Natural languages have rules & irregularities, keywords, and modes (declarative and imperative).
  • Lessons learned:
    • concise is good (verbose = too much, like cobol, obscure = too little like ??)
    • always concerned about performance of user vs. machine
    • in evolution of languages, C dialects have been the clear winners in the imperative space: C, C++, JavaScript, Java.
    • need to use ideas from functional languages - SQL, HTML, XPath, XQuery
    • avoid the Tower Of Babel: No DSL 3 in Java FX
  • can get the JavaFX compiler from http://openjfx.dev.java.net
    • same CLI as java: javafxc, javafx, javafxdoc
  • "Time" is a first-class function, so KeyFrame animation isi provided to manage visual state changes
  • block expressions are supported: var c = (var a = 2; var b = 5; a + b );
  • "sequences" are primitive arrays i.e. var z = [a, b, c];
    • sequence literals are supported, as are comprehensions and slices
  • curly-brace delimited variable replacesment is allowable in strings (i.e. System.out.println ("hi {name}"); )
    • good for i18n/l10n
  • JFX has support for bound functions
    • unbound functions are procedures (like all functions are, in JavaScript)
  • "on replace" is the key phrase for triggers
  • KeyFrame animation is good for more than gfx...any timed operation.
  • always use a model object (MVC)
  • JFX enables declarative scripting of UI, including layouts, bindings, triggers, and sequences
  • JFX is desperately needed in the community
  • architectural fascade pattern helps stub out functionality early
  • dragging an application out of a browser is possible with Java SE 6 update 10 (consumer JRE)
  • a unidirectional bind is 1 way i.e. model-->UI
  • a bidirectional bind is 2 way i.e. model<-->UI (use with "inverse" keyword)
  • a functional bind is ???

JavaFX Tutorial

This talk session was conducted by James Weaver. I bought his book ($18 at Barnes And Noble) a couple weeks before JavaOne and did some of the examples. Much of the discussion was centered around the crossword puzzle example from the book, so I didn't take many notes.

Summary:

  • always use a model for binding...you'll be glad you did
  • JavaFX uses declarative scripting of the UI. It includes:
    • layouts
    • bindings
    • triggers
    • sequences
  • JavaFX is sorely needed in the marketplace
  • when developing, use an architectural fascade to help stub out functionality early in the design process

At this point, James demonstrated the technique they showed in the keynote...dragging an applet out of a browser and letting it run from the desktop. He closed his browser to show that the applet process wasn't tied to it. Then he restarted the applet from the icon that had been auto-created on the desktop. I'm wondering if icon creation can be turned off--it could get really annoying otherwise.

Applets on the Desktop

I found it odd that neither James nor the keynote focused on how fundamental this drag-and-drop scenario is for applets, and for the software market. Prior to now, applets were a form of software that lived only on web pages. And that has certain implications:

  • authentication is handled from the outside((for example, by a web server using BASIC Auth, or an app server using JAAS ))
  • applets are components of something bigger
  • applets can only communicate with their host server
  • applets can't do anything computationally intensive
  • applets can't talk to the local machine

But moving an applet outside of a browser means the rules have to change. I haven't seen a complete list of what applets can do now, but they're definitely not constrained by the browser if they weren't opened with it. I'm interested to know if they actually run as an applet, or as an application. Time will tell.

One of the most important things they do when dragged out of a browser is create that JNLP launch icon. That creates a whole new realm of possibilities--

  • Sites can promote each other by sharing JNLP files instead of banner ads
  • Google searches can display JNLP icons in addition to hyperlinks
  • Schools and offices can distribute software simply by placing icons on their users' desktops or on their employee portals.
  • Friends can email applications to each other just by sending the JNLP file4
  • Security admins will go nuts because
    • Java apps don't contain machine-executable code, so they aren't blocked by virus scanners56
    • Java applets don't required administrative privileges to be downloaded, installed, or run. Locking down a PC desktop won't help much.
    • Java is a beneficial utility to have on an end user's machine, so its not likely admins will block Java from all users.

General Session

This general session was dedicated to Java itself.

Java EE6

  • Right-sizing is the idea of modularizing the JDK
  • Pruning is the removal (or non-downloading) of JDK components you don't need
  • Extensibility - the ability to design new stuff and add it to an existing JDK later
  • Ease of development
  • helps embrace open source libraries and frameworks
  • levelizes the playing field for extensions to the JVM
  • scripting languages become first-class citizens in the JVM
  • annotations become more prevalent and can be found in more places 7
  • less fiddling with web.xml
  • look for self-registration of 3rd party libraries
  • JAX-RS plays a new and more important role in distributed software
  • scripting languages become an extension to the JVM
  • new simplified packaging method (a new file extension like "ear" --forgot the exact extension)

They demonstrated a java web application deployed to a running glassfish server, and displayed the content of a JSP in a web browser. Without stopping the app, they modified a JSP and the change was automatically detected, compiled, and rendered properly in the browser. very cool!

Statistics:

  • 7 million java developers
  • 700,000 Java SE downloads per month
  • 90.7% of all PC's have java installed

Java SE

  • Modularity thanks to JSR 294 and JSR 277
  • Support for multiple languages
  • new file format: JAM ("java archive module")
  • JAM supports OSGi bundles
  • Applets are back!
    • smaller VM
    • applet quickstart utility
    • built-in video codecs in the JVM from On2 Technologies
    • (stop here for a demonstration of Parlays.com)
    • XMPP support in JavaFX
    • (stop here for a demo of Connected Life (URL??)

Java FX Case Studies

Presented by Jo(dot)Voordeckers(at)gmail(dot)com

  • Parlays is an online repisitory for videos of java conferences, users groups, training related to Java, etc...
  • Written by Jo partly as a test to see if Java and JavaFX could do full video streaming.

JMC

  • JMC = Java Media Components
    • simpler than JMF (what wouldn'tbe?)
    • will be built-in to Java 7
  • FOBS = Ffmpeg OBjectS
    • multi-language bindings. C++ and Java so far
    • object orented API's for media
    • cross platform Win, Lin, OSX
  • JMF API can render on a Swing JComponent (or JFXComponent).
    • currently, must do manual refreshes at the rate of the video stream (26fps, etc..) if using swing

JFXBuilder

http://reportmill.com/rio/RioScreenShotFull.jpg

  • Jeff Marten from Report Mill software
  • Tools: JFX Builder and JavaFX Rio
  • Launch their JNLP demo from here
  • company worked with NEXT environment originally, years ago
  • lots of skills and tools are needed to build a good app
  • JFXBuilder has stroke/fill/filter/reflection capabilities
  • one-click applet generation
  • VERY NICE tool for rich client creation.
  • Still on your own for back-end integration (true or not?)

Migrating Intel's IT to an ESB-based SOA

  • when it makes sense
  • reasons
  • architecture
  • implementation
  • performance impactors

Maven BOF Session

  • POMs
  • Child POMs
  • Dependency Management
  • Reporting
  • Declarative

  1. you did see that coming, right? Applets, Servlets, Midlets, Portlets, and now Booklets 

  2. Form Follows Function 

  3. Domain-Specific Languages 

  4. you and I know they're not sending the app itself, but to them...the icon is the app 

  5. some virus scanners actually scan them--but I've yet to see a virus program actually do anything to any kind of java download 

  6. let it be known that I predict a "Java Virus" scare in the near future as draggable applets become the norm 

  7. I fear this feature will be over-used and development will become more difficult as people develop incompatible annotations