B4X
B4X ist eine Gruppe von Entwicklungsumgebungen für Rapid Application Development (RAD). B4X wird vom Unternehmen Anywhere Software entwickelt und vertrieben. Mit diesen Entwicklungsumgebungen können native Anwendungen für Android, iOS, Java und Arduino erstellt werden.[2] Die Programmiersprache kann in die Familie der BASIC-Dialekte eingeordnet werden und orientiert sich stark an Visual Basic.[3] Während die klassische Variante von Visual Basic nur auf Microsoft Produkte ausgerichtet war, decken die B4X-Entwicklungsumgebungen mehrere unterschiedliche Betriebssysteme und Endgeräte ab. Je nach Zielplattform werden unterschiedliche Entwicklerwerkzeuge und Klassenbibliotheken zur Verfügung gestellt. Beispielsweise wird ein grafischer WYSIWYG-Formulareditor nur für die Plattformen Android, iOS und Java angeboten.[4] EntwicklungsumgebungenDerzeit umfasst die B4X-Familie vier Entwicklungsumgebungen für Java (B4J), Android (B4A), iOS (B4i) und Arduino (B4R). Früher gab es noch eine IDE für Microsoft Pocket PC (Basic4ppc). Die Entwicklungsumgebungen für Android, Java und Arduino stehen im vollen Funktionsumfang kostenlos zur Verfügung. Es ist jedoch möglich, die Entwicklung durch freiwillige Spenden zu unterstützen. Kostenpflichtig ist lediglich die Entwicklungsumgebung für iOS. Sofern man nicht über einen eigenen Mac-Computer verfügt, fällt zusätzlich eine jährliche Gebühr für einen Cloud-basierten Dienst zur Kompilierung der Apps an.[5] Für die Entwicklungsumgebungen aus der B4X-Familie werden keine Compiler mitgeliefert. Für B4J, B4A und B4i muss auf den Java-Compiler aus einem installierten Java Development Kit (JDK) verwiesen werden.[6] In B4R muss auf das Hauptprogramm der Arduino IDE verwiesen werden. B4AMit B4A kann man Java-Apps für Android erstellen. Die bereitgestellten Bibliotheken umfassen unter anderem Komponenten für grafische Benutzeroberflächen, Klassen zum Zugriff auf Hardwarekomponenten (z. B. Digitalkameras oder GPS), Netzwerkkommunikation, Google-Play-Dienste und JSON.[3][4] B4JMit B4J kann man Apps erstellen, die innerhalb einer Java VM ausgeführt werden können. Da für fast alle Betriebssysteme eine Java-Distribution existiert[7], lassen sich die Apps plattformunabhängig verbreiten. Es werden unter anderem diverse Bibliotheken zur Programmierung von grafischen Benutzeroberflächen, Netzwerkkommunikationen, JSON und Verarbeitung von Office Dateien angeboten.[4] Mit Hilfe der optionalen Java-Bibliothek Pi4J lassen sich auch Apps für den Raspberry Pi entwickeln, welche direkt auf die Hardwarekomponenten zugreifen können.[8] Für die Entwicklung von grafischen Benutzeroberflächen wird intern auf JavaFX und das XUI (B4X User Interface) Framework zurückgegriffen. Seit der Version 9.50 wird B4J nur noch als 64-Bit-Version angeboten. B4iMit B4i lassen sich Apps für iPhones und iPads programmieren. Es ist die einzige Entwicklungsumgebung aus der B4X-Gruppe, welche kostenpflichtig ist. Außerdem wird ein kostenpflichtiger Dienst angeboten, um Apps für iOS online zu kompilieren, ohne selbst einen Mac zu besitzen. B4RMit B4R kann man Software für Arduino-Boards erstellen.[9] Es werden in erster Linie Klassen zur Steuerung von ESP-Chips angeboten. Anders als bei den anderen Entwicklungsumgebungen der B4X-Gruppe, werden keine Werkzeuge und Bibliotheken angeboten, mit denen man eine grafische Benutzeroberfläche erstellen kann.[10] Basic4ppcMit dieser Entwicklungsumgebung lassen sich sowohl klassische Anwendungen für Desktop-Computer mit dem Betriebssystem Microsoft Windows als auch Apps für Pocket PCs, auf denen das Betriebssystem Windows Mobile installiert ist, erstellen. Es werden Komponenten und Klassen bereitgestellt, die intern auf Funktionen des .Net-Frameworks bzw. des .NET Compact Frameworks zurückgreifen.[11] Diese Entwicklungsumgebung steht nicht länger zur Verfügung. Eigenschaften der ProgrammierspracheBei B4X handelt es sich um eine imperative Programmiersprache, welche nur partiell objektorientiert ist. KlassenÄhnlich wie in Visual Basic gibt es in B4A, B4i und B4J Code- und Klassen-Module. Code-Module enthalten Methoden, die innerhalb des Programms global aufgerufen werden können.[12] B4R unterstützt nur Code-Module. In B4A existieren zusätzlich noch Service-Module. Klassen-Module dienen zur objektorientierten Programmierung und repräsentieren genau eine Klasse. Im Gegensatz zu anderen Programmiersprachen unterstützen Klassen in B4X keine Vererbung und Methoden können weder überschrieben noch überladen werden.[12] In den mitgelieferten Klassen werden deshalb Methoden mit gleichem Verhalten, aber unterschiedlicher Signatur oft durchnummeriert. Variablen, Konstanten und Methoden besitzen sowohl in Code- als auch in Klassen-Modulen eine Sichtbarkeit (Private oder Public).[13] VariablenWährend man in vielen BASIC-Dialekten die Deklaration von Variablen mit Hilfe von
Sub btnAdd_Click
If IsNumber(txtNum1.Text) And IsNumber(txtNum2.Text) Then
txtResult.Text = txtNum1.Text + txtNum2.Text
Else
xui.MsgboxAsync("Bitte geben Sie zwei Zahlen ein!","Hinweis")
End If
End Sub
Das Beispiel zeigt einen Ausschnitt aus einem simplen Taschenrechner. Wenn der Benutzer die Schaltfläche „Plus“ ( Subroutinen (Sub)In den meisten BASIC-Sprachen gibt es zwei Arten von Methoden: Funktionen (Function) sind Methoden, die einen Wert zurückgeben und Subroutinen (Sub), welche keinen Wert zurückgeben. In B4X gibt es diese Unterscheidung nicht mehr. Hier gibt es nur noch Subroutinen, welche einen Wert zurückgeben können, aber nicht müssen. Im Gegensatz zu B4R, können Subroutinen in B4A, B4i und B4J pausiert werden, ohne den gerade ausgeführten Thread zu blockieren.[15] Wie in vielen anderen Programmiersprachen, können Subroutinen und deren Parameter über einen Kommentar unmittelbar oberhalb der Deklaration dokumentiert werden.[16] Das Prinzip ist vergleichbar mit Javadoc oder den XML-Kommentaren aus dem .NET Framework. Präprozessor-DirektivenIn B4A, B4i und B4J ist es über die Präprozessor-Direktive LayoutsApps für die Plattformen Android, iOS und Java können eine grafische Benutzeroberfläche (GUI) besitzen. Um diese zu entwerfen, wird von B4A, B4i und B4J ein WYSIWYG Formulareditor angeboten.[4] BibliothekenCode- und Klassen-Module können projektübergreifend in eine Bibliothek exportiert werden. Dabei handelt es sich um ein ZIP-Archiv mit der Dateiendung b4xlib. Darin können mehrere Module, Layout-Dateien und eine Manifest-Datei enthalten sein. In der Manifest-Datei können Versionsinformationen und Abhängigkeiten angegeben werden.[19] EinsatzgebieteLaut dem Geschäftsführer Erel Uziel, werden die Entwicklungsumgebungen der B4X-Familie weltweit von Firmen, Organisationen, Bildungseinrichtungen und Privatpersonen eingesetzt.[3] Für Bildungseinrichtungen und unerfahrene Programmierer werden Lehrmaterialien und eine umfangreiche Turtle-Bibliothek angeboten, mit der Algorithmen grafisch dargestellt werden können.[20] Zu den Geschäftskunden gehört unter anderem auch die NASA, welche B4A in einem Projekt zur Fernsteuerung und Überwachung von faseroptischen Sensoren eingesetzt hat. Eine der Anforderungen war auch hier eine minimale Lernkurve.[21] Als Partner werden neben der NASA auch die Unternehmen IBM, Hewlett Packard, Honda, Bosch und Adobe genannt.[2] PopularitätB4X ist eine wenig verbreitete Programmiersprache. Bis einschließlich Februar 2022 zählte sie im TIOBE-Index dennoch zu den Top 100 der populärsten Programmiersprachen.[22] Im PYPL (PopularitY of Programming Language) – Index der 30 populärsten Programmiersprachen wird B4X nicht aufgelistet.[23] Beide Indizes dienen zur Messung der Popularität von Programmiersprachen. Allgemein betrachtet ist die Relevanz der BASIC-Dialekte (Visual Basic .NET, Visual Basic, VBScript und VBA) in den letzten Jahren relativ stabil geblieben.[24][23] AlternativenDie B4X-Entwicklungsumgebungen sollen Programmieren eine Möglichkeit bieten, plattformübergreifende Apps in einer Programmiersprache zu entwickeln, die sich stark an Visual Basic orientiert. Im Fokus stehen dabei mobile Endgeräte mit dem Betriebssystem Android oder iOS. Neben B4X verfolgen auch andere Projekte ähnliche Ziele. KBasic bzw. Basic For QtEine Alternative für die plattformübergreifende Programmierung von Windows-, Linux- und macOS-Apps stellt KBasic bzw. dessen Nachfolger Basic For Qt dar. Anders als bei B4X, werden von Basic For Qt keine Betriebssysteme für mobile Endgeräte unterstützt. Während die B4X-Entwicklungsumgebungen XUI bzw. JavaFX für grafische Benutzeroberflächen verwenden, nutzt Basic For Qt (wie der Name bereits andeutet) das Qt Framework. Für die Zielplattform Linux fallen keine Kosten an, Apps für die Zielplattformen Windows und macOS sind jedoch kostenpflichtig.[25] Die letzte Version dieser Entwicklungsumgebung wurde im Sommer 2012 veröffentlicht. XojoXojo (ehemals REALbasic) ist eine kostenpflichtige objektorientierte Programmiersprache, welche 2016 mit dem BIG Innovation Award ausgezeichnet wurde.[26] Ähnlich wie B4X wurde Xojo bis Februar 2022 im TIOBE-Index zu den Top 100 der populärsten Programmiersprachen gezählt.[22] Derzeit ist Xojo weder im TIOBE- noch im PYPL-Index vertreten.[24][23] Die Programmiersprache orientiert sich an Visual Basic 6. Mit Xojo lassen sich plattformübergreifende Apps für macOS, Windows, Linux, Webserver, iOS und Raspberry Pi entwickeln.[27] Auch hier wird ein eigener macOS-Computer benötigt, um Programme für Apple Zielplattformen kompilieren zu können.[28] Vor- und Nachteile von B4XVorteile
Nachteile
Einzelnachweise
|