<html>
<head>
<title>NetBeans Day 2005 Report</title>
<META NAME="description" CONTENT="A report on NetBeans Day 2005">
<link rel="stylesheet" type="text/css" href="../../../../netbeans.css">
</head>

<body>

<p><h1>Benefits of Collaboration, Competition Highlighted at NetBeans Day 2005</h1>
<div class="articledate" style="margin-left:0px;">Patrick Keegan, originally published
on java.sun.com, June 27, 2005</div>

<p>Over 500 people packed the ballroom at the Argent Hotel on Sunday for the
second annual NetBeans Day. Attendees were treated to keynote addresses from
leading industry figures, demos of existing and upcoming features in the
NetBeans IDE and platform, and giveaways of the new <i>NetBeans IDE Field
Guide</i> (full disclosure: I am co-author of that book).

<p>Sun Microsystems president and chief operating officer Jonathan Schwartz,
Java language founder James Gosling, and Javalobby founder Rick Ross all
delivered keynote addresses. Hideya Kawahara and Paul Byrne provided a demo of
Project Looking Glass, which has a thriving developer community hosted on
java.net.

<p>The speakers' emphasized the benefits of both collaboration and competition.

<p>In his keynote address, Ross cited the role that the NetBeans IDE, in its
competition with other development tools, has played in strengthening the Java
community as a whole. "It's really amazing how much passion and loyalty people
have to their IDEs," Ross said. "That passionate interest in development tools
that programmers have creates fierce competition.... This competition has worked
incredibly well." Ross contrasted the situation of Java technology developers,
who can use multiple free IDEs that are constantly improving, with that of .NET
programmers, who are locked into one expensive tool.

<p>Ross went on to "set the record straight" about perceived shortcomings of the
NetBeans platform and IDE compared to the Eclipse project, noting that the
NetBeans IDE has supported the development of rich-client applications and plug-
in modules for longer than Eclipse has even existed.

<p>Ross further complimented the NetBeans IDE on making development easier and
helping newcomers succeed, saying that it accelerates a new developer's sense of
achievement. He concluded by urging developers to keep providing feedback to
push the IDE team to continue making improvements.

<p>In his brief address, Schwartz emphasized the importance of collaboration and
community and the way that the NetBeans IDE project fits into that. Speaking
about how Sun's commitment to openness is part of the company culture, Schwartz
declared: "The cause of Sun is to eradicate the digital divide," not just
between rich and poor countries but also between communities of developers.

<p>Schwartz then introduced Todd Fast, an engineer for Sun's Java Studio
Enterprise IDE, who provided a demo of developer collaboration features that
combine instant messaging and the ability for developers to work on files
simultaneously and see each other's changes as their colleagues type them. Fast
announced that these features, which are currently available in Java Studio
Enterprise technology, have been contributed to the NetBeans project. In
addition, Fast noted that APIs are already available for further enhancing these
features. He then demonstrated a voice-over-IP feature that another developer
recently contributed.

<p>After the opening keynote addresses, NetBeans technology evangelists and
engineers provided demos of features in the recently released NetBeans IDE 4.1,
announcements and demos of upcoming features, and information on how to build
modules for the NetBeans platform.

<p>Perhaps the best-received feature demo was that of Project Matisse, a new
incarnation of the IDE's visual editor for Swing technology-based applications
that includes the new "natural layout" and greatly simplifies user interface
(UI) design with improved visual feedback. Matisse is available in current
development builds of the NetBeans IDE and will likely be included in the next
release.

<p>Speakers also gave presentations on the NetBeans Profiler, the NetBeans
Mobility Pack, JXTA, Java Platform, Enterprise Edition (Java SE, formerly known
as J2EE) support in NetBeans IDE, and new and hidden editing features. In
addition, they provided demos of Java Studio Creator software and Java Studio
Enterprise software, which are Sun IDEs that are based on the NetBeans IDE. Most
of these features will also be covered in individual sessions throughout the
course of the 2005 JavaOne conference.

<p>A panel of technology experts answered questions about the future in their
areas of expertise.

<p>Graham Hamilton, the lead architect for the Java Platform, Standard Edition
(Java SE, formerly known as J2SE), spoke about the extreme care that his team
takes in adding language features to the JDK, even with the significant new
features that appeared in J2SE 5.0. He noted that release 6 (code name Mustang)
will contain no new Java language features. For release 7 (code name Dolphin), Hamilton and
his team are exploring ways of manipulating XML literals through Java technology
code.

<p>Tim Bray (co-inventor of XML) spoke of his interest in evolving support for
scripting languages such as Jython. He and Hamilton agreed that the Java
language is not the best for all problems and that they would like to develop
better multilanguage support.

<p>Bill Shannon briefly spoke about the importance of annotations (introduced in
J2SE 5.0) that will greatly improve ease of development in the Java EE 5
platform, which is currently under development.

<p>Robert Brewin (architect for Sun Developer Tools) spoke about the need to
keep focusing on making tools easier to use.

<p>At the end of the day, awards for community contribution were given to Rich
Unger, Vincent Brabant, Maxym Mykhalchuk, Bruno Souza, and Manfred Riem.


<p><h3>About the Author</h3>

<p><a name="Keegan"><b>Patrick Keegan</b></a> has been writing technical
documentation for the NetBeans IDE for six years. He is coauthor of <i>NetBeans
IDE Field Guide</i>, which has just been published by Prentice Hall. He lives in
Prague, Czech Republic.


</body>
</html>
