Community One

Today was the Community One. Not exactly JavaOne yet, free of charge, and mostly based on communities. The idea is to bring different communities on board such as JUGs, GlassFish, Open Solaris, Linux, NetBeans and so on. Community One is also based at the Moscone Center and feels sometimes like a warm up for JavaOne. You see geeks everywhere playing […]

Read More →

From the Golden Gate to GlassFish

Yesterday morning I met Alexis Moussine Pouchkine near the Peer 45 in San Francisco. He had organized a bike tour before the GlassFish unconferences. We were a group of 10 people, ready to cycle through the Golden Gate bridge. Met at 9:30am, had a coffee, put the helmet on and off we went. The weather wasn‘t very clear and it […]

Read More →

Speaking at JavaOne

As a young JUG Leader I’ve been invited by Sun to JavaOne (thanks to Aaron Houston). It‘s my first time at JavaOne so I‘m very excited to attend conferences, BOFs and plenty of organized diners or unconferences. It‘s going to be a busy week, but I‘m ready (I arrived yesterday in San Francisco and already had a good night sleep to recover the 12 hours flight and 9 hours difference with Paris). I came here to grab as much information as I can (on Java and JUGs) and take it back home. But, surprisingly, I‘ve just been asked by Corina Ulescu (JCP PMO) to talk about the JCP. I bit like what I did at the QCon back in March. I am going to participate at a round table moderated by Patrick Curran (Chair of the JCP). I will share the table with Stephen Colebourne, Michael Nascimento Santos, Alex Buckley, Kay Glahn, Rod Johnson and Dalibor Topic. We will be asked the following questions : Do we need standards at all in an open-source world? Why not just build systems on top of open-source implementations? How can the JCP call itself an open standards organization when it‘s dominated by the big corporate players and it conducts its business behind closed doors? Should the JCP adopt open-source processes for developing specifications, reference implementations, and conformance test suites (TCKs)? What role can non-corporate members (individuals, user-groups, open-source projects) play in the JCP? […]

Read More →

English review of a Java EE 5 French book

French libraries are full of English books. French blogs are full of comments on English books. Technical French website are full of reviews of English books. But the opposite is not true and doesn‘t happen very often, that‘s why I‘m mentioning it. Few months ago I‘ve been contacted by Meera Subbarao who is the team leader for the JavaLobby/DZone book review team. She wanted to know a bit more about my book on Java EE 5. She got really interested and then quickly, very disappointed : my book is written in French ! That‘s when David Sills came along. David is a book reviewer and volunteered to review my French book. I was ready to help him in any difficulty with the language, but it appeared that David is quite knowledgeable with French. He managed to read it all and wrote a review on DZone. Thanks David for the effort and thanks for the interesting review that you wrote. I‘ll send the following extract to my publisher, who knows, a French book could be published into English once : To be honest, I’d like to have this book in English for newbies in the field! We’d have a lot better applications built, I can say that Read the full review

Read More →

Google Gears in Action

Google Gears is an open source browser extension that enables web applications to provide offline functionality. For those of you who, like me, haven’t played with the API, there is an easy way to just use it and see it in action : Google Reader. If you use Google Reader to read your feeds and want to read them offline […]

Read More →

Back from QCon

Second conference in London in less that 6 months (Grails Exchange in October). It‘s always good to be back in London (where I lived for 2 years) except for public transport (Circle Line wasn‘t working on Thursday… again). The conference is held at the Queen Elisabeth just facing the Westminster Abbey. Very nice to look at during the breaks. I‘ve […]

Read More →

Talking at QCon in London

Thursday the 13th of March I‘ll be talking at the QCon in London. The title of this BoF is Insider’s tips for developing a successful API for Java. I’ll be around the table with Werner Keil (Spec lead of JSR 275 – Units Specification), Rod Johnson (the father of Spring) and Patrick Curran (Chair of the JCP). We all have in common to be part of the JCP (Chair, Spec Leads or Expert Group members). This BOF will discuss what it takes to develop a successful API for Java with the JCP in mind. The idea is also to answer questions about the JCP, its structure, how do you join, how to define a JSR without clashing with an existing API ? I will share my experience of being an individual expert member on JSR-316 (Java EE 6), JSR-317 (JPA 2.0) and JSR-318 (EJB 3.1). Hope to see you at QCon.

Read More →

Why are we not using Java EE 5 (bis repetita) ?

A few days ago I‘ve blogged about Why are we not using Java EE 5? This post had a few comments. I’ve then been contacted by Matthew Schmidt from DZone asking me if they could reproduce the post and let people add more comments on it. So, to keep on talking about this topic, go to Java DZone. By the way, talking about confusion, I‘ve found this really interesting article called Is Tomcat an application server?

Read More →

Why are we not using Java EE 5 ?

Believe it or not, in a few months the Java EE 5 specification will be two years old (Final Release on the 11 May, 2006). And nobody is using it. We have all read about how easier the development model is in Java EE 5 compared to J2EE 1.4. Complexity reduced, less XML file descriptors, less code, injection and so on. Despite all these good things, Java EE 5 projects are not taking off. Here are some reasons why : Java EE 5 is a rupture more than a continuity. J2EE 1.4 and Java EE 5 are really different. That means development teams have to be trained to something new and develop new projects leaving behind years of EJB CMP or JAX-RPC. Some teams have invest a lot in J2EE 1.4 and are willing to wait a little bit more and see. And what is Java EE 6 was another big rupture again ? Java EE 5 is based on Java SE 5 (heavy use of annotations). But JDK 1.4 is still widely use in projects, making it impossible to migrate to Java EE 5 Even if Java EE 5 is much simpler than its predecessors, it is still too complicated and has many specifications. With profiling in Java EE 6 the number of spec will be reduced, but until now, to be Java EE 5 compliant, application servers have to implement 23 specifications. Today the application server race is […]

Read More →

Java EE 5 book used in universities

I‘ve been teaching Java EE at a Parisian university (Cnam) for 6 years now. When I decided to write a book about Java EE 5, I took some inspiration from what I was doing at university. Thanks to these 6 years, I‘ve developed pedagogic skills in the way of teaching Java EE. That‘s also what I‘ve done with my book. […]

Read More →

The City of Paris interested in the Paris JUG

Last week I met James Gosling, today I met the Mayor of Paris‘ 11th district. Everybody has their own political opinions and views on social policy and the workplace. I have mine too. I‘m passionate about Java, I like sharing my knowledge and creating networks, and of course making some money… but in a respectful way. I‘m a self-employed entrepreneur, […]

Read More →

First evening at JavaPolis

The first very good news of JavaPolis is that since the 9th of december, the Thalys train (from Paris to Antwerp) stops at the central train station, in the heart of the city. Before, the station was quite far from the city. I arrived with David at 5:30pm, we quickly ran to the hotel to checkin, and then we took a taxi to JavaPolis. There we met the JUG Leaders and off we went to a brewery in the town center. The idea of this diner was to have JUG leaders (and speakers) in the same room to exchange. And that‘s what I did. I talked to a lot of people (some I don‘t even know their names, sorry) about running a Java User Group. Bruno Bussola from JUG Torino gave me some good tips on how to get some sponsors. Paris Apostolopoulos, from the Java Hellenic User Group in Athens, is quite a character. He is full of energy and told us how he always kept faithful in creating his JUG, even when the times were tough (meetings with only a few friends…). Later, Stephan Janssen (BeJUG) came to me and said “I‘m tryin to get James Gosling coming to Europe. I‘ve sent the Italians and Greeks to convice him to come, go, talk to him, and tell him to come”. So I did. I spent 10 minutes on a one on one talking to James Gosling (hope someone […]

Read More →

My JavaPolis agenda

JavaPolis will start next week and I have to decide which conference to go to. Tuesday evening 11th I‘ll be arriving in Antwerp on Tuesday afternoon to attend the JUG leader diner that starts at 8pm. I’m quite excited about this event because it‘s a fantastic oportunity to meet other JUG leaders and talk about Java User Groups in general. There will also be some speakers, so it should be fun to share a meal with some big name of the Java industry. I‘ll try to take some photos. Wednesday the 12th 9:30 : Keynotes of course. 12:00 : I might have a look at the new JavaFX (by Jim Weaver) 13:10 : Java User Groups International Map by Mike “Van” Riper . By the way, the ParisJUG is in the JUG map now. 13:35 : Organize your events with JUG Events by Lucio Benfante of JUG Padova. As you can see, I‘m atteding anything related with JUGs. 14:00 : Kick starting the Content Repository. AJAX meets JCR by David Nuescheler 15:10 : I might go to JSR 316 – Java Platform Enterprise Edition 6 Specification to see Roberto Chinnici. I am part of the JSR 316 expert group, it‘s always good to meet in real life people you deal with through emails. 16:40 : Same thing, I‘ll go to JSR 318 – Enterprise JavaBeans 3.1 so I can meet Kenneth Saks with who I deal with on the JSR […]

Read More →

Is it the right time to choose a portal ?

In IT, it‘s never the right time to choose a software. Either a technology is too old, or it‘s too new or it‘s still in beta. But I think that November 2007 is a critical time to choose a portal platform. I‘m not an expert on portal (as a former BEA employee I‘ve used Weblogic Portal but that was many years ago and things have changed) and I’ve been asked to short-list portal implementations. The first issue I have is with the version of the spec that the portal should implement. “JSR 168”: http://www.jcp.org/en/jsr/detail?id=168 (Portlet V1.0) has been released in October 2003 and most of the portals implement it. But “JSR 286”: http://www.jcp.org/en/jsr/detail?id=168 (Portlet V2.0) is nearly out. Same thing with the JSF bridging. The JSR 301(Portlet Bridge Specification for JavaServer Faces) is still in early draft but nearly there. Same thing happens with WSRP V1.0 (Web Services for Remote Portlets) (August 2003) and the V2.0 still in draft 4. It looks like portal specifications haven‘t changed much since 2003 (Portlet V1.0 and WSRP V1.0). And suddenly three specifications are nearly getting published (Portlet V2.0 and WSRP V2.0 and Portlet bridge for JSF). What should I look into ? A JSR 168 implementation that would be obsolete really soon or a JSR 286 beta implementation that will be buggy ? The project will be using JSF and WebServices, so I need to take that into account. Any advices ? Any […]

Read More →

Paris JUG

I‘ve been thinking about creating a Java User Group in Paris (France) for a long long time. That‘s done now !!! Well, just the first steps : I‘ve created a JUG project at dev.java.net (the project is still pending) Mailing list at users@parisjug.dev.java.net Bought the parisjug.org domain name Looking for a meeting room (either at the Cnam university or with a partnership that I have with the Port Parallelecooperation) I‘m having a diner at JavaPolis with all the other JUG leaders and will attend the BOF so I can get a maximum information I‘m aiming to have the first meeting on Tuesday the 12th of February (monthly meeting on the second Tuesday of every month except in August) And, of course, I will need some good speakers to come and do some technical presentations So, stay tuned, I will post more information on that.

Read More →

3rd and last day at Grails Exchange

Well, this morning I managed to arrive on time and have my first breakfast at the conference. Thanks to the train driver, thanks to the London tube, thanks to the people on the platform who let me in the train, thanks to God when it comes to arriving on time with London public transports. So, today is the last day of what has been a very good experience of this Grails Exchange. I’ve started with The Whole 9 Yards: Things you can do in 10 minutes that will make users love you by Glen Smith. When I read the title I thought that was the place to be this morning. The place to be loved by your customers. Glen is the Australian guy behind the groovyblogs.org. He first showed a photo of his family which is his motivation to use Grails : spend more time with the family and less behind the computer (his title on his business card is a stunt programmer ). First of these 10 things, generating PDF . Using the library Flying Saucer (xhtml renderer) to render into plenty of formats including PDF (9 lines of code of Groovy). Thumbnails again using Flying saucers to generate images (3 lines of code). Graps and charts with Jfreechart to generate PNG images of charts (12 loc). Caching for performance with ehCache that comes with Grails (10 loc). Generating feeds and consuming feeds with Rome (7 loc). Sending and […]

Read More →

I just blog to say I love Idea

The other day I was presenting Java EE 5 to a customer‘s team. There was a guy who had read my book and at the end of the presentation asked me : “You are involved with open source, how come in your book you use Intellij Idea and not Eclipse or Netbeans ? Is it because JetBrains gave you a license ?”. Indeed. When I started writing my book I asked JetBrains and Visual Paradigm if they would offer me a licence. And they both did. But, I‘ll say it again out loud : I LOVE INTELLIJ IDEA !!! I‘ve been using this IDE for 6 years now and I think it‘s a really good one and worth spending some money on. I‘ve never been attracted by Eclipse. On the other hand, I have to say that I‘m quite impressed by NetBeans and use it more and more.

Read More →

J2EE, Java EE, Java SE… the marketing is not ready

Looking for a contract in Java EE ? You will not find any. What about J2EE ? Yes but, be careful, only with Java 5, not Java 1.4. What ? You are only using Java EE 5, we already use the 6 version… For techies, things are getting clearer. We know that there is a EE, SE and even ME edition of Java. We also know that the versionning of these platforms are not the same, and it doesn‘t really matter (EE 5 works with SE 6). So a sentence like “Java EE 5 project using Java SE 5” makes sense for us. But not for the marketing. When a company wants to advertise a job about EE, they still use the good old J2EE symbol. And not because they know they are using J2EE 1.4 but because they don’t have a clue of what EE is. They just know that they are doing Java 6, and 6 is higher than 5, so if you talk to them about Java EE 5, they will look at you with superiority thinking how could you use such an old technology.

Read More →

Waiting for Firefox 3

In his blog Firefox memory usage and memory leak news Jesse Ruderman talks about memory usage and fix memory leak bugs in Firefox 3. For people who know Marmite I’ve been feeling the same with Firefox for the last years (I even used Opera for a long time). I love it for its plugins and extensibility, I hate it for […]

Read More →

Configure your EJB 3 with envirnoment entries using ENC

Very often you can read ” xml descriptors are dead with EJB 3 “. Well, it’s not exactly true. XML descriptors are not dead, they are optional (thank god). But there is still a very good and legitimate use for them when you want to configure an EJB. When you have an attribute in an EJB which value can change at deployment, you don’t want to change your code, recompile it, package it and redeploy the EJB. No, you just want to change an XML file (ejb-jar.xml), package it with your classes and deploy the EJB. So, how do we do that with EJB 3 ? Still using ENC ( environment namming context also sometimes called enterprise namming context ) but in a much easier way. ENC has been around since EJB 1.0 and can be seen as a local JNDI namespace specific to the container. You can bind many different items in the ENC (EJB references, JMS queues, topics, data source, user transaction…) but I will have a look at how to bind and use primitive values. Anything registered in the ENC can be looked up by name under the java:/com/env context ( comp means component ). Let’s take a simple stateless bean which defines a String str initialized with Hello World !!!. @Stateless public class ABean implements ABeanRemote { private String str = "Hello World !!!"; public String sayHello() { return ">>> " + str; } } Now, […]

Read More →

XWiki tutorial

More and more customers are using wikis for collaborative work… and universities too. At the Cnam, where I teach, we felt the need of using a wiki. Our department installed MediaWiki last year but the administrator didn‘t set up the rights properly so it was a real nightmare for teachers to have access to the right resources. A couple of month later, nobody was using MediaWiki anymore. I then had a look at other different wikis and found XWiki. It’s really good for exactly what we want : a fine use of groups, users and access rights. To get use to it I’ve used XWiki for my personal web site and proposed it to the university administrator. In the meantime I’ve decided to write a tutorial to share my experience of installing and using XWiki… sorry, it’s in French and it is called Créer un site associatif avec XWiki. You can find this tutorial on developpez.com web site. I would like to thank Sergiu Dumitriu, François Le Droff and Pascal B for reading the early draft and giving me their inputs. Enjoy.

Read More →

Container Managed Transaction, EJB 3 and Exceptions

Let‘s face it. Exceptions in Java have always been a nightmare because we‘ve never known how to handle them properly. Hundreads of articles and thousands of blogs have tried to help us on “how to use exceptions in Java“. We went from “all exception should be checked“ to “all shoud be unchecked“ and then to “business exception should be checked and technical exceptions unchecked“, “each layer should wrap the parent exception“, “just throw it to the client”… hummm… I‘m not even sure if I agree with all that. On top of all that, Java EE 5 has arrived with a new annotation that can confuse even more the way exceptions should be handled. You can now annotate an exception with @ApplicationException. It is a nice way to distinguish application exceptions from system exceptions. Before we would assume that checked exception would be application exception and unchecked system exception. It‘s not the case. An application exception can be a subclass of java.lang.Exception (checked exception), or of java.lang.RuntimeException (unchecked exception). The only constraint is that an application exception cannot be a subclass of java.rmi.RemoteException (therefore javax.ejb.EJBException In terms of transactions, how does it work? Let‘s take a simple example that I‘ve used in a previous post with two stateless EJBs. ABean (persists a A object) and BBean (persists a B object). ABean calls BBean both using the default TransactionAttributeType.REQUIRED @Stateless public class ABean implements ARemote { @PersistenceContext private EntityManager em; @EJB private […]

Read More →

Container Managed Transaction – Mind the interface

We‘ve been using EJBs for a long time now and, thanks to Java EE 5, it‘s today even easier to do so. What happens when you are comfortable with something ? You forget the basics. And the basics are, J2EE 1.4 or Java EE 5, an EJB runs inside a container. This container can do a lot for you, transactions for example, but you have to make sure you use the container. Let give me an example of a common mistake. Imagine that you have two Stateless EJBs, each one persisting an object. To make it simple I‘ll call them ABean (persists a A object) and BBean (persists a B object). Here is how it works : 1 – The ABean.createsA() method starts a transaction and calls the BBean.createsB() method (1) 2 – The BBean.createsB() method persists a B object and returns it (2) 3 – The ABean persists a A object using B, commit all changes and end the transaction (3) Everything should be smooth, your data is committed, and you‘ll get an A and a B in your database. What happens if the BBean.createsB() method uses TransactionAttributeType.NEVER ? ABean starts a transactions (_TransactionAttributeType.REQUIRED_ is the default), calls BBean but BBean refuses to be part of the transaction and throws an Exception (_RemoteException: EJB cannot be invoked in global transaction_). The transaction is rolled back, no A or B objects are persisted in your database, great, CMT works fine, […]

Read More →