A graphical user interface development tool from Powersoft (now owned by Sybase) for developing client-server database applications. It runs under Microsoft Windows 16-bit and 32-bit. There are also versions for Macintosh and Unix. Note: Sybase has put out an EndOfLife notice for the Macintosh version of PowerBuilder.
Applications can be built by creating windows, controls (such as listboxes and buttons), and menus within the PowerBuilder
development environment. The language used to program PowerBuilder
, is loosely based on C and BASIC. Its greatest strength and weakness is the DataWindow?
control, which lures developers into too-tightly coupling the view, model, and controller, and to not even consider using the UI only as a proxy for (rather than the heart of) the business logic. The language does not support static methods or variables, or parameterized constructors. It does support overloading, inheritance, encapsulation, polymorphism.
PowerBuilder does support static variables. They are called shared variables. -- JohnUrberg
You're right - I meant it doesn't support class variables, like Java does. You must have an instance of a class before you can reference a static attribute. -- DangGriffith
supports programming on many database backends including Sybase and Oracle. It also has added support for ODBC database drivers. PowerBuilder
also comes with a built-in database backend (WATCOM SQL 32-bit relational database).
now has a version of the xUnit testing framework called PowerBuilderUnit
Sorry to go OffTopic, but I'd love a summary of PowerBuilderSeven?, particularly how it has evolved since PB 4. See improvements? Thanks for the summary below!
I'll give it a shot, 'though it'll be mostly from memory. So take this with a few grains of salt.
When I started working here, they had just upgraded from PB 4.x to 5.0, which we stayed with until 5.0.04. This version introduced the PowerBuilderFoundationClasses?
(PFC's), which are object libraries, similar to Microsoft's MFC's, but geared towards inventory tracking & general ledger applications, IMntbHO.
Next came version 6.0 - which we skipped. Its biggest changes were an enhanced multi-pane debugger, syntax highlighting, and a whole host of bugs (especially in the enhanced 6.0 PFC).
Version 6.5 was a complete rebuild, which boasted "a thousand bugfixes" and seemed to have provided an unquantifiable
measure of stability.
Then finally(!), in version 7.0, they added multi-panes to the PB painters, which more than anything else, have made XP possible. All versions prior to 7.0 prohibited users from opening more than a single script per object. So until now, it hasn't been possible to simultaneously view (not to mention edit) say, two events within the same object; or a function and an event from a single object; etc. Apparently, it never occurred to them that this might be desirable. ;-)
7.0's development environment still has a lot of stability issues, especially when mucking about with the object hierarchy. In other words, it crashes out from under
us frequently, when attempting such heinous operations as: inserting a new object into the middle of an existing class or even, adding & removing "ancestral" functions.
We tried version 7.0 and it was so unstable we had to go back to 6.5. What really did it for me was when PB 7.0 would not allow me to change SQL in an existing datawindow. It would GPF whenever I tried to exit the SQL painter. -- JohnUrberg
As for stability in PB7.x (esp. when designing), there are some things one can keep in mind.
- save your work frequently - when you're done scripting an event of function, when you place controls on your window, when you've declared the prototype of new methods before you start scripting, ...
- don't modify datawindows by right-clicking them on a window - when you save your modification and return to your window, any modification to this window will most likely lead to a crash
- always explicitly save changes (frequently) by clicking the "Save" button on the painter's menu (e.g., before closing a design, before doing a run or a debug)
- When debugging, always explicitly stop a debugging session by clicking the "Stop" button on the debugger's toolbar before exiting the debugger
To ensure better stability at run-time:
- rebuild often (and I mean often, do FULL rebuilds) and optimize your libraries from time to time (Optimize is an option in the popup-menu you get by right-clicking on a library)
- make sure you put something in the DBParm parameter of SQLCA (any string value will do) in order to prevent memory leakage and subsequent crashes
I have come up with a way to create class functions in Powerbuilder. For each object you create, create an associated class object that is autoinstantiate. Create a common ancestor that has a create function. For example:
is_className = mid(className(), 1, len(className()) - 5)
public function PowerObject create():
lnv = create using is_className
MyObjectClass? from BaseClass:
public function PowerObject create(String as_parameter):
lnv = super::create()
Then you can do this in your code:
lnv_myObject = MyObjectClass?.create("Hi There")
Took another shot at 7.0 C3. Built a small prototype using the PFC. It crashed constantly. When I tried to regen, it corrupted a number of PFC objects. I was unable to do a build of the application, it would GPF in the middle. It's not looking good for PB.
We've recently converted to PB 7.0.3. We found that a number of different problems were caused by duplicate copies of DLL files lurking in the path. If you are having the kinds of problems described above, you might want to try determining whether or not you have an extra copy of, say, PBUDO70.DLL on your computer, and deleting the older version(s). This has successfully cured a number of problems for us.
-- Dave Axelson
I have been working with PB 8.0 recently, and it seems to be quite (gasp!) stable! I migrated one app from 6.5 with nary a compiler warning. Having been through the 5.0 to 7.0 nightmare, this has been quite a relief. Maybe 7.0 was made deliberately buggy so that 8.0 would seem much better! :)
We are not happy with PowerBuilder
8.0.3 (build 9704). It's much slower and not less buggy than the PB651 we used before. We use PB for a large ERP application (> 5000 objects) and database (> 2500 objects). Weak points of PB803 are:
- Very slow and team-development-unfriendly SCC interface (productivity down by 3%)
- Unstable debugger (crashes/hangs PC) and scripts open very slow when breaks are defined (productivity down by 1%)
- Very BAD native Oracle interface: bind variable errors (in group by and result-set), slow and invalid Oracle catalog processing (doesn't even recognize the Primary Keys correctly!!!!!)
- Overall slooowwwwww IDE (integrated development environment). For example, autoscripting, opening and saving of objects takes often > 10 seconds (even for small objects!)
- Slow and buggy runtime: performance decrease (after PB802), dwchilds cause memory violations, other unexplained crashes.
Grrrrrrrr.... but there are also some nice enhancements made to the IDE... once you have a 19inch+ screen and after you are used to it.