The Source for Java Technology Collaboration
User: Password:
Register | Login help    

Search

Online Books:
java.net on MarkMail:


Community Corner Podcast: Owen Kellett on Project Darkstar

Posted by editor on July 7, 2009 at 8:00 AM PDT

I always find it interesting to talk to people who are engaged in developing highly-scalable software. I very much appreciate the difficulties they face and must overcome, having worked on developing multithreaded applications myself since the early 1990s (using Sun's early C SMP threading libraries).

So, I very much enjoyed talking with Sun's Owen Kellett, a lead developer for Project Darkstar, an open source, highly scalable, server-side platform for massive online games and virtual worlds. If scalable server-side platforms interest you as much as they interest me, I think you'll find the 13-minute podcast we recorded at this year's JavaOne well worthy of a listen.

Owen talks about the differences between gaming and applications such as banking as being related primarily to the trade-off between latency and data durability. For example, in a banking application, it is absolutely critical that the transaction is guaranteed to complete, or it must be rolled-back if completing it does not occur for some reason. In this situation, it's OK if there is some latency. It doesn't matter if a bank application user sometimes has to wait 25 seconds, as long as they are sure that the monetary transaction is correctly completed.

With online gaming, however, a delay of even a few seconds between when a player issues a command and sees the response can make the game unplayable. So, with online gaming and virtual worlds, minimizing latency is critical. Meanwhile, the absolute rigorous data integrity that is required in a banking application isn't necessary in an online game. Does it really matter if the last few seconds of a game player's actions are lost once every few months? Not really.

This difference is in large measure the defining factor for why a gaming-centric application server platform is needed. Most commercial application servers are tuned for the business environment, emphasizing transactional integrity at the cost of increased latency.

Still, Darkstar is a transactional system, with automated data persistence. If a server goes down, the user can resume the game normally with less than a few seconds of lost data. The Darkstar event-driven transactions are normally processed in less than a few milliseconds, much faster than is typically the case with business transactions where ACID (Atomicity, Consistency, Isolation, Durability) must be rigorously enacted. In online games and virtual worlds, it's advantageous to sacrifice a little bit on the durability side in order to dramatically decrease latency. This is what the Darkstar server accomplishes.

Project Darkstar is written entirely in Java on the server side. However, it is language-agnostic on the client side, providing the possibility for anyone to develop an API that can interact with the Darkstar server. The external developer community has already developed Flash clients, C# clients, Python clients, and others.

The Darkstar server currently scales superbly when it is run on a single machine with multi-core processors. The server can run on multiple nodes as well. Currently, significant effort is being put into increasing the scalability in the multi-node environment, where you face the issues of having multiple nodes interacting with a single data store on the back end.

In addition, the team is researching means to automatically discover when multiple clients are interacting with each other, modifying the same data areas. In this case, in the multi-node environment, it is most efficient to have the same node perform the processing for both clients.

I asked Owen about "the 15-minute experience" I'd seen on the web site. What's this? Basically, the Darkstar server can be downloaded, installed, and deployed in 15 minutes. You can get your first little demo application (provided with the download) running in just 15 minutes, which confirms for you that you have a proper install and base configuration.

If you're interested in online gaming and virtual worlds software, and/or scalable transactional platforms in general, I think you'll find listening to Project Darkstar: the Open Source Highly-Scalable Server-Side Gaming Platform an interesting way to spend 13 minutes and 34 seconds (yes, in the podcast Owen beat his own "15-minute experience" criterion!).


In Java Today, we've published Project Darkstar: the Open Source Highly-Scalable Server-Side Gaming Platform. Owen Kellett talks with java.net editor Kevin Farnham about the Project Darkstar, the open source massive online gaming platform, in this java.net Community Corner 2009 podcast recorded at JavaOne. Here's Owen's preview of the Project Darkstar presentation he prepared for the podcast: "Project Darkstar is an open-source server-side Java platform for the development and exectution of horizontally scalable online games, virtual worlds, and social networking software. More than just a communications framework, Project Darkstar boasts a simple API that transparently provides a multithreaded, transactional, persistent, and scalable system without the need for zones or shards..."

Educator Dragutin Petkovic talks with java.net's Gary Thompson in a java.net Community Corner 2009 podcast that was recorded at JavaOne. In the podcast, Dragutin presents a synopsis of a Global Software Engineering class. The class is designed based on Dragutin's years of experience of teaching jointly at San Francisco State University (SFSU), the University of Applied Sciences, Fulda University, Germany, and recently with Florida Atlantic University (FAU). The class uses numerous Free and Open Source Software tools and teaches FOSS development techniques.

The JavaChecker Project team reports that JavaChecker-2.5.1 is ready: "JavaChecker-2.5.1 is out. This is static analyzer of Java source code, which provide set of basic checks and allows users implements own checkers using JavaChecker infrastructure. This releases include set of checks, developed for project coin, which may be used for studying of applicability of proposed language features to existing codebase."


In today's Weblogs, Tim Boudreau looks at tradeoffs in API Design vs. API Usability: "I took last week off to work on some Wicket web programming - seeing as my day-job is desktop programming. I've done a lot of talks on API design, focusing on how to not "paint yourself into a corner" in terms of backward compatibility. There is a complementary subject - API usability, that deserves equal consideration. But reconciling the two is a hard problem."

Mauricio Leal reports on OpenSolaris Tour 2009 - Day 2 - Sao Leopoldo/BRAZIL: "Sao Leopoldo is a small city outside of the great metropolitan area of Porto Alegre. In there, just happened the Day 2 of OpenSolaris Tour 2009 at UNISINOS."

And Jim Driscoll posted A tale of two components (JSF2): "In this blog, I'll examine two different ways to create a poll component with JSF 2, and in doing so, we'll look briefly at the two different ways that you specify id's in the two JSF 2 Ajax APIs."


In the Forums, sourabhpawar is Upgrading to GF v2.1 - Problem with WS-Addressing: "Hello Metro folks, We have a NHIN gateway implementation from last year that we developed using an older OpenESB and Metro build. We are in the process of testing the feasibility of upgrading the base software to the latest Glassfish ESB v2.1. We are trying to deploy one application (and its dependencies) onto a fresh Glassfish ESB v2.1 installation and are getting errors with respect to WS-Addressing. This test does not involve security at the message level, or transport level. Here is the error we get (attached log-with-policy section from log.txt)..."

peppeme has a problem where a jconsole connection failed with remote glassfish: "I wish to monitor the entire remote glassfish server (no only one applications) with jconsole, but I can't the connection failed. I add in domain.xml these lines: -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false Add this to the admin-service element..."

And rjounwal wonders about Navigation in Multiple Component: "Hi, I have three component in a Single Row (Label1,TextField1,ComboBox1) which is added using BorderLayout, same in Second (Label2,TextField2,ComboBox2) and third (Label3,TextField3,ComboBox3) Row.So here my questions are: 1) When I use setMargin(top,down,l,r) method to fixed GUI issue, and i press Up and Down Navigation key then i found that control sequence TextField1->TextField2->TextField3->Combobox1->Combobox2->Combobox3. When i remove this SetMargin() then it's working fine and found control sequence which i have require..."


The current Spotlight is Paul Dietel's java.net Community Corner 2009 podcast "The ATM Object-Oriented Design and Implementation Case Study": 'Educator, author, and Java Champion Paul Deitel talks about the ATM Object-Oriented Design and Implementation Case Study from his book "Java: How to Program, 8/e" in this java.net Community Corner podcast recorded at at JavaOne 2009. Download the slides so you can follow along as you listen to Paul's presentation.'


This week's java.net Poll asks "Have you tried out NetBeans Version 6.7?". The poll will run through Thursday.


Our Feature Articles include an article by John Ferguson Smart, Grails and Continuous Integration: An Essential Combo, which shows how to set up a Continuous Integration (CI) build job to compile and test your Grails application in Hudson, for automated continuous integration. We're also featuring Felipe Gaucho's article, Exposing Domain Models through the RESTful Service Interface, Part 1, which describes domain models and demonstrates how to create a generic CRUD application.


The latest Java Mobility Podcast is Java Mobility Podcast 82: M3DD/LA: a conversation with the organizers of Mobile, Media, and eMbedded Developer Days/Latin America in Goiania, Brazil. OpenJDK Podcast is The latest JavaOne Community Corner Podcast is


-->

Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



I always find it interesting to talk to people who are engaged in developing highly-scalable software...
Comments
Comments are listed in date ascending order (oldest first)