Craig Marshall (pictured) is a Lead Analyst Programmer at Experian Ltd, a global leader in providing information, analytical and marketing services to organisations and consumers to help manage the risk and reward of commercial and financial decisions. It is listed on the London Stock Exchange (EXPN) and is a constituent of the FTSE 100 index. Total revenue for the year ended 31 March 2009 was $3.9 billion.
Joining the company approximately 13 years ago as a Mainframe Trainee Programmer, Craig's division is mainly involved in providing tools and support for the financial sector, involving tasks such as managing credit risk, fraud prevention, and debt collections.
Below follows an interview about Experian's use of the NetBeans Platform as a framework for Swing applications.
Hi Craig, what's the relevance of the NetBeans Platform to Experian?
Currently we have many different standalone applications, some of these are Java applications, others are Visual Studio / C applications. They have all been developed by different teams in different offices across the globe (i.e. UK, Monaco, America, Bulgaria). Our primary aim is to be able to encapsulate all our existing products into a single integrated application with a consistent look and feel.
What are some examples of specific needs that the NetBeans Platform helps you with?
We wanted to be able to split each of our existing applications into modular components to remove the overlap of functionality between applications. The modular approach of NetBeans Platform development gave us great starting blocks for this.
Here's two screenshots:
How does the application you're working on compare with its competitors, i.e., how will your solution be unique?
Our existing applications already are recognised across the industry as ground breaking, but by splitting these products into component-based plug-in modules, we will allow our sales teams and delivery centers to create tailor-made applications, using combinations of all the best features from each of our existing applications, to exactly meet each client's individual needs in a tightly integrated and consistent manner.
This means we will not only be more flexible but also faster at delivering solutions to clients. During this initial development phase, we were asked to produce an application which primarily proved many of the architectural concepts but also had enough functionality to allow people internally within the company to get hands-on use, so we could start to shape it early on, not only to meet the business requirements but also to ensure that the visualisation and user interaction is better than ever.
How did you end up with the NetBeans Platform in the first place?
The Java applications that we have already developed in the past utilize Swing for the front end, so we have vast experience of this across the company. This immediately made the NetBeans Platform the choice for us.
What did you do to get to a place where you were comfortable using the NetBeans Platform? What's the team like that works with it?
After many years of traditional Java application development I would say the transition to RCP development was not an easy one. Having confidence in decisions you are making is difficult when you have the freedom to do things in so many different ways. We also have introduced many new processes, to monitor quality and standards during this initial design phase. This added to the pressure.
During our initial three month development phase, we had teams in the UK, Monaco, Kuala Lumpur, and America working together on different components. Where possible, components that are tightly coupled have been allocated to the same office. Where that has not been possible, it has been necessary to have clearly defined APIs and a solid line of communication between the teams.
You are using the NetBeans Visual Library API. What's the context in which you're doing so and what are its main advantages to you?
We are currently looking at using this for multiple purposes throughout our application, a few examples follow.
- To define freeform project / repository structures.
- As an alternative to the traditional explorer tree view to give an end user a filtered graphical view of a system contents which they can interact with.
- To define Flow based models.
One way in which you're distributing your application is via Java Web Start. Why are you doing it like that and is it really possible to use the NetBeans Platform in this way?
Yes, we have been experimenting with web start for a while, with an existing NetBeans Platform application that we have completed. We have been using it mainly internally. Personally, I found this helpful as I can just send a URL by email to our internal users and the software self installs and starts, meaning I don't have to walk people through installation processes.
Beyond internal use, currently this is seen as an optional application distribution and update mechanism. I think there is definitely scope for using a combination of web start deployment and the NetBeans update center to completely automate the rollout and update of applications, as an alternative to the traditional remotely managed or manual installation processes. But it is yet to be seen if this will be accepted by corporations etc.
Finish this sentence: "The main value add of the NetBeans Platform in our organization is..."
...that by providing so many out of the box application features, it allows us to concentrate specifically on our areas of expertise.
What are two or three things you dislike about the NetBeans Platform?
Firstly, I would say there was quite lot of time needed up front to decide on suite and module structures. Our chosen structure meant a lot of manual scripting to get everything to neatly hook together. I believe this has been improved dramatically in 6.7.
Secondly, I think some deeper parts of the RCP are still closely coupled to text/code editing, this means duplicating a lot of 'boilerplate' code from some of the core editor API into our own business modelling editor API.
Do you have a few code tips to share with NetBeans Platform users?
I think the most useful thing for me to find in the API was from our consultation review with Anton Epple from Eppleton IT Consulting, where we were introduced to the MemoryFileSystem. I think this utility is relatively small, so it is easily overlooked but crucial if you are developing any RCP application which is not tightly coupled to the physical File System. (Read more about it here.)
What's the timeline for your project, when will it be released, what still needs to be added?
We are aiming to have an initial version of our newly integrated application suite, which will have functionality from of two of our existing applications but in a modular form, of course. Beyond this, there are future plans to bring the rest of our applications under the same 'hood'.