TweetFollow Us on Twitter

REALbasic Review

Volume Number: 20 (2004)
Issue Number: 2
Column Tag: Reviews

REALbasic Review

by Guyren G. Howe

A Better Visual Basic Than Visual Basic

I always figured that my plans for world domination hinged on being able to quickly write great, easily maintained programs on all the major platforms. I also need my less experienced minions to easily learn to do the same.

Quake in fear, for REALbasic may be just what I'm looking for.

In this review, I'm going to give you a detailed tour of REALbasic, pointing out the interesting features of the language, the IDE, the debugger, the company and the community (because the latter are also very important to the value of a programming language). My aim will be that by the end, whatever your needs, you'll have a good idea whether REALbasic will help you to fill them.

I'm going to mix up talking about the existing 5.2 release and what looks likely to make it into the 5.5 release. I'm doing this because REALbasic is developed at a snappy pace -- a new version every six months -- and because some of the impending features might well be important to you. Contrasting the two releases will also give you an idea of how quickly the product is improving.

Beginner friendly

Some of what follows will be a bit technical, so I wanted to put this right up front: REALbasic is excellent for beginners. If you're a beginning programmer just wanting to knock together some "basic" programs, REALbasic has that covered. If you're looking to learn programming, REALbasic is very accessible, and you can gradually ramp up to using more sophisticated techniques once you're ready for them.

If you are interested in using REALbasic as a vehicle for learning to program, or if you have never taken a full computer science course and you'd like to improve your programming skills, check out the Curriculum Project that I wrote for REALbasic. It's a good basic computer science curriculum in thirty lessons, available from the REALbasic website (


A really important thing right out of the box: the REALbasic documentation is actually fairly good, and certainly better than I've seen for many programming tools.

There is a built-in reference that's almost always accurate and sufficient -- once you get up to speed, this is mostly what you'll refer to. There are also a Quick Start and Tutorial, which are fine as far as they go, which isn't very far. There's a User's Guide (a quite good, more extensive and useful introduction) and a Language Reference (a printable version of the built-in help). There are also a bunch of smaller ReadMe files on such things as database and Internet capabilities. These are concise and accurate, but far too short. Quite a few of these subjects, (and other subjects that for some reason don't even earn a README, such as 3D graphics), could do with extensive guides in their own right.

A Fun Development Environment

The Integrated Development Environment in REALbasic is quite effective. Not the world's most glamorous, but it strikes a nice balance between simplicity and power. Figure 1 shows the IDE in action.

Figure 1: The REALbasic Integrated Development Environment in action

This is great at 1600x1200, but it can get a little crowded on my 12" PowerBook's screen. On the other hand, I've never seen a development environment that didn't (okay, other than Emacs...).

Most of the action will take place in the window editor and the code editing windows.

A nice code editor

The code editing window isn't the fanciest I've seen, but it gets the job done without fuss (Figure 2).

Figure 2: The Code Editor in action

You get one code editing window per class/window/module, combining a simple inspector for all the attributes of that thing on the left, with the associated code editor on the right. The code editor provides comprehensive keyword completion (picking up declarations as they are made, and properly respecting scope), automatic coloring and indentation, along with gobs of little niceties like fairly comprehensive contextual menus, window splitting, and universal drag and drop. I find the relatively spare and uncluttered interface refreshing compared to many others -- have you looked at the Visual Basic IDE recently? Ugh.

A fine window editor

REALbasic clearly tries hard to help you create a full-blown user interface. It has a great window editor that uses automatic snapping according to Apple's User Interface Guidelines (snapping to distance between controls, distance from window edges, and to the center lines of the window) to make user interface design almost effortless. Figure 3 shows REALbasic's comprehensive collection of user interface widgets.

Figure 3: REALbasic's user interface toolkit

The most interesting widgets here are (top to bottom):

  • a Placard control, specifically for building the little information panel to the left of the horizontal scroll bar in a window (actually quite a nice contribution to making an effective user interface easy to throw together);

  • a BevelButton control, used for making the kinds of new-fangled buttons all the kids are using these days, combining any or all of text, pictures and pop-up menus;

  • a fairly sophisticated spreadsheet-like ListBox control;

  • a cool 2D animation SpriteSurface control;

  • an even cooler Rb3DSpace control, able to employ a pretty healthy set of OpenGL 3D graphics features;

  • a QuickTime movie player;

  • Windows OLE container support (for Windows applications, of which more below);

  • Mac OS X toolbar and attendant buttons;

  • a couple of widgets that take a little of the pain out of doing database interfaces (more below);

  • a QuickTime music player; and

  • Contextual menus.

As well as the user interface controls, REALbasic lets you fairly easily create OS X sheets, drawers and even Apple's new, hideous metal windows, along with the full complement of (in many cases, even more hideous) OS 9 window styles.

Oh, and there's a nice menu designer and a very nice event- and class-based way of managing menus, which let you either centralize the menu activation and handling, or distribute the handling around whatever points in the program you feel is appropriate. A good example of the numerous sweet design choices that make REALbasic either very beginner-friendly and straightforward, or surprisingly deep and powerful, depending on how you use it.

All in all, REALbasic couldn't do a whole lot more to help you to create a slick user interface.

Project manager

REAL Software is testing a major new feature in 5.5: the REALbasic Project Manager. This is a simple server to synchronize the work of multiple developers. It provides accounts for multiple developers, and a simple check-out/check-in/synchronize capability for local copies of a project. It's a welcome feature, and I hope they continue to develop it with such features as history and rollbacks. It would also be nice if the check-out/check-in system offered an alternative CVS-style differencing model as an option.

Visual Basic + Java Object Model + Creative thinking = Good

REALbasic draws heavily on Visual Basic, to the extent that REAL Software supplies a free Visual Basic converter: a project converted from Visual Basic will still need some work before it's functional, but much of the code in a typical Visual Basic application will work exactly the same in REALbasic. I've heard of a few quite complex VB projects converted to REALbasic in just a few days.

The Visual Basic language (Visual Basic was bought, not invented, by Microsoft, by the way) is a generic, friendly, predictable, structured programming language. Having this language at its heart, REALbasic nicely satisfies the principle of least surprise -- things mostly just work the way it seems they ought to. Here's a bubble-sort algorithm:

A bubble sort in REALbasic

The heart of REALbasic is the Visual Basic language -- a nice, generic structured programming language

//Sort a list using a BubbleSort.
   Dim Done As Boolean
   Dim Counter, Temp, Limit As Integer

   Limit = UBound(Numbers)
      Done = True
      For Counter = 0 To Limit - 1
         if Numbers(Counter)>Numbers(Counter + 1) Then
            Temp = Numbers(Counter)
            Numbers(Counter) = Numbers(Counter + 1)
            Numbers(Counter + 1) = Temp
            Done = False
         End if
      Limit = Limit - 1
   Loop Until Done

But REALbasic's programming language is far from being a slavish copy of Visual Basic. The language extends Visual Basic into a grown-up object-oriented programming language, mostly by adopting the single-inheritance-plus-interfaces OOP paradigm of the likes of Java.

Major Language Features

  • Traditional method overriding. REALbasic also supports a novel and marvelous class extension mechanism called Events (more on that below);

  • Single inheritance, with interfaces;

  • Method and operator overloading;

  • Simple compiler conditionals (so you can compile, say, different code for different platforms. There are no macros, though);

  • Robust, typed exceptions with a full try-catch-finally-end try block (added in 5.5 -- earlier releases only had exception catching at the end of a method);

  • Comprehensive safety checking (array out of bounds, nil variable dereference, and so on), with the ability to disable any of the safety checks in particular parts of the code, for speed;

  • "Bare" methods and properties (having global scope, and not being part of a class);

  • Simple namespaces (in 5.5);

  • Public/Protected/Private scope (expanded in 5.5 from Public/Protected) for methods and properties;

  • Separate scalars and objects, as in Java (many would consider this a mis-feature) -- and no sign of auto-boxing (automatic conversion of scalars to objects and back);

  • A complete set of basic math operations, including bit operations, and even quaternions (no complex numbers, though -- the quaternions are provided for 3D math);

  • The ability to define your own "bindings" for classes, that support connecting objects together in the user interface by just dragging a line between them, much as you can in Apple's Object Builder;

  • "Getter" and "Setter" methods invoked through direct property access syntax;

  • Latently-typed (good) automatically type-converted (bad) variants, just like in Visual Basic.

Conspicuously absent from the list are any real introspection features, serious modularity support, or classes as first-class objects in their own right, with their own methods, properties and events. These are significant omissions from an otherwise robust object-oriented programming language.

Inheritance done different, and done right

There are one or two ways in which REALbasic's designers have been prepared to develop creative new contributions to REALbasic's programming paradigm. One in particular, which goes by the everyday name of Events, is a marvelous idea that I've never seen in any other programming language. I'm going to unpack this for you, because it's an important language feature you won't be familiar with, and because I think more programmers should see this idea.

Events in REALbasic provide a top-down class extension model, by which a superclass can declare an API for delegating to its subclasses. Rather than a subclass just overriding its superclass's methods willy-nilly, in REALbasic, the code in the superclass can explicitly issue calls to code declared in its subclasses. This will very often significantly simplify maintenance, because if you need to modify the superclass, you generally know what the subclasses will do as a result. Once you get used to it, explicit communication between parts of the class hierarchy just feels right.

Here is an example of an abstract superclass and a concrete subclass, using events. This code implements part of a collection of character streams.

Figure 4: An abstract base class, CharacterProvider

The example shows a method calling a New Event. New Event declarations take exactly the same form as interface declarations, which is more or less what they are. A New Event specifies a sort of internal API that code in subclasses can provide hooks for. Code in the parent class can then invoke any of its New Events in exactly the same way that it invokes a method. The parent class doesn't need to know any details of what the subclass code does in response to the event, or where, how or even if the event is handled; it just "delegates down". In the example superclass, all of the methods are nothing more than one-liners that immediately invoke the corresponding event. This is the standard way to implement an abstract base class in REALbasic.

Figure 5: A subclass, using Events

Figure 5 shows a concrete subclass of the previous class that provides its characters from a text file. The screen shot shows code in one of the event handlers. Most of the code in this class is in its event handlers, but it also adds an extra method to set the file the instance of this class will read characters from.

It is possible for a chain of subclasses to contribute to the handling of an event. It is not required that a subclass provide a handler for an event it inherits. Rather, the most immediate subclass that declares a handler for an event 'swallows' the event, blocking 'lower' subclasses from seeing it. But the subclass with the event handler can, in turn, re-declare a New Event with the same name and arguments, and delegate further opportunities for behavior down the line. It can also define and call entirely new events, thus presenting a richer or modified set of behaviors for subclasses to extend further.

Events can be either method-style or functional (returning a value). A call to an unhandled method-style event is just ignored; calling an unhandled functional event returns 0, an empty string, Nil or the like.

The built-in REALbasic classes use this paradigm for extension, and it is quite easy to implement, say, a subclass of the built-in text editing class that only lets the user enter numbers, but otherwise works the same, including invoking the same event handlers on any further subclass, in case such a subclass needs to modify this behavior further.

It's a demonstration of the clarity events bring to inheritance that one can almost always just take one event-based inheritance chain, "paste it" at the bottom of another, and it just works. It almost seems as though this ought to make possible a form of event-based multiple inheritance in REALbasic.

One of the built-in classes is the Canvas control. This is essentially an empty control, providing a graphics space into which a subclass can draw, and providing every conceivable kind of user interface event for the control to respond to. It is fun to take this blank slate and implement an interesting user interface control with its own display capabilities, events and methods for further subclasses to draw on.

The event-based inheritance paradigm is, in short, a delight.

Plug-in authoring and the C interface

It is possible to drag classes, class hierarchies and modules from REALbasic out to the file system and into another project, including doing so as a soft "link" to the file (so the project automatically re-imports the file on launch, and any changes to the class are written out to the external file -- great for classes shared between projects). These exports can be encrypted if you wish to make them available without revealing the source code. You can also choose which of their properties can be set in the IDE, if an instance of the class is dragged into a window.

However, multiple classes -- even in the same hierarchy -- have to be exported as separate files, and have to be dragged into another project in a superclasses-before-subclasses order, or things break. This is just stupid, has been there since day one, and shows no sign of being fixed soon.

I would really like an ability to bundle up a class hierarchy and export it as one object. And it's a pity I can't set a project to automatically keep its entire contents as separate files, so I could use, say, CVS to manage the project (but see the discussion of the Project Manager, below).

REALbasic also provides a decent API for writing your own plug-ins in C. Unfortunately, the documentation for this hasn't kept up to date with changes to REALbasic. The documentation discusses making old-style resource-based plug-in using CodeWarrior on a Mac. The only deference to new features that I could see was a change history, and a brief mention in the READMe that old-format plug-ins should be converted to the current format using a supplied utility.

I understand that it is possible to author Windows plug-ins using Visual Studio, but this is essentially undocumented. You can work out how to do it by looking through the mailing list archives and asking the right questions, but the documentation here really needs to be fixed.


Another relatively unusual language feature: REAL Software developed the new compiler they introduced in 5.0 by first developing "RBScript", which is essentially the REALbasic language compiler, without all the hooks into the IDE and the toolkit. This has been developed into a built-in, compiled scripting language. The language is by default completely sandboxed -- it can't access anything outside itself. The developer can attach one object to the RBScript before compiling and running it, and the methods and properties of the object are available as globals in the script. So you can un-sandbox any capability you wish, and you can provide selective access to the rest of your application quite easily. Since it is also possible for the application to "covertly" put extra code at the top of a user-supplied script, providing an arbitrary number of ready-made classes and other features, it is entirely possible to create an arbitrarily full-featured scripting environment for a compiled REALbasic application, with comparatively little effort. This is a great feature, and I'm itching to try a project where I put a lot of, say, business logic into RBScript -- I could even keep the code in a database, or make it downloadable. Used effectively, RBScript could make a widely-deployed application unusually easy to support, upgrade and customize.

Debugging and Profiling

REALbasic's debugger is decent, but nothing amazing. It offers the standard click-to-put-a-breakpoint in the left margin of the code editor, but no easy way to find or temporarily disable the breakpoints you have. No conditional breakpoints (although in 5.5, you can issue a Break command to activate the debugger, so you can do whatever you like with that).

Once you fire it up, the debugger is straightforward and effective (Figure 6).

Figure 6: The REALbasic Debugger

The debugger covers the basics: you can see the stack, your local variables, and globals. You can step over/into/out. A nice touch is that you can set the debugger to automatically activate when any exception is raised.

When you click on a variable in the locals pane on the right side of the debugger, you get a nice little inspector (Figure 7), and by clicking on object references (to open a new inspector on that object in a new window), you can drill down through a data structure as far as you'd like. A little difficult to see the whole data structure that way, but not bad. You can also modify scalar values while the program is running.

Figure 7: An Object Inspector

Remote debugging

For 5.5, REAL Software is testing remote debugging. This makes it possible to debug a program running on one computer, from another computer, even running the debugger on a different platform to the one the program itself is running on, or running the debugger remotely, via the Internet. This is a marvelous feature, and I hope it makes the cut for 5.5.

No profiling

Don't look for automated profiling, because there isn't any. It's understandable, with the focus and style of REALbasic, but I think one of the best features a language can have is a good profiler, and I hope REAL looks into this before too long.

No Project Browsing

Seriously missing in action is any means of browsing the class hierarchy. I find it hard to believe that I can't open a window and see a tree of the classes and subclasses in the program. Finding where you are can be a significant problem in a complex program.

5.5 adds a contextual menu choice that takes you from a method call to its definition, so at least there is a little progress on this front.

The Toolkit

While REALbasic's "batteries included" don't approach those you'll find in, say, Python, you will find a very respectable and rapidly expanding collection of ready-to-go features "in the box". I'll discuss a few of the most important features below, but here is a quick list of some other major features:

  • A fairly extensive set of Apple Event sending and receiving capabilities;

  • Extensive vector drawing primitives (including Bezier curves, rotated objects and text, grouping, and employing bitmapped images as part of a vector drawing);

  • Fairly extensive bitmap manipulation primitives (through either Quartz -- pretty! or QuickDraw -- fast!);

  • QuickTime editing of movies in code (surprisingly complete, including access to QuickTime effects);

  • Complete file system access, including random-access read-write files, sequential access to files, getting and setting file and folder properties, and access to Resource Forks;

  • Full access to the keychain and the clipboard (apart, oddly, from being able to find what arbitrary types of information are on the clipboard);

  • A fast, raw MemoryBlock object type;

  • A 3D sound class, with quite rich capabilities drawn from QuickTime;

  • Access to the Registry (on Windows);

  • Sending and receiving Apple Events;

  • Straightforward multi-threading (sadly, only on one processor), with semaphores and critical sections;

  • Ability to control a shell, on both OS X and Windows (strangely, though, no support for StdIn, StdOut, or StdErr);

  • Comprehensive POP/SMTP Email sending and receiving, including with SSL (in the Professional release);

  • HTTP (with SSL, in the Professional version) protocol support for sending and receiving;

  • Regular Expressions (but not as part of the language -- this is a set of classes you have to instantiate, set properties on, and invoke -- so not remotely as convenient as in, say, PERL);

  • Fairly thorough support (I understand -- my language skills are limited to the Roman alphabet) for text encoding and Unicode.

Database capabilities

REALbasic's database capabilities are quite decent on the whole, although some gaps in the "batteries included" are disappointing. Also see Printing, below, for a more serious obstacle to database applications.

REALbasic includes plug-ins giving support for a nice range of common databases:

  • ODBC;

  • PostgreSQL;

  • MySQL;

  • 4th Dimension Server;

  • OpenBase;

  • FrontBase;

  • Sybase

  • Comma-separated files;

  • .dbf (dBase) files;

  • dtf;

  • Oracle.

REALbasic also includes a plug-in for a competent basic single-user proprietary database format.

For databases not supporting SQL directly (most notably, the built-in database and 4th Dimension), REALbasic provides an interpreter for a useful-but-small subset of the SQL language.

There is also a very good-looking third-party database plug-in available called Valentina that seems to be getting a lot of attention in the REALbasic community.

All of the database connections share their more important methods and properties and have a common base class, so to the extent that your SQL code is portable between databases, your REALbasic application can be switched from one type of database to another quite trivially.

Access to the data is through a standard cursor-type object. Some standard special-purpose interface controls and some special features of some of the general-purpose controls (such as the EditField and the ListBox) make it quite easy to put together a basic interface to scroll through a list of records, double click a row and go to a detailed view of a record, update fields, click through records one at a time... The automated features don't get in the way of doing some of the work yourself should you need something out of the ordinary. Also, insofar as you can do your data manipulation through the one-record-at-a-time cursor, you can make your code even more independent of the particular underlying database.

I wouldn't say that a REALbasic database user interface is remotely as quick to set up as, say, a FileMaker interface. But it's a couple of orders of magnitude more flexible without being anything like that much more work.

On the other hand, if you want to develop a GUI database application of any complexity, you'll probably need some user-friendly query, import/export or customizable reporting applications, and REALbasic doesn't come with anything like that. REALbasic provides everything you need to write those from scratch, but doing a good job of these kinds of applications would be a serious effort.

Plug-ins may help here. I've heard nice things about dbReports (, for user-customizable reports. There may well be similar alternatives for the import/export and querying, but after spending some time googling for them, I came up short. More on plug-in availability below.

Sadly, REALbasic doesn't take the opportunity to provide an object database, or anything else to help bridge the object-relational divide.


Far and away, the biggest problem you'd have doing a significant database application (or, indeed, many kinds of programs) in REALbasic is printing.

REALbasic provides only very low-level, QuickDraw-like printing capabilities. To print from a REALbasic application, you get a special graphics object into which your code draws, then you print it when you're done.

The graphics drawing features of the REALbasic language provide good basic capabilities for this -- you can ask REALbasic to draw a string or styled text into a box of a certain width, and it then tells you what height it was, for example. But doing any kind of complex report in code like this is intractable for the upwards of hundreds of reports you might have in a typical bespoke database application.

It's a great shame, too, because REALbasic would otherwise be excellent for such development. This is far and away the most serious hole in REALbasic's feature set.

I understand that REAL Software is working on a new printing capability, but it's not looking like anything is going to appear in 5.5, at time of writing.

Microsoft Office Plug-ins

Relatively unknown fact: Microsoft's Mac development team used REALbasic to prototype the user interface for the last version of Internet Explorer for the Mac, and they continue to use REALbasic, even publishing at least one part of the last version of Office written in REALbasic (below).

It also appears as though Microsoft are working with REAL Software on a Microsoft Office automation plug-in for REALbasic. The feature isn't absolutely complete yet (particularly lacking the ability to trap events in Office applications), but it can probably do anything you're really likely to need -- the examples for the Plug-ins create and modify a Word document, create a PowerPoint presentation, import a picture into PowerPoint, and create an Excel spreadsheet. The features already available can do most of what you are likely to need (automated creation of pretty reports, slideshows and spreadsheets from REALbasic).

The code is also fairly straightforward.

REALbasic code to create a Word document
It is fairly straightforward to use the Office Automation plug-in.
Sub Action()
dim word as wordapplication
   dim doc as worddocument
   dim style as wordstyle
   dim v as variant
   word = new wordapplication
   doc = word.documents.add
   doc.range.text = editfield1.text
   v = doc.paragraphs.item(1).style
   if v.objectvalue isa wordstyle then
      style = wordstyle(v.objectvalue)
      styletext.text = style.namelocal
      stylefontname.text =
      stylefontsize.text = str(style.font.size)
   end if

exception err as wordexception
   msgbox err.message
End Sub

One very nice feature is that the same code should work on both Macintosh and Windows (modulo some features that, at time of writing, had not been implemented on the Mac yet).

Sadly, as with a few of the most interesting features of REALbasic, the documentation is woefully incomplete. A terse README or two and a few very simple examples constitute all the documentation I'm aware of. I think the REAL Software folks are expecting the developer to look to other Visual Basic for Applications documentation to fill in the blanks here (the plug-ins exploit REALbasic's similarity to Visual Basic to re-implement virtually the same API). But it would be nice if, at least, they pointed the user to a good source for this information.

Note that you can also exercise extensive control over a huge range of Macintosh and Windows applications using Apple Events, AppleScript (below) or OLE.


A great feature is that you can compile an AppleScript method, drag the AppleScript file into REALbasic, and just call it from your REALbasic code, no other work required. This is a heck of an integration feature, a very quick and easy way of talking to all sorts of applications, and a very nice way of putting a user interface on an AppleScript.

Native toolbox calls

On both Macintosh and Windows, it is possible to access toolbox calls. Enough low-level bit-wrangling features are available (including being able to do things like get handles for REALbasic windows) that you can access most toolbox features if you know what you're doing. And if you don't, this feature is the basis of a lot of cheap-or-free classes providing access to most OS features that aren't already covered by REALbasic.

On Windows, you can also call into DLLs, and in 5.5, REAL is testing callbacks into REALbasic methods for both Macintosh and Windows.

Cross-Platform Development

REALbasic is becoming one of the best ways around to write cross-platform code. There is a functionally equivalent IDE for Windows, and you can compile to Windows on the Mac or vice-versa (with the Professional version). The integration with Windows isn't as complete as is the integration on the Mac, but it's pretty decent. In particular, the most important piece, being able to use OLE plug-ins, is there.

For 5.5, REAL Software is beta-testing a Linux compile. In developing their Windows version, REAL implemented compiling for Windows on the Mac in early releases, following in later versions with the Windows IDE. This is almost certainly what they're doing for the Linux transition, which targets GTK. Once they get the kinks out of the Linux compile, REALbasic will have a good claim to being the best cross-platform GUI development story around.

The Company

REAL Software is a pretty pleasant company to deal with. They have a couple of very active developer email lists (one for the regular release, one for the betas), as well as a few other lists for the likes of beginners and game developers. Virtually all of the REAL Software staff post on the email lists from time to time, and many of them post just about daily, including the president of the company, and all the developers.

REAL Software is very open with its development process, putting regular development releases out for general consumption, testing and debate. And they're very good-humored about the inevitable problem with such a development strategy: people complaining, sometimes bitterly, about bugs in alpha and beta software.

They also have an excellent bug tracking and feature requesting system, in the form of a web-accessible database. You can add to it only after first searching for an existing report, and you can add comments to an existing report or "vote" on it, adding your weight to the need to address the report. And REAL does seem to try fairly hard to address these things in order of popularity.

There is a developer's program offering several tiers of membership, providing such things as expedited support.

The Community

REALbasic boasts a helpful and robust community, focused on the mailing lists. There are also a great many web sites concerned with REALbasic, several books, and quite a few developers sharing all manner of code, tutorials, plug-ins and other tools.

On the other hand, there is no CPAN-type code library for REALbasic. Partly, this is the language design that doesn't (yet) provide the sorts of features you'd need to really easily share code (I'm thinking particularly of a real modules and namespaces feature -- some of the new features in 5.5 are a good step in this direction). But none of that is a show-stopper -- it could still be easier to find plug-ins, for example.

There is one site,, that is clearly aspiring to be a CPAN for REALbasic. It's a nice site, clearly someone is putting in some effort here. It remains to be seen whether they will get the momentum going to become the kind of canonical point-of-origin that CPAN is, but I wish them well.

The Proof in the Pudding

I always like to find out what real projects have been written with a programming language. Without further ado:

  • Art Directors Toolkit, a designer's toolkit, which Apple bundles with all PowerMac G4 Towers and Powerbook G4 Laptops.

  • Microsoft Query for Mac OS X, which uses Open Database Connectivity (ODBC) to allow you to import data from databases into Microsoft Excel X.

  • Auto-Illustrator, an "experimental, semi-autonomous, generative software artwork and a fully functional vector graphic design application to sit alongside your existing professional graphic design utilities".

  • Whistle Blower, a server monitor and functional testing utility.

  • Intellimerge, e-mail merge software for Mac OS X and Mac OS 9.

  • Coldstone Gaming Engine, an easy to use game development tool that allows you to create professional stand-alone games that run on Mac OS, Mac OS X, and Microsoft Windows.

  • A-OK: Wings of Mercury, a realistic simulation of the Mercury spacecraft.

  • SpamFire, An anti-spam email filter.

  • MediaEdit, a movie and graphic editing tool.

What you get

REALbasic comes in two versions (Standard and Professional) for two platforms (Macintosh -- Native and Classic, and Windows).

The extras in the Professional version are:

  • Cross-platform compiles;

  • The database features;

  • SSL for the Internet features; and

  • a better "server" version of networking sockets.

In the US, at time of writing, a Standard version can be had for $99.95, and Professional for $399.95. That's for the download-only version. A little more gets you over 1000 pages of dead tree documentation and a CD. There is also a somewhat more expensive version that gets you a year of upgrades.

Upgrades from the previous version are $79.95 (Standard) and $169.95 (Professional). If you're serious about REALbasic, the subscription is a non-trivial saving on the upgrade.

There are also some Academic pricing options, volume purchase options, and the like.


You could call high-level languages an obsession of mine. I've tried many, many languages. Compared to REALbasic, I've tried Deeper languages (Scheme, Dylan), more broadly accepted languages (C++, Python, PERL, ...), languages that are easier to use (Python), and languages with better IDEs (Java with Eclipse or Objective C with Project Builder).

But I've not used any language or IDE that makes good GUIs easier to construct than does REALbasic. That would be a great argument for REALbasic on its own, but the clincher for me is that REALbasic scores a consistent "really, pretty decent" on depth, acceptance, ease of use, and the IDE -- something I wouldn't say for any other language I know.

REALbasic is an effective tool for either beginners or experts and it's fun to work with. As long as its one really major limitation (printing) isn't a problem for you, it's a good candidate for a very broad range of development projects.

Guyren G. Howe works in artificial intelligence research, after years of work as a technical writer and developer. He is married with one child, is an Australian, and lives in Austin, Texas. Guyren has been working with REALbasic for several years. Most notably, he wrote the REALbasic Curriculum Project, an extensive computer science curriculum, for REAL Software.


Community Search:
MacTech Search:

Software Updates via MacUpdate

Iridient Developer 3.4.1 - Powerful imag...
Iridient Developer (was RAW Developer) is a powerful image-conversion application designed specifically for OS X. Iridient Developer gives advanced photographers total control over every aspect of... Read more
Vallum 3.3.4 - $15.00
Vallum is a little tool that helps you monitor and block apps connections and throttle apps bandwidth. It is able to intercept connections at the application layer, and hold them while you decide... Read more
DiskCatalogMaker 8.2.6 - Catalog your di...
DiskCatalogMaker is a simple disk management tool which catalogs disks. Simple, light-weight, and fast Finder-like intuitive look and feel Super-fast search algorithm Can compress catalog data for... Read more
SoftRAID 5.8.4 - High-quality RAID manag...
SoftRAID allows you to create and manage disk arrays to increase performance and reliability. SoftRAID allows the user to create and manage RAID 4 and 5 volumes, RAID 1+0, and RAID 1 (Mirror) and... Read more
Audio Hijack 3.7.3 - Record and enhance...
Audio Hijack (was Audio Hijack Pro) drastically changes the way you use audio on your computer, giving you the freedom to listen to audio when you want and how you want. Record and enhance any audio... Read more
CleanMyMac X 4.6.15 - Delete files that...
CleanMyMac makes space for the things you love. Sporting a range of ingenious new features, CleanMyMac lets you safely and intelligently scan and clean your entire system, delete large, unused files... Read more
Suitcase Fusion 21.2.1 - Font management...
Suitcase Fusion is the creative professional's font manager. Every professional font manager should deliver the basics: spectacular previews, powerful search tools, and efficient font organization.... Read more
Civilization VI 1.3.6 - Next iteration o...
Civilization® VI is the award-winning experience. Expand your empire across the map, advance your culture, and compete against history’s greatest leaders to build a civilization that will stand the... Read more
Dashlane 6.2042.0 - Password manager and...
Dashlane is an award-winning service that revolutionizes the online experience by replacing the drudgery of everyday transactional processes with convenient, automated simplicity - in other words,... Read more
Airfoil 5.9.2 - Send audio from any app...
Airfoil allows you to send any audio to AirPort Express units, Apple TVs, and even other Macs and PCs, all in sync! It's your audio - everywhere. With Airfoil you can take audio from any... Read more

Latest Forum Discussions

See All

Physics-based tower defense game Goblin...
Indie developer Arif Games has released Goblin Raiders on iOS and Android. [Read more] | Read more »
PUBG Mobile has provided yet another upd...
PUBG Mobile has been making a point of publicly mentioning all of their ongoing efforts to vanquish cheating from the popular battle royale. Today two teams within the company have provided updates on their progress. [Read more] | Read more »
Zombieland: AFK Survival is celebrating...
Zombieland: AFK Survival is currently celebrating its one-year anniversary. If you don't quite recognise the name that's because it initially launched as Zombieland: Double Tapper. Anyway, the game is celebrating turning one with two Halloween-... | Read more »
Distract Yourself With These Great Mobil...
There’s a lot going on right now, and I don’t really feel like trying to write some kind of pithy intro for it. All I’ll say is lots of people have been coming together and helping each other in small ways, and I’m choosing to focus on that as I... | Read more »
Genshin Impact Guide - Gacha Strategy: W...
If you're playing Genshin Impact without spending money, you'll always need to be looking for ways to optimize your play to maximize rewards without getting stuck in a position where you're tempted to spend. The most obvious trap here is the game'... | Read more »
Genshin Impact Adventurer's Guide
Hello and well met, fellow adventurers of Teyvat! Check out our all-in-one resource for all things Genshin Impact. We'll be sure to add more as we keep playing the game, so be sure to come back here to check for updates! [Read more] | Read more »
Genshin Impact Currency Guide - What...
Genshin Impact is great fun, but make no mistake: this is a gacha game. It is designed specifically to suck away time and money from you, and one of the ways the game does this is by offering a drip-feed of currencies you will feel compelled to... | Read more »
XCOM 2 Collection on iOS now available f...
The XCOM 2 Collection, which was recently announced to be coming to iOS in November, is now available to pre-order on the App Store. [Read more] | Read more »
Presidents Run has returned for the 2020...
IKIN's popular endless runner Presidents Run has returned to iOS and Android just in time for the 2020 election season. It will see players choosing their favourite candidate and guiding them on a literal run for presidency to gather as many votes... | Read more »
New update for Cookies Must Die adds new...
A new update for Rebel Twins’ platformer shooter Cookies Must Die is coming out this week. The update adds quite a bit to the game, including new levels and characters to play around with. [Read more] | Read more »

Price Scanner via

Apple’s 16″ MacBook Pros are back in stock st...
Apple has Certified Refurbished 2019 16″ MacBook Pros back in stock for up to $420 off the cost of new models, starting at $2039. Each model features a new outer case, shipping is free, and an Apple... Read more
Use our exclusive iPhone Price Trackers to fi...
Looking for a new Apple iPhone 12 or 12 Pro? Perhaps a deal on last year’s iPhone 11? Check out our iPhone Price Tracker here at We track new and clearance iPhone prices from Apple as... Read more
Weekend deal: $100 off 13″ MacBook Airs at Am...
Amazon has new 2020 13″ MacBook Airs on sale for $100 off Apple’s MSRP, starting at only $899. Their prices are the lowest available for new MacBooks from any Apple resellers. These are the same 13″... Read more
New 10.9″ 64GB Apple iPad Air on sale for $55...
Amazon has Apple’s new 2020 10.9″ 64GB WiFi iPad Air on sale today for $549.99 shipped. That’s $40 off MSRP. Pre-orders are available today at this discounted price, and Amazon states that the iPad... Read more
Get a clearance 2019 27″ 5K iMac for up to $5...
Apple has Certified Refurbished 2019 27″ 5K iMacs available starting at $1439 and up to $520 off their original MSRP. Apple’s one-year warranty is standard and shipping is free. The following... Read more
AT&T offers the Apple iPhone 11 for $10/m...
AT&T is offering Apple’s 64GB iPhone 11 for $10 per month, for customers opening a new line of service, no trade-in required. Discount is applied via monthly bill credits over a 30 month period.... Read more
Apple’s 2020 11″ iPad Pros on sale today for...
Apple reseller Expercom has new 2020 11″ Apple iPad Pros on sale for $50-$75 off MSRP, with prices starting at $749. These are the same iPad Pros sold by Apple in their retail and online stores: – 11... Read more
Did Apple Drop The Ball By Not Branding Its C...
EDITORIAL: 10.21.20 – In the branding game, your marketing strategy can either be a hit or a miss and the latter is the case for Apple when it missed out on an opportunity to brand its “SE” series of... Read more
27″ 6-core and 8-core iMacs on sale for up to...
Adorama has Apple’s 2020 27″ 6-core and 8-core iMacs on sale today for $50-$100 off MSRP, with prices starting at $1749. Shipping is free: – 27″ 3.1GHz 6-core iMac: $1749, save $50 – 27″ 3.3GHz 6-... Read more
Apple’s 16″ MacBook Pros are on sale for $300...
B&H Photo has 16″ MacBook Pros on sale today for $300-$350 off Apple’s MSRP, starting at $2099. Expedited shipping is free to many addresses in the US. Their prices are among the lowest available... Read more

Jobs Board

*Apple* Mac, Windows & Mobile Device Sup...
Apple Mac, Windows & Mobile Device Support Engineer at created 30-Sep-2020"/> Skip to content **Xerox** at Menu ** Apple Read more
Freelance Features Writer ( *Apple* Products...
…interested in iOS, watchOS, iPadOS, macOS? Do you like to explain and teach Apple products to other people with less understanding? If these things sound like you, Read more
Geek Squad *Apple* Consultation Professiona...
**788452BR** **Job Title:** Geek Squad Apple Consultation Professional **Job Category:** Store Associates **Store Number or Department:** 000401-Southland Read more
*Apple* Computing Specialist - Best Buy (Uni...
**789021BR** **Job Title:** Apple Computing Specialist **Job Category:** Store Associates **Store Number or Department:** 000109-West Los Angeles-Store **Job Read more
Chief Medical Officer, St. Mary Medical Cente...
…**Providence is calling a Chief Medical Officer to St. Mary Medical Center in Apple Valley, CA** **.** **THE ROLE** Under the direction of the Chief Executive, the Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.