Over a million developers have joined DZone.
Platinum Partner

Broadband Wireless Communications Systems on NetBeans

· Java Zone

The Java Zone is brought to you in partnership with ZeroTurnaround. Discover how you can skip the build and redeploy process by using JRebel by ZeroTurnaround.

I'm Jason Midkiff, hired into DataSoft, a broadband wireless communications company, as a senior software developer last April to work on a few products stemming from Small Business Innovation Research, which is primarily funded through the US government.

Eclipse RCP vs. NetBeans Platform

When I came into DataSoft, I knew primarily how to develop Java applications using Swing, but was interested in expanding my own "knowledge portfolio" and finding better and faster ways to produce professional looking applications. After we produced version 1 of one of our products, the Waveform analysis tool, in Swing, I decided that we should do some research into the NetBeans Platform and Eclipse RCP. We took a few weeks analyzing both RCPs and running through tutorials on each platform, since both platforms do have a substantial learning curve, even though the claim is that it will pay off in the end.

In the beginning, I was anticipating picking the Eclipse RCP, just because I had worked with it before and I had seen it in action through many other products, such as Rational Systems Architect from IBM. However, through the weeks of looking at both RCPs, I found that the quality and quantity of tutorials and support offered by the NetBeans Platform far outweighs Eclipse RCP. Furthermore, the organization of the information is much more intuitive on the NetBeans site.

So, in the end, it was my decision to go with the NetBeans Platform for our next product. Since then, we have created 10 different modules of software and packaged them into 5 different module suites.

Tool Portfolio

Here's a breakdown of some of the tools we are actively developing on the NetBeans Platform.

  • SDR Waveform Analysis Tool (SWAT). This application measures the complexity of waveform software (typically C++ code) and compliance of waveform/platform software against Software Communication Architecture (SCA) standards. It is intended to provide an assessment of portability of waveforms to new platforms.

  • DataSoft Interface Verification Application (DIVA). This tool provides the user an easy way to define and organize APIs and compare a standard APIs against a vendor API. In essence it is a much more thorough version of the Beyond Compare tool in that it actually breaks down software into its lexical structure to find differences. Right now the tool just supports analysis of Interface Definition Language (IDL) but its architecture allows extensions for other languages like C++ and Java.

  • Domain Profile Explorer. This tool analyzes the Domain Profile (which is a set of xml files) of a SCA waveform and/or platform and provides a visual layout of the system (essentially a component diagram) as well as an analysis of the domain profile’s adherence to SCA standards.

  • IDL and Thrift IDL Editors. Lastly, since our first two products listed above use ANTLR lexers/parsers, we thought it would be appropriate to try integrating our lexers and parsers with the NetBeans lexer and parsers to produce editors for standard IDL and Thrift IDL. As of right now, these editors provide syntax highlighting as well as parsing error highlighting. We aim to add to these two pet projects some more useful features like integration of a IDL-to-C and IDL-to-Java compiler.

We’ve been developing using the latest NetBeans Platform 7.1 builds, since they offer some new APIs that were not available in 7.0. Finally, I’m also interested in the newly released JavaFX version and how it will integrate with NetBeans Platform applications. I see us putting some JavaFX content into our applications in the near future.

The Java Zone is brought to you in partnership with ZeroTurnaround. Discover how you can skip the build and redeploy process by using JRebel by ZeroTurnaround.


{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}