# PowerBuilder

PowerBuilder, vaak afgekort als PB, is een RAD programmeertaal ontwikkeld door PowerSoft, die in 1995 is overgenomen door Sybase. Het is een event-driven programmeertaal met name bedoeld om snel en efficiënt bedrijfsapplicaties te ontwikkelen in combinatie met een database. Dit kan een client-server applicatie zijn of een multitier applicatie. Vanaf versie 6 is het ook mogelijk webapplicaties te bouwen, hoewel dat pas echt goed geïmplementeerd was vanaf versie 8. Het wordt omschreven als een RAD omdat het de mogelijkheid biedt om middels drag-'n-drop grafische interfaces te bouwen, snel objecten te embedden door ze in elkaar te slepen en ook het database management volledig in een grafische schil afgehandeld kan worden.
Hierbij duidt de naam PowerBuilder eigenlijk alleen op de IDE (Integrated Development Environment), oftewel de programmeeromgeving. De taal die gebruikt wordt heet PowerScript. De PowerBuilder IDE biedt alles aan dat een programmeur tijdens het ontwikkelen nodig kan hebben, zoals de eerder genoemde grafische Window painter, een database editor, code editor en dergelijke. Ook een compiler en debugger zijn direct vanuit de IDE te gebruiken. Mede hierdoor is het ook heel snel mogelijk om werkende prototypes te maken.
PowerBuilder lijkt voor wat betreft de ontwikkelmethodiek op Visual Basic. Beide zijn event-driven en maken het bouwen van database applicaties betrekkelijk eenvoudig. Vooral voor het ontwikkelen van database applicaties voor het Sybase relationele DBMS is PowerBuilder een efficiënt ontwikkelplatform. Deze efficiency is mede te danken aan het PowerBuilder DataWindow, waarmee eenvoudig een view op de database te ontwikkelen is.

## PowerScript

PowerScript is de programmeertaal die gebruikt wordt binnen PowerBuilder. Het heeft veel overeenkomsten met Visual Basic en Java. Ook zijn alle concepten van object oriëntatie volledig geïmplementeerd, zoals polymorfisme, encapsulatie en inheritance. Vanaf versie 8 is ook exception handling toegevoegd voor een flexibelere en vooral robuustere foutafhandeling. Een paar belangrijke zaken die we wel kennen uit de Java programmeertaal missen echter nog, zoals interfaces en constructor argumenten. Ook het gebruik van abstracte klassen wordt (nog) niet ondersteund.

## DataWindow

De grote kracht van PowerBuilder zit hem in het gepatenteerde DataWindow. Dit is een object dat de volledig interactie met de database afhandelt. Ook de benodigde SQL wordt automatisch, afhankelijk van de gebruikte DBMS, gegenereerd. Met behulp hiervan kan op zeer eenvoudige wijze een flexibele en krachtige database client worden gebouwd. Vanaf PowerBuilder versie 10 is er ook een DataWindow.Net beschikbaar zodat deze krachtige technologie ook gebruikt kan worden in een .NET omgeving. Voor het gebruik van het DataWindow object is er een visueel DataWindow control en een niet zichtbaar DataStore object.

## Database connectivity

Een andere grote kracht is de abstractie van databases. Doordat het DataWindow (en ook het DataStore) de volledige interactie met de database afhandelt, kan een PowerBuilder applicatie meestal zonder enige aanpassing overgezet worden naar een andere DBMS. Dit gaat echter alleen op zolang er geen gebruik is gemaakt van embedded SQL. Dit laatste heeft namelijk meestal alleen maar zin indien er gebruik moet worden gemaakt van specialistische features van een bepaalde DBMS die niet direct door het DataWindow/-Store worden ondersteund. Denk hierbij bijvoorbeeld aan het managen van transacties, gebruik van cursors en dergelijke.

## Voordelen

De belangrijkste voordelen van PowerBuilder zijn hierboven al genoemd. Dit zijn de zeer flexibele en krachtige database connectivity (al dan niet door middel van het DataWindow en of DataStore) en de mogelijkheid om snel en efficiënt een werkende applicatie in elkaar te zetten. Daardoor is Powerbuilder ook zeer goed te gebruiken voor prototyping.

## Nadelen

Voor een moderne programmeertaal mist PowerBuilder een aantal belangrijke zaken. Hieronder staan de belangrijkste:
* geen ondersteuning voor interfaces.
* geen eenvoudige ondersteuning voor netwerkcommunicatie. Het is wel mogelijk om met gebruik van Windows API's een server applicatie te bouwen, maar PB biedt daar geen native mogelijkheden voor. Overigens bestond deze mogelijkheid wel tot en met versie 7. Vanaf versie 8 is Sybase ervan uitgegaan dat voor server applicaties gebruik moest worden gemaakt van een applicatieserver als Sybase EAServer.
* geen ondersteuning voor multithreading. Ook hier bestaan wel work-arounds voor, maar die behelzen altijd het opstarten van een extra (behoorlijk zware) Powerbuilder Virtual Machine. Om deze 'thread' dan goed te laten communiceren met de main-thread wordt er een gedegen kennis van de PB VM vereist.
* sinds versie 8.0 wordt Exception Handling ondersteund. Een belangrijk gemis van de implementatie in PowerBuilder is het kunnen uitlezen van een stack trace. Dit is wel mogelijk in de, in de IDE geïntegreerde, debugger, maar niet vanuit een exceptie. Daardoor is het lastig om fouten op te sporen die zich openbaren in productiesituaties.

## Externe link

* (en) Productpagina
* ↑ Appeon Releases PowerBuilder 2022 San Francisco, California – September 4, 2022 (4 september 2022). Geraadpleegd op 19 april 2023.