| <!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> |