Next trip – Québec!

January 1, 2012 Comments Off

My first ever work-related trip to Canada will be to Quebec this coming January 11th to deliver a presentation (in French) on Java EE.

This is an Oracle event around Java where I’ll be a speaker together with my colleague Mike Keith.

Here are the details if you are interested in attending this free event :
Oracle Canadian Java Briefing (English)
Séance d’information sur Java (French)

GlassFish Back from Devoxx 2011 Mature Java EE 6 and EE 7 well on its way

November 21, 2011 Comments Off

I’m back from my 8th (!) Devoxx conference (I don’t think I’ve missed one since 2004) and this conference keeps delivering on the promise of a Java developer paradise week. GlassFish was covered in many different ways and I was not involved in a good number of them which can only be a good sign!


Several folks asked me when my Java EE 6 session with Antonio Goncalves was scheduled (we’ve been covering this for the past two years in University sessions, hands-on labs and regular sessions). It turns out we didn’t team up this year (Antonio was crazy busy preparing for Devoxx France) and I had a regular GlassFish session. Instead, this year, Bert Ertman and Paul Bakker covered the 3-hour Java EE 6 University session (“Duke’s Duct Tape Adventures”) on the very first day (using GlassFish) with great success it seems. The Java EE 6 lab was also a hit with a full room of folks covering a lot of technical ground in 2.5 hours (with GlassFish of course).

GlassFish was also mentioned during Cameron Purdy’s keynote (pretty natural even if that surprised a number of folks that had not been closely following GlassFish) but also in Stephan Janssen‘s Keynote as the engine powering Parleys.com.

In fact Stephan was a speaker in the GlassFish session describing how they went from a single-instance Tomcat setup to a clustered GlassFish + MQ environment. Also in the session was Johan Vos (of Mollom fame, along other things). Both of these customer testimonials were made possible because GlassFish has been delivering full Java EE 6 implementations for almost two years now which is plenty of time to see serious production deployments on it.

The Java EE Gathering (BOF) was very well attended and very lively with many spec leads participating and discussing progress and also pain points with folks in the room. Thanks to all those attending this session, a good number of RFE’s, and priority points came out of this. While this wasn’t a GlassFish session by any means, it’s great to have the current RESTful Admin and upcoming Java EE 7 planned features be a satisfactory answer to some of the requests from the attendance.

Last but certainly not least, the GlassFish team is busy with Java EE 7 and version 4 of the product. This was discussed and shown during the Java EE keynote and in greater details in Jerome Dochez’ session. If any indication, the tweets on his demo (virtualization, provisioning, etc…) were very encouraging.

Java EE 6 adoption is doing great and GlassFish, being a production-quality reference implementation, is one of the first to benefit from this. And with GlassFish 4.0, we’re looking at increasing the product and community adoption by offering a pragmatic technical solution to Java EE PaaS deployments. Stay tuned ! (the impatient in you is encouraged to grab a 4.0 build and provide feedback).

Séminaire en ligne (et en français) autour de GlassFish

November 2, 2011 Comments Off

Si vous n’êtes pas à Colombes chez Oracle pour la journée OTN Developer autour de Java EE, vous pouvez vous joindre à un séminaire en ligne sur GlassFish ce jeudi :

GlassFish – Serveur Java EE Open Source et Opérationnel
Jeudi 3 novembre 2011
15h00 à Paris
10h00 à Montréal
S’enregister

JAVA Developer Day, développez avec Java EE 6 et GlassFish

October 25, 2011 § 5 Comments

Evénement gratuit Java EE et GlassFish la semaine prochaine chez Oracle France :

“Comment exploiter tout le potentiel de Java EE 6 et de GlassFish ? Pour cela, Oracle vous invite à un atelier pratique inédit qui vous permettra de découvrir Java EE 6 et développer avec GlassFish.”

jeudi 3 novembre 2010 de 9h30 à 16h30.
Oracle France – 15, boulevard du Général de Gaule 92715 Colombes

Au programme: présentation et labs (venir avec son portable).
Inscriptions en ligne (places limitées).

GlassFish sur développez, 4 ans plus tard…

September 26, 2011 Comments Off

L’activité du forum francophone GlassFish sur developpez.com est toujours aussi importante et la croissance en quatre ans est impressionnante :

Septembre 2007 :

Septembre 2011 :

Ca représente une augmentation de x7,5 du nombre de discussions (contre x2.5-3 pour les autres) et de x6 du nombre de message (contre x2,0-3 pour la compétition).

Java EE 6 does Java 7 with GlassFish 3.1.1, the making-of

August 24, 2011 § 5 Comments

I recently posted a screencast showing how a simple JavaEE 6 web application can take advantage of Java 7’s new language features (aka project coin). Here are more details on the code for the three Java 7 new language features shown. The full code is available here.

The first Project Coin feature shown (Java 7 refactorings start at 7:37 into the screencast) is Strings in switch statements. This is rather straightforward (a number of folks thought this was already supported) and if probably a good candidate to use with web frameworks which take user input as Strings.


String name = request.getParameter("name");
if ("duke".equals(name)) {
    vip = true;
    name = name.toUpperCase(); // let's visually recognize DUKE
} else if ("sparky".equals(name)) {
    vip = true;         // another VIP
}

becomes :


String name = request.getParameter("name");
switch (name) {
    case "duke":
        vip = true;
        name = name.toUpperCase(); // let's visually recognize DUKE
        break;
    case "sparky":
        vip = true;         // another VIP
        break;
}

Of course you can also have a default: section equivalent to an else statement.

The second feature is try-with-resources and is shown here in the initializing sequence of a stateless EJB. It uses JDBC to ping a well-known system table. The code specifically relies on the fact that multiple classes in JDBC 4.1 (Connection, Statement and ResultSet) now implement the new Java 7 java.lang.AutoCloseable interface. This is what allows for the following code requiring proper closing of resources :


@PostConstruct
public void pingDB(){
    try {
        Connection c = ds.getConnection();
        Statement stmt = c.createStatement();

        ResultSet rs = stmt.executeQuery("SELECT * from SYS.SYSTABLES");
        while (rs.next()) {
            System.out.println("***** SYSTEM TABLES" + rs.getString("TABLENAME"));
        }
        stmt.close();
        c.close();

    } catch (SQLException ex) {
        ex.printStackTrace();
    }
}

… to be rewritten as follows (resources initialized in a single statement, no closing required as the compiler takes care of it when they go out of scope) :


@PostConstruct
public void pingDB() {
    try (Connection c = ds.getConnection(); Statement stmt = c.createStatement()) {
        ResultSet rs = stmt.executeQuery("SELECT * from SYS.SYSTABLES");
        while (rs.next()) {
            System.out.println("***** SYSTEM TABLES" + rs.getString("TABLENAME"));
        }
    } catch (SQLException ex) {
        ex.printStackTrace();
    }
}

As you can see in the source code, the DataSource is actually created using a @DataSourceDefinition annotation which is a new feature in Java EE 6.

The third and final part of the demonstration uses a somewhat convoluted piece of JPA code to illustrate the multi-catch feature. For the purpose of the demo, the JPA query (also in the above EJB) uses a LockModeType.PESSIMISTIC_WRITE (new in JPA 2.0) when building the JP-QL query and adds two catch blocs for PessimisticLockException and LockTimeoutException :


try {
    List customers = em.createNamedQuery("findAllCustomersWithName")
        .setParameter("custName", name)
        .setLockMode(LockModeType.PESSIMISTIC_WRITE)
        .getResultList();
    if (customers.isEmpty()) {
        doesExist = false;
        Customer c = new Customer();
        c.setName(name);
        em.persist(c);
    } else {
        doesExist = true;
    } catch (final PessimisticLockException ple) {
        System.out.println("Something lock-related went wrong: " + ple.getMessage());
    } catch (final LockTimeoutException lte) {
        System.out.println("Something lock-related went wrong: " + lte.getMessage());
    }

}

Which can be refactored to this equivalent code using multi-catch :


try {
    List customers = em.createNamedQuery("findAllCustomersWithName")
        .setParameter("custName", name)
        .setLockMode(LockModeType.PESSIMISTIC_WRITE)
        .getResultList();
    if (customers.isEmpty()) {
        doesExist = false;
        Customer c = new Customer();
        c.setName(name);
        em.persist(c);
    } else {
        doesExist = true;
    } catch (final PessimisticLockException | LockTimeoutException ple) {
        System.out.println("Something lock-related went wrong: " + ple.getMessage());
    }


}

This new language feature is *very* useful for reflection or java.io File manipulation, not quite the most common Java EE code out there.

Of course all of the above only works with JDK 7 at runtime and if running NetBeans 7.0.1 you’ll also need to set the source level to Java 7 for the quick fixes to light up. I’ve also successfully executed this under Mac OS X using the OpenJDK Mac OS binary port.

Some resources :

Full Source code.
Screencast showing this “in action”.
String in switch statements.
try-with-resources.
Multi-catch and precise rethrow.

Video: Java EE 6 does Java 7 (with GlassFish 3.1.1)

July 28, 2011 Comments Off

Java 7 is here! and so is GlassFish 3.1.1! Get them while they’re hot!

New Java versions can sometimes take a bit of time before they’re adopted because:
a/ your IDE doesn’t support the new version and associated language constructs
b/ you’re a server-side developer and it’ll be a while before your application server supports that new version of the JDK
Well, with Java 7, things are different with the quasi-simultaneous releases of JDK 7, NetBeans 7.0.1 (coming up very soon) and GlassFish 3.1.1! Here’s a new screencast on the GlassFish Youtube Channel showing Java EE 6 development taking advantage of the project Coin features and running on GlassFish 3.1.1 and Java 7 :

Where Am I?

You are currently browsing entries tagged with glassfish at Bistro! 2.0.

Follow

Get every new post delivered to your Inbox.