Σάββατο, 28 Ιουνίου 2008

JavaOne Afterglow 2008

On Friday, 27th of June 2008, I attended the JavaOne Afterglow 2008 in De Montil, Affligem, a few km outside Brussels. It was a well organised day event, that gave us useful information about the things to come, a summary of what was presented in JavaOne conference. Here is the agenda:

Agenda:
09:15 - 09:45 Registration
09:45 - 10:45 "JavaOne Afterglow keynote"
David Delabassée - Sun Microsystems Belgium
10:45 - 11:30 "Modularity in Java : OSGi and/or JSR 277 ?"
Stijn Van Den Enden - ACA IT-Solutions
11:30 - 12:30 "Project Fuji, an Integration Profile"
Andreas Egloff - Sun Microsystems Inc.
12:30 - 13:30 Lunch
13:30 - 14:30 "Java EE 6"
Alexis Moussine - Pouchkine - Sun Microsystems Inc.
14:30 - 15:30 "Boldly Go Where the Java Programming Language Has Never Gone Before"
Geert Bevin - Terracotta
15:30 - 15:45 Coffee break
15:45 - 16:15 "JavaFX overview"
Jo Voordeckers - RealDolmen
16:15 - 17:00 "Parleys.com: A Flex/AIR, JavaFX and GWT Case Study"
Stephan Janssen - RealDolmen
17:00 - 17:15 Wrap-up and prize raffle


The conference started with David Delabasée, the Java ambassador in Belgium-Luxembourgh, who gave an overview of the new things we are to expect regarding Java 7 as well as other Java technologies such as Java Card. A Java Card is a smart card that contains an application server in it! Hence, you can upload a servlet to itconnect it to various devices and call it from various programs and devices as David demonstrated. David also shown a roadmap of Java through expected version 7, mentioning OpenJDK/IcedTea project, the new Nimbus look & feel in JDK 6 update 10 (consumer JRE). The "Java Virutal Machine" becomes simply "Virtual Machine", as it now hosts not only Java but a large number of other languages such as Ruby, Groovy, Grails, Pascal etc. Characteristics of the new JDK 7 are:
  • hosting of many languages, as already mentioned
  • Profiles
  • JMX 2.0
  • Visual JVM (a nice tool that will graphically displays the internal of the VM); and
  • closures
Next, Stijn Van Den Enden, spoke about modularity and compared the current two frameworks, OSGi and JSR 277. As you already know, currently modularity in Java is addressed by packages and interfaces and there is no versioning or access control. If a class in one package needs to access a class in another package, the only way is to declare the class in the other package public, hoping that no one will find out that an internal class is exposed as public.
OSGi solves these problems with bundles. A bundle is a package with some useful metadata about the package in MANIFEST.MF. It separates private from public resources; determines package resolution; and allows versioning.
JSR 277, or Java Module System, is a new specification that addresses the same problem. The equivalent to OSGi bundle is called Java Module and it is packaged as a special kind of JAR, called JAM (JAva Module). Metadata is not in the manifest file, but as annotations.

Andreas Engloff gave a presentation about project Fuji, an integration profile project or standard plugin model for modules. It has three layers, Modularity, Service Orientation and application interface. It is based on OSGi, Open ESB and provides for Enterprise Integration. Andreas presented a demo of the simple workflow language one can use to easily get RSS feeds, filter them by JRuby and feed them to an XMPP (instant messaging) application. He wrote less than 10 lines of simple commands to accomplish this!

The session continued after the lunch break with Geert Bevin from Terracotta who presented 4 hot Java technologies:
  • Terracotta, an open source clustering framework which allows you to run your code to multiple JVMs seamlessly
  • RIFE, a full-stack component framework for web applications, which with the principle of continuation, allows you to stop, save and reload a web app state like one does with computer games
  • Google Web Toolkit; and
  • Google Android
Alexis Moussine-Pouchkine gave a presentation about upcoming Glassfish v.3 application server as well as about the new features of Java EE 6:
  • Extensibility
  • Profiles
  • Pruning; and
  • ease of development
After the coffee break, Jo Voordeckers gave a short presentation about JavaFX, or the return of the applet. JavaFX is the new scripting language provided by SUN, that hopes to boost and simplify both desktop and web development. The new "Java 6 update N" is less than 3 Mb, compared to ~12 Mb of current JRE 6, which can be quickly downloaded by clients' machines. However, JavaFX has a number of competitors, like Adobe Flex, MS Silverlight but also JRuby and others.

The conference ended with Stephan Janssens' presentation of parleys.com, and a comparison of 3 hot competitors in the RIA arena, namely, Adobe Flex, JavaFX and GWT.
Adobe provides AIR for desktop and Flex for Web applications; JavaFX is for both the desktop and the web; while GWT is only for developing Web applications. A thing to note is that Flex is only compatible with Flash version 9 or later, so he is developing a version of parleys.com with GWT which is compatible with Flash version 8 for clients that run this version of Flash.

The conference finished with some draws, and the winners won books and a playstation 3.

A well organised conference as I said, but in the middle of nowhere, with no public transport available, and difficult to go there if you don't have a car! :-)

Τρίτη, 24 Ιουνίου 2008

Hashtable vs. HashMap

HashMaps accept null values, while Hashtables don't.

import java.util.HashMap;
import java.util.Hashtable;

import junit.framework.TestCase;

public class HashMapTest extends TestCase {
private HashMap map = new HashMap();
private Hashtable hashtable = new Hashtable();

public void testHashMap() {
map.put("name", null);
assertNotNull(map);
assertEquals(1,map.size());
}

public void testHashtable() {
hashtable.put("name", null);
assertNotNull(hashtable);
assertEquals(1,hashtable.size());
}
}

The 2nd test simply throws a NullPointerException.

Hashtable is historical, according to JavaPractices.