Building an IDE for Scheme with the NetBeans Platform
I have always wanted to take a deep look at the NetBeans Platform as a mechanism for building large complex Swing applications. During this summer I have allocated some time to do so and the fact is that it's just fantastic!
NetBeans is between six and eight years old. Sun adquired NetBeans on 2000, but the software was alive at least two years before that. That's a long time for a software project, so it must be a good piece of software, right?
During my trip around the NetBeans Platform I have found excellent pieces of software. Many of them can be used outside NetBeans, so you can reuse them in your projects. All NetBeans code is released under the CDDL, so you can now use it in both free or commercial products. That's just fantastic!
Well, while learning how to use the NetBeans Platform to build applications, I often found myself a little bit lost. And although things have changed a lot during the last few months (more blog entries, more tutorials, more documentation) and will probably change in the near future, information is not always easy to find.
So I decided to build some software on top of the NetBeans Platform and explain how I'm doing it (and showing the problems I find in the way, too). That would make easier for you to get started with NetBeans as well.
I was also interested in learning DocBook as a publishing platform, because all documents are created in XML (and that is a great advantage for me, for diifferent reasons) and then transformed into HTML or PDF (among other formats). I wanted to verify myself how powerful DocBook is, and I am greatly impressed. The result is this you're reading!
I also wanted to build an IDE for Scheme, one of my favourite programming languages. Scheme allows you to program in an imperative way, but you have also functional programming on your tips. You have tail recursion, continuations, closures and lots of cool stuff. And it's extremely simple too. But, although there're different IDE's out there, I wanted to build one that could talk directly with Java, my other favourite programming language.
So these notes are about how I'm doing an IDE for Scheme on top of the NetBeans Platform, and are being written using DocBook. That covers all those three objectives: learning the NetBeans Platform, building a Scheme IDE and taking DocBook to the limit.
These are interactive notes. There's a basic commenting mechanism at the bottom of each page, that shows a list of the last ten or twenty comments for each page. You can post your suggestions, complaints and ideas on each page, if you like. If I'm wrong in anything I'd love to know why. That way we can learn together.
These notes will be changing all the way through. I mean I may be able to rewrite a whole page, or change certain parts of it.
The notes will have a publication date, so you can track when the page has been published. And, of course, I will provide some RSS and Atom feeds (linked to my blog at the moment) so you can track changes and advances easily.
DocBook is cool for building indexes. I have marked certain parts of the notes with index terms, so building an Alphabetical Index is very easy. I think this is a good idea for documenting the process, because things are easier to find then. All pages have a permanent link to both the Table of Contents and to an Alphabetical Index.
One additional objective I didn't mention previously is to learn how to use The Gimp, an image manipulation program for Linux as well as a little digitizer card I was given. I'm not that good at using The Gimp (because it has a somewhat weird user interface) but I like painting. So be warned that figures will evolve as I get used to The Gimp.
So no jokes on figures, please ;-)
I would like to explain why I like NetBeans as a development platform. From the perspective of a software architect. So I thought I could do this in a first section. Then I realized that this cannot be done (because NetBeans is so big) so I decided to explain a little bit about modules as the first section, and then keep on doing the Scheme IDE, and talking about NetBeans architecture on the go.
Regarding the structure of each page, I plan to do some summary from time to time, so things are easier to understand (and to remember).
So why am I writing this stuff in english if I'm from Spain? Well, this is probably a good way to exercise my english, right? (Which, by the way, needs some exercise! ;-)) Anyway I plan to release an spanish version of these notes in the future, as things get consolidated.
Así que un poquito de paciencia, por favor. Déjame primero ver cómo funciona esto y luego intentaré hacer una versión en castellano para los hispanohablantes. Después de todo, hacer dos versiones cambiantes de todo en inglés y español ¡sería demasiado difícil!
I will also add, from time to time, links to interesting sites where you can get more information.
I am using the NetBeans IDE 5.0 for the examples. The next versions of NetBeans have much more features and are probably easier to use, but I'll stick with NetBeans IDE 5.0 at the moment. I may switch to NetBeans IDE 5.5 when it's released, but not now. You should install the NetBeans IDE (5.0) to follow the examples here. I may provide source code for certain examples, but don't count on it for everything.
If you are interested in developing with NetBeans Platform then it's probably a good idea that you join some of the NetBeans mailing lists, just in case you want to ask something or are stuck somewhere. I won't be able to help you with your projects on top of the NetBeans Platform very well (at least at the moment, I'm still learning), so you should use the mailing lists if you want help. People there are really responsive!
So there we go! Let's start building an IDE for Scheme.
blog comments powered by Disqus