As I eat my lunch in the light of day, I watch as a 14-inch diameter Schmidt Cassegrain telescope slews across the starry night sky, and stops on an object 1,500 light years away. This is one of my favorite sky objects. In the past, I've looked at Orion's Nebula (M42) through the eyepiece of my small 90mm refractor telescope. But in that telescope, the nebula was small and wispy. Now, my excitement grows as light accumulates from this bigger telescope and displays the beautiful red and white swirls of gases. This is a wonderful view, a better one than I had before, and in the daytime, from the warmth of my office, without having to hunker on my knees in the cold night to look into an eyepiece. All thanks to a program called SLOOH, and a variety of Java technologies.
SLOOH provides a live astronomical experience, giving large groups of users direct access to, and control of, high-altitude observatories. You don't get static pictures taken last year. Instead, you see objects like Saturn only when it's actually in the night sky. SLOOH's observatory on the Canary Island of Tenerife is located at IAC's Mount Teide site, which has clear weather, steady dark skies, and an altitude of 7,900 feet. And it's 100% automated and operated from the United States.
Five PCs control five Charge Coupled Devices (CCD) cameras on five telescopes, housed in two domes. The Observatory Driver (OD), written entirely in the Java programming language is distributed across the computers, and coordinates them, using Java Remote Method Invocation (RMI). RMI allows the code that defines the behavior and the code that implements the behavior to remain separate and to run on separate virtual machines.
This RMI model fits nicely with the needs of a distributed system where clients are concerned about the definition of a service and servers are focused on providing the service, such as the case with the operations of these telescopes and CCD cameras.
The observatory operates autonomously. Every few minutes it receives a high level command over the Internet that instructs it to observe a designated object. The command is issued through a Remote Observatory Messaging Protocol (ROMP), which is RMI-based. The commands originate from a Solaris system in the USA , a production server, from another Java program called Launcher.
Launcher issues a command to observe a specific object, such as Saturn. The OD slews to Saturn, focuses the instruments, selects the appropriate filters, and commands the cameras to gather images. The OD processes the images at the observatory and sends the resulting pretty pictures to a Java listener on the production server.
A Java Logger handles events, and a handler integrates with ROMP to emit event messages. The Logger is used to gather events from multiple threads and stream them as messages to the server, as well as logging them to a file for diagnostics.
The listener posts the image on the www.slooh.com web site and forwards the information to a Flash Communication Server. The OD emits an event message for each minute action it performs, through ROMP to the production server. This enables the display of near-real-time telemetry to users.
The OD is multi-threaded and controls some devices directly through serial ports, using the Java Communication API. The OD uses JIntegra to control device driver applications that control the dome, the mount, and the cameras through their COM interfaces.
The main server is a Sun Fire V120 running Solaris 8. It runs the http server (Apache 2) and database (MySql 4). The SLOOH web site makes extensive use of Java Server Pages (JSP) and servlets, as well as Macromedia Flash in the member's area. JRun is used for all of the integrated Java functionality and utilities, and is responsible for handling the communication between the web site, the database, the observatory, and the Flash server. Messages are sent to/from the observatory using ROMP, and Flash Remoting is used to allow the Flash server to call Java beans on the main system. The standalone Java utilities are used to send mission schedule information to the observatory as well as updating state in the Flash applications PH*PH*PH\u00D0PH*PH*PH notifications, weather updates, and so forth. JDBC is used to store astronomical data, schedules, and user information.
Once users have signed up for the service, they enter the Flash Launch Pad application, which is served up through a JSP. Here they discover upcoming missions:
Group Missions are pre-scheduled and subscribers tune in as desired. They get unlimited access to this. The front-end architecture is advertised to scale up to virtually unlimited numbers of concurrent viewers.
Solo Missions are each reserved by a single user, who selects a time slot and designates the object to observe. Currently only the subscriber may see that mission. Subscribers each get 15 minutes of solo time with their annual subscription, and they can buy more time.
When a mission of interest appears on the scrolling bar, you simply enter the mission. You can look at the object through an All Sky, a wide field view, or on high magnification, all of which are controlled by a separate telescope and CCD camera. Make your choice by clicking the appropriate button, and the appropriate telescope slews in on the object. A light accumulation meter in Launch Pad rises continuously as photons accumulate during each mission. As the meter rises, the details and color in the image improve.
Because the images are coming from real operating telescopes, observations, or rather, missions are subject to seeing conditions, such as bad weather and atmospheric disturbances. Some nights objects are going to be just as fuzzy or blurry as though I were looking in my own backyard telescope.
SLOOH is unique in that its images are automatically processed, using a generic image processing algorithm that does well in most situations and seldom introduces artifacts.
If it's raining, the domes must be closed, and a message appears in the Launch Pad to let users know that missions are not available until the weather clears.
When the system detects exceptional conditions, such as communications errors with the observatory equipment, the OD issues alert emails, and a message is sent to the developers through the JavaMail API. The JavaMail API is an optional package for reading, composing, and sending electronic messages. The JavaMail APIs hide the implementation details of the mail protocols (such as IMAP, MAPI, POP, POP3, and SMTP) used to transmit and receive emails. You can create and send messages using a simple object model.
Matt BenDaniel, co-founder and CTO of SLOOH, designed, built, and programmed SLOOH's observatory in the Canary Islands by bringing together a rich set of Java technologies and the mechanics of the observatories, telescopes, and CCD cameras. "Java has been the easiest technology to manage in our architecture. We have had astronomical equipment problems," says BenDaniel. "I have found COM to be somewhat unreliable, and the Windows applications have had plenty of bugs. Our use of Flash technology has been the most challenging."
SLOOH was developed to bring a first-hand experience of the universe to the general public, schools, and amateur astronomers. It allows anyone to see distance objects up close and personal, from the warmth and comfort of homes, schools, and offices. It's an exciting project, and one that takes advantage of Java technologies strengths and variety of technologies.
Some nights I'll hunker out in the cold, in the wee hours of the morning, to look through my small 90 mm telescope, to enjoy the challenge of finding and viewing objects an unfathomed distance from Earth. But on those days where I'll want to view objects like Orion's Nebula or the Globular Cluster in Hercules from the comfort of indoors with the improved view of a bigger telescope, I'll view them through SLOOH.