It turns out that this is a great time to get updated on the NetBeans Integrated Development Environment (IDE). The latest version 5.5 was released in October and it is being promoted with the just released version of the Java Standard Edition (called Java SE 6 or Java 1.6 depending on where you look.) Development of the NetBeans IDE is a free open-source project heavily promoted and supported by Sun. Although NetBeans is primarily a Java IDE, it is a development framework that can also be used with Fortran or C/C++ using add-on modules. First lets look at what's new in Java 6 that is related to XML and Web services.
New XML tools in Java 6
Sun puts most XML tools in two groups, the Java API for XML Processing, or JAXP, and the Java Architecture for XML Binding, or JAXB. The Java 6 Standard Edition brings us version 1.4 of JAXP with major new capability. It supports the W3C's level 3 version of the Document Object Model (DOM) by adding new methods to the existing DOM classes. The SAX (Simple API for XML) parser classes also have new methods to support level 3 concepts. These additions should not cause any problems for legacy Java code.
This new version also supports the Streaming API for XML or StAX. This API will be most useful when extracting data from large XML documents because it minimizes memory use and only parses as needed. Programmers who find the SAX approach to parsing large documents difficult will probably find StAX more intuitive.
Web service tools in Java SE 6
Many Web-service-related packages which were add-ons or separate downloads are now part of the Java Standard Edition. Sun calls this collection of functions JAX-WS (Java API for XML Web Services) version 2.0. It includes JAXB, which lets you map a Java class to SOAP messages and SAAJ (SOAP with Attachments API for Java) version 1.3, which provides for efficient transmission of large blocks of data as attachments to SOAP messages.
Command line tools in Java 6 support creation of a WSDL file from an existing Java class or the reverse creation of Java classes from a WSDL description. The SDK makes extensive use of the ANT utility to automate these functions.
Potential version problems
Inevitable side effects of the decision to move JAX-WS tools into the Java Standard Edition are potential incompatibility with existing projects that used Java SE 5 with separate JAX-WS libraries and future version conflict. The Project Glassfish version of JAX-WS will inevitably move ahead faster than update releases of Java 6. At this time a JAX-WS 2.1 version is close to release, you can track further JAX-WS developments at the project Glassfish site.
NetBeans IDE functions
NetBeans has all of the capabilities a developer would expect in a modern IDE. Since the code is all in Java, it runs the same way on many operating systems. Project management functions let you configure each project separately, so the Java 6 version can still be used with projects that were developed with Java 5. Each Web-related project can be configured to deploy to its own Web server for testing, with the default being Tomcat 5.5.17 as supplied in the NetBeans download.
CVS version control is built in or you can connect to existing systems. Code editing is supported with color coding, code completion and automatic documentation lookup. Graphic user interfaces are easily constructed with the GUI builder that easily switches between code and GUI views.
Naturally you can execute your applications under NetBeans control. A code profiler and debugger are built in and add-on modules are available for specialized monitoring, such as watching the garbage collection process.
NetBeans Web services samples
Several document-oriented Web services samples are provided with the standard NetBeans distribution. However, the code for these samples has not been updated for the Java 6 libraries. In general, most code samples are oriented to Enterprise JavaBean (EJB) technology.
Adding Web services modules to NetBeans
The great virtue of a "plug-in" architecture in an IDE like NetBeans is that useful toolkits can be built by independent projects and you can select the ones that meet your needs. One form that add-ons take is the NetBeans "module," a specially packaged JAR file format with the ".nbm" file type.
Here is an example of the steps it takes to add functionality:
1. I downloaded the Web Services Interoprability Technology (WSIT) module file from the URL given in the resources.
2. In NetBeans I opened the Update Center Wizard dialog and navigated to my downloaded file.
3. NetBeans checked the digital signature on the file and displayed the signing certificate information.
4. On accepting the signature, the module was installed.
Incidently, the Update Center Wizard will also let you check the NetBeans update center for online updates. When I checked my brand new install I found lots of goodies such as modules for importing Eclipse and JBuilder projects, and libraries for creating instant messaging chat channels.
The NetBeans enterprise pack
One of the many add-ons for NetBeans is the Enterprise Pack. This package includes modules for support of BPEL (Business Process Execution Language), an XML Schema editor and Web services security additions. Visual design tools let you work with an overview of BPEL orchestrated Web services. UML modeling of applications is currently in beta testing and should eventually be added to the Enterprise Pack.
Next month I will take a look at Eclipse, the other major free IDE used by Web services developers.
My article discussing SAX and StAX processing of XML. https://searchmicroservices.techtarget.com/tip/Alternatives-to-JAXP
Download combined Java JDK 6 and NetBeans 5.5 package from this site. http://java.sun.com/javase/downloads/index.jsp
Discussion of JAX-WS tools in Java 6 with web service tutorial examples. http://java.sun.com/developer/technicalArticles/J2SE/jax_ws_2/
Java Enterprise Pack for NetBeans http://www.netbeans.org/products/enterprise/
Web Services Interoperability Technology (WSIT) open source project. http://wsit.dev.java.net/
Java API for XML Web Services - part of project Glassfish. https://jax-ws.dev.java.net/