The Source for Java Technology Collaboration
User: Password:



Janice J. Heiss's Blog

May 2006 Archives


And the Winners Are...!

Posted by hiheiss on May 24, 2006 at 04:45 PM | Permalink | Comments (0)

The three top contestants in the 2006 JavaOne Conference Slot Car Racing Programming Challenge got their last chance to win the “gold” at the Friday morning keynote in which James Gosling called them onstage for the white-knuckle last go around the track.

The contestants wrote hard real-time code to read the sensors on the track and set the track voltage, in order to try to get the car around as fast as possible. Most of the attempts in the week-long competition crashed. A team from Germany, composed of three high school students and a college freshman, who got to the JavaOne Conference by winning a programming contest in Germany, had the best time to date before the Friday keynote. The German team was highly organized: while one raced, the other two got in line, while the fourth coded. In so doing, they formed an effective coding loop that enabled them to learn a great deal in a short period of time.

“We’ve had quite a crew of dedicated people writing code for their slot cars,” said Gosling. “People really got into it, trying to make it to the top three. We went through a dry run-through of this last night with everyone using their hot tune versions and every car splattered. So they spent until midnight de-tuning things to make it around the track.”

In addition to the German team, the other finalists were Robert Chu and Peter Whitfield. I’m impressed that Peter made it this far, given that by his own admission, he is not much of a Java programmer and had to rely on Google to to figure out how to do multi-dimensional arrays. The key to success seems to be understanding physical systems as much as programming sophistication.

After some preliminary glitches, the three finalists ran their cars. Robert Chu placed first, the German team second, and Peter Whitfield third. They each received ribbons, plaques, much applause, and an enduring memory of the 2006 JavaOne Conference.

For more background on this contest, I've blogged on
it previously and there's more info here too:

The 2006 JavaOne Conference Slot Car Racing Programming Challenge



Gosling Goes Real-Time

Posted by hiheiss on May 23, 2006 at 03:55 PM | Permalink | Comments (0)

At the Friday morning keynote, 5/19/06, James Gosling talked with Sun Distinguished Engineer Greg Bollella about Real-Time Specification for Java (RTSJ). “Greg was the original spec lead for JSR 1 where I was one of the worker bees,” remarked Gosling. The big news is that Sun Java Real-Time System 2.0 is in the pipeline and supports new platforms – in particular real-time garbage collection.

Bollella launched into an explanation of real-time garbage collection. “The idea of real-time GC is straightforward,” explained Bollella. “You want the application and the garbage collector to be able to communicate so as to intelligently allocate
resources so some set of threads that can make forward progress without being impeded by the GC.”

Supposedly, the best real-time GC was created by a team at a Swedish university. “We like this GC,” said Bollella. “It really embraces the real-time scheduling notion that we put in RTSJ. The idea is that GC has a priority that is manipulable by the application and it can set the GC priority anywhere in the range of the number of threads. In our case, it’s 60 priorities. All of the threads with priorities higher than the garbage collector preempt the collector, so the only
interference you get is normal thread switch time, plus a little bit of critical section from the GC.”

Gosling pointed out that what Bollella had described sounded pretty obvious, but “for any of you who have mucked around with garbage collectors, you know that the GC needs a stable picture of what’s going on in memory. If there is stuff running asynchronously, all hell breaks loose.”

Bollella responded that the read and write barriers for real-time GC are obviously more complex and such barriers have costs. The solution is to analyze the high priority threads and make sure the
GC gets enough cycles to produce enough free memory so they can run unimpeded.

Bollella then explained how the collector works.
“Any of the threads can allocate in area A. But only the higher priority threads can allocate in areas B and C. If you arrange things just right, while those high priority threads are using free memory in C, the garbage collector comes behind the scenes and cleans up
the area in B. It can flip-flop back and forth between B and C like that forever.”

Gosling characterized the GC as more of a “focus of attention collector” than a “copy collector”.

“Exactly,” replied Bollella. “Of course, you can arrange the system so that they flop back and forth between B and C and the threads with lower priority never get any CPS cycle -- you have to think about that as well. That will be in the next release of Java RTS.”

Bollella concluded with a brief account and demo of how, with relatively little tweaking, his team effectively turned a Sun Java System Application Server into a real-time application server.

Here's an interview I did with Sun's Greg Bollella on Real-Time Specification for Java.



Dancing While Gaming – Multitasking VMs on Real Devices

Posted by hiheiss on May 19, 2006 at 08:35 PM | Permalink | Comments (2)

The JavaOne session, “Dancing While Gaming – Multitasking VMs on Real Devices”, focused on helping developers gain a wider and deeper understanding of the Multitasking VM implementation on real devices based on the interaction between Sun and Samsung who are engaged in a joint collaboration through the work of Jae Hyou Lee of Samsung Electronics and Yaniv Shani of Sun.

MVM deployment is based on the Sun JWC1.1.3 (Java Wireless Client 1.1.3) which comes with multi-tasking capabilities. The MVM deploys most of the MSA (Mobile Service Architecture) JSRs. It has been tested with hundreds of games and applications from leading content providers.

So what is MVM? The Multi-Tasking Virtual Machine is a technology that allows the end-user to execute multiple Java applications simultaneously. MVM enables preferred and rich applications like MP3 playing, Instant Messaging and mail clients. Users of MVM want to run multiple Java applications simultaneously and want to be able to switch applications very rapidly. The typical MVM player might be a teenager who loves to listen to MP3 players, chat with friends over the Net, and play video games simultaneously. Multi-tasking capabilities enable all these activities to be conducted on the same device at the same time.

The Isolation Model

To execute multiple applications, the isolation model was introduced in the VM. Each application runs in its own logical Virtual Machine environment, called an isolate. Within the JVM, each isolate is represented as a task. A task consists of one or more Java threads of execution. All tasks execute in the same single OS task context. All tasks share constant data structure and runtime support functions. Each task encapsulates non-sharable program state MVM.

“In the CLCD space, we would like to address limited operating systems that lack native process modeling support,” said Shani. “This is the main reason why in the CLCD space, the VM implementation conducts both the Java task and Java thread scheduling internally within the VM.”

Implementation Details

Each task has a separate, private copy of the static variables of all the loaded Java classes. Static variables are only global to all threads within a particular task. Each task maintains a private copy of ‘count’. The Class representation is shared. Synchronization has to be task private. Threads in one task cannot block threads in another task. Blocking threads across tasks isn’t allowed.

Resource Management

The low-level part of the VM is responsible for all CPU time and memory resources in order to ensure that all tasks get their “fair” share. Other resources, such as network bandwidth and communication ports are managed by the profile layer.

Resource Management – Scheduling

Tasks and threads are scheduled internally by the JVM. Fair scheduling algorithm is used for task scheduling in order to prevent one task from taking disproportionate CPU time and causing other tasks to stop. The ‘isolate’ class offers a set of APIs to modify the priority levels for each task. In most cases MIDlets that execute in the foreground get to have more CPU cycles compared to others that run in the background.

Resource Management – Memory

The VM requires a large consecutive memory block from the underlying OS. Allocations for all tasks are made from this same global heap region. The VM has a bookkeeping mechanism that accounts for each task’s total heap memory consumption. The VM injects OutOfMemoryError as needed to inform tasks that heap space has become scarce.

The Profile Level

The presentation turned to what must be done at the profile level to transform their implementation into one capable of multi-tasking. They have been using Sun’s latest JWC1.1.3, which comes with multi-tasking capabilities. It allows only a single MIDlet to execute in the foreground at a certain time.

A MIDlet application is said to be in the foreground when:

-- Its displayable controls the display.
-- It handles events from the user input mechanism since they are automatically routed to it.

An application is in the background when:

-- Its displayable does not control the display.
-- It does not handle the user input mechanism.
-- Zero or more MIDlets can execute in the Background
at a time.

The application manager is critical for task switching. They use a resident Java MIDlet for the application manager; it is launched in the background when the device ends its boot phase. When users switch it to the foreground, they see a list of all running applications and can switch between them quickly. The app manager also displays background MIDlet alerts, when one wants to drive the user intention.

They next displayed some demos showing how to switch MIDlets to the background and switching between MIDlet states.

Switching a MIDlet to the Background

A short ‘hot’ key press is used for switching between running apps.
Upon a short ‘hot' key press the foreground MIDlet will be
placed in the background and the main device menu will be
displayed on the screen.

Upon a long ‘Hot’ key press the foreground MIDlet will be
placed in the background and the ‘Application manager’ will
be displayed on the screen. The user can see the list of running apps and can switch to another app.

Upon calling setCurrent(null) the MIDlet will be placed in the
background and the ‘idle’ screen of the device will be
displayed. This enables MIDlets to place themselves in the background.

Interrupting the User

A demo of a user experience focused on ways to interrupt the user when a background MIDlet wants to drive the user’s attention.

-- Background MIDlet calls Display.setCurrent(alert)
-- Background MIDlet tries to access a protected API and a security dialog is prompted.
-- Noteworthy event occurred in the background, e.g., Incoming IM while playing a game.


Managing Resources

The session turned to resource management. In a single-tasking environment, the MIDlet has access to all of the available resources. In a multitasking environment, MIDlets have to compete for available resources

Resource management mechanisms include:

Reservation -- A reservation mechanism sets aside a certain amount of a resource for a MIDlet and keeps it available for that MIDlet and that MIDlet alone

Quota -- A quota mechanism permits a MIDlet to allocate up to a
certain amount of a resource. If the MIDlet attempts to allocate more resources than its quota, the attempt fails, even if resources are actually available on the system.

Revocation -- The system can revoke a resource from a MIDlet and give it to another MIDlet. Resource revocation examples include CPU cycles, display access, and audio playback. Resource revocation doesn’t always have a dramatic effect on
the MIDlet’s execution

The session went on to cover LCD display, and sound issues and offered guidelines for resource policy selection. The key points were:

-- Resource policy definition relies on the underlying platform
capabilities and requirements.

-- A fixed partition policy should be used for fundamental resources that are required by the majority of the applications.

-- An open policy should be used for resources that are used by
specific MIDlets and have limited availability (e.g. Bluetooth, Location).

-- The Display and Sound requires special handling.


Multitasking Safety

Regarding safety, the native JVM task can run native code for any task, hence the code must be made aware of the task on whose behalf it is being called and possibly allocating resources. When the task context is established, the code is considered multitasking safe. Sun’s JWC software is multitasking safe.

The session closed with an exploration of such topics as static and global variables, issues of native code execution, MIDlet guidelines, and basic resource awareness principles.

The take-home message from my perspective is that MVM technology fits nicely with what is happening, for better or worse, not only in youth culture in the US and much of the world, but among older generations. We are living speeded up lives and engage in multi-tasking, out of both necessity and pleasure and we want to be able to do it comfortably and quickly from the same device.

“Dancing while gaming” is here to stay and Sun and Samsung are on to something. More power to them.




Staying Flexible with Open Source SOA

Posted by hiheiss on May 19, 2006 at 08:19 PM | Permalink | Comments (1)

Staying Flexible with Open Source SOA

I checked out the session called "What Is Happening With SOA in Open Source?" which was actually a panel hosted by Mark Hapner, Distinguished Engineer, Chief Web Services Strategist at Sun. Was curious what these folks had to say on the subject.

The participants, open source technical experts, were: Jeremy Boynes, IBM; Glen Daniels, Sonic Software; Mark Little, JBoss; Adinarayana Sakala, IONA; James Strachan, LogicBlaze; Peter Walker, Sun Microsystems Inc.

Most of the panel represented an open source project such as Apache rather than their own companies.

Here's the questions they responded to:

1. What is the most important core concept in your project?

2. Does your project extend SOA to cover services over JMS?

3. What web services protocol stack is currently used
by/provided by your project and how is interop
with other stacks being validated?

4. How important is it that developers be able to mix
and match open source SOA facilities within the implementation of a service?

5. What do you see as the major challenge that developers
must overcome to design and implement services?

With a panel this large responding to all these questions in rapid-fire sequence (they were timed as the session was only 45 minutes),
in no way can I do it justice, so I'll just summarize big time. Best, in this case to go to the Sun SDN site
(yes I am a Sun employee but this is a really good deal) and join the SDN so you'll be able to get the technical sessions in multimedia *free* when they're available around June.

Here are my take-aways albeit some pretty obvious and simple:

-- In establishing an open source SOA, the SOA principles must
work within as well as outside the implementation.

-- An SOA strategy cannot exist in a vacuum. SOA is about
leveraging existing infrastructure. If you only focus on some
internal strategy, other SOA implementations my be excluded,
defeating the whole purpose.

-- SOA is hugely complex and just beginning to manifest the
directions it will take. A lot of work goes into arriving at accurate
and useful conceptualizations of the complexity.

-- Leverage existing investments freely and do not get too wedded
to preconceived technologies.

-- Stay loosely coupled – and stay flexible.

Again, I think this panel is worth "tuning" into.



Where the Software Met the Road

Posted by hiheiss on May 19, 2006 at 03:53 PM | Permalink | Comments (0)

It's day two of JavaOne '06, and I’m over at the Slot Car Racing Programming Challenge area, where the track is heating up. Developers are standing in line, some for the 20th or 30th time! to see if their latest tweaks will pan out as they hoped. A lot has been happening here. The ABC Morning News guys were here with their cameras. Developers are taken with the chance of being onstage with James Gosling and spending some time with him. Gosling himself has been trying out the slot cars off and on for a few days. Some contestants admit that the slot car race brings them back to their childhood. Developer aren’t exactly closet game junkies.

I approach one, who asked to be referred to as “Turtle,” and ask him if this is harder than he expected.

“It’s very difficult,” says Turtle. (Yes, the name gives away something about his times.) “I have no experience with real-time. There is a lot of tuning, a lot of unknown variables – every car runs a little different. So even if you tweak it right for one car, it may not work for the next. This is about my 15th attempt and I’ve missed two sessions already.” (I’m beginning to understand why he doesn’t want his real name used.) “I’m getting better each time, and finally made it into turn three.”

When I ask him how this is affecting him he says he wants to build a race track in his home. “This is a lot of fun. Once your car runs, the times are posted for your machine and you can figure out how fast your car is going at each sensor point. You could copy and paste this if you wanted, but it would be preferable if they gave you all of your races together so you could analyze all of the numbers.”

Turtle informs me that the man standing next to him is tied for the lead. His name is Peter Whitfield.

“I’m probably the worst Java programmer here – I’m more of a manager than a programmer,” admits Whitfield. “It will be embarrassing if anyone looks at my code. I have no experience with real-time Java, though 20 years ago, I worked with real-time systems. This is a lot of fun and a good opportunity to see how the real-time Java stuff works. It’s easy.” Different strokes for different folks.

Peter -- who is quite generous with his time as he keeps eyeing the monitor above the track listing the names of who's in the lead along with who is currently racing -- completed the race in 25.49 seconds somewhere around his 20th trial and estimates that maybe 10 or 12 people out of 100 have made it to the finish line without crashing. Clearly the hardest thing is just making it around the track. I ask him the secret to his success.

“Keep it simple -- do the absolute minimum necessary to get the result,” Whitfield explains. “There are guys doing some very sophisticated algorithms but I have not actually modified the sample algorithm at all, I’ve just been changing the parameters. Nothing in this application has been hard. I have an engineering background rather than a pure software development background and this is about manipulating voltages to control the speed, and that’s second nature to me. So my background helps. I have only now started changing the way the real-time stuff works. Until now, I’ve only changed the parameters of the way the speed changes as it goes around the track, so a lot if it involves trying to figure out how, if I change the voltage in one place, it affects the speed in another. That’s what people are missing -- they don’t understand how if they go too fast in one part of the track, it will make the car unstable later. The Java side of it is very easy to pick up because we are given a sample program. We have not had to set up the framework for it. Real-time programming is about understanding physical systems; it's not as abstract as writing UI software. So you need to understand the physics of what you are trying to do and the timing.”

I ask if he spends a lot of time visually contemplating the track. “Absolutely – I stare at the track trying to understand where things happen. It’s a spatial thing and physical thing. I can run the same program 10 times and get different results each time. There are 5 different cars that all perform differently. We don’t know which car they will run, so we can’t tune it for a specific car. The challenge is to write software that is in tune with the reality of what you are trying to make happen.”

Peter went on to say: “I learned that I don’t program in Java often enough, so I hope people aren’t looking over my shoulder when I look up Google to figure out how I do multi-dimensional arrays. You need to be aware of where you are putting your thread to sleep and where it will wake up and if you are doing it in more than one place you need to think of the different permutations and where it can all happen.”

And what else is Peter doing at JavaOne?.. “I’ve spent way too much time here. I don’t have a boss so I can sit here and just have fun.”

I talk to a few other contestants waiting their turn. Jonathan O’Keefe, who does database programming, is trying out real-time for the first time. And there is Ulrich from Denmark who does web applications and GUI stuff and business logic, and Michael from Germany who does desktop programming and Carl, an American, from a company called Triego Network Security, who manages security information. None have experience with real-time. The line ebbs and flows at various times, but there's always someone racing, and there are a lot folks sitting in front of the machines set up for them on which they work on their real-time programs.

Only Carl admits to big ambitions. “At first,” says Carl, “I was over-complicating it by treating it like a J2ME product, but if you are very conservative about the objects you allocate, you can treat it as a regular Java program. You have to keep it simple and not allocate anything in the loop or you will run out of memory. I’m going to try to knock someone off the leader board -- I’ve just started with the base program so there is a lot of room for improvement.”

Carl sees uses for real-time Java at his company, Triego. “We do some close to real-time work and try hard to keep our GC under control and use a concurrent generational collector, so the real-time Java technology is very interesting. We could find a lot of use for this technology in the work we do. It’s interesting and the applicability of the predictability of execution time is great.”

As I walk away, I see that Robert Chu is tied with Peter Whitfield’s 25.49 seconds time while Richard Yee is third, at 26.18, and Rivera (I don't catch his first name) is fourth at 28.60. I wonder if any of these folks will be in the top three when James Gosling gives his keynote on Friday morning. Time and times will tell.

Stay tuned. The winners will be announced and compete one final time at the Gosling keynote on Friday. Should be a lotta fun!

Finally, here's a story about the Slot Car Racing Programming Challenge yours truly wrote over on java.sun.com:

The 2006 JavaOne Conference Slot Car Racing Programming Challenge
http://java.sun.com/javaone/sf/slot_car.jsp


And, in the form of shameless self-promotion, here's an interview that I did not far back with Sun Distinguished Engineer, Greg Bollella, on real-time Java:

Programming in Real-Time Specification for Java (RTSJ): A Conversation with Distinguished Engineer Greg Bollella
http://java.sun.com/developer/technicalArticles/Interviews/Bollella_qa2.html



Let's Make a Deal: Java and .Net Hold Hands Over Web Services

Posted by hiheiss on May 18, 2006 at 08:08 PM | Permalink | Comments (3)

At JavaOne earlier this week, I took in TS-5540, “Making Java/.Net Technology Based Web Services Interoperability Real” with Sun’s Arun Gupta and Microsoft’s Kirill Gavrylyuk. Sun and Microsoft developers have been meeting at “Plugfests” in Microsoft’s test facilities in Redmond, Washington, where they identify bugs and work to assure interoperability in their web services code. Both have strong customer-driven motivations for removing interoperability barriers between their web services stacks. The collegial environment is reported to have been refreshing and productive. Arun Gupta’s blog has interesting comments:

http://weblogs.java.net/blog/arungupta/archive/2005/11/sun_sleepless_i_1.html

So here were two developers from corporations that once viewed each other as enemies offering a joint presentation. Economic necessity makes strange bedfellows.

Gupta enunciated their basic message: “In this talk, we intend to show you that enterprise web services are real,” said Gupta. “We also intend to show you how web services enable enterprise integration scenarios within and across business boundaries.”

Web services are well adopted on both Java and .Net platforms. Recent developments in Microsoft’s Windows Communication Foundation, which is Microsoft’s web services platform, and the open source Glassfish communities’ compatible app server have made interoperability a reality. They are not just talking about a promising future.

Gavrylyuk and Gupta presented a scenario with a Sun-managed retail quote service which gets quotes from a service running in a homogeneous environment. It gets quotes from a variety of client services, some of which run in a .NET Microsoft environment. It also gets information from a GlassFish client. In both cases they use secure and reliable communication.

They began with consumer integration. Suppose consumers rely on the Sun-managed quote service that uses WCF and Glassfish clients. How to achieve data interoperability? The two managed environments establish what is called a brokered trust relationship through obtaining tokens from STS, Secure Token Service, to authenticate their interactions.

Their presentation next focused on the challenges of integrating both businesses and consumers and the road map for the future. The key issue is establishing a contract through data structures. When it comes to XML schema interoperability, they summed up their advice to developers in the memorable acronym, KISS: Keep Interoperable Schemas Simple. They recommend a simple set of de-facto profiles: xs:sequence, xs:element, wrapped arrays, etc.
There are functional and established complex schemas available and perhaps necessary in scenarios, but Gupta recommended caution in using them.

Schemas should be used as data type descriptions, not as validation mechanisms. Avoid complexity unless it’s required, and avoid schema constructs that do not map well onto programming languages.

They turned to the issue of binary attachments which Gupta acknowledged has had a “bumpy road over the last few years”. xs:base64Binary is interoperable, but comes with a high processing cost and 30% extra message size.

The industry has fallen into two camps: one has gone with SOAP attachments, while the other adopted DIME (Direct Internet Message Encapsulation). Both push the binary data outside of the SOAP envelope. SwA, which is SOAP with attachments, has low interoperability, with attachments outside the SOAP body, and suffers from lack of composition with other web services protocols. DIME has the same problems as SwA.

So what to do? MTOM (Message Transmission Optimization Mechanism) comes to the rescue. MTOM works in a simple manner. It is conceptually like a SOAP envelope, but just before the SOAP envelope hits the wire the binary part of the body is serialized as a separate MIME part.

Integrating Businesses

The key to business integration, not surprisingly, is reliable, secure messaging. With information moving over the web between services, there is a danger of information getting lost and a need for reliable security. Quote service reliability requirements include reliable transfer of messages end-to-end, assurances that orders are not duplicated and secure composition.

They then presented a demo of reliable messaging in which a .NET wholesale service was interacting with a Sun managed Java retail quote service in a reliable and secure manner.
Trust

They turned to the issue of WS-Trust and Security Token Services, which “arbitrate” trust through providing universal token/claim conversion, and support for arbitrary trust patterns in a decentralized manner -- anyone can be STS. They discussed Security Policy and Metadata Exchange whereby
services specify what claims types are required and consumers dynamically obtain tokens through the trust chain.

WCF

Finally, Gavrylyuk discussed Windows Vista Web Services, and the Windows Communication Foundation (WCF -- a.k.a. Indigo) which offers a runtime for building distributed applications. “InfoCards” visualizes a user’s digital identity, Active Directory Federation Services provide an infrastructure for identity and access. Windows Remote Management enables interoperable system management, and something called Web Services For Devices helps with Web Services-based devices interaction.

That's all for now, folks. Bare bones of a technical session but hopefully of some value.

For more meatier or vegy (if you're a vegetarian) details:

Windows Communication Foundation (a.k.a. Indigo)
http://msdn.microsoft.com/webservices/indigo/

GlassFish Community
https://glassfish.dev.java.net/

Web Services Interoperability Portals
http://msdn.microsoft.com/webservices/building/interop
http://mssoapinterop.org/ws/

Web Services Interoperability Blogs
http://pluralsight.com/blogs/kirillg/
http://blogs.msdn.com/dotnetinterop/
http://www.simonguest.com
http://weblogs.java.net/blog/arungupta/
http://weblogs.java.net/blog/haroldcarr/



Here we go! JavaOne is almost here!

Posted by hiheiss on May 10, 2006 at 08:14 PM | Permalink | Comments (0)

Among the topics currently scheduled for my editorial beat:

-- The Slot Car Programming Challenge wherein developers get to test their skills with Real-Time Java. Standard 1/24 scale cars run around a track with 80 sensors spread along its length with a power supply controlled by an A/D converter driven from a workstation. Contestants have to write software that controls the car while going as fast as possible. The sensors are simple photocell gates like those used to detect paper moving through a printer. The Real-Time Java program senses the track position of a slot car and sets the voltage to the track -- and thus the speed of the car. Attendees with the 3 shortest lap times will have a final run-off during James Gosling’s keynote on Friday.

-- The activities of Tommy, the autonomous, unmanned Java technology-powered robotic dune buggy, who will be making myriad appearances. Tommy's software is built on a Java technology-based platform called the Mobile Autonomous X-bot (MAX) developed by Perrone Robotics, Inc. (PRI). PRI-MAX runs on the Java Platform, Standard Edition (Java SE, formerly known as J2SE), and uses the Java Communications API, while Tommy's microprocessors rely on a hardware-based Java Virtual Machine (JVM) running Java Platform, Micro Edition (Java ME, formerly known as J2ME).

-- The always-lively discussion at the Fireside Chat wherein JavaOne conference Alumni get to engage with Java luminaries.

-- Sun’s Project Tango which addresses interoperability between applications built on Microsoft's Web Services Communications Foundation (WCF, a.k.a. Indigo) and those built with Sun's Java Web Services technologies.

-- SOA and developments in open source.

-- Twelve Reasons to Use NetBeans Software.

Plus numerous other sessions, along with exhibits in the Pavilion and the flexibility to go where the action is. I already feel sleep deprived!





Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds