B4X
Unter dem Namen B4X wird eine Gruppe von Rapid Application Development (RAD) Entwicklungsumgebungen zusammengefasst, die von der Firma Anywhere Software entwickelt und vertrieben wird. 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]
B4X | |
---|---|
Basisdaten | |
Entwickler | Anywhere Software |
Aktuelle Version | B4A: 11.20 B4i: 7.80 B4J: 9.30 B4R: 3.90 |
Betriebssystem | Microsoft Windows |
Programmiersprache | Microsoft .NET Framework |
Kategorie | Integrierte Entwicklungsumgebung (IDE) |
Lizenz | Apache License 2.0[1] |
deutschsprachig | ja |
www.b4x.com |
Entwicklungsumgebungen
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. Zugriff auf die Kameras 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 Raspberry Pi Boards 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.
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 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
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 derzeit eine wenig verbreitete Programmiersprache und zählte im November 2021 nicht zu den 50 populärsten Programmiersprachen im TIOBE (The Importance of Being Earnest) – Index[22], wird dort aber zumindest zu den Top 100 gezählt. Im PYPL (PopularitY of Programming Language) – Index[23] der 30 populärsten Programmiersprachen wird B4X nicht aufgelistet. 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 oder ist sogar gestiegen.[22][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 Android oder iOS Betriebssystem. Neben B4X von der Firma Anywhere Software 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.[24][25] Xamarin ist eine Abstraktionsebene, welche die Kommunikation zwischen Code und dem zugrunde liegenden Plattformcode verwaltet.[26] 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.[27] Ähnlich wie bei B4i, wird ein eigener macOS-Computer benötigt, um Programme für Apple Zielplattformen kompilieren zu können.[26]
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.[28] 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.[29] Im PYPL-Index wird Xojo zu den Top 100 der populärsten Programmiersprachen gezählt.[23] Die Programmiersprache orientiert sich an Visual Basic 6. Mit Xojo lassen sich plattformübergreifende Apps für macOS, Windows, Linux, web, iOS und Raspberry Pi entwickeln.[30] Auch hier wird ein eigener macOS-Computer benötigt, um Programme für Apple Zielplattformen kompilieren zu können.[31]
Vor- und Nachteile von B4X
Vorteile
- B4A, B4J und B4R sind kostenlos.
- Die Programmiersprache ist verhältnismäßig einfach und schnell zu erlernen.[21][32]
- 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-Boards 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: Oktober 2021)
Einzelnachweise
- AnywhereSoftware B4A is licensed under the Apache License 2.0 (englisch) Abgerufen am 18. Oktober 2021.
- Anywhere Software – Home (englisch) Abgerufen am 22. September 2021.
- Wyken Seagrave: B4A: Rapid Android App Development using BASIC. 14. Auflage. Penny Press, Coventry (UK) 2021, ISBN 978-1-871281-22-4, S. 44 f. (englisch, 738 Seiten).
- Wyken Seagrave: B4A: Rapid Android App Development using BASIC. 14. Auflage. Penny Press, Coventry (UK) 2021, ISBN 978-1-871281-22-4, S. 257 ff. (englisch, 738 Seiten).
- Anywhere Software – Store (englisch) Abgerufen am 14. September 2021.
- Wyken Seagrave: B4A: Rapid Android App Development using BASIC. 14. Auflage. Penny Press, Coventry (UK) 2021, ISBN 978-1-871281-22-4, S. 53 ff. (englisch, 738 Seiten).
- ORACLE – Erfahren Sie mehr über die Java-Technologie. Abgerufen am 16. Oktober 2021.
- The Pi4J Project – Java I/O library for the Raspberry Pi (englisch) Abgerufen am 15. September 2021.
- B4R Example Projects (englisch) Anywhere Software. S. 6. 12. Juli 2021. Abgerufen am 9. Oktober 2021.
- B4R Example Projects (englisch) Anywhere Software. S. 14ff. 12. Juli 2021. Abgerufen am 9. Oktober 2021.
- Ariel Zamir: The Essential Basic4ppc (englisch, PDF) S. 4 ff. 2010. Abgerufen am 15. September 2021.
- Wyken Seagrave: B4A: Rapid Android App Development using BASIC. 14. Auflage. Penny Press, Coventry (UK) 2021, ISBN 978-1-871281-22-4, S. 239 ff. (englisch, 738 Seiten).
- Wyken Seagrave: B4A: Rapid Android App Development using BASIC. 14. Auflage. Penny Press, Coventry (UK) 2021, ISBN 978-1-871281-22-4, S. 225 f. (englisch, 738 Seiten).
- Wyken Seagrave: B4A: Rapid Android App Development using BASIC. 14. Auflage. Penny Press, Coventry (UK) 2021, ISBN 978-1-871281-22-4, S. 280 ff. (englisch, 738 Seiten).
- Wyken Seagrave: B4A: Rapid Android App Development using BASIC. 14. Auflage. Penny Press, Coventry (UK) 2021, ISBN 978-1-871281-22-4, S. 297 ff. (englisch, 738 Seiten).
- Wyken Seagrave: B4A: Rapid Android App Development using BASIC. 14. Auflage. Penny Press, Coventry (UK) 2021, ISBN 978-1-871281-22-4, S. 273 f. (englisch, 738 Seiten).
- Wyken Seagrave: B4A: Rapid Android App Development using BASIC. 14. Auflage. Penny Press, Coventry (UK) 2021, ISBN 978-1-871281-22-4, S. 469 (englisch, 738 Seiten).
- B4R Example Projects – RunNative inline C (englisch) Anywhere Software. S. 13. 12. Juli 2021. Abgerufen am 9. Oktober 2021.
- Wyken Seagrave: B4A: Rapid Android App Development using BASIC. 14. Auflage. Penny Press, Coventry (UK) 2021, ISBN 978-1-871281-22-4, S. 259 (englisch, 738 Seiten).
- Teaching Programming with B4X (englisch) Abgerufen am 18. September 2021.
- Anywhere Software – Showcase (englisch) Abgerufen am 15. September 2021.
- TIOBE Index for November 2021 (englisch) Abgerufen am 9. November 2021.
- PYPL PopularitY of Programming Language (englisch) Abgerufen am 9. November 2021.
- What is Xamarin? (englisch) Abgerufen am 18. September 2021.
- Xamarin – das Sprungbrett für .NET-Entwickler (Memento vom 6. Juni 2017 im Internet Archive)
- Microsoft Docs – Was ist Xamarin?. Abgerufen am 16. Oktober 2021.
- Xamarin.Forms using Visual Basic .NET (englisch) Abgerufen am 18. September 2021.
- Basic For Qt (englisch) Abgerufen am 18. September 2021.
- These 47 Companies Confirm That The Business Of Innovation Is Flourishing Globally (englisch) Abgerufen am 9. November 2021.
- Build Native, Cross-Platform Apps (englisch) Abgerufen am 9. November 2021.
- Mobile App Development Platform (englisch) Abgerufen am 9. November 2021.
- Mark Turney: The Road from BASIC to VB to B4X (englisch) Abgerufen am 14. Oktober 2021.