<htmlL>
<head>
  <title>NetBeans Interviews - Ludovic Champenois</title>
  <META NAME="description" CONTENT="Interview with Ludovic Champenois, architect and technial lead for J2EE Modules">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta NAME='content-language' CONTENT='en'>
  <LINK REL="stylesheet" type="text/css" href="https://netbeans.org/netbeans.css">
  <style type="text/css">
    .question { font-style: italic; font-weight: bold; padding-bottom:3px; padding-top:8px; }
    .subquestion { margin-left: 40px; font-style: italic; font-weight: bold; padding-bottom:3px; padding-top:8px; }
    .answer { margin-left: 40px; }
  </style>
</head>
<body>
<h1>Interview with Ludovic Champenois</h1>

<h1>I. Introduction</h1>

<br><img src="../../../images_www/articles/interviews/Ludovic_Champenois.jpg" title="Ludovic Champenois" alt="Photo of Ludovic Champenois" width="341" height="256" style="float:left; margin-right:10px; padding-bottom:5px; padding-top:5px;"></div>

<p><i>NOTE:</i> The interview below was done before the decision to use 5.0 as the version number of 
the release of NetBeans that is scheduled for December, 2005.  At the time of the interview,
the plan had been to use 4.2 as the version number.</p>
    
<p>
Ludovic Champenois is the architect and technical leader for J2EE modules in NetBeans.
He is also the co-author of the <a href="http://www.bookpool.com/sm/0131876201">NetBeans IDE Field Guide</a>,
soon to be published by Prentice Hall.
On 8th May 2005, Vincent Brabant <a href="ludovic_champenois_fr.html">interviewed him in French</a> for the
<a href="http://fr.netbeans.org/index.html">french NetBeans community</a>.
Below is the english translation of that interview.

<p>
<div class="question">1. When did you join the NetBeans team ?</div>

<div class="answer"><b>Ludovic</b>:
Wow, that question is really strange for me:
I never joined the NetBeans team.
In 1999, I already was at Sun, Calofornia,
and I participated with a little team managed by Jonathan Schwartz
to the technical evaluation of possibles acquisitions in the domain of Tools,
especially NetBeans and Forté...
In fact, it's the NetBeans team that joined Sun.
</div>

<div class="subquestion">In fact, I should say when did you start working for the NetBeans IDE ?
Before, you worked for the Sun Java Studio range, I think. Am I wrong ? </div>

<div class="answer"><b>Ludovic</b>:
I was in the organisation of Tools, on research projects. Not specifically on Studio.
</div>

<div class="question">2. Why did you choose to join NetBeans ?</div>

<div class="answer"><b>Ludovic</b>:
During the technical evaluation, I had to question some NetBeans Engineers (like
Jesse Glick, employeed by NetBeans). Of course, at that time
the product was not very stable (version "Developer 3.0 Entry, Beta"),
but what was interessting was the vision of the NetBeans team
(support of version control, EJB, CORBA, RMI, JDBC, JSP/Servlets, XML was already planned
in the "Enterprise" version of NetBeans), and also the concept of "Open APIs" that
permits the development of extensions.
I remembered thinking : if Java was a religion,
NetBeans employees are the best priests!
</div>

<p><h1>II. NetBeans &amp; Sun Java Studio</h1>

<br><img src="../../../images_www/third_party/1.gif" title="Sun Microsystem" alt="Logo of Sun Microsystem" style="float:left; margin-right:10px; padding-bottom:5px; padding-top:5px;"></div>

<div class="question">3. Is the J2EE module of NetBeans the same as the one bundled with
Sun One Studio ?</div>

<div class="answer"><b>Ludovic</b>:
Until now (NetBeans 4.1), "Enterprise" modules such as (amongst other things) 
support for J2EE, were developped for Sun Java Studio.
The Java Studio product line has always been based upon NetBeans extensions.
In 2004, management took the decision to 'integrate' that technology into NetBeans.
We took advantage of the new architecture of NetBeans 4 (Ant driven Projects)
to redesign it to be more simple and evolutionary - but also more oreiented to usability.
In fact, experience of Studio permits us to rapidly rewrite new J2EE support in
NetBeans.
</div>

<div class="question">4. For what reasons did you decide to support J2EE and J2ME development in NetBeans ?</div>

<div class="answer"><b>Ludovic</b>:
The Sun Application Server 8 is really developer oriented:
more than 2 millions downloads I think.
Also, it's free, for development but also for releases in production.
In fact, it's the reference for the J2EE specifications.
Associating that technology with NetBeans (also free), was natural: NetBeans
has now become the IDE for all Java specifications : J2SE, J2ME and J2EE.
NetBeans will from now follow those specifications and offers developers
possibilities to use them.
Remember that when J2SE 5 was released, a compliant NetBeans release was already available.
In the same way, when the J2EE 5.0 will be out,
NetBeans will be there to offer to developers a complete IDE to use it.
</div>

<div class="subquestion">The J2EE module is available in Open Source with the NetBeans IDE 4.1.
But not the J2ME module. Any reason why ? </div>

<div class="answer"><b>Ludovic</b>:
Moving code to open souce is more complicated than you may think.
It takes a lot of time, and energy (legal, licenses ,
patents verification, code cleanup, etc etc).
For J2ME modules, the first steps were to make them freely available
on the NetBeans platform. </div>

<div class="question">5. What's the future of Sun Java Studio ? Why should I buy it ? What does SJS offer me that NetBeans can't ?</div>

<div class="answer"><b>Ludovic</b>:
Sun Java Studio is the product line for Sun, based upon NetBeans.
Firstly, it contains advanced modules like complete UML support,
a collaborative module,
and a profiler oriented toward J2EE.
Being a Sun product, it is also the ideal complement for
Java Enterprise System (JES), the unified system platform of Sun.
It has the advantage of support contracts and offers a portal that permits users to
obtain privileged information.
It is very important for clients in a company to use supported products and be
aligned with Java Enterprise Systems (Sun Application Server,
Web Server,
Directory Server,
Portal Server,
Identity Server,...).
In the long term, a majority of Java Studio's modules could be integrated into
NetBeans.
</div>

<div class="subquestion">What do I do to take dvantage of that Sun support ?</div>

<div class="answer"><b>Ludovic</b>:
<ul>
<li>Or you buy a Studio License (that also includes Creator) for $995.  Tthis is a special promotion offer -
<br><a href="http://www.sun.com/emrkt/jsdpromo/">http://www.sun.com/emrkt/jsdpromo/</a>;
<li>It contains SDN access -
<a href="https://softwarereg.sun.com/registration/developer/en_US/manage_account">https://softwarereg.sun.com/registration/developer/en_US/manage_account</a>;
<li>Or you buy the Java Enterprise System, an annual subscribtion ($140 or $50 per employee per year, for all Sun software!!!
<br><a href="http://www.sun.com/software/javaenterprisesystem/">http://www.sun.com/software/javaenterprisesystem/</a> and
<br><a href="http://www.sun.com/software/javaenterprisesystem/compare.xml">http://www.sun.com/software/javaenterprisesystem/compare.xml</a>;
</ul>
</div>

<p><h1>III. NetBeans IDE 4.1</h1>

<br><img src="../../../images_www/v4/4.1-banner-v3.png" style="float:left; margin-right:10px; padding-bottom:5px; padding-top:5px;">
<div class="question">6. What is your favorite feature in NetBeans IDE 4.1 ?</div>

<div class="answer"><b>Ludovic</b>:
Firstly, the fact that build system is now completely based upon Ant is very important for me.
It offers significant freedom to developers to have a system that is usable within NetBeans but also outside NetBeans.
As a NetBeans developer (and as a NetBeans user),
I appreciate the Visual Editor for Swing and the very evolutionary architecture of NetBeans.
A new module will help a developer to build NetBeans extensions.
</div>

<div class="subquestion">Concerning the NetBeans platform, will we also see a module
to help us to build applications on top of the NetBeans platform ?</div>

<div class="answer"><b>Ludovic</b>:
Yes, the new module I just mentioned will also help there.
</div>

<div class="question">7. What features would you like to see integrated into
the NetBeans IDE ?</div>

<div class="answer"><b>Ludovic</b>:
Now I would like to see support of frameworks for Web
Applications (JSF, Struts...) but also a more importantly support in the
domain of databases: Modelisation, evolution, and binding for J2SE applications and
Web Applications.
Finally, extended support for scripting languages
(php, python, javascript,...) would be very interesting.
</div>

<div class="subquestion">In general, each time we asked questions about JSF support
in NetBeans, the reply was that that support was in Sun Java Studio Creator.
Do you think we will one day see features of Sun Java Studio Creator
integrated into NetBeans, even as non-open source modules, like the J2ME module ? </div>

<div class="answer"><b>Ludovic</b>:
What I can say is that JSF will be in J2EE 5.0 specifications,
and NetBeans must give support for new specifications when they they are available.
</div>

<div class="subquestion">For scripting language support, isn't that the goal of the Coyotte project,
hosted on Java.Net ?</div>

<div class="answer"><b>Ludovic</b>:
Yes, it's a start. Another domain is AJAX (<a href="http://www.theserverside.com/news/thread.tss?thread_id=33319">http://www.theserverside.com/news/thread.tss?thread_id=33319</a>)
and javascript. </div>

<p><h1>IV. NetBeans IDE 4.2 </h1>
<br><img src="../../../images_www/download-nb-3.gif" style="float:left; margin-right:10px; padding-bottom:5px; padding-top:5px;">

<div class="question">8. What are your plans for NetBeans IDE 4.2 ?</div>

<div class="answer"><b>Ludovic</b>:
The actual model for releases of NetBeans is nearly every 4 months.
For NetBeans IDE 4.2, I hope we will see extended support for refactoring
and improvements in the Java Editor.
A new Visual Editor is also planned. Concerning J2EE, we have to continue
what has been started for 4.1, add support for a large number of application servers,
and prepare tools to the new J2EE 5.0 specification that will offer new development facilities like:
annotations, persistence beans, and simplified web services.
And also somes surprises, as always. The goal is to have a very attractive and
competitive offer for new developers ...
</div>

<div class="subquestion">Which are the other application servers that you will support ? </div>

<div class="answer"><b>Ludovic</b>:
The list will be known sooner. Be patient. That's all I can say ...
</div>

<div class="subquestion">NetBeans 4.2 would be out around October 2005.
Will the J2EE features already be included and working at that time ? </div>

<div class="answer"><b>Ludovic</b>:
J2EE 5.0 will be in Beta at that moment.
When I speak about NetBeans 5.0, I think about J2EE 5.0 support.
Of course, the release number is only speculation: marketing will have the last word!
</div>

<div class="subquestion">Could you speak about one of those surprises ? </div>

<div class="answer"><b>Ludovic</b>:
Not for that moment, because we are always in discussions.
You will certainly have more information at JavaOne, I hope!
</div>

<p><h1>V. The Book</h1>
<br><img src="http://fr.netbeans.org/files/documents/163/423/file_423.dat?filename=couverture%20%28petite%29%2ejpg" style="float:left; margin-right:10px; padding-bottom:5px; padding-top:5px;">

<div class="question">9. How did you write the book,
considering at the same time there were modifications made in the implementation of
the code ?</div>

<div class="answer"><b>Ludovic</b>:
The book was mainly written just before the Beta Release. It guaranteed that the described features were
stable enough. Of course, the user interface changed a little, but those were cosmetic modifications.
We are finishing the last edits for the book.
I hope that this book will incite people to discover NetBeans.
Once that discovery is made, it will be easier to discover news about
NetBeans 4.2 and NetBeans 5.0.
</div>

<div class="subquestion">Does that mean that after NetBeans 4.2 we will see a NetBeans 5.0 ?
In general NetBeans always uses a higher version number when major enhancements were made.
What will justify naming it 5.0 ? </div>

<div class="answer"><b>Ludovic</b>:
Once again, when I speak about NetBeans 5, I am thinking about the NetBeans release
that will be out the same day as the J2EE 5.0 specification. That specification
is now in discussion with 'expert groups' and dates are not fixed.
Until then, another version of NetBeans will be out, (te code name is 4.2).
So, to resume, we have to work on NetBeans IDE 4.2, but also to integrate the J2EE 5.0
support for the next release.
</div>

<div class="subquestion">Is a book about the NetBeans platform planned ?
It is really missed !</div>

<div class="answer"><b>Ludovic</b>:
Good idea. Now that the subject is very visible, maybe that Jesse Glick
will have some cycles to write it ...
</div>

<div class="subquestion">Is it possible to take any courses at Sun to learn the NetBeans APIs ?</div>

<div class="answer"><b>Ludovic</b>:
Another good idea ... if NetBeans has success at the platform level ...
I will notify some people to see if it can be done. Today, the APIs are
available in detail at
<a href="https://netbeans.org/download/dev/javadoc/">https://netbeans.org/download/dev/javadoc/</a>.
</div>

<p><h1>VI. NetBeans Event</h1>

<div class="question">10. Will you be at NetBeans Event in Brussels, the 26 May ?</div>

<div class="answer"><b>Ludovic</b>:
Pavel Buzek will be at Bruxelles. He will do an excellent presentation (in English).
But I will be at JavaOne, for a Technical Session.
(<a href="../javaone/2005/index.html#TS7725">Technical Session 7725 "J2EE&trade; Ease of Development: Platform Specification and Tools Perspective</a>"),
and also at the NetBeans Day. Will you be there ?
</div>

<div class="subquestion">No. It's too expensive.
But if you want to pay for my travel and hotel, then yes, I will certainly come.  ;-) </div>

<div class="answer"><b>Ludovic</b>:
Try <a href="http://be.sun.com/sunnews/events/nblaunch/index.html">http://be.sun.com/sunnews/events/nblaunch/index.html</a> -
"During each workshop, a JavaOne package (*) will be given."
:-)
</div>

<p><h1>VII. Conclusion</h1>

<div class="question">11. A word for the NetBeans Community ?</div>

<div class="answer"><b>Ludovic</b>:
<ul><li>
<b>Firstly for the users</b>: thanks for the valued feedback you give us.
We take it seriously.
Usability of NetBeans must become intuitive and stay simple to use.
</li><li>
<b>Next, for potentials contributors to the open source project</b>:
A new module to easily develop NetBeans Modules is on the way...
I think it will enhance perception of the development platform of NetBeans...
Restez à l'écoute. <i>[note: this appeared in english in the french version, so translated to french here]</i>
</li>
</ul>
</div>

<div class="subquestion">Any idea when those modules will be available ?</div>

<div class="answer"><b>Ludovic</b>:
I hope NetBeans 4.2, but once again, nothing official in what I am saying...
C'est mon désir personnel. Rien de plus ...  <i>[note: this appeared in english in the french version, so translated to french here]</i>
</div>


<div class="question">Thank you very much for the interview, Ludovic</div>

<p>
<p><i>This interview <a href="ludovic_champenois_fr.html">originally conducted in french</a> by Vincent Brabant, for the french community of NetBeans, the 8 may 2005.</i></div>
</body>
</html>
