blob: 7090858e30e3def6570501fde18a663ab76b1534 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- -*- xhtml -*- -->
<title>Meet a NetBeans Module Writer: Petr Zajac</title>
<link rel="stylesheet" type="text/css" href="https://netbeans.org/netbeans.css">
<meta name="AUDIENCE" content="NBUSER">
<meta name="TYPE" content="ARTICLE">
<meta name="EXPIRES" content="N">
<meta name="AUTHOR" content="Geertjan Wielenga">
<meta name="developer" content="gwielenga@netbeans.org">
<meta name="indexed" content="y">
<meta name="description"
content="">
</head>
<body>
<h1>Meet a NetBeans Module Writer: Petr Zajac</h1>
<p><small><a href="mailto:nbdocs_feedback@usersguide.netbeans.org?subject=Feedback:%20Meet%20A%20NetBeans%20Module%20Writer:%20Petr">Feedback</a></small></p>
<table width="190" border="1" cellspacing="0" cellpadding="5" align="right" class="ltblue">
<tbody>
<tr>
<td align="center"><img align="center" src="nbm_interviews/petr/petr.jpg" alt="Petr's picture">
<br><b>Xzajo</b></td>
</tr>
<tr>
<td>
<p>Petr's hot links:
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
</ul>
</tr>
</tbody>
</table>
<p>NetBeans Staff met with Petr Zajac, a very prolific module developer who blogs under the name
of <a href="http://blogs.sun.com/xzajo">Xzajo</a>.
<p><h3>Xzajo, I've been told that you created a Hibernate plugin for
NetBeans. That's very cool. Please tell us about this plugin.</h3></p>
<p>Well, it is part of the <a href="http://nbxdoclet.sf.net/index.php">NBXDoclet project</a>.
Its features can be summarized as follows:
<ul><li>XDdoclet-based wizards
<li>POJO class (http://nbxdoclet.sourceforge.net/HibernateBeanWizard.php)
<li>Persistent fields using code completion (http://nbxdoclet.sourceforge.net/HibernateCodeCompletion.php)
<li>Relations using code completion (http://nbxdoclet.sourceforge.net/HibernateCodeCompletion.php)
<li>Facade for POJO
<li>Wizard for HQL and wrapping it to method in facade class (http://nbxdoclet.sourceforge.net/HQLWizard.php)
<li>Hibernate utility class with initialization of Hibernate
<li>XDoclet tag customizer
<li>Hibernate project extension for J2SE and web project of NetBeans
<li>Adding Hibernate libraries on classpaths
<li>Selection of dialect and JDBC driver in a customizer
<li>Adding Ant tasks for Hibernate XDoclet to project build script
<li>Generating of database schema and creating database tables
<li>Generating Hibernate properties for project
<li>Showing HTS session for project
</ul>
</p>
<p><h3>Why did you decide to create this plugin?</h3>
<p>I work for the NetBeans QA Team and wanted to join the NetBeans core development team
some time ago.
I was told that I am Java Entry level developer, that I have not much experience in Java,
and that I cannot think the object oriented way. I was very depressed by this feedback! After all, I had started
programming when I was in primary school. My first computer was an Atari 130 XE.
I developed in Assembler for 6502 CPU. In high school I was developing in C/C++.
When I was at university I develop a plugin for AutoCAD 14 for a company. It was
great experience. I was interested in UML and CORBA. According to best practices,
I designed all my applications
in UML before I started to write code.
I've develop many applications in C++. But only a small number in Java.
So, to learn more, I decided to created my own plugin for NetBeans in my free time!
<p><h3>Wait a minute, so you're part of the NetBeans team? Where in the world are you? </h3>
<p>I am in Prague.
<p><h3>When did you begin developing plugins?</h3>
<p>I think it was about two years ago.
<p><h3>Where can we get your Hibernate module from?</h3>
<p>From my update center. The update center is registered in your IDE if
you install this module:
<p><a href="http://prdownloads.sourceforge.net/nbxdoclet/sf-netbeans-nbxdoclet-update-0.5.nbm">sf-netbeans-nbxdoclet-update-0.5.nbm</a>
<p><h3>Have you created other modules?</h3>
<p>Yes! Several (here they are with links to further information, in Xzajo's blog):
<ul>
<li><a href="http://blogs.sun.com/roller/page/xzajo?entry=emma_code_coverage_for_netbeans">Code coverage support for NetBeans projects (J2SE and module development)</a></li>
<li><a href="http://blogs.sun.com/xzajo?entry=test_ng_plugin_for_netbeans">Test NG (I plan to add more features)</a></li>
<li><a href="http://blogs.sun.com/roller/page/xzajo?entry=netbeans_javahelp_set_wizard_with">Java HelpSet validation</a></li>
<li><a href="http://blogs.sun.com/roller/page/xzajo?entry=project_extensions_wizard">Project Extensions (natures) Wizard for NetBeans 5.0</a></li>
<li>Jmock with byte code patching (work in progress, currently an experimental module)</li>
</ul>
<p><h3>What are some of the problems you have encountered?</h3>
<p>Many! The old NetBeans APIs are not intuitive. For example, it is difficult
to add a new library to a project's classpath. JMI was a real problem to get familiar with.
<p><h3>How did you solve them?</h3>
<p>I had to look into the sources of APIs, tests and other modules which use the APIs.
To extend projects, I created a few hacks and I relied on something that is not a public API.
I am developing against NetBeans 5.0, so the hacks are reliable. A few hacks will be removed
for NetBeans 6.0, because new APIs are coming that will make my hacks obsolete. </p>
<p><h3>What did you enjoy most about creating your NetBeans modules?</h3>
<p>When I started create my plug-in there was no support in the IDE for NetBeans
module development. It was really difficult to create modules.
Now it is really simple. Setting up a module is as easy as a few mouse clicks.
<p><h3>Have you thought about creating an application on the NetBeans Platform as well?</h3>
<p>I recommend it for bigger, complex, Swing applicationa. I'm busy learning about this now.
<p><h3>What are your favorite features of NetBeans?</h3>
<p>
The windowing system is really cool. I like the Ant based project system.
It is really powerful. You can add your own build tasks to build scripts.
<p><h3>If you could change one thing in module development features in NetBeans, what would it be?</h3>
<p>Support for developing tests. It is difficult to set up a test classpath.
<p><h3>Any final thoughts?</h3>
<p>Two years ago I didn't believe that NetBeans could be as good a development environment
as it is today.
Thanks to Eclipse we have many new useful features in NetBeans. Thanks to Hibernate
we have the new EJB 3.0 specification. So, in summary, open source is great.
<p><h3>Thanks, Xzajo and good luck with your module development!</h3>
<p>
<!-- ======================================================================================== -->
<h2><a name="nextsteps"></a>Further reading</h2>
<p>For information about creating and developing plug-in modules and rich-client applications, see the following resources:
<ul>
<p><li><a href="https://platform.netbeans.org/tutorials/quickstart-nbm.html">Introduction to NetBeans Module Development</a></li>
<p><li><a href="https://platform.netbeans.org/tutorials/nbm-paintapp.html">Introduction to Rich-Client Application Development</a></li>
<p><li><a href="https://platform.netbeans.org/tutorials/index.html">NetBeans Modules and Rich-Client Applications Learning Trail</a></li>
<p><li><a href="https://netbeans.org/download/dev/javadoc/">NetBeans API Javadoc (Current Development Version)</a></li>
<p><li><a href="http://www.planetnetbeans.org">Blogs by NetBeans Engineers and NetBeans Users</a></li></ul>
</p>
<hr>
</body>
</html>