Series: Meet the Dream Team Members
(In January 2007, we announced the 11
charter members of the NetBeans
Team, a community-oriented group of highly skilled NetBeans users
devoted to promoting NetBeans and working on the NetBeans Project. In
these interviews discover who they are, why they are passionate about
NetBeans and what goals they have for the NetBeans project.)
Emilian, Please tell us about yourself.
I work as a full-time consultant in Timisoara, Romania, and I make my
living mostly doing NetBeans
development. I'm pretty
passionate about it. I left my previous job specifically to work on
NetBeans Platform projects after I had written enough blog posts about
the platform to feel confident that it was a
good development choice. Since then I've always had my hands in
platform-code in some way or another.
I've also done server-side stuff or clustering code but always
something connected to the platform. Basically I'm more of a Java
desktop-programming guy but I have found some passion for clustering
recently. I also blog
about the NetBeans Platform.
Why do you work exclusively with the NetBeans Platform?
The NetBeans Platform is a tried and tested framework for modular
development of Swing applications. With the platform, the worry of how
best to implement menu bars and combo boxes has been taken care of; all
you have to do is just use them.
The main benefits of working with the NetBeans Platform are speed and
quality. Knowing that the platform is of top notch quality means I can
focus on the business logic. By speed I mean not only development speed
due to proper API usage and basically not reinventing the wheel but
also Swing speed. The platform is amazingly snappy and with the
customized look and feel, people sometimes can't believe it's a Java
Thanks to the platform's open-source nature and that it's been around
for a while, the codebase is better than what I would usually write.
What is your favorite API in the platform?
The Lookup API is the backbone of the NetBeans Platform and I like it
the most. It encourages you to implement a proper SPI and have a
modular architecture and modular code. One might say that any
programmer will implement modular code, but the truth is that it is
either incomplete or comes late in the game and thus requires too much
refactoring. But with the module system and the Lookup API you get
modular code from the start. Sure, this will be refactored and will
evolve in time but it is a better starting point.
Are you currently working on any major RCP projects?
I have a year-long RCP project for a big banking
company. It's a rich desktop client with a server back-end and also a
cluster on the side for massive financial simulation. I can't say more
about it though because I have a non-disclosure agreement with the
company. But I can provide two screenshots that show the usage of the
Explorer & Properties APIs, Matisse, JFreeChart and Visual Library
in the NetBeans Platform.
I'm also trying to bring back the standalone editor (which is now
discontinued) in the NetBeans Platform. The NetBeans Editor API is
probably the biggest asset of the IDE and it's a shame people can't use
it in their standalone applications. True, there are few that may need
this feature but those that do will surely appreciate the quality and
the function it provides.
If I have enough time, I would also like to finish my BitTorrent
. It's a feature for the platform that I
about for a long time and finally figured out in January. How to allow
the NetBeans Platform to download modules from the Update Center via
BitTorrent. And I don't mean pirating movies here, I'm just talking
about a smarter download method than pure client-server. To me it makes
sense not to hammer the netbeans.org server but to allow users
worldwide to chip-in and share with others, thus reducing the load. I
just thought it was a pretty cool idea.
What I need to do next is have two functional torrent download
implementations. The current one is based on the Snark library and I'm
not entirely sure of the compatibility with trackers. So I would like
another torrent downloader extracted from the Azureus codebase (which
is open-source Java). These two will implement a common SPI and
register themselves in the Lookup.
I would have something like this SPI:
with a downloadTorrent(URL
method. Each implementation would register their
META-INF/services and then my URL handler can just pick one from the
Lookup (based on some user option maybe): Lookup.getDefault().lookup(
The second part would be actually providing update centers which are
torrent-based. Now, the update center is just an XML file, so hosting
that should be easy and rather painless bandwith-wise. We just need to
keep it in sync with the main update centers. The problem is that we
need to seed the files via torrent trackers somehow (and I'm not sure
there's an “open-source” tracker that can do this for us).
Ideally I would have people download the module, select the prefered
downloader (Azureus engine or Snark) then register to our Torrent
Update Center. And that would be it!
Of course, the API/SPI will be a bit more complicated and the user must
be allowed to set various options like how much to share, maximum
What features in the NetBeans Platform would you encourage people
This can be a bit hard to do because I'm so knee-deep in it
that I sometimes take things for granted and fail to realise what
impression they might have on others. But the most interesting features
of the platform that I tell people about are its modular nature and the
auto-update feature. These scream “good quality product” to me. When
you write modular code and also provide your customers with an update
center it sends a nice message: “Not only do we support this, but we do
it with minimal disturbance to your workflow”. Telling the user to
re-download a big setup is laziness when you could just let the program
What could be improved in the NetBeans Platform?
A problem that I have long noticed about the NetBeans codebase: we have
good quality code with nice features, but sometimes it's just too
platform-specific. Some developers already have huge codebases and
don't want or can't afford a migration to the platform, but they just
find a particular feature nice: like the new Diff module or the
“progress bar” we have from the Progress API. I think it would help our
cause to just make sure some of the code works as standalone. This
would allow developers to gradually adopt NetBeans Platform APIs up to
the point when they realize that a migration might be worth making. Or,
even if they don't migrate, they will still use and care about the
open-source piece of code they have from us.
Is NetBeans IDE and Platform adoption high among developers in
Java developers in Romania are fairly Eclipse-centered. A large problem
is that Eclipse usage is so big that new developers don't have an
option. They select Eclipse because it's what others use or they pick
it because that's how the project they've signed on to works.
I do try to evangelize NetBeans IDE and Platform. Sadly we don't have
JUGs here so it all boils down to the very few main programming-related
events where I put on presentations about
NetBeans. I gave a NetBeans Platform talk recently at ITFest
was a small crowd of students and some high-school seniors. I was quite
technical and got some blind stares in the room. But some heads were
shaking so even young programmers “get” the idea behind the platform (I
touched mostly modularity, Lookup, auto-update).
In order to get a higher share for NetBeans among the developers here I
think we need more presentations and trainings. People need to be
made aware of the features it has and how it can replace or complement
Eclipse. For example, the NetBeans Profiler that comes by default now
with the IDE is a top-knotch product. Years ago, good Java profilers
were mostly commercial products, and the NetBeans Profiler might be a
good entry point to show people the IDE's other features.
How would you convince an Eclipse RCP user to give the
Platform a try?
It depends on what they do with Eclipse RCP. If they already have a
huge SWT codebase and they want to use existing Eclipse plugins then
they are kind of stuck. On the other hand, with a Swing desktop
there's little that Eclipse RCP seems to offer there (except the OSGi
module system which is nice). The NetBeans Platform has a good Swing
Windowing API and other useful APIs such as Nodes, Properties and
Explorer, which really cut down development time and are quite easy to
As a Dream Team member, how do you contribute to the NetBeans
In the past year or so, I've had a rather busy period with my
consulting business, so I've dedicated less time than I would have
wanted to NetBeans. I'm waiting for things to settle down so that I can
once again have a routine that involves a big chunk of Platform work.
In the past month, I've been active in the community with some emails
on the public and internal mailing lists. I post bugs as I find them
and I'm working on getting the Editor API working (again) in standalone
mode. This was a nice feature in the pre-6.0 world which is now gone as
few people used it. Well, I'm working now to bring it back and it's
nice to see a simple desktop application have a CSS editor with syntax
highlight for free. By simple desktop application I mean application
that isn't platform related.
I also did a photo shoot for the NetBeans 6.0 launch—I had my face on
the website—so I guess modeling is always a choice if this consulting
work gets stale!
Your last name must bring up quite a few puns. What's the
“Bold-italic-underline.” “The Bold and the Beautiful.” I've heard them
all and I've gotten used to them. It also means “pin” (like the needle)
Romanian so that's a source of even more jokes from the Romanian
think the name might be of British or German origin but I have never
found out. One day I'd like to trace it and my lineage and create a
tree. But I'm saving that for my “retirement” hobby list.
Thank you, Emilian, and good luck with your projects!
Emilian Bold's Blog
More Dream Team Profiles