B4X

B4X

Basisdaten

Entwickler Anywhere Software
Aktuelle Version B4A: 12.80
B4i: 8.50
B4J: 10.00
B4R: 4.00
Betriebssystem Windows
Kategorie Integrierte Entwicklungsumgebung (IDE)
Lizenz Apache License 2.0[1]
deutschsprachig ja
www.b4x.com

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]

Entwicklungsumgebungen

B4J – Entwicklungsumgebung

Derzeit 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.

B4A

Mit 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]

B4J

Mit 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.

B4i

Mit 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.

B4R

Mit 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]

Basic4ppc

Mit 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 Programmiersprache

Bei 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]

Variablen

Während man in vielen BASIC-Dialekten die Deklaration von Variablen mit Hilfe von Option Explicit vorschreiben kann, müssen Variablen in B4X generell nicht deklariert werden. Die Größe von Datenfeldern (Arrays) kann nach der Deklaration nicht mehr vergrößert werden, da es auch hier im Gegensatz zu anderen BASIC-Dialekten, keinen ReDim Befehl gibt. Dynamisch wachsende Datenfelder können jedoch mit Listen realisiert werden.[14] Zudem fehlen in B4X im Gegensatz zu den meisten BASIC-Dialekten die typischen Funktionen zur expliziten Typumwandlung (z. B. CInt, CDbl oder CStr).[14]

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“ (btnAdd) anklickt, wird geprüft, ob in den beiden Eingabefeldern (txtNum1 und txtNum2) eine gültige Zahl eingegeben wurde. Ist das der Fall, so werden die Werte der beiden Eingabefelder addiert und das Resultat in einem weiteren Textfeld (txtResult) ausgegeben. Hierbei werden die Texteingaben implizit in einen numerischen Datentyp umgewandelt und das Ergebnis der Addition wiederum implizit in einen Text umgewandelt. Sollte in mindestens einem Eingabefeld keine gültige Zahl stehen, wird ein kleines Dialogfenster mit einer Fehlermeldung angezeigt. Als Dezimaltrennzeichen muss in der Eingabe ein Punkt verwendet werden.

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-Direktiven

In B4A, B4i und B4J ist es über die Präprozessor-Direktive #if JAVA möglich, nativen Java-Code in ein B4X-Programm einzubinden.[17] Es ist also möglich, einzelne Code-Fragmente in Java zu schreiben und diese aus dem B4X-Code heraus zu nutzen. Zudem können über die Direktiven #if B4A, #if B4i und #if B4J einzelne Code-Abschnitte je nach Zielplattform anders implementiert werden. Analog ist es in B4R über die Präprozessor-Direktive #if C möglich, nativen C-Code in ein B4R-Programm einzubinden.[18]

Layouts

B4J – Grafischer Formulareditor

Apps 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]

Bibliotheken

Code- 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]

Einsatzgebiete

Laut 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ät

B4X 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]

Alternativen

Die 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.

Microsoft Xamarin

Auch Microsoft Xamarin zielt darauf ab, plattformübergreifende Apps für Windows, Android, iOS, macOS, tvOS und watchOS zu entwickeln.[25][26] Xamarin ist eine Abstraktionsebene, welche die Kommunikation zwischen Code und dem zugrunde liegenden Plattformcode verwaltet.[27] Als Basis dient das Mono Framework. Es werden derzeit nur die Programmiersprachen C# und F# vollständig unterstützt. Visual Basic .NET wird explizit nicht unterstützt. Allerdings können Klassenbibliotheken durchaus in Visual Basic .NET geschrieben und eingebunden werden.[28] Ähnlich wie bei B4i, wird ein eigener macOS-Computer benötigt, um Programme für Apple Zielplattformen kompilieren zu können.[27]

KBasic bzw. Basic For Qt

Eine weitere 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 und Xamarin, 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.[29] Die letzte Version dieser Entwicklungsumgebung wurde im Sommer 2012 veröffentlicht.

Xojo

Xojo (ehemals REALbasic) ist eine kostenpflichtige objektorientierte Programmiersprache, welche 2016 mit dem BIG Innovation Award ausgezeichnete wurde.[30] Ä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.[31] Auch hier wird ein eigener macOS-Computer benötigt, um Programme für Apple Zielplattformen kompilieren zu können.[32]

Vor- und Nachteile von B4X

Vorteile

  • B4A, B4J und B4R sind kostenlos.
  • Die Programmiersprache ist verhältnismäßig einfach und schnell zu erlernen.[21][33]
  • Für B4A, B4i und B4J existieren Lernmaterialien und eine Turtle-Bibliothek zur Visualisierung von Algorithmen.[20]
  • Mit B4X lassen sich relativ einfach Anwendungen für Arduino-[9] und Raspberry Pi programmieren.
  • Die B4X-Entwicklungsumgebungen generieren native Anwendungen.[3]

Nachteile

  • Die Möglichkeiten zur objektorientierten Programmierung sind sehr begrenzt.[12]
  • Die Entwicklungsumgebungen der B4X Familie stellen derzeit keine Werkzeuge zur grafischen Modellierung von Softwarearchitekturen zur Verfügung. Damit verbunden ist auch Reverse-Engineering (also die Generierung eines visuellen Modells aus bestehendem Quellcode) derzeit nicht möglich. (Stand: März 2022)

Einzelnachweise

  1. AnywhereSoftware B4A is licensed under the Apache License 2.0. (TXT; 11,1 kB) GitHub, 8. März 2020, abgerufen am 18. Oktober 2021 (englisch, analog für B4J).
  2. a b Anywhere Software – Home. Abgerufen am 22. September 2021 (englisch).
  3. a b c d Wyken Seagrave: B4A: Rapid Android App Development using BASIC. Penny Press, Coventry 2021, ISBN 978-1-871281-22-4, S. 44 f. (englisch).
  4. a b c d Wyken Seagrave: B4A: Rapid Android App Development using BASIC. Penny Press, Coventry 2021, ISBN 978-1-871281-22-4, S. 257 ff. (englisch).
  5. Anywhere Software – Store. Abgerufen am 14. September 2021 (englisch).
  6. Wyken Seagrave: B4A: Rapid Android App Development using BASIC. Penny Press, Coventry 2021, ISBN 978-1-871281-22-4, S. 53 ff. (englisch).
  7. ORACLE – Erfahren Sie mehr über die Java-Technologie. Abgerufen am 16. Oktober 2021.
  8. The Pi4J Project – Java I/O library for the Raspberry Pi. Abgerufen am 15. September 2021 (englisch).
  9. a b B4R Example Projects. Anywhere Software, 15. August 2022, S. 6, abgerufen am 13. Juni 2023 (englisch).
  10. B4R Example Projects. Anywhere Software, 15. August 2022, S. 14 ff, abgerufen am 13. Juni 2023 (englisch).
  11. Ariel Zamir: The Essential Basic4ppc. (PDF; 3,4 MB) Anywhere Software, 14. März 2010, S. 4 ff, abgerufen am 15. September 2021 (englisch).
  12. a b c Wyken Seagrave: B4A: Rapid Android App Development using BASIC. Penny Press, Coventry 2021, ISBN 978-1-871281-22-4, S. 239 ff. (englisch).
  13. Wyken Seagrave: B4A: Rapid Android App Development using BASIC. Penny Press, Coventry 2021, ISBN 978-1-871281-22-4, S. 225 f. (englisch).
  14. a b Wyken Seagrave: B4A: Rapid Android App Development using BASIC. Penny Press, Coventry 2021, ISBN 978-1-871281-22-4, S. 280 ff. (englisch).
  15. Wyken Seagrave: B4A: Rapid Android App Development using BASIC. Penny Press, Coventry 2021, ISBN 978-1-871281-22-4, S. 297 ff. (englisch).
  16. Wyken Seagrave: B4A: Rapid Android App Development using BASIC. Penny Press, Coventry 2021, ISBN 978-1-871281-22-4, S. 273 f. (englisch).
  17. Wyken Seagrave: B4A: Rapid Android App Development using BASIC. Penny Press, Coventry 2021, ISBN 978-1-871281-22-4, S. 469 (englisch).
  18. B4R Example Projects – RunNative inline C. Anywhere Software, 15. August 2022, S. 13, abgerufen am 13. Juni 2023 (englisch).
  19. Wyken Seagrave: B4A: Rapid Android App Development using BASIC. Penny Press, Coventry 2021, ISBN 978-1-871281-22-4, S. 259 (englisch).
  20. a b Teaching Programming with B4X. Abgerufen am 18. September 2021.
  21. a b Anywhere Software – Showcase. Abgerufen am 15. September 2021 (englisch).
  22. a b TIOBE Index for February 2022. Archiviert vom Original am 27. Februar 2022; abgerufen am 23. März 2022 (englisch).
  23. a b c PYPL PopularitY of Programming Language. Abgerufen am 23. März 2022 (englisch).
  24. a b TIOBE Index. Abgerufen am 23. März 2022 (englisch, zeigt stets die Daten für den aktuellen Monat an).
  25. What is Xamarin? Abgerufen am 18. September 2021 (englisch).
  26. Mirko Schrempp: Xamarin – das Sprungbrett für .NET-Entwickler. In: entwickler.de. Software & Support Media GmbH, 30. Mai 2017, archiviert vom Original am 6. Juni 2017; abgerufen am 23. März 2022.
  27. a b Microsoft Docs – Was ist Xamarin? Abgerufen am 16. Oktober 2021.
  28. Xamarin.Forms using Visual Basic .NET. Abgerufen am 18. September 2021 (englisch).
  29. Basic For Qt. Abgerufen am 18. September 2021 (englisch).
  30. These 47 Companies Confirm That The Business Of Innovation Is Flourishing Globally. Abgerufen am 9. November 2021 (englisch).
  31. Build Native, Cross-Platform Apps. Abgerufen am 9. November 2021 (englisch).
  32. Mobile App Development Platform. Abgerufen am 9. November 2021 (englisch).
  33. Mark Turney: The Road from BASIC to VB to B4X. Abgerufen am 14. Oktober 2021 (englisch).