May 12, 2007

Java Puzzlers, a nice relaxing read :-P

Found this one at the JavaOne book store. This is a collection of not-so-innocent code, like:

public static boolean isOdd(int i) {
return i % 2 == 1;

Puzzled ? The bad news is, this is the easiest one and there are 94 more...

OpenLaszlo: From RIA to Ajax and Mobile

Session ID: TS-6725
Session Title: OpenLaszlo: From RIA to Ajax and Mobile
Session Abstract: OpenLaszlo is an open-source Java platform for creating zero-install web applications with the user interface capabilities of desktop applications.
OpenLaszlo programs are written in an XML markup language, combined with JavaScript technology. The platform supports multiple deployment environments and compiles the same source code into Flash; DHTML; and Java Platform, Micro Edition (Java ME). Developers are able to apply the same knowledge to leverage the benefits of each individual runtime environment.
This session introduces OpenLaszlo’s LZX language and its component model. Starting from a simple example that uses the basic interface components, the presentation deploys to different targets. It demonstrates important aspects of the platform, such as animation, layout, data binding, canvas drawing, and declarative UI, through small, targeted code samples. And it finishes off with tips and caveats on the supported runtime environments and illustrates some good OpenLaszlo development practices.
Attendees should have experience with dynamic web application development and have a basic knowledge of Java and JavaScript technologies.
Track: The Next Generation Web
Duration: 60
Speaker(s): Geert Bevin, Uwyn

Opinion: ah, Rich Internet Applications. Probably the most fashionable subject this year, so I had to attend at least one presentation about it :-) To be honest, UI is not my thing so it's hard for me to get excited about OpenLaszlo. It looks quite easy to build good-looking stuff with it, though. If you just want to quickly see what's it capable of, go and try Laszlo in 10 minutes.

May 11, 2007

Takes two to Tango: Java Web Services and .NET Interoperability

Session ID: TS-4865
Session Title: Takes two to Tango: Java Web Services and .NET Interoperability
Session Abstract: This technical session provides an overview of Sun's Java web services technologies and how they enable interoperability with applications built on Microsoft's .NET Framework 3.0.
You learn about Java APIs for XML Web Services (JAX-WS) and how interoperability is baked into the Java platform. You also learn the rationale for Sun's strategy in delivering implementations of a selected set of WS-* technologies, such as WS-ReliableMessaging, WS-AtomicTransactions, and WS-Security, as part of Web Services Interoperability Technology (WSIT, a.k.a. "Project Tango").
The session demonstrates how a Web service deployed on GLASSFISH can be easily consumed by the .NET 3.0 environment on Windows Vista. It also shows a how a service hosted on .NET 3.0 can be easily consumed by use of the NetBeans IDE.
You also gain visibility into Sun's roadmap for this technology and receive detailed guidance on how to engage with the community development effort.
Track: Java EE
Duration: 60
Speaker(s): Arun Gupta, Sun Microsystems, Inc.; Harold Carr, Sun Microsystems, Inc.

Opinion: I must say I was quite convinced by the WSIT demo, which used an Excel/.NET client to invoke a JEE web service deployed in Glassfish. From the developer point of view, the complexity of adding reliable delivery, security, etc seems to be completely hidden by the Netbeans plug-in, so developing interoperable web services might not be a complete nightmare after all. The project is still very young, but I find it very promising.

Taking Java Technology to New Frontiers: Enterprise Batch Processing with Spring Batch

Session ID: TS-76950
Session Title: Taking Java Technology to New Frontiers: Enterprise Batch Processing with Spring Batch
Session Abstract: Many applications in the enterprise domain require bulk processing to perform business operations in mission-critical environments. These business operations include automated, complex processing of large volumes of information that is most efficiently processed without user interaction. These operations typically include time-based events such as month-end notices or correspondence; periodic application of complex business rules processed repetitively across very large data sets such as insurance benefit determination or rate adjustments; or the integration of information received from internal and external systems that typically requires formatting, validating, and processing in a transactional manner into the system of record. Spring Batch is the only comprehensive lightweight batch framework designed to enable batch development for enterprise systems of varying complexity. Simple as well as complex, high-volume batch jobs can leverage this framework in a highly scalable manner.
The Spring Framework is the most popular application programming framework for Java technology and Java Platform, Enterprise Edition (Java EE) development, with widespread usage across many industries. Spring is an open-source product published under the Apache Software License. It enables Plain Old Java Object (POJO)-based development while making it easy for developers to access advanced enterprise services.
This session focuses on how to use, configure, and extend the batch framework by utilizing familiar Spring patterns such as dependency injection and inversion of control. It covers general batch concepts such as logging/tracing, transaction management, statistics, restart, skip, resource management, and job partitioning to demonstrate the capabilities of Spring Batch. It discusses optimization techniques enabling the batch framework to run extremely high-volume batch jobs, including execution within a Java EE container. And it also addresses the misconception that the Java platform is not appropriate for developing high-volume batch applications.
The session is intended for architects, developers, and performance testers of batch applications who are interested in understanding how the Spring Batch framework enables batch application developers to focus on the business aspects of batch jobs in a highly scalable enterprise environment.
Track: Open Source
Duration: 60
Speaker(s): Rod Johnson, Interface21; Wayne Lund, Accenture; Scott Wintermute, Accenture

Opinion: very interesting presentation on Spring Batch, a batch processing framework co-developed by Spring and an Accenture team ;-) No code has yet been released, but the concepts look really interesting and should allow developers to really focus on the business processing and not on the "plumbing" aspects (pun not intended). If batch processing is part of your application, I suggest you give it a try... when it comes out!

Java Persistence API: Best Practices and Tips

Session ID: TS-4902
Session Title: Java Persistence API: Best Practices and Tips
Session Abstract: It has been almost a year since the release of the Java Persistence API specification, and many enterprise developers have started using this technology in their Java EE and Java SE applications. As a consequence, the recurring questions JPA developers have been posing need to be addressed. This session goes through some of the best practices for designing efficient JPA applications and presents techniques for achieving functionality in JPA-based applications that is currently lacking in the core API.
The session covers the following topics:
• Basics of high-performance JPA entities
- Flush mode
- Locking strategy
- Caching
• Whether to use a container-managed or application-managed entity manager in web tier applications
• Generated primary keys--are they as simple as they sound?
• Scenarios regarding detach and merge
• Bulk updates and deletes--things to remember
• Impact of data model on entity performance
• Tips for mapping objects to related data
• Mapping overrides using XML
• Transactions and entities
- Transaction isolation levels
• Using stored procedures with JPA
Track: Java EE
Duration: 60
Speaker(s): Rima Patel Sriganesh, Sun Microsystems, Inc.; Marina Vatkina, Sun Microsystems, Inc.; Mitesh Meswani, Sun Microsystems, Inc.

Opinion: exactly what the title says! A good collection of tips and best practices for JPA. Not much else to say, expect that when it comes to persistence, things are not as easy as they seem :-) Some of the pitfalls presented here are quite tricky, so beware... Hopefully, some of them can be eliminated by JPA 2.0!

Building Composite Services Applications

Session ID: BOF-8238
Session Title: Building Composite Services Applications
Session Abstract: This BOF session deals with the creation of business solutions from service components by use of the Service Component Architecture as the executable composition model. It covers the SCA assembly specification and the techniques it makes available to enable developers to wire individual components and services together into a coherent and workable whole. The presentation examines an example composite application written in SCA, Java technology, and PHP, with an exploration of the options available to deal with some common composition problems. Developers can quiz people who have been working on the specifications and gain insight into the overall design and the usage of a technology increasingly forming part of services runtimes.
Track: Services and Integration
Duration: 50
Speaker(s): Mike Edwards, IBM; Jim Marino, BEA Systems, Inc.

Opinion: follow-up on TS-8194. This session focused on demos of SCA implementations, like Apache Tuscany (support for Java and C++) and Fabric3 (support for Java only at this point). As I've said before, this looks really really good, but all these projects are still in a very early stage which I don't think makes them strong candidates for industrial-strength software. Still, this could become a very serious option in next 6-9 months and I encourage everyone to try it out.

After Dark Bash

This is the big JavaOne party that you'd expect. What can I say? Tons of food, beer, a Mini Kiss concert, a battle robot arena... and several thousand geeks coming in all sizes and shapes.

Here's a taste of Mini Kiss:

And another (yeah, I know you want more):

The battle robot arena:

And a couple more pictures taken around it:

Believe it or not, we left that party to attend the SCA BOF. How PROFESSIONAL is that ;-)

High-Performance Java Technology in a Multicore World

Session ID: TS-2885
Session Title: High-Performance Java Technology in a Multicore World
Session Abstract: This presentation discusses the issues facing Java and Java Virtual Machine (JVM) technologies in a computing world quickly moving toward multiple-core CPU solutions. It reviews current and planned multicore technologies from Sun, Intel, AMD, and others and describes relevant JVM technology requirements and performance optimizations in detail. It also discusses changes, including example code, in Java technology-based applications to take advantage of multicore platforms. A short demonstration shows how to solve common performance and scalability bottlenecks through JVM software tuning.
Track: Java SE
Duration: 60
Speaker(s): David Dagastine, Sun Microsystems, Inc.; Paul Hohensee, Sun Microsystems, Inc.

Opinion: serious talk on JVM optimizations for current multi-CPU, multicore architectures. The main performance bottlenecks - memory allocation and GC - were presented, as well as a number of tuning options (the -XX flags, Large Pages, NUMA) which could be used to reduce their impact. It's interesting to see that so much work is still being done on speeding up the VM out of the box. Sun's website has more information tuning and GC.

Killer Apps: Data Mining Demystified

Session ID: TS-1262
Session Title: Killer Apps: Data Mining Demystified
Session Abstract: Displaying relevant ads next to your emails; predicting the value of houses you want to buy; predicting future airline ticket costs so you can buy at the “right” time; recommending books or movies you might want to see, based on your past interests. These are a few of the “killer apps” that are possible due to data mining technology. Many of you may have seen or be users of advanced applications such as Gmail, Zillow, Farecast, Amazon, or Netflix. Data mining is a technology that can enable such applications.

Opinion: Interesting for 15 minutes, because indeed you do understand how Amazon and Gmail gather all there's to learn about you and your lifestyle, and then mine it to offer you targeted ads (I'm sure 3-letter agencies love that stuff too). Cool stuff, but also quite evil. After 15 minutes, this became all about writing obscure database code and my brain switched itself off.

May 10, 2007

Seam and SOA (not!)

This should have been "Seam and SOA", but for whatever reason, Gavin King wasn't ready to give that speech and replaced it with a walk-through presentation of Seam features and how they fit really well into JSF/Facelets pages. Step by step, he built a very simple form, to which he added authentication, SQL queries, Ajax sub-pages, etc. Granted, there's some underlying configuration and deployment work (which he didn't show), but it's hard not be convinced...

Excellent presentation and very interesting technology. I don't think you can afford to ignore Seam in the near future!

Java Language Modularity with Superpackages

Session ID: TS-2401
Session Title: Java Language Modularity with Superpackages
Session Abstract: JSR 294, Improved Modularity Support in the Java Programming Language, deals with information hiding for “programming in the large.” Structuring a large program with packages usually means exposing too many implementation details to the whole world. The “superpackage” construct defined in JSR 294 introduces a level of access control wider than a package but narrower than public, so that implementation details can be better encapsulated. This session discusses how superpackages affect access control at compile time and runtime, how they are represented, how they enable separate compilation, and how they interact with JSR 277 versioning and deployment.
Track: Java SE
Duration: 60
Speaker(s): Andreas Sterbenz, Sun Microsystems, Inc.; Alex Buckley, Sun Microsystems, Inc.

Opinion: interesting presentation of a new modularity entity discussed in JSR 294, which should be part of Java 7. Basically, a superpackage allows you to encapsulate one or more packages (or superpackages) and declare in a separate single file :
  • which public classes will really visible outside of the superpackage.
  • which public classes will be only visible to other classes inside the superpackage.
This feature is still being discussed, but once public, I think it should be useful in every large application. Keep an eye on it.

Jboss party

Around 6PM, we dropped by the Jboss party at the Metreon, just a few minutes away from the Moscone center. Nothing to write home about (this isn't 2001 anymore!), but still a nice little party : food, beer and music, what else can you possibly ask for after sitting in conference rooms for 6 hours ? ;-)

PS: believe it or not, I went to bed early. Brain overload, jet lag, junk food, lack of sleep and sub-zero air conditioning are finally taking their toll... Not that I'm complaining, but there are two more days to go, so a good night sleep is kind of mandatory for me right now!

The JSR 281 IMS Services API: Time To Deliver

Session ID: TS-5102
Session Title: The JSR 281 IMS Services API: Time to Deliver
Session Abstract: At the 2006 JavaOne conference, the JSR 281 IMS (IP Multimedia Subsystem) Services API was introduced. In session TS-3319, the following statement was made about the usefulness of Java technology-based IMS applications: “It also draws a picture of the cool Java applications becoming possible with this API and how they can enrich the mobile Java technology world.” Now, one year later, as the reference implementation (RI) is well under way, it is possible to write applications that deliver on that statement.

This session presents an overview of the key functions and major features, to familiarize the audience with the specification. The JSR API provides a toolbox of useful IMS primitives and the Open Mobile Alliance (OMA) enablers of Push-to-Talk over Cellular (PoC), presence, and XML Document Management (XDM). It allows programmers to implement their own multiuser services with the versatile Core IMS packages as well as standardized IMS applications. The API hides the complex IMS technology details and exposes service-level support to enable rapid development, allowing programmers to focus on the main application functionality rather than the details of underlying protocols, such as SIP, RTP, and XCAP.

The session includes an illustration of hands-on, step-by-step development of an interactive IMS application that can instantly share multimedia content, such as images, audio, and video. The usefulness of the IMS Services Java technology-based API is proven by implementation of the application within the time frame of a JavaOne conference session by use of the Sun Java Wireless Toolkit, extended with a JSR 281 implementation, and the NetBeans IDE. The Java technology-based application is packaged and downloaded to a pair of JSR 281-enabled devices for an end-to-end demonstration run. The example shows how easy and rapidly developers can write, compile, test, and deploy an IMS Java technology-based application.

The attendees will leave this presentation with a better understanding of how the JSR 281 IMS Services API will enable future end-to-end multimedia IP-based applications in a next-generation Java technology-based mobile environment.

Track: Java ME
Duration: 60
Speaker(s): Stefan Svenberg, Ericsson AB; Niclas Palm, Ericsson AB

Opinion: cool presentation by 2 Ericsson engineers, which demonstrated how a J2ME midlet can use the JSR 281 API to connect to and access IP Multimedia Subsystem (IMS) services in the network. Using two phones, they demonstrated a point to point chat application where users can connect on demand and exchange text, pictures and even streaming video (the demo was done live, using roaming on the Cingular network). They also showed how the connection request sent by one of the users can include a picture and a ring tone, which are both played at the receiving end. Quite cool indeed.

The Top 10 Ways to Botch Enterprise Java Technology-Based Application Scalability and Reliability

Session ID: TS-4249
Session Title: The Top 10 Ways to Botch Enterprise Java Technology-Based Application Scalability and Reliability
Session Abstract: This follow-on to the last JavaOne conference’s sleeper hit “The Top 10 Ways to Botch an Enterprise Java Technology-Based Application” explores best practices for protecting against scalability and reliability in Java EE applications and compute grid environments. Starting with simple abuses of messaging and clustering technologies, this presentation navigates a wide swath of options available to enterprising architects seeking to limit the effectiveness of scale-out environments.
After last year’s presentation, the speakers were disappointed that some attendees mistakenly used this information to avoid pitfalls, errors, and other common causes of project failure. They hope for better results this year.
Track: Java EE
Duration: 60
Speaker(s): Cameron Purdy, Tangosol, Inc.

Opinion: great, funny presentation on things everyone in Software should know and apply, but as the speaker put it, "there's never time to do things right, but there's always time to do things over again". Topics included performance vs scalability, using 3rd party software vs doing everything yourself, etc. Just common sense, really, but these mistakes can really kill your application. Read, learn and DO IT, DO IT ;-)

May 9, 2007

JavaOne survival tips

  1. Learn how to cut queues (not, I'm not talking about JMS). Being French helps ;-)
  2. Eat when you can.
  3. Rest when you can.
  4. Do 50 push-ups a day for two months BEFORE the conference.
  5. If you see a power plug, fight for it ruthlessly.
  6. Whenever the WiFi network seems to be up, seize that opportunity too.
  7. Bring aspirin. Lots of it.
  8. And intravenous caffeine injections too.
  9. Yes, you will need a warm sweater. The air con is FREEZING.
  10. Last but not least, never, ever try Kung Pao beef at Harry's Hunan. "Volcanic" doesn't even begin to describe it.

Effective Java™ Reloaded: This Time It's for Real

Session ID: TS-2689
Session Title: Effective Java™ Reloaded: This Time It's for Real
Session Abstract: It's been more than five years since Effective Java™ was released. The Java platform has evolved, and we've learned more about how to use it to best effect. This session covers new material added to the second edition, which makes its debut at this conference. The presentation, which should be useful to every working programmer, contains plenty of new material that was not covered in the 2006 session.
Track: Java SE
Duration: 60
Speaker(s): Joshua Bloch, Google, Inc.

Opinion: Josh Bloch is Chief Java Architect at Google. 'nuff said ! Most of the presentation was pure Generics madness: Collections, new patterns, how (not) to use wildcards, etc. Very impressive. These pretty wild OO techniques are a sample from the new edition of Effective Java, which should be out... someday. Looks like a must read.

Spring and Service Component Architecture as the Basis for Distributed Services Applications

Session Title: Spring and Service Component Architecture as the Basis for Distributed Services Applications
Session Abstract: The Spring framework offers an excellent way of assembling coarse-grained components, which, in turn, can form part of a larger application. Service Component Architecture (SCA) offers a simple way of composing individual components together in a distributed runtime. Together, Spring and SCA form a powerful combination for the creation of distributed and composed business solutions using web services and other services protocols. This session demonstrates the step-by-step construction of a distributed order-processing application using Spring beans and SCA composites, showing the advantages of the separation of concerns between the detailed business code within the Spring beans and the solution configuration information held within SCA composites.
Track: Services and Integration
Duration: 60
Speaker(s): Adrian Colyer, Interface21; Mike Edwards, IBM

Opinion: interesting session presenting a high-level architecture for Service Oriented Applications. Basically, SCA promises to connect any two kinds of software components, regardless of the implementation language and of the communication protocol they use. SCA is a joint initiative by IBM, BEA and many more assembled in the Open SOA (OSOA) group which maintains the SCA specification. Spring isn't part of OSOA, but its features obviously help decoupling the business logic from the underlying technical "details". Again, an interesting session, but given the ambition SCA sets for itself, how many more years will pass before it is mature and interoperable enough to actually get things done ?

JavaOne day 3

Today's program:
  • TS-2689: Effective Java™ Reloaded: This Time It's for Real
  • TS-8194 : Spring and Service Component Architecture as the Basis for Distributed Services Applications
  • TS-4249 : The Top 10 Ways to Botch Enterprise Java Technology-Based Application Scalability and Reliability
  • TS-2388 : Effective Concurrency for the Java Platform
  • TS-4588 : Advanced Enterprise Debugging Techniques
I'm not yet sure which BOF sessions I will attend. And there's that Jboss party tonight (sounds like a BAAAD idea). We'll see !

Tips and Techniques for Achieving Web Services Interoperability in Enterprise Applications

Session ID: BOF-8081
Session Title: Tips and Techniques for Achieving Web Services Interoperability in Enterprise Applications
Session Abstract: Web services technology has the promise to provide a new level of interoperability between software applications. There is a rush to enable the products and applications with WSDL, SOAP, and UDDI capabilities. The Web Services Operability organization (WS-I) helps align different technologies to solve a single business problem. Although the WS-I lays down guidelines for web services interoperability across platforms, you need to consider certain aspects to ensure interoperability among web services providers and consumers.

Web services levels the interoperability field for products built on top of various technologies such as .NET and Java Platform, Enterprise Edition (Java EE). However, several details can pose obstacles in the path of interoperability for developing enterprise applications. This session covers some of the practical considerations for ensuring that your web service interoperates with other vendors’ client platforms. It also explains how the framework works.

This framework currently includes integration of the WS-I testing tools analyzer; monitor; and other well-known vendors’ client platforms, such as .NET, Java API for XML Web Services (JAX-WS), BEA, and Axis. Because the core engine of this framework runs on web services, users can test their endpoint remotely. This presentation is aimed at web services application developers who need to ensure interoperability between their service and other vendor clients.

The attendees are expected to have basic knowledge of web services, WSDL, and SOAP.
Track: Services and Integration
Duration: 50
Speaker(s): Nilesh Junnarkar, Oracle; Tugdual Grall, Oracle Corporation; Velmurugan Subramanian, Oracle Corporation

Opinion: decent presentation with some good tips, but too much time was spent demoing their interop tool, which can run a WS between any two application servers (Jboss, Weblogic, .NET, etc). Interesting, but I expected a more technical presentation. And it was getting late too!

Embracing the Standard: Migrating a Spring/Hibernate Application to Java Platform, Enterprise Edition (Java EE) 5

Session ID: BOF-4181
Session Title: Embracing the Standard: Migrating a Spring/Hibernate Application to Java Platform, Enterprise Edition (Java EE) 5
Session Abstract: Java Platform, Enterprise Edition (Java EE) is running to set the industry standard for developing server-side Java technology-based applications. Unfortunately, up to Java 2 Platform, Enterprise Edition (J2EE) 1.4, Java EE acquired the reputation of being heavyweight, difficult to learn, and requiring a lot of boilerplate coding. As a consequence, over the years, popular open-source frameworks such as Spring and Hibernate emerged that are widely used to develop server-side applications outside of the Java EE standard. The now one-year-old Java EE 5 has been heavily inspired by these open-source frameworks and has incorporated their best ideas and paradigms into the standard.

From an architectural point of view, Java EE 5 has become quite similar to the Spring/Hibernate approach. If it is your goal to minimize dependencies on nonstandard components, it is obvious to think about migrating Spring/Hibernate-based applications “back” to the Java EE 5 standard.

This session shares the speakers’ experiences with migrating a midscale web application using Spring/Hibernate to a pure Java EE application. It presents their technique for doing the actual port, lists noteworthy differences between Spring/Hibernate and Java EE 5, and discusses whether Java EE actually lives up to its promise.

After this session, the attendees should be able to assess the costs and benefits of migrating an application based on Spring/Hibernate to Java EE 5 technology.

Track: Java EE
Duration: 50
Speaker(s): Adrian Görler, SAP AG; Robin de Silva Jayasinghe, SAP AG

Opinion: solid, well-structured, informative presentation. Ach, ze Germans! ;-) The issues were clearly presented in a totally unbiased way. Granted, the application they migrated from Spring/Hibernate to JEE 1.5 isn't a huge one, but it still highlights the trade-offs you may have to make. Excellent starting point for anyone wondering if they should migrate or not.

Unleashing the Power of Multi-Core Processors: Scalable Data Processing in Java Technology

Session ID: TS-1473
Session Title: Unleashing the Power of Multi-Core Processors: Scalable Data Processing in Java Technology
Session Abstract: This presentation introduces Pervasive DataRush, a new software technology based on the Java platform for processing large amounts of data in a scalable fashion fully utilizing multi-core systems. The audience will be provided an overview of the framework architecture and several working examples of DataRush scripting and Java code. A case study will cover how the parallel framework is currently in use within a shipping product. The audience will leave with an understanding of performance and scaling issues multicore CPU’s bring, specifically around large volume data processing and a new Java technology-based solution.

Opinion: I tried this one instead of TS-4902 (Java Persistence API: Best Practices and Tips). Oh boy, what a mistake. On paper, this looked interesting, but it turned out to be... I don't know what. No offense to the speaker, but I'm not sure what point he was trying to make or what this software can really do for you. If you can get through the insanely opaque API, maybe you can do parallel number crunching (then again, there are many other ways to do that). I totally fail to see how this could apply to a JEE n-tier application. Sorry!

Distributed Computing in the Modern Data Center: Matching the Right Technology to Your Task

Session ID: TS-88040
Session Title: Distributed Computing in the Modern Data Center: Matching the Right Technology to Your Task
Session Abstract: Matching the right Java technology to real and immediate distributed computing problems for your applications--such as scale-out, high availability, caching, and clustering--can be like unraveling a Gordian knot.

This session cuts through that knot, by analyzing real-world use cases and defining some rules for when and when not to use the Java Message Service (JMS) API, Enterprise JavaBeans (EJB) software, Java DataBase Connectivity (JDBC) technology, Simple Object Access Protocol (SOAP), Java Data Objects (JDO) API, Remote Method Invocation (RMI), JavaSpaces technology, and more.

It discusses the following issues, among others
• Caching--both read-only and read/write--in front of a system of record
• Signaling and coordination between applications, using the JMS API, shared databases, and other technologies
• Shared view of business and application state data between different applications and between multiple nodes of a clustered application
• Data windowing over massive data sets

Attendees learn about:
• The current state of the distributed computing landscape
• How the different technological approaches play out in actual use cases
• Decision-making tools for evaluating which technology is right for you

Track: Services and Integration
Duration: 60
Speaker(s): Ari Zilka, Terracotta

Opinion: very interesting session. The speaker detailed several real-life application architectures which failed to scale (too many transactions, network I/O bottleneck, IT architecture preceding over software architecture, etc). Then, he explained the basic concepts of Terracotta (namely Heap Replication and Network Memory Management) and showed how they helped solve the problems discussed before. And you can still use POJOs. Very unorthodox software indeed. I need to learn more about this stuff! Unfortunately, the demo didn't really work, but that's what you get for running it on OS X ;-) Anyway, if you've never heard of Terracotta, I recommend you check it out.

Java Platform Performance on Multicore: Better Performance or Bigger Headache?

Session Title: Java Platform Performance on Multicore: Better Performance or Bigger Headache?
Session Abstract: Java technology-based applications are not easy to optimize, especially on multicore processors, with issues ranging from garbage collection and Java Virtual Machine (JVM) options to quality of generated Java code. Multiple cores should improve Java technology performance, but when performance doesn't materialize, developers are left wondering what's going on.

AMD CodeAnalyst Performance Analyzer allows developers using the Java programming language to correlate time-based profiles, event-based profiles, generated (JIT) code, and other hardware issues back to their original Java source code. This session discusses intelligent use of AMD CodeAnalyst Performance Analyzer to investigate ways of improving Java platform performance with multicore machines.

Highlights include hardware counters, thread investigations, the effects of changes on generated code, and investigating hot methods. By the end of the session, developers will have an understanding of how to improve the multicore-machine performance of their programs written in the Java programming language.
Track: Tools and Languages
Duration: 60
Speaker(s): Azeem Jiva, AMD

Opinion: good overview on why debugging & optimizing multi-threaded software is difficult, which really applies to JEE applications where a lot of multi-threading happens explicitly or not (pooled objects, database connections, multiple cores, etc). The speaker then explained that although there are plenty of tools out there to instrument bytecode (Jfluid, Eclipse TPTP) or just profile (gprof, OProfile, etc), none of them gathers the full spectrum of information needed for analysis. Using a couple of demos, he introduced AMD Code Analyst (free to download for Windows & Linux on the AMD website), which uses CPU hardware events to collect the lowest-level and most complete information available while you application is running. Then, it's up to you to pinpoint problems, understand what your code does wrong and fix it. No silver bullet, but if you have some idea of what you're looking, you'll get there. Good tool and good session.

Project Blackbox

Sun has a Blackbox container on display in the Pavilion, which you can walk through and get information about. Prices range from $500K to $2M, so start saving. If you think that's a bit steep, you can get a free Blackbox toy instead... and I did ;-)

May 8, 2007

Sun general session

Just to give you a feel for the atmosphere a few minutes before the keynote started:

Most of the session was presented by Rich Green, Executive VP for Software at Sun, and consisted in a series of announcements. Here are the main ones.

- Martin Harriman (VP Marketing Multimedia, Ericsson) explained that Ericsson is open-sourcing some of its code to speed up the development next-generation multimedia services (IMS). This should lead to the Sun Java System Communications Application Server, based on the existing Glassfish JEE Application Server.

- The Real-Time Java Specification 2.0 is ready and (finally ?) promises easy integration of real-time features into vanilla Java applications. Anna Ewing, CIO of Nasdaq, came on stage to explain that Sun and Nasdaq are using the RTS to design the next-generation Nasdaq software infrastructure. As a sidenote, she mentioned that the existing infrastructure can handle over 150.000 transactions per second...

- Tom Hallman, VP Production Operations at the Sony Digital Authoring Center gave a quick demo on BD-J (Blu-ray Disc Java) features. Using the menus of the "Open Season" DVD, he showed some dynamic animations which can be developed using BD-J (instead of just using video). He said that increased interactivity and online connectivity were the two main areas where BDJ would help develop richer applications for Blu-ray users.

- Netbeans 6.0 will soon be here. The main new thing is support for Ruby, in the form of Jruby 1.0.

- Java is now fully open source. The Open JDK is complete and released under GPL v2. An interim government, which has just been announced, will be in charge of managing the future of Open JDK. This government is now in charge of writing a constitution and holding elections (!).

- A new initiative on making Java faster has also been announced. Rich Green promised several performance releases before the end of the year. Not a lot of detail on this.

- Technology wise, the big new thing is JavaFX, a J2SE-based set of technologies targeted at consumer devices in general, and mobile devices in particular. Rich Green really emphasized the fact that most new Internet users in emerging countries will be mobile users, not PC users.
  • JavaFX Mobile, a J2SE-based software system for mobile devices, which Rich demoed on a Nokia N800. Pure eye-candy, but not a lot of info on the technology itself, which should be available to "everyone" (OEM, etc). Is this Sun's answer to Apple's iPhone ? It seems to be, as Scott McNealy later described Rich's presentation as "the short sleeve version of Steve Jobs' announcement".
- Last but not least, Scott McNealy mentioned the project, an online education initiative for kids, which he also called "EduTube". Check it out.

JavaOne day 2

Hi everyone,

After the 6+ hour SOA session, we enjoyed good food and good wine at the Luna Park restaurant on Valencia Street. Myself, I had some "Sauvignon Blanc, Dynamite, Lake County, 2004" : miles away from a fancy white Pessac-Leognan, but still very fruity and enjoyable : dynamite indeed :-) One large glass and jetlag guaranteed a good night sleep... for me at least.

Now, here's what ahead of us today:

  • Sun General Session
  • TS-4721 - Implementing Java EE Applications, Using Enterprise JavaBeans (EJB) 3 Technology: Real-World Tips, Tricks, and New Design Patterns
Then it'll be time for lunch and certainly a first look at the Pavilion exhibition. Let the goodies hunting begin ;-)

  • TS-9363 - Java Platform Performance on Multicore: Better Performance or Bigger Headache?
  • TS-8804 - Distributed Computing in the Modern Data Center: Matching the Right Technology to Your Task
  • TS-4902 - Java Persistence API: Best Practices and Tips
  • BOF-4181 - Embracing the Standard: Migrating a Spring/Hibernate Application to Java Platform, Enterprise Edition (Java EE) 5
  • BOF-4400 - Improve and Expand JavaServer Faces Technology with JBoss Seam

Implementing Java EE Applications, Using Enterprise JavaBeans (EJB) 3 Technology: Real-World Tips, Tricks, and New Design Patterns

Session ID: TS-4721
Session Title: Implementing Java EE Applications, Using Enterprise JavaBeans (EJB) 3 Technology: Real-World Tips, Tricks, and New Design Patterns
Session Abstract: The new Enterprise JavaBeans (EJB) 3 specification makes enterprise applications development easier, cleaner, and faster. As with any other new technology, however, there are always new tricks to be learned and pitfalls to be avoided. This session presents the speakers’ experience with building real-world applications using EJB 3 technology. The session uses the lessons learned in this experience to show techniques, tools, tips, and tricks to make good use of session-beans-, entity-beans-, and message-driven-beans-compliant objects, discussing the problems and pitfalls encountered. It presents a series of refactoring actions you can perform to better use new features in EJB 3 technology, with real-world examples. The session also presents a revision of the traditional EJB technology design patterns, showing the role they played when release 3 was being developed and presenting new design patterns that arose with this new version. The goal of this session is to share the results of this experience with other developers, discussing the outcome of using EJB 3 technology, the benefits, the drawbacks, and the techniques for building a successful EJB 3 technology-based application.
Track: Java EE
Duration: 60
Speaker(s): Fabiane Nardon, Zilics; Edgar A Silva, JBoss, a division of Red Hat

Opinion: quite technical session with precise low-level implementation tips (particularly on LAZY vs EAGER data loading), as well as a quick review on classic J2EE design patterns(which ones are obsolete, which ones still stand), and finally some new patterns/design ideas specifically based on EJB 3.0. Maybe the speakers should have decided on "API level" vs "design level", which probably would have made for a more consistent presentation. Anyway, still a good one.

JEE & SOA session part 2

Well, the afternoon was slightly disappointing, although we did enjoy the speaker : Joe Boulenoar is quite a showman, as his explanation on "database guys vs. business logic guys" will attest.

However, a lot of technical content was too shallow, or even outdated. Too much time was spent discussing enterprise patterns which have been around "forever", without any real relevance to JEE 1.5 or SOA architectures. And it's like Spring never existed (granted, it's not a Sun product, but still). Good refresher, but not much more.

Anyway, at the end of the session, Ron Pinkerton gave a good, funny presentation on Sun JCAPS (Java Composite Application Platform Suite), an set of tools designed to develop, deploy, manage and monitor an SOA (Graphical drag and drop process design, BPEL engine, etc). Quite interesting, but this should have really been longer in order to address real-life issues. No one will believe that SOA can be easy as this :-)

Yummy !

Food for thought is great, but actual food is better :-) Lunch break was quite short but the JavaOne folks had it all nicely organized.

Is there anything better than enjoying a big, fat US sandwich under the San Francisco sun ?

According to Mr C : no :-)

May 7, 2007

JEE & SOA session part 1

Short break right now. I'm surprised how many people attend this session, probably over 500. It's very fast-paced but it still manages to discuss important architecture issues. We've got paper printouts of the slides, so don't worry, you'll get a chance to read all about it !

Java University keynote with James Gosling

James Gosling was great as usual. He promised some major Java announcements for tomorrow (during the general keynote, I guess). A number of recent Java technologies and projects were very quickly discussed or demoed (Ajax, Jmaki, Dojo, etc). He also mentioned BlueJ, a Java IDE specially designed to teach Java. For more info, you can check out Gosling's blog.

PS: I grabbed an Open Solaris t-shirt ! Anybody interested ? ;-)

JavaOne day 1

Today's program : Java University ! We first start with a keynote session with James Gosling (no introduction needed), we continue with a full-day session on SOA architectures with JEE5.

Java University Program - General Session
8:00 am - 8:30 am - Room 134
Speaker: Dr. Karie Willyerd
Vice President and Chief Learning Officer, Sun Microsystems, Inc.
Special Guest: James Gosling
Vice President and Sun Fellow, Sun Microsystems, Inc.

Using Java EE 5 and SOA to Architect and Design Robust Enterprise Applications
    Instructor Name:Joe Boulenouar and Ron Pinkerton
    Course Level: Intermediate to Advanced
    Course Length: Full-day course

    Course Description:
    This course provides the student with the knowledge needed to use Java Platform, Enterprise Edition 5 (Java EE 5) best practices and patterns to design and architect robust enterprise applications that allow for rapid change and growth. Students will gain an understanding of Java EE technology patterns and how, in practice, they have proven to be invaluable during the design and implementation of enterprise applications, solving important and recurring design problems. Students will also gain an understanding of how Service-Oriented-Architectures (SOA), implemented in a wide range of technologies (including REST, RPC, RMI, DCOM, CORBA and Web Services), help businesses respond more quickly and cost-effectively to changing market conditions. Students will also learn best practices on how to prepare for the Java Enterprise Architecture certification.

    Course Approach:
    This course will focus on the usage of Java EE platform patterns from the architectural and design perspectives. Understanding Enterprise SOA is also covered. The instructor will use UML diagrams and code segments to present these patterns.

    The demos for this course feature the Project GlassFish Application Server, Sun Java System Application Server Enterprise Edition, NetBeans Software IDE with the Visual Web Pack, Sun Java Composite Application Platform Suite for the Enterprise Designer, Sun Java Studio Enterprise software, and Sun Java System Web Server.

    Morning Content:
      Fundamental Architectural Concepts
    • Justify the need for architecture when developing for Java EE platform application
    • Primary concerns of architecture
      System Architecture Development and Guidelines
    • Resolving risk factors in distributed enterprise systems
    • Guidelines for effective network communication
    • Guidelines for handling distributed transactions
      Quality-of-Service Requirements
    • Effects of dimensions on systemic qualities
    • Analyzing quality-of-service requirements
      Software Architecture
    • Decomposing the Java EE platform application into components
    • Deployment diagrams to represent the architecture and design model

    Afternoon Content:
      Using of the Java EE platform patterns
    • Describing Java EE platform patterns that assist in the presentation tier
    • Describing Java EE platform patterns that assist in the business tier
    • Describing Java EE platform patterns that assist in the integration tier
      Understanding Enterprise SOA
    • Using SOA for enterprise application integration
    • Describing how SOA improves B2B business processes
    • Service-Oriented Architecture and Design
    • Web Services design patterns

Back in Frisco again

There's nothing like the San Francisco breeze on you face after flying for 12 hours in an economy coffin, with an Old FAT b#tch sitting in front of you.

Anyway, I've cleared immigration and customs without a hitch (it's always easier in SF) and I'm now sitting in a Taxi taking me to my hotel downtown. The driver is a Brazilian lady, who insists on giving me the tourist presentation of SF (where I've been 5 or 6 times already). By the time we get to the hotel, I'm not quite sure what she means by "here's my number, let me know if you need A-NY-TH-ING, I know all the good places, etc". OK, sure, no problem... let me out !!! ;-)

Nice bedroom ! WiFi works, so let's catch up with Madame la Belle France. 53 / 47 : not a surprise. However, I can't believe some idiots are rioting. If they didn't get the message at 20:00, I'm sure they will in the next few weeks.

Anyway, let's try to get in touch with my partner in crime, the one and only Mariachitect. Phone call, e-mail : nada. He's probably out there shopping, drinking or worse. No problem, we'll hook up eventually.

Time for me to sleep a little bit...