Olio Java EE source code released
By klichong on May 13, 2009
I'm happy to announce the availability of Olio Java source code as an apache incubator project!
What is Olio exactly?
Project Olio is a web2.0 toolkit that can be used to investigate the functionality and behavior of web technologies. The kit consists of a web application, driver and harness code that is designed to be used with Faban, an open source benchmark driver and harness framework. The web application is a social calendar where you can perform such activities as registering a personal profile, create new events, register to attend existing events, and extend friendship requests. The driver and harness code allows you to schedule benchmarking runs with varying number of concurrent users to examine how this application behaves under load. More information is available about Olio at the Olio Apache website.
There is already a binary release of a PHP and JRuby version of Olio; however the Java implementation is a bit behind so we do not have a binary release as yet. We are hoping the release of the Java code will encourage new involvement from other developers to help up release a binary version. As such, it is not advisable to do a performance comparison between Java and PHP or JRuby until we are feature complete with respect to the other versions.
The Web Application
Let's take a closer look at the web application. On the home page, you can see a list of the top 10 events that you can browse: (you'll have to ignore the nonsense words for the event, person, city, state, and country data. The kit includes code to randomly generate data for the number of concurrent users you specify)
Suppose you click on a particular event you interested in - you would be shown the event details that lists the name, time and location of the event. It will also list the attendees for this event with the option of attending this event if you were logged in and registered as a user. The blank map below shows location of the event with Yahoo Maps geolocator. However, since I mentioned before that the data was created randomly, the location of this event does not map to anywhere recognizable.
When you click on a particular attendee of this event, you are brought to the person details page showing your profile, your friend cloud and your recent posts.
This concludes the brief whirlwind tour of the application but I encourage you to download, build and deploy the code yourself to see what I haven't shown here.
What do I need?
For the application, you will need:
- Java SE 5 or 6
- Java EE 5 compliant application server (we have only tested so far with GlassFish v2)
- A Java Persistence API (JPA) provider (Eclipselink is the JPA provider packaged with GlassFish v2)
- MySQL Database (any DB could be used but we have scripts and instructions for MySQL)
For the harness/driver, you will need:
- Java SE 6
- Faban harness/driver
What is under the covers?
Some of the technologies that this application features:
- JPA for the Object-Relational persistence solution
- Rest based Services (partially implemented)
- JMaki widgets wrappers for Yahoo and dojo widgets.
Where are we going?
As I mentioned before, this implementation is not near a binary release quite yet and needs some work. Tasks that remain to be completed include:
- Re-implementation of the memcached layer for caching (this was stripped out for this release but needs to be put back)
- Rest based services with JSR-311, JAX-RS. I've started this already using the Jersey implementation.
- Replacement of the jMaki widgets with appropriate alternative
- Minor features to 'catch up' with the PHP and JRuby version.
- Investigation of file distribution system eg. Hadoop (current implementation only uses local filesystem)
I hope I have piqued your interest. Want to help out? Interested in what direction we are taking or want to provide your input?
- Visit our Olio page at Apache: http://incubator.apache.org/olio/
Subscribe to our mailing lists via the Olio home page as a user (email@example.com), or contribute as a developer (firstname.lastname@example.org)